diff --git a/local/recipes/dev/gnu-make/recipe.toml b/local/recipes/dev/gnu-make/recipe.toml index 365a663d8f..e58657b5d3 100644 --- a/local/recipes/dev/gnu-make/recipe.toml +++ b/local/recipes/dev/gnu-make/recipe.toml @@ -1,12 +1,12 @@ [source] -tar = "http://ftp.gnu.org/gnu/make/make-4.4.tar.gz" -blake3 = "1a0e5353205e106bd9b3c0f4a5f37ee1156a1e1c8feb771d1b4842c216612cba" -patches = [ - "redox.patch" -] -script = """ -autotools_recursive_regenerate -""" +# Vendored local fork (full-fork model): builds from the committed source/ +# tree (offline, reproducible). source/ = pristine upstream + the patches below +# BAKED IN. .patch files kept tracked so a version bump can re-apply them via +# sync-recipe-source.sh. +# upstream: http://ftp.gnu.org/gnu/make/make-4.4.tar.gz +# blake3: 1a0e5353205e106bd9b3c0f4a5f37ee1156a1e1c8feb771d1b4842c216612cba +# patch (baked): redox.patch +path = "source" [build] template = "custom" diff --git a/local/recipes/dev/gnu-make/source.tar b/local/recipes/dev/gnu-make/source.tar new file mode 100644 index 0000000000..0fc6a5c9b7 Binary files /dev/null and b/local/recipes/dev/gnu-make/source.tar differ diff --git a/local/recipes/dev/gnu-make/source/.redbear-src-version b/local/recipes/dev/gnu-make/source/.redbear-src-version new file mode 100644 index 0000000000..12608bb253 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/.redbear-src-version @@ -0,0 +1 @@ +make-4.4 diff --git a/local/recipes/dev/gnu-make/source/ABOUT-NLS b/local/recipes/dev/gnu-make/source/ABOUT-NLS new file mode 100644 index 0000000000..b1de1b6832 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/ABOUT-NLS @@ -0,0 +1,1282 @@ +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 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, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU `gettext' prior to configuring, installing or using +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 on translations can contact the appropriate team. + +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 +packages use GNU `gettext'. Other packages have their own ways to +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. Installers may use special +options at configuration time for changing the default behaviour. The +command: + + ./configure --disable-nls + +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' 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. + + 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 +together with the package. However, the environment variable `LINGUAS' +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. + +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. 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'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + The locale naming convention of `LL_CC', with `LL' denoting the +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 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 +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' +for the purpose of message handling, but you still need to have `LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather +read translations in German than English for when Swedish is not +available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from `no' to `nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under `nb' and some older ones under `no', it's recommended +for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +older translations are used. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +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. + +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://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. +The subscribing address is _not_ the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +_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 `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 skills are praised more than +programming skills, here. + +1.4 Available Packages +====================== + +Languages are not equally supported in all packages. The following +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 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 | [] [] | + 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 | [] [] [] [] [] [] | + +-------------------------------------------------+ + 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 +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +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 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://translationproject.org/extra/matrix.html'. + +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 +package. Of course you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. + + Once the sources are changed appropriately and the setup can handle +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 +`coordinator@translationproject.org' to make the `.pot' files available +to the translation teams. + diff --git a/local/recipes/dev/gnu-make/source/AUTHORS b/local/recipes/dev/gnu-make/source/AUTHORS new file mode 100644 index 0000000000..d4e37dbd96 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/AUTHORS @@ -0,0 +1,122 @@ +----------------------------------- + +GNU Make development starting with GNU Make 3.76 by: + Paul D. Smith + + Additional development starting with GNU Make 4.3 by: + Dmitry Goncharov + + Additional development starting with GNU Make 3.81 by: + Boris Kolpackov + +GNU Make development up to version 3.75 by: + Roland McGrath + +GNU Make User's Manual + Written by: + Richard M. Stallman + + Edited by: + Roland McGrath + Bob Chassell + Melissa Weisshaus + Paul D. Smith + +----------------------------------- +GNU Make porting efforts: + + Port to VMS by: + Klaus Kaempf + Hartmut Becker + Archive support/Bug fixes by: + John W. Eaton + Martin Zinser + + Port to Amiga by: + Aaron Digulla + + Port to MS-Windows (native/MinGW) maintained by: + Eli Zaretskii + + Port to MS-DOS (DJGPP), OS/2, and MS-Windows (native/MinGW) by: + DJ Delorie + Rob Tulloh + Eli Zaretskii + Jonathan Grant + Andreas Beuning + Earnie Boyd + Troy Runkel + Juan M. Guerrero + +----------------------------------- +Other contributors: + + Luke Allardyce + Aron Barath + David Boyce + Kevin Buettner + Janet Carson + Howard Chu + Ludovic Courtès + Joe Crayne + Jeremy Devenport + Pete Dietl + Martin Dorey + Christian Eggers + Paul Eggert + Mike Frysinger + Ramon Garcia Fernandez + Noah Goldstein + Mike Haboustak + Frank Heckenbach + Klaus Heinz + Ben Hutchings + Cao jin + Michael Joosten + Christian Jullien + Jim Kelton + Kaz Kylheku + David Lubbren + Tim Magill + Markus Mauhart + Greg McGary + Thien-Thi Nguyen + Han-Wen Nienhuys + Enrique Olaizola + Ola Olsson + Jens Rehsack + Thomas Riedl + Jaak Ristioja + Christoph Schulz + Andreas Schwab + spagoveanu + Carl Staelin (Princeton University) + Ian Stewartson (Data Logic Limited) + Tobias Stoeckmann + Sergei Trofimovich + Marc Ullman + Christof Warlich + Florian Weimer + David A. Wheeler + Bernhard M. Wiedemann + Ben Wijen + Jouke Witteveen + +With suggestions/comments/bug reports from a cast of ... well ... +hundreds, anyway :) + +------------------------------------------------------------------------------- +Copyright (C) 1997-2022 Free Software 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 . diff --git a/local/recipes/dev/gnu-make/source/Basic.mk b/local/recipes/dev/gnu-make/source/Basic.mk new file mode 100644 index 0000000000..683f377aa8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/Basic.mk @@ -0,0 +1,249 @@ +# Basic GNU -*-Makefile-*- to build GNU make +# +# NOTE: +# If you have no 'make' program at all to process this makefile: +# * On Windows, run ".\buildw32.bat" to bootstrap one. +# * On MS-DOS, run ".\builddos.bat" to bootstrap one. +# +# Once you have a GNU make program created, you can use it with this makefile +# to keep it up to date if you make changes, as: +# +# make.exe -f Basic.mk +# +# Copyright (C) 2017-2022 Free Software 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 . + +all: + +src = src/ +lib = lib/ + +make_SOURCES = $(src)ar.c $(src)arscan.c $(src)commands.c $(src)default.c $(src)dir.c $(src)expand.c $(src)file.c $(src)function.c $(src)getopt.c $(src)getopt1.c $(src)guile.c $(src)hash.c $(src)implicit.c $(src)job.c $(src)load.c $(src)loadapi.c $(src)main.c $(src)misc.c $(src)output.c $(src)read.c $(src)remake.c $(src)rule.c $(src)shuffle.c $(src)signame.c $(src)strcache.c $(src)variable.c $(src)version.c $(src)vpath.c +glob_SOURCES = $(lib)fnmatch.c $(lib)glob.c +loadavg_SOURCES = $(lib)getloadavg.c +alloca_SOURCES = $(lib)alloca.c +w32_SOURCES = $(src)w32/pathstuff.c $(src)w32/w32os.c $(src)w32/compat/dirent.c $(src)w32/compat/posixfcn.c $(src)w32/subproc/misc.c $(src)w32/subproc/sub_proc.c $(src)w32/subproc/w32err.c +vms_SOURCES = $(src)vms_exit.c $(src)vms_export_symbol.c $(src)vms_progname.c $(src)vmsfunctions.c $(src)vmsify.c +amiga_SOURCES = $(src)amiga.c + +remote_SOURCES = $(src)remote-stub.c + +OUTDIR = +SRCDIR = . + +OBJEXT = o +EXEEXT = + +PREFIX = /usr/local +INCLUDEDIR = $(PREFIX)/include +LIBDIR = $(PREFIX)/lib +LOCALEDIR = $(PREFIX)/share + +PROG = $(OUTDIR)make$(EXEEXT) + +prog_SOURCES = $(make_SOURCES) $(remote_SOURCES) + +BUILT_SOURCES = + +OBJECTS = $(patsubst %.c,$(OUTDIR)%.$(OBJEXT),$(prog_SOURCES)) + +OBJDIRS = $(addsuffix .,$(sort $(dir $(OBJECTS)))) + +# Use the default value of CC +LD = $(CC) + +# Reserved for command-line override +CPPFLAGS = +CFLAGS = -g -O2 +LDFLAGS = + +extra_CPPFLAGS = -DHAVE_CONFIG_H -I$(OUTDIR)src -I$(SRCDIR)/src -I$(OUTDIR)lib -I$(SRCDIR)/lib \ + -DLIBDIR=\"$(LIBDIR)\" -DINCLUDEDIR=\"$(INCLUDEDIR)\" -DLOCALEDIR=\"$(LOCALDIR)\" +extra_CFLAGS = +extra_LDFLAGS = $(extra_CFLAGS) $(CFLAGS) + +C_SOURCE = -c +OUTPUT_OPTION = -o $@ +LINK_OUTPUT = -o $@ + +# Command lines + +# $(call COMPILE.cmd,,) +COMPILE.cmd = $(CC) $(extra_CFLAGS) $(CFLAGS) $(extra_CPPFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(OUTPUT_OPTION) $(C_SOURCE) $1 + +# $(call LINK.cmd,) +LINK.cmd = $(LD) $(extra_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH) $1 $(LDLIBS) $(LINK_OUTPUT) + +# $(CHECK.cmd) $(CHECK.args) +CHECK.cmd = cd $(SRCDIR)/tests && ./run_make_tests -make $(shell cd $() +MKDIR.cmd = mkdir -p $1 + +# $(call RM.cmd,) +RM.cmd = rm -f $1 + +# $(call CP.cmd,,) +CP.cmd = cp $1 $2 + +CLEANSPACE = $(call RM.cmd,$(OBJECTS) $(PROG) $(BUILT_SOURCES)) + +# Load overrides for the above variables. +include $(firstword $(wildcard $(SRCDIR)/mk/$(lastword $(subst -, ,$(MAKE_HOST)).mk))) + +VPATH = $(SRCDIR) + +all: $(PROG) + +$(PROG): $(OBJECTS) + $(call LINK.cmd,$^) + +$(OBJECTS): $(OUTDIR)%.$(OBJEXT): %.c + $(call COMPILE.cmd,$<) + +$(OBJECTS): | $(OBJDIRS) $(BUILT_SOURCES) + +$(OBJDIRS): + $(call MKDIR.cmd,$@) + +check: + $(CHECK.cmd) $(CHECK.args) + +clean: + $(CLEANSPACE) + +$(filter %.h,$(BUILT_SOURCES)): %.h : %.in.h + $(call RM.cmd,$@) + $(call CP.cmd,$<,$@) + +.PHONY: all check clean + +# --------------- DEPENDENCIES +# + +$(OBJECTS): $(SRCDIR)/src/mkconfig.h + +# src/.deps/amiga.Po +# dummy + +# src/.deps/ar.Po +# dummy + +# src/.deps/arscan.Po +# dummy + +# src/.deps/commands.Po +# dummy + +# src/.deps/default.Po +# dummy + +# src/.deps/dir.Po +# dummy + +# src/.deps/expand.Po +# dummy + +# src/.deps/file.Po +# dummy + +# src/.deps/function.Po +# dummy + +# src/.deps/getopt.Po +# dummy + +# src/.deps/getopt1.Po +# dummy + +# src/.deps/guile.Po +# dummy + +# src/.deps/hash.Po +# dummy + +# src/.deps/implicit.Po +# dummy + +# src/.deps/job.Po +# dummy + +# src/.deps/load.Po +# dummy + +# src/.deps/loadapi.Po +# dummy + +# src/.deps/main.Po +# dummy + +# src/.deps/misc.Po +# dummy + +# src/.deps/output.Po +# dummy + +# src/.deps/posixos.Po +# dummy + +# src/.deps/read.Po +# dummy + +# src/.deps/remake.Po +# dummy + +# src/.deps/remote-cstms.Po +# dummy + +# src/.deps/remote-stub.Po +# dummy + +# src/.deps/rule.Po +# dummy + +# src/.deps/shuffle.Po +# dummy + +# src/.deps/signame.Po +# dummy + +# src/.deps/strcache.Po +# dummy + +# src/.deps/variable.Po +# dummy + +# src/.deps/version.Po +# dummy + +# src/.deps/vms_exit.Po +# dummy + +# src/.deps/vms_export_symbol.Po +# dummy + +# src/.deps/vms_progname.Po +# dummy + +# src/.deps/vmsfunctions.Po +# dummy + +# src/.deps/vmsify.Po +# dummy + +# src/.deps/vpath.Po +# dummy diff --git a/local/recipes/dev/gnu-make/source/COPYING b/local/recipes/dev/gnu-make/source/COPYING new file mode 100644 index 0000000000..e60008693e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 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. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/local/recipes/dev/gnu-make/source/ChangeLog b/local/recipes/dev/gnu-make/source/ChangeLog new file mode 100644 index 0000000000..59f71f55be --- /dev/null +++ b/local/recipes/dev/gnu-make/source/ChangeLog @@ -0,0 +1,5893 @@ +2022-10-31 Paul Smith + + Release GNU Make 4.4 + * NEWS: Update the version and date. + * configure.ac: Update the version. + * doc/make.texi: Update the EDITION. + + * README.git: Update and clarify release operations + + Fix issues found by ASAN and Coverity + * tests/test_driver.pl: Preserve the LSAN_OPTIONS variable. + * tests/scripts/targets/ONESHELL: Don't set a local variable. + * tests/scripts/functions/let: Test empty let variable. + * src/posixos.c (osync_parse_mutex): Free existing osync_tmpfile. + * src/misc.c (get_tmpfd): Set umask() before invoking mkstemp(). + * src/ar.c (ar_parse_name): Check invalid name (shouldn't happen). + * src/function.c (define_new_function): Free previous function entry + when replacing it with a new one. + * src/job.c (child_execute_job): Initialize pid for safety. + (construct_command_argv_internal): In oneshell mode ensure that the + returned argv has the right format (0th element is a pointer to the + entire buffer). + +2022-10-29 Paul Smith + + Avoid C99 constructs + Although gnulib requires C99, most of the code does compile with a + C90 compiler (perhaps with a lot of warnings). Reinstate our C90 + configuration test, and clean up a few C99 things that crept in. + + * src/job.c (construct_command_argv_internal): Don't use loop-local + variables or C++ comments. + * src/read.c (eval_makefile): Don't use loop-local variables. + +2022-10-29 Paul Smith + + * build.sh: Allow a "keep-going" mode during builds + +2022-10-29 Paul Smith + + tests: Avoid the use of File::Temp->newdir() + This was added in Perl 5.8 but some systems still only provide older + versions such as Perl 5.6. We don't really need it anyway. + Paul Eggert reported this issue. + + * tests/README: Update this to be a bit more modern. + * tests/test_driver.pl: Delete the $TEMPDIR variable. + * tests/scripts/features/temp_stdin: Use $temppath not $TEMPDIR. + +2022-10-29 Paul Smith + + * src/posixos.c (os_anontmp): [SV 63287] Only fail O_TMPFILE once + Reported by Dmitry Goncharov . + +2022-10-28 Paul Smith + + [SV 62174] Force locale to be "C" before retrieving error messages + We attempt to do this with POSIX::setlocale() but apparently on some + systems (AIX) this isn't sufficient. So, in addition force the LC + environment variables to use "C". + Reported by Dmitry Goncharov . + + * tests/run_make_tests.pl: Move the global setup into set_default(). + Force the %ENV locale variables to use the ones we'll use when running + make, then reset them back again after we find error messages. + +2022-10-27 Paul Smith + + * src/job.c: [SV 63185] Don't use ifdef with HAVE_DECL_* macros + +2022-10-25 Paul Smith + + * tests/scripts/features/exec: Don't test with C shells + Using C shells (csh, tcsh) with make is known to be problematic due + to incorrect ways it handles open file descriptors, at least. If + the user's shell is *csh then don't try it during exec tests. + +2022-10-25 Paul Smith + + Increase the test framework timeout from 5s to 60s + It seems that some of the test environments hit the 5s timeout on + some tests. Since it doesn't really matter, as long as we don't + hang forever, increase the timeout to 60s. + + * tests/test_driver.pl: Increase $test_timout to 60. We don't need + to handle VMS timeouts specially anymore. + * tests/scripts/features/parallelism: We don't need to override the + default timeout anymore. + * tests/scripts/features/patternrules: Remove confusing comment. + +2022-10-25 Paul Smith + + * Makefile.am (check-regression): Add a random suffix to results file + Put the results into a subdirectory for easy unpacking. + * .gitignore: Ignore it. + +2022-10-24 Paul Smith + + Release GNU Make 4.3.92 + * configure.ac: Modify the release version. + * NEWS: Update the version and date. + +2022-10-24 Paul Smith + + [SV 63260] Don't recurse forever if setup_tmpfile() fails + If we fail during setup_tmpfile() we'll try to write an error, which + will invoke setup_tmpfile() again, etc. Avoid infinite recursion. + Original patch by Dmitry Goncharov + + * src/output.c (setup_tmpfile): Remember we're in this function and + return immediately if we enter it during recursion. + (message): Remember the starting location and use that instead of + fmtbuf.buffer. + (error): Ditto. + (fatal): Ditto. + +2022-10-24 Paul Smith + + * src/output.c (_outputs): Don't use invalid output sync FDs + Just write to stdout/stderr in this situation. + + * src/misc.c (get_tmpdir): Report errors if tmpdirs are invalid + * src/main.c (main): Set up initial temporary directories. + +2022-10-23 Dmitry Goncharov + + * src/posixos.c (os_anontmp): If O_TMPFILE fails try dup() method. + +2022-10-23 Paul Smith + + * src/rule.c (get_rule_defn): Don't use STRING_SIZE_TUPLE in mempcpy + If mempcpy() is a macro then STRING_SIZE_TUPLE won't compile. + +2022-10-23 Paul Smith + + Provide a maintainer-only debug method + Generating debug logs to stdout or stderr makes it impossible to + run tests etc. so create a dumb DBG facility to log to a temp file. + This exists only in maintainer mode and the DBG macro gives a + compile error if it's used in non-maintainer mode. + + * src/makeint.h (DBG): Call dbg() in maintainer mode, else error. + (dbg): Define it in maintainer mode. + * src/misc.c (dbg): Open a log file for append, write, then close. + +2022-10-22 Paul Smith + + * configure.ac: Check that we can link with Guile + On multi-arch systems we may be able to find the header file but + not successfully link the library. + +2022-10-22 Paul Smith + + Set PATH_MAX on systems without a default value + Some systems (HURD) use fully-dynamic pathnames, with no limit. + We can't support this without significant effort so for now set + PATH_MAX to a large value. + + * src/makeint.h: Set PATH_MAX to 4096 if not set and MAXPATHLEN + is also not set. Remove MAXPATHLEN setting: we won't use it. + * src/misc.c (get_path_max): If we can't get the path max via + pathconf() use the default PATH_MAX. + * src/dir.c (find_directory) [W32]: Use MAX_PATH not MAXPATHLEN. + (local_stat) [W32]: Ditto. + * src/job.c (create_batch_file) [W32]: Ditto. + * src/remake.c (name_mtime) [W32]: Ditto. + * src/w32/w32os.c (os_anontmp) [W32]: Ditto. + +2022-10-22 Paul Smith + + [SV 63098] Enhance detection of missing peer also-make targets + The previous attempt to detect missing peer targets for implicit + rules had some holes. Move the detection to notice_finished_file(). + + * src/remake.c (check_also_make): If we don't have the current mtime + for the file, obtain it. + (update_goal_chain): Don't call check_also_make() here. + (check_dep): Ditto. + (notice_finished_file): If we finished running an implicit rule that + has also_make targets, invoke check_also_make(). + +2022-10-22 Paul Smith + + Collect failure details when the regression tests fail + * README.in: Add a section on running regression tests. + * Makefile.am (check-regression): Capture the test run output, and + on failure collect configure and test results into a tar file. + +2022-10-22 Paul Smith + + Enhance tests to work on different systems + The GNU platform testers reported a number of test errors on + different systems; try to address them. + + * tests/thelp.pl: A number of tests timed out with a 4-second + timeout. Increase the default timeout to 10 seconds. + * tests/run_make_tests.pl: Executing directories on cygwin behaves + differently in Perl than make so skip these tests there. + * tests/scripts/options/symlinks: Check for the symlink feature + in make, rather than whether the system supports them. + * tests/scripts/features/implicit_search: On some systems "false" + exits with a different exit code. Use the helper instead. + * tests/scripts/features/loadapi: Ditto. + * tests/scripts/features/output-sync: Sleep before make -f bar in + the first test as well as the second one. + * tests/scripts/features/exec: Skip on cygwin, which seems to + be "UNIX" but where scripts don't run normally. + * tests/scripts/misc/fopen-fail: Skip on cygwin, where make + eventually exits with exit code 0 and no error messages. + +2022-10-22 Dmitry Goncharov + + [SV 63243] tests: Avoid SIGTERM racing with make error messages + Original patch from Frank Heckenbach . + + * tests/scripts/features/output-sync: Introduce a sleep to let make + write its error message. Some systems use different names for + SIGTERM so match with a regex. + * tests/scripts/features/temp_stdin: Ditto. + +2022-10-22 Dmitry Goncharov + + [SV 63236] Fix getloadavg related error message on AIX + On AIX getloadavg keeps errno intact when it fails, resulting in a + bogus error message from make. + + * src/job.c (load_too_high): Reset errno before calling getloadavg. + +2022-10-22 Dmitry Goncharov + + [SV 63248] Ignore SIGPIPE + Don't terminate when make's output is redirected to a pipe and the + reader exits early; e.g.: + $ echo 'all:; sleep 2' | make -f- -j2 -O |: + + This lets us unlink temporary files, and tell the user that make was + not able to write its output. + Reported by Frank Heckenbach . + + * src/main.c (main): Ignore SIGPIPE. + * src/posixos.c (osync_clear): Fix a memory leak. + +2022-10-18 Paul Smith + + * NEWS: Release GNU make 4.3.91 + + * AUTHORS: Update the authors list. + + * NEWS: Use GNU Make instead of GNU make + * README.git: Ditto. + * README.Amiga: Ditto. + * README.DOS: Ditto. + * README.OS2: Ditto. + * README.VMS: Ditto. + * README.W32: Ditto. + * README.customs: Ditto. + * make-gdb.py: Ditto. + * tests/run_make_tests.pl: Ditto. + + Update URLs to use https rather than http + * (all): Change http:// to https:// + * README.W32: Remove invalid link to mingw.org. + +2022-10-18 Paul Smith + + Rework temp file handling to avoid GNU libc warnings + Original patch provided by Paul Eggert . + GNU libc will generate a link-time warning if we use mktemp() even + though we are using it safely (we only use it with mkfifo()). + Avoid this and clean up some handling. + + First, check all calls related to temporary files and exit with a + fatal error and a useful message if we can't obtain them. In some + situations it might be possible to continue with reduced capability + but it's not worth the effort. + + On POSIX systems we can create anonymous temp files using O_TMPFILE + if it's supported, else if we're using the default location and we + have dup(2), we can use standard tmpfile() and get an FD from it. + + If we need a named temp file and FILE* and we have mkstemp() we can + use that, else if we have fdopen() we can get a temp FD and open it. + If none of those are available all we can do is generate a temp name + then open it with fopen() which is not secure. + + * src/makeint.h (get_tmpdir): Declare it for use elsewhere. + * src/misc.c (get_tmpdir): Make it public not static. + (get_tmptemplate): Simplify the implementation. + (get_tmppath): Only define this if we have to have it to avoid + warnings from GNU libc. + (get_tmpfd): Generate fatal errors on error. + (get_tmpfile): Ditto. Open files in "wb+" mode to match tmpfile(). + Require a filename pointer (all callers want it). + * src/os.h (os_anontmp): Implement for posixos.c as well. + * src/posix.c (jobserver_setup): Don't use mktemp to avoid GNU libc + errors. Instead construct the FIFO name based on the PID. + (osync_setup): get_tmpfd() can't fail so don't check it. + (os_anontmp): If the system supports O_TMPFILE use it. If not, and + we want to create the temporary file in the default directory, we + can use tmpfile() then use dup() to copy the file descriptor. + * src/main.c (main): get_tmpfile() can't fail. + * src/vmsjobs.c (child_execute_job): get_tmpfile() can't fail. + +2022-10-18 Paul Smith + + Add ISDIRSEP() helper macro and use it + Create a ISDIRSEP() macro to check for directory separator chars + using the stopchar_map, and replace inline checks and explicit + STOP_SET calls with this macro. + + * src/makeint.h (ISDIRSEP): Create the macro using MAP_DIRSEP. + * src/dir.c (find_directory): Replace inline checks with ISDIRSEP. + (file_exists_p): Ditto. + (file_impossible): Ditto. + (file_impossible_p): Ditto. + (local_stat): Ditto. + * src/file.c (lookup_file): Ditto. + * src/function.c (abspath): Ditto. + * src/job.c (_is_unixy_shell): Ditto. + (is_bourne_compatible_shell): Ditto. + (construct_command_argv): Ditto. + * src/main.c (find_and_set_default_shell): Ditto. + (main): Ditto. + * src/read.c (eval): Ditto. + (parse_file_seq): Ditto. + * src/remake.c (name_mtime): Ditto. + * src/vpath.c (construct_vpath_list): Ditto. + +2022-10-18 Paul Smith + + Add preprocessor macros for different platforms + * configure.ac: MK_CONFIGURE shows config.h was generated by configure. + * src/config.ami: Define MK_AMIGAOS. + * src/config.h-vms: Define MK_VMS. + * src/configh.dos: Define MK_DJGPP. + * src/config.h.W32: Define MK_W32 and WINDOWS32. + * src/build_w32.bat: Let WINDOWS32 be defined by config.h. Remove + unused setting of WIN32. + * src/job.c: Clean up use of WIN32. + * src/main.c: Ditto. + * tests/scripts/features/default_names: Ditto. + +2022-10-18 Paul Smith + + Check for recipe line count overflow before it overflows + awk 'BEGIN { + print "x:" + for (i = 0; i < 65536; i++) + printf "\techo %d\n", i} + ' | make -f - + + Outputs only "make: 'x' is up to date." Larger values run only the + lines above 65536. Reported by Paul Eggert . + + * src/commands.c (chop_commands): Check the line count before it has + a chance to overflow. Use size_t for max count so it can't overflow. + Remove stray 'd' in diagnostic. + +2022-10-18 Paul Smith + + Remove template files to simplify distribution creation + The README templates were not useful since the replacement step + didn't have anything to replace: rename them. + + Rather than creating template files for the config variants, create + mkconfig.h.in containg PACKAGE_* variables to be replaced, and have + config variant header files include it. Note on POSIX we don't use + this, and continue to generate a single config.h.in file. + + Use config.status to convert the README.in and mkconfig.h.in files + during distribution creation. + + Modify all users of VERSION to use PACKAGE_VERSION instead. + + * configure.ac: Use GNU Make not GNU make as the package name. + * README.in: Use GNU Make not GNU make. + * README.git: Remove references to README.W32.template. + * .gitignore: Update for new behavior. + * Basic.mk.template: Remove unused posix_SOURCES and VERSION, and + references to unshipped mk/Posix.mk + * Makefile.am: Add src/mkconfig.h as an extra dist file. + * bootstrap.bat: Rewrite mkconfig.h.in to mkconfig.h + * maintMakefile: Remove obsolete template files; add mkconfig.h.in. + * prepare_vms.com: Rewrite mkconfig.h.in to mkconfig.h + * mk/VMS.mk: Fix incorrect header file prerequisite. + * src/mkconfig.h.in: New file containing PACKAGE variables. + * src/config.ami: Include mkconfig.h. + * src/config.h.W32: Ditto. + * src/configh.dos: Ditto. + * src/config.h-vms: Ditto. + * src/version.c: Use PACKAGE_VERSION not VERSION. + +2022-10-16 Juan M. Guerrero + + Support building with DJGPP 2.05 + * builddos.bat: Use env var settings for paths. Fix a typo in + expand.o. Add the missing load.o compilation and link. Enable + Guile support. Copy Basic.mk from the correct location. + * src/configh.dos.templage: DJGPP supports strtoll() and ssize_t + given new enough versions. Set preprocessor variables to 1 not 0. + +2022-10-16 Paul Smith + + * src/job.c: [SV 63185] Include sys/loadavg.h if needed. + +2022-10-16 Paul Smith + + [SV 63215] Remember the random seed for shuffle mode + Basic fix provided by James Hilliard . + Ensure we remember and propagate the random seed we generate during + shuffle mode. Also add a debug statement displaying the seed. + + * src/shuffle.c (shuffle_set_mode): Init and save the randoms seed. + * src/misc.c (make_rand): Code cleanups. + * src/main.c (main): Show a debug message containing the seed. + +2022-10-15 Paul Smith + + Use (void) rather than () in function declarations + In C, a function declaration with () allows any set of arguments. + Use (void) to mean "no arguments". + + * src/dep.h: Switch () to (void) for functions with no arguments. + * src/makeint.h: Ditto. + * src/os.h: Ditto. + * src/shuffle.h: Ditto. + * src/variable.h: Ditto. + +2022-10-15 Paul Smith + + [SV 63157] Ensure temporary files are removed when signaled + Original patch from Dmitry Goncharov . + When handling a fatal signal ensure the temporary files for + stdin and the jobserver fifo (if in use) are deleted. + + * src/makeint.h (temp_stdin_unlink): Declare a new method. + * src/main.c (temp_stdin_unlink): Delete the stdin temporary file + if it exists. If the unlink fails and we're not handling a signal + then show an error. + (main): Call temp_stdin_unlink() instead of unlinking by hand. + * src/commands.c (fatal_error_signal): Invoke cleanup methods if + we're handling a fatal signal. + * tests/scripts/features/output-sync: Test signal handling during + output sync and jobserver with FIFO. + * tests/scripts/features/temp_stdin: Test signal handling when + makefiles are read from stdin. + +2022-10-15 Paul Smith + + * src/posixos.c (job_root): Remember root jobserver instances + (jobserver_setup): Set job_root to true. + (jobserver_clear): if we're the root instance and we're using a + FIFO, unlink it. If we're not in a signal handler, free memory. + (jobserver_acquire_all): Call jobserver_clear(). + (sync_root): Rename from sync_parent for consistency. + + Set the proper type for variables set in signal handlers + * bootstrap.conf: Get gnulib's sig_atomic_t type checking M4 macro. + * configure.ac: Invoke it. + * src/makeint.h (handling_fatal_signal): Set the type correctly. + * src/commands.c (handling_fatal_signal): Ditto. + +2022-10-08 Dmitry Goncharov + + * tests/test_driver.pl (toplevel): [SV 63156] Keep temp env vars + +2022-10-03 Paul Smith + + Clean up some warnings on Windows builds + * src/arscan.c (parse_int): Avoid conversion from int to char and + check for overflow given a max value. + (ar_scan): Check intmax sizes then cast to the proper type. + (ar_member_touch): Get proper return type from ar_scan and cast it + to off_t. + * src/function.c (a_word_hash_cmp): Don't cast from size_t to int. + (func_filter_filterout): Count using unsigned long to avoid casts. + (construct_include_path): Explicitly cast to void*. + * src/shuffle.c (reverse_shuffle_array): Use size_t index. + * src/w32/subproc/sub_proc.c (process_wait_for_multiple_objects): + Initialize the return value in case the count is 0. + + * src/misc.c (make_lltoa): Use printf format macro from makeint.h + (make_ulltoa): Ditto. + + * src/arscan.c (ar_scan): Avoid sign comparison warnings + Pacify 12.2.1 20220819 (Red Hat 12.2.1-2) -Wsign-compare by checking + the readbuf() return explicitly for errors then casting from ssize_t. + Initial patch provided by Paul Eggert . + +2022-10-03 Paul Eggert + + Support systems with 32-bit long and 64-bit time_t + Don't assume that time_t fits in long, as some hosts (e.g., + glibc x86 -D_TIME_BITS=64) have 32-bit long and 64-bit time_t. + + * bootstrap.conf (gnulib_modules): Add largefile, to support files + with timestamps after Y2038 on hosts with 32-bit long. + * configure.ac: Do not call AC_SYS_LARGEFILE, as the largefile module + does that for us. + * src/makeint.h (PRIdMAX, PRIuMAX, SCNdMAX): Define if not already + defined (taken from gnulib). + * src/ar.c: Include intprops.h, for TYPE_MAXIMUM, as + INTEGER_TYPE_MAXIMUM does not work on time_t without issuing a bunch + of warnings. + (ar_member_date): Check that result is in time_t range. + (ar_member_date_1): Use intmax_t to hold the date. + (ar_glob_match): Ditto. + * src/arscan.c (VMS_function, VMS_function_ret, ar_scan) + (parse_int, ar_scan, ar_member_pos, ar_member_touch) + (describe_member): Convert long int to intmax_t. + * src/file.c (file_timestamp_sprintf): Use intmax_t/uintmax_t instead + of long/unsigned long for values that might be time_t. + * src/arscan.c (ar_member_touch): Fix buffer overrun if the timestamp + is too large. + +2022-10-03 Paul Smith + + Add support for intmax_t + * configure.ac: Ask autoconf to detect it. + * src/config.ami.template: Add #define intmax_t for AmigaOS. + * src/config.h-vms.template: Add #define intmax_t for VMS. + * src/config.h.W32.template: Add #define intmax_t for Windows. + * src/configh.dos.template: Add #define intmax_t for MS-DOS/DJPP. + + * NEWS: Deprecate Xenix + +2022-10-02 Paul Smith + + [SV 63098] Temporarily revert the change to pattern rule behavior + The fix for SV 12078 caused a backward-compatibility issue with some + makefiles. In order to allow users to resolve this issue, revert + that change for this release cycle: it will be reinstated in the + next release cycle. Introduce a warning if we detect that the recipe + of a multi-target pattern rule doesn't create all the targets. + + * NEWS: Announce the future backward-incompatibility. + * doc/make.texi (Pattern Intro): Describe the behavior and that it + will change in the future. + * src/remake.c (check_also_make): Check for also_make targets that + were not created and generate a warning. + (update_goal_chain): Call the new function. + (check_dep): Ditto. + (update_file_1): Defer implicit rule detection until after we check + all the also_make files (as it used to be). + * tests/scripts/features/patternrules: Add tests of the new warning. + Skip the tests for SV 12078. + +2022-10-02 Paul Smith + + * doc/make.texi (Prerequisite Types): [SV 58056] Clarify ordering. + + * src/filedef.h (is_ordinary_mtime): Check for "ordinary" mod time. + * src/remake.c (update_file_1): Use the new macro. + + * src/remake.c (update_file_1): Return valid enum element, not 0. + + * NEWS: Announce deprecation of OS/2 and AmigaOS ports + + * src/main.c (main): Add debug output for jobserver and osync. + * src/posixos.c (jobserver_setup): Remove redundant debug output. + (jobserver_parse_auth): Ditto. + +2022-10-02 Andreas Schwab (tiny change) + + [SV 63111] Ensure output-sync is cleaned on re-exec and recursion + Now that output-sync is using a separate file as a mutex rather than + stdout, ensure the new file descriptor is closed before re-exec and + not inherited by children. + + * src/main.c (main): Call osync_clear() before re-exec. + * src/posixos.c (osync_setup): Reset output-sync handle inheritance. + (osync_parse_mutex): Ditto. + +2022-10-01 Paul Smith + + * src/function.c: Change int to uint to align with gmk_func_ptr + +2022-10-01 Dmitry Goncharov + + * doc/make.texi (Loaded Object API): [SV 63126] Fix typos and examples + +2022-10-01 Paul Smith + + Implement a simple xorshift 32bit random number generator + Avoid relying on the system random number generator for our random + shuffle, so that the same seed gives the same results on all systems. + This generator doesn't need to be amazing, just pretty good, so don't + bother with xorshift* or xorshift+, etc. + + * src/makeint.h: Declare make_seed() and make_rand(). + * src/misc.c (make_seed): Set the seed value for the RNG. + (make_rand): Return the next random number. If the seed was not set + initialize it first. + * src/shuffle.c (shuffle_set_mode): If we don't get a seed from the + user just leave it unset (0). + (shuffle_deps_recursive): Use make_seed() not srand(). + (random_shuffle_array): Use make_rand() not rand(). + +2022-09-25 Dmitry Goncharov + + [SV 63100] Set the floc of every created goal dep struct + * src/read.c (eval): Initialize the goaldep floc pointer. + * tests/scripts/features/loadapi: Verify that the floc is set after + unloading and reloading dynamic objects. + +2022-09-25 Paul Smith + + * doc/make.texi: Update out of date behavior for grouped targets. + + * README.git: Announce releases to the platform-testers list + +2022-09-25 Paul Smith + + Provide new functions to convert long long to string + The previous attempt to use PRI* macros to avoid compiler-specific + printf format specifiers didn't work because we are using raw + long long type, not the uintX_t types. On systems where long and + long long are the same size, uint64_t might be type "long" and PRId64 + is just "ld". + + Instead write new functions that convert [unsigned] long long to a + string and call those instead. + + * src/makeint.h: Declare make_lltoa() and make_ulltoa(). + * src/misc.c (make_lltoa): New function that writes a long long value + into a provided buffer. Return the buffer for ease-of-use. + (make_ulltoa): Ditto, for unsigned long long. + * src/function.c (func_wordlist): Call these new methods. Also + rework the error strings so we share the translated string. + * src/dir.c (print_dir_data_base): Call the new methods instead of + using MSVC macros. + +2022-09-25 Paul Smith + + Always restore global environ if we use vfork + We may change the global environ variable in the child; when using + vfork() this also sets it in the parent. Preserve the parent's + environ in child_execute_job() so it takes effect for all callers. + + Reported by Denis Excoffier + Root cause found by Martin Dorey + + * src/job.c (start_job_command): Remove save/restore of the parent + environment. + (child_execute_job): Add save/restore of the parent environment, + if we use vfork(). + * tests/scripts/functions/shell: Add a test the crashes if we don't + reset environ after we run $(shell ...). + +2022-09-25 Dmitry Goncharov + + * configure.ac: [SV 63070] Clean up the test program for posix_spawn. + +2022-09-25 Paul Smith + + * src/posixos.c (osync_clear): Don't close invalid FDs. + + * maintMakefile: Use gnulib ncftpput-ftp if ncftpput is missing. + + * src/misc.c (strncasecmp): Use size_t for length to match std. + * src/misc.h (strncasecmp): Fix the declaration. + + * configure.ac: Update to GNU make 4.3.91 + * NEWS: Update the version and clarify some backward-compat issues. + +2022-09-25 Eli Zaretskii + + Fix compiler warnings in the MS-Windows build. + * src/w32/w32os.c (osync_get_mutex, osync_parse_mutex): Cast to + DWORD_PTR when converting integers to HANDLEs and vice versa. + + * src/w32/pathstuff.c (w32ify): Pacify compiler warnings about + 'strncpy'. + + * src/makeint.h (PRId64) [!HAVE_INTTYPES_H]: Define if undefined. + * src/function.c (func_wordlist): Use PRId64 instead of %lld. + +2022-09-24 Eli Zaretskii + + Avoid compilation warnings + * src/implicit.c: (pattern_search): + * src/main.c: (main): Avoid compilation warnings for variables + only used when compiling a debug version with assertions. + +2022-09-20 Paul Smith + + Release GNU make 4.3.90 + * NEWS: Update for the prerelease. + * bootstrap.conf: Choose the latest stable gnulib. + * README.git: Updates. + + * tests/script/parallelism: Force wait to remove races. + +2022-09-20 Dmitry Goncharov + + [SV 56301] Fail if an included makefile can't be built + Fail if a mandatory include file fails to be built even if it's + built as part of a grouped target where the other include file + is optional. + + * src/main.c (main): If a makefile doesn't build set any_failed. + * tests/scripts/features/include: Add tests. + * tests/scripts/options/dash-k: Stop after include build failure. + +2022-09-20 Paul Smith + + * tests/scripts/features/statipattrules: [SV 17374] Add test + Verify that double-colon static pattern rules work. + +2022-09-20 Paul Smith + + [SV 12078, SV 62809] Rebuild grouped targets if any is missing + If any of a set of grouped targets is missing or out of date, even + if make is not trying to build that target, rebuild them all. + Ensure this is true for explicit grouped targets as well as pattern + rule grouped targets. + + Original patch by Jonathan Gravel + + * src/remake.c (update_file_1): After matching any pattern rules, + go through the also_make targets and set noexist as needed. Also + compute the oldest this_mtime. + * tests/scripts/features/grouped_targets: Add regression tests. + * tests/scripts/features/patternrules: Ditto. + * tests/features/vpath: Rewrite to use modern run_make_test(). + Add a test that we check for VPATH before implicit rule search. + Move the tests in vpath2 and vpath3 into this suite. + * tests/features/vpathplus: Rewrite to use modern run_make_test(). + +2022-09-17 Dmitry Goncharov + + * tests/scripts/targets/WAIT: [SV 63071] Remove possible test races. + +2022-09-13 Paul Smith + + * doc/make.texi (Parallel Disable): Add clarifications. + * NEWS: Suggest how to change makefiles that use $(MAKEFLAGS). + +2022-09-12 Paul Smith + + [SV 13862] Implement the .WAIT special target + The next version of the POSIX standard defines parallel execution + and requires the .WAIT special target as is implemented in some other + versions of make. + + This implementation behaves similarly to others in that it does not + create a relationship between targets in the dependency graph, so + that the same two targets may be run in parallel if they appear as + prerequisites elsewhere without .WAIT between them. + + Now that we support .WAIT it's trivial to also support prerequisites + of the .NOTPARALLEL special target, which forces the prerequisites of + those targets to be run serially (as if .WAIT was specified between + each one). + + * NEWS: Announce the new .WAIT and .NOTPARALLEL support. + * doc/make.texi (Parallel Disable): A new section to discuss ways in + which parallel execution can be controlled. Modify cross-refs to + refer to this section. + * src/dep.h (struct dep): Add a new wait_here boolean. + (parse_file_seq): Add PARSEFS_WAIT to check for .WAIT dependencies. + * src/file.c (split_prereqs): Use PARSEFS_WAIT. + (snap_deps): If .NOTPARALLEL has prerequisites, set .WAIT between + each of _their_ prerequisites. + (print_prereqs): Add back in .WAIT when printing prerequisites. + * src/implicit.c (struct patdeps): Preserve wait_here. + (pattern_search): Ditto. Use PARSEFS_WAIT when parsing prereqs for + pattern rule expansion. + * src/read.c (check_specials): Don't give up early: remembering to + update these options is not worth the rare speedup. + (check_special_file): If .WAIT is given as a target show an error-- + once--if it has prereqs or commands. + (record_files): Call check_special_file on each target. + (parse_file_seq): If PARSEFS_WAIT is given, look for .WAIT prereqs. + If we see one assume that we are building a struct dep chain and set + the wait_here option while not putting it into the list. + * src/remake.c (update_file_1): If wait_here is set and we are still + running, then stop trying to build this target's prerequisites. + * src/rule.c (get_rule_defn): Add .WAIT to the prerequisite list. + * src/shuffle.c (shuffle_deps): Don't shuffle the prerequisite list + if .WAIT appears anywhere in it. + * tests/scripts/targets/WAIT: Add a test suite for this feature. + +2022-09-12 Dmitry Goncharov + + [SV 63045] Reload each intact unloaded shared object + If makefile rules do not update an unloaded shared object, load it + again. Avoid double loading of the same object if the setup function + returns -1. + + * src/filedef.h (struct file): Add "unloaded" flag. + * src/makeint.h (load_file): Take struct file *. + (unload_file): Return int. + * src/main.c (main): Reload unloaded shared objects if they weren't + updated. + * src/commands.c (execute_file_commands): Set "unloaded" and reset + "loaded" when a shared object is unloaded. + * src/read.c (eval): Set "loaded" and reset "unloaded" when a shared + object is loaded. Add successfully loaded files to the db. + * src/load.c (load_file): Check "loaded" to avoid double loading the + same object. Fix a memory leak of string loaded. Return -1, rather + than 1, if the object is already loaded. This fixes double loading of + the same object when the setup routine returns -1. + (load_object): Add a log message. + (unload_file): Return an error on dlclose failure. Log a message. + * tests/scripts/features/loadapi: Add new tests. + +2022-09-12 Sergei Trofimovich + + [SV 63047] Fix shuffle of SECONDEXPANSION prerequisites + Commit 07eea3aa4 `make --shuffle` prevented shuffling prerequisites + that use .SECONDEXPANSION, since shuffle happens before expansion. + This has two problems: + 1. No shuffling happens for such prerequisites. + 2. Use-after-free when outdated '->shuf' links are used. + + Add a reshuffle into expansion phase right after dependency changes. + + * src/file.c (expand_deps): Add reshuffle if dependencies change. + * src/shuffle.c (identity_shuffle_array): Fix comment typo. + * tests/scripts/options/shuffle: Add new SECONDEXPANSION test. + +2022-09-11 Paul Smith + + * doc/make.texi (How Make Works): Clarify default goal exceptions. + + * src/shuffle.c: Minor coding changes. + +2022-09-11 Paul Smith + + Support the MAKE_TMPDIR environment variable + Allow build systems to choose an alternative location for make to + store its temporary files. + + * NEWS: Announce the new environment variable. + * doc/make.texi (Temporary Files): Provide documentation. + * src/misc.c (get_tmpdir): Split into a new function. Compute the + temporary directory and store it in a static location. + * tests/scripts/features/jobserver: Add a test of MAKE_TMPDIR. + +2022-09-10 Paul Smith + + [SV 62898] Document ways to hide special chars from make functions + * doc/make.texi (Function Call Syntax): Add a subsubheading describing + which special characters may need to be hidden from make functions. + +2022-09-10 Dmitry Goncharov + + [SV 63044] load: Update .LOADED if the setup function returns -1 + * src/load.c (load_file): Update .LOADED if setup returns non-0. + * tests/scripts/features/load: Change the return value based on an + environment variable. Ensure that returning -1 still adds to + .LOADED. Also add a test that verifies that make doesn't try to + rebuild the loaded file if -1 is returned. + +2022-09-10 Paul Smith + + Enhance the make.texi formatting + Notes provided by Tzvetelin Katchov . + + * doc/make.texi: Remove obsolete @refill statements. Add some breaks + to overfull lines. Fix up some example text. + +2022-09-10 Paul Smith + + Clean up maintMakefile + Notes provided by Tzvetelin Katchov + + * maintMakefile (git-very-clean): Add -x to git clean. + (GNULIBDIR): Use GNULIB_SRCDIR, or the local module if not set. + +2022-09-10 Paul Smith + + [SV 63037] Fix tests for newer OS / compiler + * tests/scripts/features/load: Add function prototypes. + * tests/scripts/features/temp_stdin: Only set user execute bits. + Some configurations don't allow changing the group bits...?? + +2022-09-10 Paul Smith + + [SV 63040] shell: Fall back to the callers environment + If we detect a recursive variable reference when constructing the + environment for the shell function, return the original value from the + caller's environment. Other options such as failing, returning the + empty string, or returning the unexpanded make variable value have + been shown to not behave well in real-world environments. If the + variable doesn't exist in the caller's environment, return the empty + string. + + Found by Sergei Trofimovich when testing older + versions of autoconf. + + * NEWS: Clarify this behavior. + * doc/make.texi (Shell Function): Ditto. Also add info about !=. + * src/expand.c (recursively_expand_for_file): Search the caller's + environment if we detect a recursive variable expansion. + * tests/scripts/functions/shell: Add tests for this behavior. + +2022-09-08 Paul Smith + + [SV 63016] Don't fail exporting to $(shell ...) + The fix for SV 10593 caused recursive expansion errors when exporting + a variable that contains a $(shell ...) invocation. If we see this + type of recursion, ignore it and expand to the empty string rather + than failing. + + * src/variable.h (env_recursion): New global variable. + * src/variable.c (target_environment): If creating the environment + for a $(shell ...) function increment env_recursion. Remove the + check for expansion in a shell function context. + * src/expand.c (recursively_expand_for_file): Check for recursive + expansion in a $(shell ...) environment context and if present, + show the verbose message and return the empty string. + * tests/scripts/functions/shell: Add a test for this situation. + +2022-09-08 Paul Smith + + Ensure debug output ends in newline + * src/load.c (load_object): Debug output strings must include \n. + * src/variable.c (target_environment): Ditto. + * src/posixos.c: Remove extra newlines. + +2022-09-08 Paul Smith + + Sanitize tar file ownership, mode, and order + For reproducibility ensure all files in the dist tar file are owned by + root, and sorted by name. Force the mode on all files to be writable + by the owner and not writable by group or user, by default. + + Remove unnecessary execute permissions from build_w32.bat. + + Recommended by Tzvetelin Katchov . + +2022-09-08 Paul Smith + + bootstrap: Update to the latest gnulib bootstrap model + * README.git: Document the changes. + * bootstrap.conf: Set GNULIB_REVISION to avoid random updates. + * configure.ac: Set the minimum autoconf version back to 2.69: + that's the most common version deployed today, and it still works. + * bootstrap: Copy the latest from gnulib. + * autogen.sh: Ditto. + * autopull.sh: Ditto. + * bootstrap-funclib.sh: Ditto. + +2022-08-30 Paul Smith + + Fix tests for MacOS and Windows + * maintMakefile: Remove the template headers as prerequisites. + * tests/scripts/features/jobserver: Only test fifo if enabled. + * tests/scripts/variables/INCLUDE_DIRS: On MacOS none of the default + directories exist so .INCLUDE_DIRS is empty by default. + * tests/scripts/features/se_explicit: Fail via exit. cp will show + different error messages on different systems. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/se_statpat: Ditto. + +2022-08-30 Paul Smith + + [SV 62840] Don't change IO buffering before printing version + If users run 'make --version | head -n1' they expect make to exit + with a success (0) code. This works because the pipe forces the + default buffering on stdout to be fully buffered so all the output + is printed to the pipe in a single write(2) and won't fail. However + due to output sync we forcibly set stdout to line buffered, which + means if the reader closes the pipe fast enough make will exit with + an error code because the write to stdout failed. + + Move the setup done in output_init() back into main() where it can + be done in a proper order. Rework the order of operations during + startup so that we check for help and version flags before we change + the buffering. Clean up the behavior of print_usage(). + + Original changes from Dmitry Goncharov . + + * src/main.c (switches): Don't send --version in the environment. + (print_usage): Add a blank line after the version before the usage. + Move the die() into this function since we always die() afterward. + Note the die will flush so no need to do it explicitly. + (print_version): The caller will fflush when appropriate. + (close_stdout): Move from output.c so it is installed early. + (decode_switches): Only call print_usage on error, not for --help. + (main): Install the close_stdout handler immediately after start. + Move the calls to print_usage() due to --help and --version to be + called immediately after we decode the switches. Move the buffer set + here from output_init(), immediately after we know we'll be running. + * src/output.c (output_init): Move buffer setting to main(). + (close_stdout): Move to main(). + +2022-08-30 Paul Smith + + Rework output sync to lock a temp file on POSIX + Some POSIX systems do not allow locks to be taken on non-files, such + as pipes. This is a problem since very often make is invoked with + its stdout redirected to a pipe. Also, if stdout is redirected to a + file that already has a lock on it for some other reason (perhaps a + shared file such as /dev/null) it can cause a hang. + + This means our previous method of locking stdout, although it had some + nice advantages, is not portable enough. Instead, use a temporary + file and take the lock on that. We pass the name of the file to child + make processes. On Windows we continue to use a shared mutex for + output sync. + + Remove POSIX emulation functions like fcntl from Windows; instead + follow the lead of the jobserver and create an interface in os.h for + output sync, and move the OS-specific content to posixos.c and + w32os.c. + + * NEWS: Add a note. + * src/makeint.h (ALL_SET): Check that all bits are set. + * src/os.h: Add bits for checking the state of stdin/stdout/stderr. + Add prototypes for OS-specific output sync methods. + * src/posixos.c (check_io_state): Determine the status of stdin, + stdout, stderr an return a suite of bits describing them. + (osync_enabled): If the global variable holding the FD of the lock + file (osync_handle) is valid return true. + (osync_setup): Create a temporary file and remember its name in a + global variable (osync_tmpfile), and set osync_handle. + (osync_get_mutex): If output sync is enabled, return the filename + of the lock file prefixed with "fnm:" to denote a filename. + (osync_parse_mutex): If the provided filename has the wrong format + disable output sync. Else open the lock file and set osync_handle. + (osync_clear): Close osync_handle. If we're the parent make, then + also unlink the temporary file. + (osync_acquire): Take a lock on the osync_handle descriptor. + (osync_release): Release the lock on the osync_handle descriptor. + (fd_set_append): Add APPEND mode to a file descriptor. + * src/w32/w32os.c: Perform the same actions as posixos.c, copying + the details from src/w32/compat/posixfcn.c. Use a mutex rather + than locking a temporary file. + * src/output.h: Remove all the OS-specific content. + * src/output.c: Remove all the OS-specific content. + (set_append_mode): Remove and replace with fd_set_append(). + (sync_init): Remove and replace with check_io_state(). + (acquire_semaphore): Remove and replace with osync_acquire(). + (release_semaphore): Remove and replace with osync_release(). + (setup_tmpfile): If the IO state is not obtained, get it. If stdout + and/or stderr are valid, set up a tempfile to capture them. + (output_init): Set io_state if not set already, and check it when + deciding whether to close stdout on exit. + * src/main.c (main): If we're syncing, set up the mutex using the + new osync_setup() / osync_parse_mutex() methods. + (prepare_mutex_handl_string): Replace with osync_parse_mutex(). + (die): Call osync_clear(). + * src/w32/compat/posixfcn.c: Remove implementations of fcntl(), + record_sync_mutex(), create_mutex(), and same_stream(). + +2022-08-30 Paul Smith + + Add get_tmpfd() and allow anonymous temp files + The output sync feature wants a file descriptor not a FILE*. We were + using tmpfile() but this returns FILE* which means we needed to dup() + the descriptor then fclose() the original, which is just unnecessary + overhead for every command we run. + + Create a get_tmpfd() method that returns a file descriptor directly + by using mkstemp() if available, else do the best we can. + + Also allow anonymous temp files if the filename pointer is NULL. + This causes the file to be unlinked. On Windows this requires a + special open so add an os_anontmp() method to handle this. + + * src/makeint.h: Add prototype for get_tmpfd(). + * src/misc.c (get_tmpfd): If we have mkstemp() use that, else just + open(2). If we don't want to keep the filename, unlink the file. + (get_tmpfile): Use get_tmpfd() if we have fdopen(), else use fopen(). + * src/output.c (output_tmpfd): Call get_tmpfd() with NULL. + * src/os.h (os_anontmp): On Windows make this a function, else fails. + * src/w32/compat/posixcfn.c (tmpfile): Move to w32os.c:os_anontmp(). + * src/w32/w32os.c (os_anontmp): Create a temp file that will be deleted + when the process exits, and return a file descriptor to it. + +2022-08-29 Paul Smith + + test_driver: check for leftover temp files after each test + Reset the temp directory for every test to a local directory, then + after each test see if any new temp files were created and not + deleted: if they were then fail the test. Rather than delete the + temp files we leave them there and avoid reporting files that were + seen before, so the user can investigate them. + + Rewrite the temp_stdin tests to rely on this built-in behavior + rather than implementing the checks directly. + + * tests/test_driver.pl: Create a $TEMPDIR variable pointing to a + temporary directory outside the test temp directory. + (toplevel) Before starting any tests create a temp directory and set + the POSIX and Windows temp directory environment variables to use it. + (compare_output) Check the contents of the temp directory. If any + new files have appeared, fail the test. + * tests/scripts/features/temp_stdin: Remove check_tempfile() and + all users of it, plus setting of temp environment variables. + +2022-08-22 Dmitry Goncharov + + [SV 62908] Don't free fifo_name twice during error handling + * src/posixos.c (jobserver_setup): Set fifo_name to NULL after free. + * tests/scripts/features/jobserver: Add tests. + +2022-08-22 Paul Smith + + Fix bootstrap.bat for bootstrapping on Windows + * README.git: Clarify that these methods are lightly tested. + * build_w32.bat: Don't support any config step: fail if not completed. + Move the config steps into bootstrap.bat. Don't print compile lines + by default and add a --verbose option to show them. + * bootstrap.bat: Ensure we have curl and sed before we do anything. + Pull the latest necessary files from gnulib. Create a convert.sed + script that can update the various template files, and update + Basic.mk, config.h.W32, and gmk-default.h. + * tests/run_make_tests.pl: Remove CRLF rather than using chop. If we + run perl in Git for Bash it seems to handle newlines differently. + * tests/scripts/features/temp_stdin: Remove the make copy and close + STDIN so we can delete the temp file on Windows. + * .gitignore: Ignore the convert.sed script. + +2022-08-14 Paul Smith + + * doc/make.texi (Variables/Recursion): [SV 56446] Clarify export docs + +2022-08-07 Paul Smith + + * doc/make.texi (Goals): [SV 51306] Improve MAKECMDGOALS example + +2022-08-07 Dmitry Goncharov + + * doc/make.texi (Remaking Makefiles): [SV 61623] Add optimization + +2022-08-03 Paul Smith + + * doc/make.texi (Chained Rules): [SV 61957] Clarify NOTINTERMEDIATE + + [SV 62496] Fix example of testing MAKEFLAGS + * doc/make.texi (Options/Recursion): Define the layout of MAKEFLAGS. + (Testing Flags): Fix the example to test the first word. + +2022-08-02 Paul Smith + + Support implementing the jobserver using named pipes + Using anonymous pipes for jobserver support has some advantages: + for example there is nothing on disk that needs to be cleaned up. + However it has many obscure problems, related to the fact that in + order for it to work we need to ensure these resources are properly + passed through to child processes that want to use the jobserver. + At the same time we don't want to pass the pipe to process which + DON'T know about the jobserver. + + Other processes can open file descriptors which we then think are + our jobserver, but aren't. And, we open the pipe file descriptors + in blocking mode which doesn't work for all users. + + See issues such as SV 57178, SV 57242, and SV 62397 + + To avoid these issues, use named pipes (on systems where they are + available) instead of anonoymous pipes. This simplifies many things: + we never need to pass open file descriptors to our children; they + can open the jobserver named pipe. We don't need to worry about + recursive vs. non-recursive children. Users don't have to "pass + through" the resources if they are invoking sub-makes. Each child + can open its own file descriptor and set blocking as needed. + + The downside is the named pipe exists on disk and so must be cleaned + up when the "top-level" make instance exits. + + In order to allow make to continue to be used in build systems where + older versions of GNU make, or other tools that want to use the + jobserver, but don't understand named pipes, introduce a new option + --jobserver-style that allows the user to choose anonymous pipes. + + * NEWS: Announce the change and the --jobserver-style option. + * doc/make.1: Add --jobserver-style documentation. + * doc/make.texi (Special Variables): Add missing items to .FEATURES. + (Options Summary): Add --jobserver-style. + (POSIX Jobserver): Named pipes, changes to --jobserver-auth, and the + --jobserver-style option. + (Windows Jobserver): Document --jobserver-style for Windows. + * configure.ac: Check for mkfifo. + * src/config.h-vms.template: Undefined HAVE_MKFIFO. + * src/config.h.W32.template: Ditto. + * src/main.c: Add jobserver-style as a new command line option. + (main): Add jobserver-fifo to .FEATURES if supported. Pass the style + option to jobserver_setup(). + * src/os.h (jobserver_setup): Accept a style string option. + * src/posixos.c (enum js_type): Enumeration of the jobserver style. + (js_type): Which style we are currently using. + (fifo_name): The path to the named pipe (if in use). + (jobserver_setup): If no style is given, or "fifo" is given, set up a + named pipe: get a temporary file and use mkfifo() on it, then open it + for reading and writing. If something fails fall back to anonymous + pipes. + (jobserver_parse_auth): Parse jobserver-auth to determine the style. + If we are using a named pipe, open it. If we're using anonymous pipes + ensure they're valid as before. + (jobserver_get_invalid_auth): Don't invalidate the jobserver when + using named pipes. + (jobserver_clear): Clean up memory used for named pipes. + (jobserver_acquire_all): Unlink the named pipe when done. + * src/w32/w32os.c (jobserver_setup): Check the style argument. + * tests/scripts/features/jobserver: Use --jobserver-style to test + the anonymous pipe behavior, and also test named pipe/semaphore + behavior. Check invalid jobserver-style options. + * tests/scripts/functions/shell: Use --jobserver-style to test the + anonymous pipe behavior, and also test named pipe/semaphore + behavior. + +2022-08-02 Paul Smith + + Enhance get_tmpfile() and add get_tmppath() + Move all the logic on creating temporary files into misc.c, and add + a new function get_tmppath() that returns the pathname to a temporary + file without creating or opening it. + + * src/makeint.h: Add a declaration for get_tmppath(). Remove the + template argument from get_tmpfile(): it will compute its own. + * src/main.c (main): Remove the logic for computing templates. + * src/vmsjobs.c (child_execute_job): Ditto. + * src/misc.c (get_tmptemplate): New function to return an allocated + template string for use with various mktemp-style functions. + (get_tmppath): Return an allocated path to a temporary file, but do + not create it. Generally this should be avoided due to TOCTOU issues. + (get_tmpfile): Use get_tmptemplate() to generate a template rather + than using one passed in. If we don't have mkstemp() then use + get_tmppath() to compute the path of a temp file. + +2022-07-30 Dmitry Goncharov + + [SV 62706] Only second-expand targets that might be built + Second-expand only the prerequisites of the targets being built. + Defer second-expanding the prerequisites of targets until we need + to decide if they should be built. + + * NEWS: Mention the change in behavior. + * doc/make.texi (Secondary Expansion): Document the new behavior. + * src/filedef.h (struct file): Add flag snapped. + (expand_deps): Declare a function to second expand the + prerequisites of a target. + * src/file.c (rehash_file): Merge flag snapped. + (expand_deps): Remove qualifier static. Check flag snapped. + (snap_deps): Remove the loop which performed second expansion for all + targets. + * src/remake.c (update_file_1): Second expand the prerequisites of + the considered target. + * tests/scripts/features/se_explicit: Add tests. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/se_statpat: Ditto. + +2022-07-30 Paul Smith + + Disable the jobserver in non-recursive children + Savannah issues such as SV 57242 and SV 62397 show how passing + references to closed file descriptors via the --jobserver-auth option + in MAKEFLAGS can lead to problematic outcomes. + + When computing the child environment for a non-recursive shell, add + an extra option to MAKEFLAGS to disable the file descriptors for the + jobserver. + + Unfortunately this doesn't modify the value of the make variable + MAKEFLAGS, it only modifies the value of the sub-shell environment + variable MAKEFLAGS. This can lead to confusion if the user is not + considering the distinction. + + * src/makeint.h: Publish the jobserver-auth value. Add a global + definition of the name of the command line option. + * src/os.h (jobserver_get_invalid_auth): New function to return a + string invalidating the jobserver-auth option. + * src/w32/w32os.c (jobserver_get_invaid_auth): Implement it. On + Windows we use a semaphore so there's no need to invalidate. + * src/posixos.c (jobserver_parse_auth): If we parse the invalid + auth string, don't set up the jobserver. + (jobserver_get_invalid_auth): Return an invalid option. + * src/variable.h (target_environment): Specify if the target + environment is for a recursive shell or non-recursive shell. + * src/variable.c (target_environment): Move checking for MAKELEVEL + into the loop rather than doing it at the end. + Along with this, check for MAKEFLAGS and MFLAGS, and update them + based on whether we're invoking a recursive or non-recursive child, + and also on whether it's necessary to invalidate the jobserver. + * src/function.c (func_shell_base): Shell functions can never be + recursive to pass 0 to target_environment(). + * src/job.c (start_job_command): Specify whether the child is + recursive when calling target_environment(). + * src/main.c: Export jobserver_auth. sync_mutex doesn't need to + be exported. Use the global definition for the option name. + * tests/scripts/variables/MAKEFLAGS: Add tests for $MAKEFLAGS. + +2022-07-30 Paul Smith + + Ensure that MAKEFLAGS is set when invoking $(shell ...) + * src/main.c (main): Don't reset the jobserver if the number of + slots has not changed. + (define_makeflags): Add all normal flags even when ALL is not set. + * tests/scripts/functions/shell: Test invoking make in $(shell ...). + * tests/scripts/variables/MAKEFLAGS: Test the value of MAKEFLAGS in + $(shell ...). + + Take advantage of mempcpy() and stpcpy() + * src/makeint.h (stpcpy): Add missing declaration. + * src/amiga.c (MyExecute): Avoid extra strlen using stpcpy. + * src/function.c (func_shell_base): Ditto. + (func_error): Use memcpy() not strcpy() when we know the length. + * src/job.c (construct_command_argv_internal): Use stpcpy(). + * src/main.c (main): Ditto. + (define_makeflags): Ditto. + * src/variable.c (print_target_variables): Use memcpy() when we know + the length. + * src/commands.c (set_file_variables): Use mempcpy(). + * src/expand.c (variable_buffer_output): Ditto. + * src/file.c (expand_deps): Ditto. + * src/function.c (abspath): Ditto. + (handle_function): Ditto. + * src/implicit.c (pattern_search): Ditto. + * src/job.c (construct_command_argv_internal): Use mempcpy() and + don't add multiple spaces when there are no shell flags. + * src/main.c (decode_env_switches): Use mempcpy() to simplify. + (define_makeflags): Ditto. + * src/variable.c (selective_vpath_search): Ditto. + +2022-07-09 Paul Smith + + Convert HAVE_GETLOADAVG to HAVE_DECL_GETLOADAVG + We want to know if getloadavg() is declared, not if we have it. + + * configure.ac: Add it as a define (why is this not the default?) + * src/job.c: Conditionalize declaration on HAVE_DECL_GETLOADAVG. + * config.ami.template: Rename HAVE_GETLOADAVG to HAVE_DECL_GETLOADAVG. + * config.h-vms.template: Ditto. + * config.h.W32.template: Ditto. + Clean up and add new elements from latest config.h. + +2022-07-09 Paul Smith + + Merge in the latest gnulib findprog-in module + + Merge in the latest gnulib concat-filename module + + Merge in the latest gnulib getloadavg module + + Initial merge of the gnulib-port branch + +2022-07-09 Paul Smith + + Move our local m4 macros to gl/m4 + The gl subdirectory contains our local versions of gnulib module + implementations, so move m4/acinclude.m4 and m4/dospaths.m4 there. + + * gl/modules/make-macros: Create a new module to handle the macros. + * bootstrap.conf: Add the new module. + * configure.ac: Macro invocation is moved to make-macros. + * m4/.gitignore: Delete unnecessary ignore file: m4 is empty. + * .gitignore: Add m4/ as an ignored directory. + +2022-07-09 Paul Smith + + Move our fnmatch/glob implementation into gl/lib + The gl subdirectory contains our local versions of gnulib module + implementations, so move fnmatch* and glob* from lib to gl/lib. + + * gl/modules/make-glob: Add a proper Files: section. + * lib/.gitignore: Delete unnecessary ignore file: lib is empty. + * .gitignore: Add lib/ as an ignored directory. + +2022-07-09 Paul Smith + + * tests/run_make_tests.pl: Exit 1 if we detect an error. + + * configure.ac: Remove AC_FUNC_SETVBUF_REVERSED. + This macro is obsolete: no useful system has this problem anymore. + * src/output.c (output_init): Remove reference to SETVBUF_REVERSED. + * src/config.ami.template: Remove undef of SETVBUF_REVERSED. + * src/config.h-vms.template: Ditto. + * src/config.h.W32.template: Ditto. + + * configure.ac: Check for stpcpy() support. + * src/misc.c (stpcpy): Define it if not provided. + +2022-07-09 Paul Smith + + getloadavg: Remove support for privileged invocation + This was needed when getloadavg required privileged access; in this + case GNU make needed to be installed as a setgid program. But this + hasn't been supported by gnulib getloadavg() since 2011 and systems + are no longer using it, so remove it. + + * src/makeint.h (user_access): Remove unnecessary function. + (make_access): Ditto. + (child_access): Ditto. + * src/misc.c: Remove implementations of the *_access() functions. + * src/main.c (main): Remove unneeded call to user_access(). + * src/job.c (load_too_high): Remove calls to {make,user}_access(). + (exec_command): Remove call to child_access(). + * src/remote-cstms.c: Remove calls to these methods. I suppose it + might be possible this is needed and was piggy-backing on the + privileged setting but since that's been broken for a while I doubt + this is needed. If so we can bring back the implementation into + this source file. + * src/config.h.W32.template: Remove GETLOADAVG_PRIVILEGED undef. + * src/config.h-vms.template: Ditto. + * src/config.ami.template: Ditto. + +2022-07-09 Paul Smith + + * maintMakefile: Allow checkcfg rules to succeed. + We can no longer pass our mondo-warnings options to the builds, + as these will impact all the code including gnulib code, and this + won't work. Also allow the caller to disable either the build.sh + or makefile invocation, for testing. + * Makefile.am: Allow the caller to reset the path to the make + binary to be tested. Remove c90 test: gnulib doesn't support it. + + * build.sh: Manage libgnu_a-prefixed source files + + bootstrap: Remove strerror() + * bootstrap.conf: Remove strerror module + * configure.ac: Add a check for strerror + * src/misc.c: Add a default strerror() if not found + +2022-07-09 Paul Smith + + bootstrap: Remove strtoll() + This pulls in entirely too much stuff we don't need. Instead grab + just the gnulib source file, then include it in src/misc.c. + + * bootstrap.conf: Add just the lib/strtol.c source file. + * configure.ac: Check for strtoll. + * src/misc.c: Include strtol.c, with QUAD set, if needed. + +2022-07-09 Paul Smith + + bootstrap: Remove gnulib version of mempcpy() + This pulls in a metric ton of stuff that we otherwise don't need, just + for a one-liner that we already have a replacement for in src/misc.c. + + * bootstrap.conf: Remove mempcpy + * configure.ac: Add mempcpy to AC_CHECK_FUNCS + +2022-07-09 Paul Smith + + Run autoupdate and clean up autoconf usage + We can assume that the return type of a signal handler is void. + We can assume that, if sys/time.h exists, it can be included + with time.h. + + * bootstrap: Get the latest version + * configure.ac: Require a newer version of autoconf. + Remove unnecessary AC_PROG_CC_C99 (already have AC_PROC_CC). + Remove unnecessary AC_AIX, AC_ISC_POSIX, AC_MINIX. + Remove unnecessary AC_HEADER_STDC, AC_HEADER_TIME, AC_TYPE_SIGNAL. + Use strerror to search for the cposix library. + * src/commands.c (fatal_error_signal): Assume return type is void. + * src/commands.h: Ditto. + * src/job.c: Ditto. + * src/job.h: Ditto. + * src/main.c: Ditto. + * src/makeint.h: Ditto. + Don't bother with TIME_WITH_SYS_TIME. + * src/remote-cstms.c: Check HAVE_SYS_TIME_H. + * src/config.ami.template: Remove RETSIGTYPE. + * src/config.h-vms.template: Ditto. + * src/config.h.W32.template: Ditto. + Remove TIME_WITH_SYS_TIME. + +2022-07-09 Paul Smith + + [SV 10593] Export variables to $(shell ...) commands + Export all variables, including exported makefile variables, when + invoking a shell for the $(shell ...) function. If we detect a + recursive variable expansion, silently ignore that variable and do + not export it. We do print a debug message. + + * NEWS: Announce the potential backward-incompatibility. + * doc/make.texi (Shell Function): Document the export behavior. + * src/main.c (main): Add "shell-export" to .FEATURES. + * src/job.h: New function to free struct childbase. + * src/job.c (free_childbase): Implement it; call from free_child. + * src/function.c (func_shell_base): Use target_environment() to + obtain the proper environment for the shell function. + Use free_childbase() to free memory. + (windows32_openpipe): Don't reset the environment: the caller + already provided a proper PATH variable in envp. + * src/variable.c (target_environment): If we detect a recursive + expansion and we're called from func_shell, ignore the variable. + (sync_Path_environment): Simplify and reduce memory allocation. + * tests/scripts/functions/shell: Add tests for this. + +2022-07-09 Dmitry Goncharov + + [SV 62650] Show correct warning when combining targets + * src/file.c (rehash_file): Fix warning message. + (rehash_file): Fix comment to match the behavior. + * tests/scripts/features/se_explicit: Fix test. + * tests/scripts/features/mult_rules: Add a new test. + +2022-07-09 Dmitry Goncharov + + [SV 62514] Honor command line interface flags + Commit f2771aa614 introduced a bug where some switches were left out + of MAKEFLAGS. Instead of resetting switches, get the same results by + filtering out duplicates. + + * src/makeint.h: Remove reset_switches. + * src/main.c: (reset_switches): Remove reset_switches. + * (main): Remove call to reset_switches. + * (decode_switches): Filter out duplicate flags. + * src/variable.c: (set_special_var): Remove call to reset_switches. + * tests/scripts/variables/MAKEFLAGS: Verify that duplicate flags are + properly filtered out. + +2022-07-07 Paul Smith + + Add gnulib findprog-in + + Add gnulib concat-filename + + Add gnulib getloadavg + + Initial gnulib-port branch commit + +2022-06-19 Paul Smith + + Don't add GNUMAKEFLAGS to the environment + If GNUMAKEFLAGS was not present in the environment when we started, + don't add it. + + * src/main.c (main): Don't mess with GNUMAKEFLAGS unless it exists. + * tests/scripts/variables/GNUMAKEFLAGS: Test this behavior. + +2022-06-18 Paul Smith + + * tests/test_driver.pl: Don't freak if diff can't be found + + * build_w32.bat [WIN]: Use call for all invocations + +2022-06-17 Paul Smith + + Avoid overwriting buffers with long pathnames + Reported, with initial patch, by Gisle Vanem + + * src/main.c (find_and_set_default_shell) [W32]: Pass search_token + directly to w32ify: no need to make a copy first. When we need to + construct a path, use snprintf() to be sure we don't overwrite + the locally-allocated buffer. + * src/w32/pathstuff.c (w32ify) [W32]: Use the malloc version of + _fullpath(), followed by strncpy(), to avoid overwriting buffers. + +2022-06-04 Paul Smith + + * tests/scripts/features/temp_stdin: Remove nested "my" + * tests/scripts/features/statipattrules: Remove unset variable refs. + +2022-06-04 Dmitry Goncharov + + * tests/scripts/features/archives: Fix typo + +2022-06-04 Sergei Trofimovich + + [SV 62100] Add '--shuffle' option support + Introduce non-deterministic ordering into goal and prerequisite + traversal to help tease out inconsistent failures that may happen + when running in parallel build mode. + + Introduce second order into each dependency chain: + 1. Existing order is syntactic order reachable via 'dep->next' + 2. New order is shuffled order stored as 'dep->shuf' in each 'dep' + + When updating goals and prerequisites and '--shuffle' is provided, + use the shuffled order to walk the graph. When automatic variable + are set always use the syntactic order of parameters. + + * Makefile.am: Add new src/shuffle.c and src/shuffle.h file. + * build_w32.bat: Ditto. + * builddos.bat: Ditto. + * makefile.com: Ditto. + * po/POTFILES.in: Ditto. + * doc/make.texi: Add documentation for --shuffle. + * doc/make.1: Ditto. + * src/dep.h (DEP): Add the shuf pointer. + * src/filedef.h (struct file): Add was_shuffled flag. + * src/main.c: (shuffle_mode): Global flag for the shuffle mode. + (usage): Add the --shuffle option. + (switches): Ditto. + (main): Set shuffle_mode based on the command line parameter. + Reshuffle prerequisites if requested. + * src/remake.c (update_goal_chain): Walk the shuffled list if enabled. + (update_file_1): Ditto. + * src/shuffle.h: Provide an interface for shuffling prerequisites. + * src/shuffle.c: Implement option parsing and prerequisite shuffling. + * tests/scripts/options/shuffle: Test shuffle option and modes. + +2022-06-04 Paul Smith + + * src/misc.c (make_toui): Parse a string into an unsigned int + * src/makeint.h: Declare it. + * src/arscan.c (ar_scan): Replace atoi() calls with make_toui(). + Modify some integral types to be more correct. + * src/job.c (load_too_high): Replace atoi() calls with make_toui(). + * src/main.c (main): Ditto. + (decode_switches): Ditto. + + * src/misc.c (make_pid): A function to return the PID + * src/makeint.h: Declare it. + * src/commands.c (fatal_error_signal): Call it. + + * po/LINGUAS: Add a translation for Romanian + +2022-04-24 Noah Goldstein + + Replace strcmp() with memcmp() where possible + memcmp() is always faster than strcmp(). In places where we already + know that both buffers have sufficient size, replace strcmp() with + memcmp(). + + * src/main.c (main): Replace strncmp() with memcmp()==0. + * src/read.c (word1eq): Ditto. + * src/commands.c (set_file_variables): Ditto. + * src/function.c (func_filter_filterout): Ditto. + (a_word_hash_cmp): Use STRING_N_COMPARE since we know the length. + (func_sort): Replace strcmp() with memcmp(). + +2022-04-24 Noah Goldstein + + hash: Remove unnecessary isupper() check before tolower() + The standard requires that tolower() returns its argument if there's + no valid lowercase conversion: it's not necessary to check isupper() + before invoking tolower(). + + Comparing the performance of the old ISTRING_HASH to the new one + on all the files present in GLIBC. + + Data Type Old Time New Time + Alternating case 24985.754 13883.422 + random case 35211.777 13569.051 + all lower 18818.974 13706.645 + all upper 38859.454 13506.315 + + * src/hash.h (ISTRING_HASH_1): Omit isupper() check. + (ISTRING_HASH_2): Ditto. + +2022-04-24 Dmitry Goncharov + + [SV 62206] Fix %-substitution in second expansion of pattern rules + During second expansion of pattern rules only the first pattern in + each "group" was being substituted. E.g. in this makefile: + + .SECONDEXPANSION: + all: hello.x + %.x: $$(wordlist 1, 99, %.1 %.%.2) ; $(info $@ from $^) + hello.1 hello.\%.2 \%.1 \%.\%.2: ; + + the output would build "hello.1" and "%.%.2" because each function + is considered a single "word" and only the first pattern is replaced. + + Fix the expansion so each whitespace-separated string is considered a + word and the first pattern is replaced, giving "hello.1" and + "hello.%.2". + + * src/rule.c (snap_implicit_rules): Keep enough space to replace % + with $(*F) if necessary. + * src/implicit.c (pattern_search): During second expansion break each + get_next_word result into individual words and replace the first % in + each with $* or $(*F) as needed. + * tests/scripts/features/patternrules: Add tests for variations. + +2022-04-24 Dmitry Goncharov + + [SV 62175] Rework secondary expansion tests + The hash function we use can yield different results on big- and + little-endian systems which makes test output different. Choose + names to avoid this. + + * tests/scripts/features/patternrules: Choose portable target names. + * tests/scripts/features/se_explicit: Ditto. + * tests/scripts/features/se_implicit: Ditto. + +2022-04-24 Paul Smith + + * Makefile.am (check-regression): Rename jhelp to thelp + + * tests/scripts/options/dash-f: [SV 62118] Close STDIN + On Windows we can't delete open files, so close STDIN before + removing the temporary input file. + + * tests/scripts/features/reinvoke: [SV 62088] Close STDIN + On Windows we can't delete open files, so close STDIN before + removing the temporary input file. + + * tests/test_driver.pl (run_all_tests): Keep one copy of STDIN + + * Makefile.am: Add INSTALL to the EXTRA_DIST files + +2022-04-24 Dmitry Goncharov + + [SV 62356] If -R is set in the makefile, disable -r + If -R is given on the command line it implies -r as well; make this + same assumption if -R is provided in MAKEFLAGS set in the makefile. + + * src/main.c (main): Check no_builtin_variables_flag after reading + makefiles. + * tests/scripts/options/dash-r: Add a test. + +2022-04-24 Dmitry Goncharov + + [SV 62324] Simplify set_file_variables by passing in the stem + Previously we always used the file->stem value as our stem in + set_file_variables(); when that wasn't correct we had to temporarily + set that value while the function was called, then reset it afterward. + This led to issues (for example when we assumed the stem was a cached + string but it wasn't). + + Avoid this by passing in the stem as an argument so that different + values can be provided. + + Add tests to verify this. + + * src/commands.c (set_file_variables): Take second parameter stem to + relieve the callers of set_file_variables() from setting/restoring + file->stem. + * src/commands.h (set_file_variables): Ditto. + (execute_file_commands): Pass file->stem to set_file_variables(). + * src/file.c (expand_deps): Pass d->stem to set_file_variables() and + remove set and restore of file->stem. + * src/implicit.c (pattern_search): Pass stem to set_file_variables() + and remove set and restore of file->stem. + * tests/scripts/features/se_explicit: Add new tests. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/se_statpat: Ditto. + * tests/scripts/variables/automatic: Ditto. + +2022-04-24 Dmitry Goncharov + + [SV 62278] Only expand the first pattern during secondary expansion + During normal pattern rule expansion only the first pattern (%) is + expanded; however during secondary expansion all patterns were + expanded. Modify secondary expansion to match the behavior of normal + expansion. + + Implementation tweaked by Paul Smith + + * src/file.c (expand_deps): Don't use subst_expand() which replaces + all % with $*: instead replace only the first one, by hand. + Fix a memory leak where the dep structure was not always freed. + * tests/scripts/features/statipattrules: Use .RECIPEPREFIX not TAB. + Add a series of tests verifying that static pattern rules with and + without secondary expansion both return the same results. + +2022-04-24 Paul Smith + + * src/commands.h: [SV 62213] Forward-declare struct file / child + + * tests/test_driver.pl (toplevel): [SV 62174] Enforce the C locale + +2022-04-24 Paul Smith + + [SV 62173] Fix archive tests for non-GNU systems + Original patch from Dmitry Goncharov + + Fix the ar flags to match the default values in make. If the + U option is supported, add it to the end not the beginning, + since ARFLAGS now starts with a "-". + + * tests/test_driver.pl: Add defaults for global variables. + (get_osname): Preserve $osname if it's set from $^O + * tests/scripts/features/archive: Set the default arflags. + If "U" is available add it to the end of the flags. + +2022-04-24 Dmitry Goncharov + + * tests/scripts/options/dash-l: [SV 62172] Skip if not available + + * src/read.c (check_specials): [SV 62171] Reset ARFLAGS under .POSIX + +2022-04-24 Dmitry Goncharov + + [SV 62145] Remove a stdin temp file on re-exec failure. + If the re-exec fails, be sure to remove a temp makefile that was + created to read from stdin. + + * src/job.c (exec_command): Return on failure. + (child_execute_job): Call exit if exec_command returns. + * src/job.h (exec_command): Don't mark as NORETURN. + * src/main.c (main): Unlink stdin temporary file if re-exec fails. + * tests/run_make_tests.pl: Get value for ERR_nonexe_file/ERR_exe_dir. + * tests/scripts/features/temp_stdin: Test that temp file unlink works. + +2022-04-18 Paul Smith + + * tests/scripts/features/errors: Fix Perl warnings + * tests/scripts/options/dash-f: Ditto. + +2022-02-27 Paul Smith + + [SV 62118] Correctly handle -f- options on re-exec + The -f, -file, and --makefile options were not properly handled when + re-exec'ing due to makefile updates. This problem, plus a patch and + tests, was reported by Dmitry Goncharov . + + While examining this I found another bug: after re-exec we forgot the + batch file was temporary and never deleted it. + + I decided to fix all these problems at once using a different fix + than Dmitry's: I created a new internal-only command-line option, + --temp-stdin. When reconstructing the make options for a re-exec, + replace the -f/--file/--makefile option that reads from stdin with + --temp-stdin= so that the re-exec'd version of make knows + it's a temporary batch file and will delete it. + + We no longer need to add the -o options because the re-exec'd make + knows this is a temporary makefile and treats it as such. + + To simplify, replace the --file and --makefile options taking a + filename, with just -f on re-exec. + + Some examples of the rewrite: + + User command line Re-exec command line + ----------------- -------------------- + -f- --temp-stdin= + --file - --temp-stdin= + -f - --makefile a.mk --temp-stdin= -fa.mk + --file=a.mk -fa.mk + -fa.mk -fa.mk + -Rf a.mk -Rf a.mk + -Rf- -R --temp-stdin= + + * src/main.c (stdin_offset): Remember the offset into the makefiles + list of the batch file read from stdin. Remove stdin_nm. + (struct command_switch): Create a new --temp-stdin option, which + also updates the makefiles list. + (main): Add the temporary filename to the string cache. + Move the tempfile handling after checking makefile arguments for "-" + so that files provided via --temp-stdin are also handled specially. + When rewriting re-exec options, we may need one more than we had + originally so create a new argv list. Walk through the original + list and convert it to the new list, following the above process. + (decode_switches): Set the stdin_offset flag if we see --temp-stdin. + * tests/scripts/options/dash-f: Add many more tests, provided by + Dmitry Goncharov . + +2022-02-27 Paul Smith + + * tests/scripts/variables/MAKE_RESTARTS: Remove TAB chars + + * README.git: Fix compiler options for ASAN + +2022-02-27 Paul Smith + + Remove extraneous characters from fatal() calls + The fatal() method adds ". Stop.\n" to every message. + + * src/amiga.c (MyExecute): Remove newline from fatal() message. + * src/job.c (): Ditto. + * src/file.c (snap_deps): Remove "." from fatal() message. + * src/main.c (main): Ditto. + * src/load.c: Ditto. + * tests/scripts/targets/NOTINTERMEDIATE: Fix expected output. + +2022-02-27 Paul Smith + + * src/main.c: Ensure the stdin temp file is deleted when dying. + +2022-02-27 Dmitry Goncharov + + [SV 62088] Avoid re-exec due to stdin. + The fix for SV 60595 causes make to re-execute when the makefile is + read from stdin. E.g. + $ printf 'all:; $(info hello)' | make -sf - + + Reported by Sergei Trofimovich + Test added by Paul Smith + + * src/main.c (main): Set the mtime of the stdin temporary file. + * tests/scripts/features/reinvoke: Add a test. + +2022-02-27 Paul Smith + + tests: Allow run_make_test() to avoid passing -f + We already use undef makefile strings to mean "re-use the previous + makefile", so if the string is empty we'll assume it means "don't + use a makefile at all" (don't add -f). + + * tests/run_make_tests.pl (run_make_test): If the makefile string + is empty, don't create a makefile or add -f. + * tests/scripts/features/include: Change empty makefile to "\n". + * tests/scripts/misc/close_stdout: Ditto. + * tests/scripts/options/dash-r: Ditto. + +2022-02-27 Paul Smith + + tests: Preserve Windows temp environment variables + * src/main.c (main): Show the temp filename on error. Also on + Windows prefer TMP, then TEMP, and only lastly TMPDIR. + * tests/test_driver.pl: Add TMP, TEMP, and USERPROFILE to the list + of environment variables to preserve. + +2022-02-26 Paul Smith + + * tests/test_driver.pl: Support STDIN redirection. + Before running tests, duplicate STDIN then reset it after the test + completes. Also when -keep is provided, preserve the base and run + files. + +2022-02-21 Paul Smith + + Ensure buffers are large enough for integer values + Issue raised by Sergei Trofimovich + + * src/makeint.h (INTSTR_LENGTH): Update for unsigned values. + * src/function.c (func_lastword): Use INTSTR_LENGTH as buffer size. + (shell_function_completed): Ditto. + (func_call): Ditto. + * src/remote-cstms.c (start_remote_job): Ditto. + +2022-02-10 Paul Smith + + * : Update copyright notices. + +2022-02-06 Paul Smith + + * doc/make.1: Use "target" from the SYNOPSIS. + Reported by Helge Kreutzmann + +2022-02-06 Paul Smith + + Don't write $(shell ...) stdout to stderr on failure + If a $(shell ...) invocation failed due to a command-not-found error, + make wrote the stdout of that shell to our stderr for some reason. + That seems very wrong. + + If the command's stderr was not redirected then its output would have + already been written to its stderr, and if it was redirected then we + shouldn't take it upon ourselves to force it to go to stderr! + + * src/function.c (func_shell_base): Append shell stdout even if the + shell command failed. + * tests/run_make_tests.pl: Determine the error generated for + command-not-found situations. + * tests/scripts/functions/shell: Verify that redirecting stderr to + stdout will behave properly if the command is not found. + +2022-02-06 Paul Smith + + * Basic.mk.template: Allow arguments to the check target. + +2022-02-06 Dmitry Goncharov + + [SV 61805] Support quoted whitespace in .SHELLFLAGS with .ONESHELL + * src/job.c (construct_command_argv_internal): Call recursively to + parse .SHELLFLAGS when .ONESHELL is active. + * tests/scripts/targets/ONESHELL: Add tests. + +2022-02-06 Paul Smith + + * tests/scripts/features/double_colon: Update for modern tests. + + * tests/scripts/features/implicit_search: Add -r for safety. + +2022-02-06 Dmitry Goncharov + + [SV 48643] Add more tests of intermediates and unrelated targets + If a prereq of a pattern is explicitly mentioned as a prereq of an + unrelated rule, it should not be considered an intermediate file. + + * tests/scripts/features/double_colon: Add tests mentioning unrelated + explicit targets. + * tests/scripts/features/grouped_targets: Ditto. + * tests/scripts/features/implicit_search: Ditto. + * tests/scripts/features/patternrules: Ditto. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/statipattrules: Ditto. + +2022-02-06 Dmitry Goncharov + + [SV 48643] Make prereqs mentioned in unrelated rules explicit + * src/implicit.c (pattern_search): Set is_explicit when a prereq + is mentioned in an unrelated rule. + + * src/implicit.c (pattern_search): [SV 61864] Fix debug output. + +2022-02-06 Paul Smith + + Avoid interleaved $(info ) output + Since $(info ) function output is written using two system calls for + the message and the newline, it's possible for output from another + parallel make job to sneak in between them. + + Reported by Paul Eggert , who saw the report from + Lars Ingebrigtsen . + + * src/function.c (func_error): Paul provided a fix but instead I + rewrote the entire function: it's not possible for it to be invoked + with anything other than exactly one argument so don't worry about + re-combining the arguments. + +2022-02-06 Paul Smith + + * tests/scripts/features/implicit_search: [SV 48643] Cleanups. + + * src/implicit.c (pattern_search): Use const ptrs when possible. + Change suggested by Joe Filion + + * src/job.c (load_too_high): Re-enable Linux /proc/loadavg checks. + Further experimentation shows that my previous thinking that there + was a problem using this was woefully mistaken. The value generated + by the kernel shows runn*ABLE* processes not runn*ING* processes. + * NEWS: Announce the change. + + * doc/make.texi (Using One Shell): Correct example to use $<. + +2022-01-17 Jouke Witteveen + + * src/function.c (parse_textint): Handle ints without 0 properly. + * tests/scripts/functions/intcmp: Add tests for values without 0. + +2022-01-17 Paul Smith + + [SV 61226] Revert changes to detect missing included files + The fix for SV 60595 introduced a backward-incompatibility: rules that + purported to rebuild included files, but didn't actually do so, were + treated as errors whereas before they were ignored. This breaks a + common idiom in makefiles where an empty recipe is created for an + included makefile so make doesn't complain if it doesn't exist. + + Unfortunately this means make cannot diagnose some types of errors. + + Extra tests supplied by Dmitry Goncharov . + + * doc/make.texi (Including Other Makefiles): Clarify this behavior. + * src/main.c (main): Don't run the new check-for-errors behavior. + * tests/scripts/features/reinvoke: Reset tests of the "old" behavior + and add new tests for this situation. + +2022-01-17 Paul Smith + + Ensure that loaded functions increment the command count + Since we don't know what a loaded function (via Guile or load) may + do, increment the command count just in case. + + * src/function.c (struct file_table_entry): New adds_command bool. + (FT_ENTRY): Initialize it to 0 for built-in functions. + (expand_builtin_function): If adds_command, increment the count. + (define_new_function): Set adds_command for loaded functions. + +2022-01-17 Paul Smith + + * src/read.c (tilde_expand): Put back '/' before returning. + Joe Filion noted that the string is modified, + and Henrik Carlqvist noticed that it wasn't put + back in all cases. + +2021-12-29 Paul Smith + + * tests/scripts/targets/INTERMEDIATE: Rewrite for new test method + +2021-12-29 Paul Smith + + Do not force targets to be SECONDARY + In SV 43677 we forced targets to be secondary if we found an + intermediate file that was listed as a prerequisite of another + target. This overrides .INTERMEDIATE settings, so doesn't work. + Now that we have an is_explicit flag in targets, use that instead. + + * src/implicit.c (pattern_search): Remove setting of secondary. + Preserve the value of the is_explicit flag when creating a new + file target, and consider it when setting the intermediate flag. + * tests/scripts/features/patternrules: Add a test w/out INTERMEDIATE + * tests/scripts/targets/INTERMEDIATE: Add a test with INTERMEDIATE + +2021-12-29 Dmitry Goncharov + + [SV 48643] Preserve target-specific variables on intermediate files + Target-specific variables used to define the target as "ought to + exist" so they could never be intermediate. Now they can be, so + merge the target-specific variables from the intermediate target + so they're not lost. + + * src/implicit.c (pattern_search): Use merge_variable_set_lists + to merge target-specific variables. + * tests/scripts/features/implicit_search: Add tests of target- + specific variable assignments and implicit rules. + +2021-12-29 Paul Smith + + * README.template: Clean up patch submission information + +2021-12-19 Jouke Witteveen + + * src/read.c (find_percent_cached): [SV 60798] Silence GCC11 warnings + + [SV 60798] Silence bogus GCC10 and GCC11 warnings + * src/main.c (main): Use a separate variable to track final character. + * src/read.c (eval): Track the semicolon position not one beyond it. + * src/variable.c (do_variable_definition): Include a default switch + case to ease the work of the exhaustiveness prover. + +2021-12-19 Paul Smith + + Update documentation with instructions for patch submission + * README.template: Add notes on how to submit patches. + * README.git: Point to the README. + * doc/make.texi: Ditto. + +2021-12-19 Paul Smith + + Change HTTP URLs to use HTTPS instead + Also remove unnecessary tests/COPYING file. + + * README.template: Change http: to https: + * README.git: Ditto + * doc/make.texi: Ditto + * doc/make.1: Ditto + * src/main.c: Ditto + * maintMakefile: Remove invalid URL + +2021-12-19 Paul Smith + + * src/makeint.h: Compute INTSTR_LENGTH based on size of intmax_t + Math suggested by Edward Welbourne + +2021-12-19 Paul Eggert + + Remove arbitrary limits on intcmp integers + We don't need to parse strings into C integer values to compare them. + + * src/function.c (parse_textint): Find boundaries of a numeric string. + (func_intcmp): Use parse_textint() to compare integers textually. + * tests/scripts/functions/intcmp: Test with extra-large numbers. + +2021-12-19 Paul Smith + + Use a well-known error string for out-of-bound function arguments + * src/function.c (parse_numeric): Check for empty value and error. + If we find ERANGE just print our own error, not strerror. + (func_word): Use a generic "not good" error message. + (func_wordlist): Ditto + (func_intcmp): Ditto + * tests/run_make_tests.pl: Remove code to find strerror(ERANGE) + * tests/scrips/functions/intcmp: Update the error message. + * tests/scrips/functions/word: Ditto. + + * doc/make.text (Wildcards): Document that glob results are sorted. + +2021-12-19 Paul Smith + + [SV 61621] Don't use POSIX_SPAWN_RESETIDS with posix_spawn() + When make is invoked in a environment where the user namespace is + restricted, such as under unshare(1) (on GNU/Linux), it won't be able + to find its real UID so the effective UID can't be set to it and + posix_spawn() will fail with EINVAL. + + It's not less safe to run recipe jobs using the same UID values that + make was invoked with, so don't worry about this flag. + + * src/job.c (child_execute_job): Don't set POSIX_SPAWN_RESETIDS flag. + +2021-12-05 Paul Smith + + * .gitignore: Ignore patch files. + +2021-11-28 U2FsdGVkX1 (tiny change) + + * src/commands.c (fatal_error_signal) [W32]: Use %lu for DWORD. + * src/function.c (windows32_openpipe) [W32]: Ditto. + +2021-11-28 Paul Smith + + * NEWS: Update with author details + + Special-case Windows error results + * tests/scripts/features/errors: Match Windows-specific errors. + * tests/scripts/features/targetvars: Match Windows-specific errors. + * tests/scripts/misc/general4: Match Windows-specific errors. + +2021-11-28 Paul Smith + + Convert word, wordlist, and intcmp functions to use long long + Modify make functions that parse integer values to use long long + values instead of long: on Windows long is the same as int (4 bytes) + and we don't want behavior to differ between different platforms. + + * bootstrap.conf: Change strtol module to strtoll module. + * src/function.c (parse_numeric): Use strtoll() and return long long. + (func_word): Use long long. + (func_wordlist): Use long long. Verify second argument is >= 0. + (func_intcmp): Use long long. + * src/config.ami.template: Don't define HAVE_STRTOLL. + * src/config-vms.template: Define HAVE_STRTOLL. + * src/config.W32.template: Define HAVE_STRTOLL. + * tests/run_make_tests.pl: Set $ERR_out_of_range to the proper string. + * tests/scripts/functions/word: Rework to use the new style and avoid + TAB characters. Verify trailing whitespace is ignored. Add a test + for a negative second argument to wordlist. Add tests for max signed + integer values. Use $ERR_out_of_range for the error string. + * tests/scripts/functions/intcmp: Add tests for min and max signed + integer values. Use $ERR_out_of_range for the error string. + +2021-11-28 Jouke Witteveen + + Introduce $(intcmp ...) for numerical comparison + Numbers can come from $(words ...), automatic variables such as + $(MAKELEVEL), from environment variables, or from shell output such as + through $(shell expr ...). The $(intcmp ...) function allows + conditional evaluation controlled by numerical variables. + + * NEWS: Announce this feature. + * doc/make.texi (Functions for Conditionals): Document 'intcmp'. + * src/function.c (func_intcmp): Create the 'intcmp' built-in function. + * tests/scripts/functions/intcmp: Test the 'intcmp' built-in function. + +2021-11-28 Jouke Witteveen + + Use strtol() instead of atoi() + strtol() is part of C89 and a fallback is provided by gnulib. + + * src/function.c (func_word, func_wordlist): Change atoi to strtol. + * test/scripts/functions/word: Add out-of-range verification testing. + +2021-11-27 Jouke Witteveen + + * src/makeint.h: Removed unused atol declaration + +2021-11-27 Paul Smith + + * src/implicit.c (pattern_search): Fix text for easier translation. + + [SV 48643] Update the implicit rule search docs + * NEWS: Announce the change. + * doc/make.texi (Implicit Rule Search): Update the definition of + "ought to exist" and add the extra step for compatibility mode. + +2021-11-27 Dmitry Goncharov + + [SV 48643] Enhance "ought to exist" definition + The traditional definition of "ought to exist" in the user's manual can + lead to make choosing a poor series of chained implicit rules. Modify + that rule so that we first attempt to resolve implicit rules by + considering targets which are only (a) targets or (b) explicit + prerequisites of the current target. + + For backward-compatibility, if we don't find a solution using that + algorithm use the previous definition where "ought to exist" means + "mentioned as a prerequisite of any target". + + * src/implicit.c (pattern_search): An extra argument controls whether + to perform the backward-compatible rule search or not. If a prereq is + a target, or if it's a prerequisite of THIS target, then choose it. + If we get to the end and haven't found a match, but we have found a + potential compatibility rule, then retry with compat rules enabled. + If we're searching with compat rules enabled and we find a file + mentioned as a prerequisite of ANY target, then use it. + * tests/features/implicit_search: Provide a large suite of tests for + different steps of implicit rule search. + +2021-11-27 Paul Smith + + tests: Enhance output to contain filename/line number info + * tests/scripts/options/dash-I: Use string comparison operator. + * tests/test_driver.pl (cmd2str): New method to convert a + command line to a string with proper quoting. + * tests/run_make_tests.pl (create_command): Call cmd2str() to format + the command. Add the filename/line number to the output. + +2021-10-18 Dmitry Goncharov + + [SV 61042] Enhance logging of implicit rule search + Logging of implicit rule search gives limited information as to why a + given implicit rule was rejected, and if no implicit rule is found we + get the confusing "No rule to make target" result when the real issue + is that some prerequisite of some implicit rule could not be built. + + Enhance logging around implicit rule search as follows: + 1. The messages which refer to a rule print a description (the targets + and prerequisites) of the rule. + 2. A new message tells when a rule is rejected, along with the reason. + 3. The 'Looking for an implicit rule...' message is printed for every + prerequisite, not just the top-level target. + 4. "Trying harder" message is printed, when intermediate prerequisites + are going to be searched. + 5. The 'No rule found...' and 'Found implicit rule...' messages are + printed for every prerequisite, not just the top-level target. + 6. "Ought to exist...", "Found..." or "Not found..." message is + printed for each prerequisite. + + * src/rule.h (struct rule): Remember the definition of the rule. + * src/rule.c (get_rule_defn): Compute the definition of a rule. + (install_pattern_rule): Initialize the definition to empty. + (create_pattern_rule): Ditto. + (freerule): Free the definition. + (print_rule): Use the definition when printing rules. + * src/remake.c (update_file_1): Push debug output down into + try_implicit_rule(). + * src/implicit.c (try_implicit_rule): Add debugging + (pattern_search): Show the rule definition in various debug output. + Add new debug messages for implicit rule search. + + Additional changes by Paul Smith : + + Since we usually don't need the rule definition, defer computing it + until we do. + + * bootstrap.conf: Include the mempcpy Gnulib module. + * src/makeint.h (mempcpy): Declare mempcpy if not available. + * src/misc.c (mempcpy): Define mempcpy if not available. + * src/config.h-vms.template: Don't set HAVE_MEMPCPY. + * src/config.h.W32.template: Ditto. + * src/rule.h (get_rule_defn): Return the definition of a rule. + * src/rule.c (get_rule_defn): If we don't have a definition compute + it; either way return it. + * src/implicit.c (pattern_search): Rework the handling of explicit + prerequisites to pattern rules to be more clear. There is no change + in behavior. + +2021-10-17 Dmitry Goncharov + + * doc/make.texi (Special Targets): [SV 61122] Add .SECONDARY example + +2021-10-17 Paul Smith + + * README.git: Update C version prerequisite + +2021-09-20 Paul Smith + + Add support for the POSIX :::= assignment operator. + POSIX Issue 8 will require a new assignment operator, :::=. + This operator behaves similarly to the BSD make := operator: the + right-hand side is expanded immediately, but then the value is + re-escaped (all '$' are converted to '$$') and the resulting variable + is considered a recursive variable: the value is re-expanded on use. + + * src/variable.h (enum variable_flavor): Add f_expand flavor. + * src/variable.c (do_variable_definition): When defining f_expand, + post-process the result to re-escape '$' characters. + Remove default: to the compiler warns about un-handled enum values. + Set recursive values for both f_recursive and f_expand. + (parse_variable_definition): Rewrite this method. + The previous version was annoying to extend to ':::='. + (print_variable): Remove default: so the compiler warns us about + un-handled enum values. + * src/function.c (func_origin): Remove default: so the compiler warns + us about un-handled enum values. + * doc/make.texi: Add documentation for :::=. + * tests/scripts/variables/define: Add a test for define :::=. + * tests/scripts/variables/flavors: Add tests for :::=. + * tests/scripts/variables/negative: Add tests for :::=. + +2021-09-07 Paul Smith + + Clean up more Windows warnings. + * src/config.h.W32.template: Re-enable warnings that we don't violate. + Add a new disabled warning: 4130 (logical operation on address of + string constant). + * src/w32/compat/posixfcn.c: Make makeint.h the first included header. + * src/w32/subproc/sub_proc.c: Ditto. It includes config.h already. + +2021-09-07 Dmitry Goncharov + + [SV 60435] Ensure intermediate grouped files are removed + If multiple intermediate files are built together be sure all of them + are removed after make is finished. Continue to ensure that targets + that exist before make starts are not removed even if they appear to be + intermediate. + + Add a number of tests to pattern rules to verify this behavior. + + * src/filedef.h (struct file): Add a new is_explicit bitfield. + * src/file.c (rehash_file): Merge the is_explicit bit. + (enter_prereqs): Set is_explicit if the file is explicitly mentioned. + * src/implicit.c (pattern_search): Set intermediate on the file if it's + not explicit. + (record_files): Set is_explicit if a file is mentioned as a target. + * src/remake.c (update_file_1): Set secondary on files that already + exist so they won't be removed. + * tests/scripts/features/double_colon: Add a test for double-colon + pattern rules. + * tests/scripts/features/patternrules: Update KGO for tests where more + files are removed. + Add new tests to verify handling removal of intermediate files in the + context of grouped pattern targets. + +2021-09-06 Paul Smith + + * src/default.c (default_variables): Use CPP in PREPROCESS.S. + +2021-09-06 Dmitry Goncharov + + * src/main.c (decode_debug_flags): [SV 607777] Preserve -d options + * tests/scripts/options/dash-d: Test that -d --trace keeps -d. + +2021-09-06 Dmitry Goncharov + + [SV 57778] Don't ignore included makefiles that can't be read + If we find an included makefile but it's not readable, stop + immediately with an error rather than continuing to look in other + directories. + + * src/read.c (eval_makefile): Only keep searching if the fopen error + is ENOENT, else stop and fail. + * tests/scripts/features/include: Add tests to verify this behavior. + +2021-09-06 Paul Smith + + [SV 60795] Don't remake phony included makefiles and show errors + Change the handling of included makefiles which are phony targets to + be similar to double-colon rules with no prerequisites: simply don't + build them at all during the remake a makefile phase. + + Ensure that any included makefile which is needed but not built + results in an error. + + Update the documentation to make this clear. + Add tests to verify this behavior. + + * doc/make.texi (Remaking Makefiles): Clarify double-colon exception. + Document that phony targets are handled the same way. + (Phony Targets): Ditto. + * src/main.c (main): Check for phony targets when skipping goals. + Rather than throwing out skipped but failed goals keep them + separately then report them as errors. + * src/read.c (eval): Set the file location on included makefiles even + when there's no error. + * tests/scripts/features/include: Add tests for handling included + makefiles with both phony and double-colon rules to rebuild them. + +2021-09-06 Paul Smith + + * doc/make.texi (Environment): [SV 60841] Clarify variable exporting. + + * doc/make.texi (Chained Rules): [SV 60904] Clarify intermediate files. + +2021-09-06 Paul Smith + + Remove UBSAN issues discovered via fuzzing tests. + The arithmetic conversions in C say that if a binary operator has an + unsigned and signed type as operands and the unsigned type has a greater + rank then the signed value is converted to unsigned. This is bad if the + signed value is negative. + + There are a few places in the code which have this situation; convert + the signed value to positive and add instead of subtracting. + + Reported by He Jingxuan + + * src/read.c (find_map_unquote): Use a positive int in memmove(). + (find_char_unquote): Ditto. + (find_percent_cached): Ditto. + +2021-09-05 Paul Smith + + * doc/make.texi (Prerequisite Types): [SV 61069] Mention PHONY prereqs + + * doc/make.1: Clean up man page text. + + * README.git: Add a section on ways to test. + + * src/main.c (decode_switches): Fix memory leak. + + Clean up a few Windows build warnings (not all!) + * build_w32.bat: Quote uses of %VSWHERE% so it can contain spaces + * src/hash.c (hash_init): Avoid use of an undefined struct. + (hash_rehash): Ditto. + * src/vpath.c (construct_vpath_list): Cast explicitly to void*. + +2021-09-05 Paul Smith + + [SV 45211] Parse MAKEFLAGS immediately when it's reset + When MAKEFLAGS is set in a makefile, reparse it immediately rather + than waiting until after all makefiles have been read and parsed. + This change doesn't actually fix the SV bug referenced because, even + though we do reparse MAKEFLAGS, we don't handle the -r or -R options + immediately. Doing this will require more effort. + + * NEWS: Announce the change. + * src/makeint.h: Publish reset_switches() and decode_env_switches() + from main.c + * src/main.c (main): Don't call construct_include_path(); it will be + invoked decode_switches(). + Preserve the old values of builtin_rules, builtin_variables, and + job_slots before we read makefiles since they can be changed now. + (reset_switches): Publish (remove static). Set the initial value of + the stringlist list to NULL. + (decode_switches): Call construct_include_path() after decoding. + (decode_env_switches): Publish (remove static). + (define_makeflags): Set the MAKEFLAGS variable for special handling. + * src/read.c (eval_makefile): Check for empty include_directories. + (construct_include_path): Clear any old value of .INCLUDE_DIRS before + appending new values. Free the previous include_directories. + * src/variable.c (lookup_special_var): When MAKEFLAGS is set, first + reset the switches then re-parse the variable. + * tests/run_make_tests.pl: Memo-ize some default variable values. + * tests/scripts/options/dash-r: Create tests for setting -r and -R. + * tests/scripts/variables/MAKEFLAGS: Test that resetting -I from + within the makefile takes effect immediately. + +2021-09-05 Paul Smith + + * make-gdb.py: Add pretty-printers and clean up. + Create a pretty-printer for next-pointer lists. + Create a pretty-printer for stringlists. + Change showargv from a function to a command (easier to use). + + Clean up some Python PEP violations. Add support for testing null + pointers and caching gdb.Types. + +2021-09-03 Paul Smith + + [SV 60595] Restart whenever any makefile is rebuilt + Previously if an included makefile was rebuilt as a prerequisite of + another included makefile which didn't need to be rebuilt, make would + not realize that it needed to re-exec itself. + + Ensure that if any included makefile target is rebuilt we re-exec. + Also ensure that if an included makefile is not readable, and our rule + for rebuilding it doesn't actually change it, we will still fail. + + * src/remake.c (update_goal_chain): If a goal's update was successful + then check its status, even if no actual commands were run because it + was already up to date. + (show_goal_error): Remove superfluous cast. + * src/main.c (main): If the makefile remake did nothing, check that we + were able to successfully include all the makefiles we care about; if + not fail. When generating error messages about included makefiles be + sure to show the filename/linenumber information. + * test/scripts/features/reinvoke: Add tests for this behavior. + * test/scripts/options/dash-k: Update error messages. + +2021-09-03 Paul Smith + + [SV 60412] Allow -I- to throw out the current directory path + Accept a "-" directory value to the -I option to clear the set of + directories to be searched up to that point, including the default + directories. + + * NEWS: Announce the change. + * doc/make.texi (Summary of Options): Add documentation. + * src/read.c (construct_include_path): Check for '-' and if found, + clear the list of directories to be searched. + * tests/scripts/options/dash-I: Add tests for -I-. + * tests/scripts/variables/INCLUDE_DIRS: Add tests for -I-. + +2021-07-25 Dmitry Goncharov + + [SV 60699] Avoid calling strlen() repeatedly in a loop + * src/variable.c (lookup_pattern_var): Accept target length parameter. + (initialize_file_variables): Pass computed target length to lookup. + +2021-07-25 Paul Smith + + * NEWS: Add a few missing attributions + * AUTHORS: Add some missing attributions + +2021-07-25 Dmitry Goncharov + + [SV 60297] Add .NOTINTERMEDIATE special target + Support a new special target, .NOTINTERMEDIATE. Any file or pattern + prerequisite of this target will never be considered intermediate. + This differs from .SECONDARY in that .SECONDARY files won't be deleted + but they will still not be built if they are missing. + + .NOTINTERMEDIATE files are treated the same way as a target which is + explicitly mentioned in the makefile. This is mostly useful with + patterns; obviously mentioning a target explicitly here is enough in + and of itself to make something not intermediate. + + Some adjustments made by psmith@gnu.org + + * NEWS: Announce the new feature. + * doc/make.texi (Special Targets): Document .NOTINTERMEDIATE. + (Chained Rules): Describe how to use .NOTINTERMEDIATE. + * src/main.c (main): Add "notintermediate" to the .FEATURES variable. + * src/filedef.h (struct file): Add "notintermediate" flag. + * src/file.c (no_intermediates): Mark global .NOTINTERMEDIATE. + (snap_file): Support .NOTINTERMEDIATE special target. Throw an error + if the same target is marked both .NOTINTERMEDIATE and .SECONDARY or + .INTERMEDIATE. + (rehash_file): Merge intermediate, notintermediate, secondary flags. + (remove_intermediates): Check notintermediate flag before removing. + (print_file): + * src/implicit.c (pattern_search): Set notintermediate based on the + pattern. + * tests/scripts/targets/NOTINTERMEDIATE: Add a new test suite. + +2021-05-30 Paul Smith + + * make.texi (Reading Makefiles): != creates recursive variables. + Reported by Ronald Hoogenboom . + +2021-05-30 Dmitry Goncharov + + [SV 60659] Set $$< properly in second expansion + Set the $$< automatic variable as best we can during secondary + expansion of prerequisites. + + * src/commands.c (set_file_variables): Don't break without setting + 'less' if secondary expansion is enabled. + * tests/scripts/features/se_explicit: Test secondary expansion results. + * tests/scripts/features/se_implicit: Test secondary expansion results. + +2021-05-30 Paul Smith + + [SV 58341] Add non-trivial options to $(MAKEFLAGS) + Previously only trivial (single-letter) options were available in + $(MAKEFLAGS) when it is examined from inside a makefile (the full + value was set before expanding recipes). + + Ensure that all options (but, not command line variable overrides!) + are visible in the $(MAKEFLAGS) variable. In order to do this + reset the default values of options, particularly options which are + lists, before re-reading MAKEFLAGS after makefiles have been read. + Otherwise we'll get duplicate values for options such as -I. + + Unfortunately there are complications here as well: sometimes (for + jobserver options in particular) we modify the values of these + options while running: we must not reset these modifications. + + * NEWS: Announce this change + * src/main.c (main): Call new reset_switches() before re-parsing + MAKEFLAGS. + (reset_switches): Reset the value of non-special options to their + defaults. + (define_makeflags): Add non-special options into MAKEFLAGS even + if 'all' is not set. + +2021-05-30 Dmitry Goncharov + + [SV 60378] Don't add duplicate default search directories + Depending on how make was configured it may add duplicate + directories in the default include search path: avoid this. + + (Tweaked by psmith@gnu.org) + + * configure.ac: Set AM variable KNOWN_PREFIX if --prefix is known + * Makefile.am: Only set INCLUDEDIR if prefix is not known + * read.c [default_include_directories]: Only add INCLUDEDIR if set + +2021-05-30 Dmitry Goncharov + + * tests/scripts/targets/INTERMEDIATE: [SV 60188] Add one more test + +2021-05-29 Eli Zaretskii + + [SV 58656] Fix mtime for large files on MS-Windows + In MSVC builds, 'stat' fails when called on files larger than + 2GB. Call '_stat64' instead to work around this. + + * src/remake.c (STAT): Define to '_stat64' for MSVC builds. + (name_mtime) [WINDOWS32]: Use STAT instead of 'stat'. + Suggested by Makoto Kato . + +2021-03-28 Paul Smith + + Fix build and test issues on Windows + * src/dep.h (DEP): Remove extraneous semicolon. + * src/dir.c (find_directory) [W32]: Replace removed variable. + * tests/scripts/features/include: Allow the extra default makefile + searched for on Windows. + * tests/scripts/functions/file: Use $(info ...) to avoid "command + too long" errors on Windows. + +2021-03-28 Tobias Stoeckmann (tiny change) + + * src/remake.c (name_mtime): Reserve space for nul in readlink result + +2021-03-25 Cao jin (tiny change) + + * doc/make.texi (Call Function): Apply consistent formatting + +2021-03-25 Pete Dietl (tiny change) + + * src/job.c (child_execute_job): Update gnulib find_in_given_path() + +2021-03-25 Mike Frysinger (tiny change) + + * doc/make.texi (Automatic Variables): Relocate the $? example + +2021-03-15 Paul Smith + + [SV 58497] Ensure $(file <) newline removal succeeds + Keep a count of bytes read rather than comparing pointers since the + variable_buffer might get reallocated. + + Bug and patch by Ken Tossell + Regression tests by Dmitry Goncharov + Tweaked by Paul Smith + + * src/function.c (func_file): Use bytes read rather than a pointer. + * tests/scripts/functions/file: Provide various tests for reading + empty files, files with/without newlines, and large files. + +2021-03-15 Dmitry Goncharov + + [SV 60188] Explicit prereqs cannot be intermediate files + If a prereq of a pattern is an explicit target, it should not be + considered an intermediate file. + + (Minor tweaks by Paul Smith ) + + * src/dep.h (struct nameseq): Add is_explicit flag. + * src/implicit.c (struct patdeps): Ditto. + (pattern_search): Set the is_explicit flag appropriately for each + prerequisite, based on whether it contained a pattern or not. + Update the help output to note implicit vs. explicit prereqs. + * tests/scripts/features/double_colon: Add tests. + * tests/scripts/features/grouped_targets: Ditto. + * tests/scripts/features/patternrules: Ditto. + * tests/scripts/features/se_implicit: Ditto. + * tests/scripts/features/statipattrules: Ditto. + +2021-03-15 Paul Smith + + * tests/scripts/features/exec: Small cleanup + +2021-03-15 Paul Smith + + Ensure variable_buffer is always set. + Initialize the global variable_buffer in main() so that it is never + a null pointer. Then invoking variable_expand("") is never needed: + simply use the variable_buffer pointer when we want to restart the + variable buffer. The main point of this simplification is not to + keep a separate pointer to the beginning of the buffer: this is + dangerous because the buffer may be re-allocated. Instead always + use the variable_buffer pointer itself. + + * src/variable.h (initialize_variable_output): Publish. + * src/expand.c (initialize_variable_output): Remove static. + * src/main.c (main): Initialize variable_buffer. + * src/file.c (enter_prereqs): Don't call variable_expand("") and + don't save a separate buffer pointer than might be outdated. + (expand_deps): Ditto. + * src/read.c (record_files): Ditto. + * src/remake.c (library_search): Ditto. + +2021-03-15 Paul Smith + + [SV 59881] Handle vertical TAB consistently + While parsing makefiles get_next_mword() was treating VTAB as a word + character rather than a word separator. However, when using + find_next_token(), for example in patsubst_expand_pat(), we treated + VTAB as a word separator causing multiple words to appear where we + didn't expect them. + + * src/makeint.h (END_OF_TOKEN): Change from a loop to a boolean check. + * src/misc.c (end_of_token): Move the loop here. + * src/read.c (get_next_mword): Skip whitespace, not just blank, to + find the start of the word and use END_OF_TOKEN() to decide when the + current word is finished. + +2021-03-14 Paul Smith + + [SV 59870] define/undefine prerequisites are not target-specific vars + * src/read.c (parse_var_assignment): If called in a target-specific + variable context don't allow define/undefine as variable assignments. + * test/scripts/variables/define: Add a test. + * test/scripts/variables/undefine: Add a test. + + * maintMakefile: Don't make .check-git-HEAD .PHONY + +2021-03-07 Jouke Witteveen + + More correctly describe the scope of variables + * NEWS: Use "local" instead of the incorrect "lexically-scoped". + * doc/make.texi: Refer to let/foreach variables as local variables. + +2021-03-07 Paul Smith + + * doc/make.text: Clarify that patsubst doesn't touch unmatched words + + * .dir-locals.el: Update for newer LSP config + + * file.c (remove_intermediates): Restart "rm ..." on error + +2020-12-07 Paul Smith + + * doc/make.texi (How Patterns Match): [SV 58639] Fix chaining info. + +2020-12-06 Jouke Witteveen + + Create $(let ...) providing lexically scoped variables + Add a new function $(let ...) which allows lexically scoped variables. + + * NEWS: Add information on this feature. + * doc/make.texi (Let Function): Document the 'let' function. + * src/function.c (func_let): Create the 'let' built-in function. + * tests/scripts/functions/let: Test the 'let' built-in function. + +2020-12-06 Paul Smith + + * doc/make.texi (Phony Targets): [SV 58961] Clarify pattern handling + + * doc/make.texi (Synchronized Terminal Output): [SV 58960] Fix link + +2020-12-05 Paul Smith + + [SV 59169] Add --debug=why and --debug=print options + Add debug options to print recipes even if they would otherwise be + silent, and to print the reason that a target was considered out of + date. + + Modify --trace to simply be a shorthand for --debug=print,why. + + * NEWS: Announce changes. + * doc/make.texi (Summary of Options): Document the new options. + * doc/make.1: Ditto. + * src/debug.h: Add new flags DB_PRINT and DB_WHY. + * src/makeint.h: Remove the trace_flag variable. + * src/job.c (start_job_command): Check debug flags not trace_flag. + (new_job): Ditto. + * src/main.c (trace_flag): Make a static variable for switches. + (decode_debug_flags): Set DB_PRINT and DB_WHY if trace_flag is set. + * tests/scripts/variables/GNUMAKEFLAGS: Update known-good messages. + * tests/scripts/variables/MAKEFLAGS: Ditto. + +2020-12-05 Paul Smith + + * configure.ac: [SV 58836] Copy build.sh to the build directory + +2020-12-05 Paul Smith + + [SV 57676] Support included files being built after failing + If a -include file does not exist, then some subsequent operation + creates it, then allow it to be successfully included. + + * src/read.c (eval_makefile): If our last mtime was NONEXISTENT then + reset it to 0 so we'll check it again. + * tests/scripts/features/include: Add a test for this behavior. + +2020-12-02 Paul Smith + + * src/makeint.h (free_alloca): Check for builtin alloca + + * src/main.c (main): [SV 59601] Check for malformed env. variables + +2020-11-29 Paul Smith + + * maintMakefile: [SV 58794] Check for file existence in the release + + * Makefile.am (HAVE_GUILE): Only use Guile options if HAVE_GUILE. + + * tests/scripts/features/vpathgpath: Avoid duplicate function name. + + Resolve unused-result warnings for alloca(0) + * src/makeint.h (free_alloca): New macro to defeat warn_unused_result. + * src/read.c (eval_makefile): Call it. + (eval_buffer): Ditto. + * src/remake.c (update_file): Ditto. + +2020-11-29 Paul Smith + + Avoid some valgrind warnings + Using sscanf() to parse archive header values (struct ar_hdr) can lead + to valgrind warnings which are probably bogus but are annoying. + To be safer, create a local method to convert the ASCII integer + strings into integers. + + * src/arscan.c (parse_int): Turn integer strings into integers. + (ar_scan): Initialize struct ar_hdr memory. + Call parse_int() rather than sscanf/atol. + +2020-11-29 Paul Smith + + [SV 41273] Allow the directory cache to be invalidated + Each time we invoke a command it's possible that it will change the + filesystem in ways that were not described by the target. If that + happens but we have cached previous directory contents then we may + make decisions or report results based on obsolete information. + + Keep a count of how many commands we've invoked, and remember the + current command count every time we load the contents of a directory. + If we request the directory and the current command count has changed + we know the cache is outdated so reload from scratch. + + * NEWS: Announce the change. + * src/makeint.h (command_count): Create a global counter. + * src/main.c (command_count): Ditto. + * src/job.c (reap_children): Increment the counter on job completion. + * src/function.c (func_file): Increment if we write a file. + * src/dir.c (clear_directory_contents): Clear the current contents of + a cached directory. + (struct directory_contents): Remember the counter value. + (struct directory): Remember the counter value for non-existing dirs. + (find_directory): If we have a cached directory and the count hasn't + changed then return it. Else, clear the previous contents and re-read + from scratch. + * tests/scripts/features/dircache: Add tests of the directory cache. + +2020-11-29 Paul Smith + + Support "unexport" in target-specific variables. + Rewrite the environment variable algorithm to correctly inherit + export settings from parent variable sets. The new algorithm + for computing the table of environment variables is: + + - Start with the most local variable set and proceed to global. + - If the variable already exists in the table and we don't know + its export status, update it with the current variable's status. + - If the variable is not in the table and it's not global, add it + regardless of its status so if it's unexported we remember that. + - If the variable is not in the table and is global, check its + export status and don't add it if we won't export it. + + Then when generating the environment variables, check the export + status of each variable in case it was a target-specific variable + and we have determined it should not be exported. + + Rework SHELL handling to check at the end whether we added it or + not and if we didn't, add the value from the environment. + + * NEWS: Announce support for target-specific "unexport"." + * doc/make.texi (Target-specific): Document the support. + * src/variable.h (enum variable_export): Make into a global type. + * src/read.c (struct vmodifiers): Use enum variable_export rather + than individual booleans. + (parse_var_assignment): Parse the "unexport" keyword. + (eval): Remember the vmodifier value in the variable. + (record_target_var): Ditto. + * src/variable.c (should_export): Check if the variable should be + exported. + (target_environment): Implement the above algorithm. + * tests/scripts/features/export: Test export/unexport with variable + assignments on the same line. + * tests/scripts/features/targetvars: Add a comprehensive suite of + tests for different types of target-specific export / unexport. + * tests/scripts/variables/SHELL: Update the comment. + +2020-11-29 Dmitry Goncharov + + [SV 59230] Preserve export settings for target-specific vars + * src/read.c (record_target_var): Don't overwrite pre-existing export + flag unless we're changing it. + * tests/scripts/features/targetvars: Add a test. + +2020-11-29 Paul Smith + + [SV 59230] Ensure environment variables are exportable + When checking for invalid environment variable names we searched the + entire name string instead of just the first LENGTH chars; this could + cause us to incorrectly decide the variable was not exportable. + + Dmitry Goncharov found this bug and + provided a test case and sample fix: I used the test but chose a + slightly different fix. + + * src/variable.c (define_variable_in_set): check the variable name + not the input string. + * tests/scripts/features/targetvars: Ensure environment variable + values are exported. + +2020-11-29 Paul Smith + + * src/default.c (default_variables) [AIX]: [SV 59096] Fix ARFLAGS + Reported by Dmitry Goncharov , with a patch + changing the pattern rule for building archives. I decided to + change the default value of ARFLAGS on AIX instead. + +2020-11-29 Paul Smith + + [SV 35711] Check for special targets earlier + GNU make must recognize some special targets as they are defined. + Because of the way targets are defined, we were not recognizing these + special targets until we were handling the NEXT statement. However + that's too late for some special targets such as .POSIX etc. which can + change the behavior of make during parsing. + + Check for special targets earlier, as soon as we've finished parsing + the target introduction line (before we've even parsed the recipe). + + * NEWS: Mention the change. + * src/read.c (check_specials): New function to look for special + targets. Move checks from eval() and record_files() to this new + function. + (eval): Call check_specials() after we've completed parsing the target + introduction line. Move default goal detection to check_specials(). + (record_files): Move handling of .POSIX, .SECONDEXPANSION, and + .ONESHELL to check_specials(). + * tests/scripts/misc/bs-nl: Remove workaround for late .POSIX issue. + * tests/scripts/targets/POSIX: Add a comment. + +2020-11-29 Paul Smith + + * .ccls: Disable clang compare against static string warning + +2020-11-13 Paul Smith + + [SV 59093] Rewrite filter/filter-out to avoid large stack usage + * src/function.c (func_filter_filterout): Allocate arrays to hold + pattern and word information rather than creating linked lists on + the stack. + * tests/scripts/functions/filter-out: Test large filters. + +2020-10-28 Paul Smith + + * doc/make.texi (Include): Update behavior for missing included files + +2020-07-19 Paul Smith + + * NEWS: [SV 58435] Document minimum C compiler version requirement + * configure.ac: Require c99 via AC_PROG_CC_C99 + +2020-07-19 Paul Smith + + [SV 58735] Define the order that makefiles are rebuilt. + Ensure that makefiles are rebuilt in the order in which make first + considered them, and document this behavior in the manual. + + * NEWS: Add a note about the new behavior + * doc/make.text (How make Processes a Makefile): Document it. + * main.c (main): Inverse the list of makefile goals. + * read.c (read_all_makefiles): Add default makefiles to the list at + the front in reverse order, the same way other makefiles are added. + * tests/scripts/features/include: Add tests to verify rebuild order. + +2020-07-10 Paul Smith + + * src/makeint.h: [ARM] [SV 58347] Don't assume ARM is not POSIX + + * src/job.c (unblock_sigs): [!POSIX] [SV 58743] Fix syntax errors + +2020-05-14 Paul Smith + + * NEWS: Fix some tortured grammar. + +2020-05-03 Paul Smith + + [SV 57930] Cast char to unsigned char to call ctype functions + This cast was already done almost everywhere: fix some stragglers. + + * src/load.c (load_file): Cast char to unsigned char. + * src/misc.c (strcasecmp, strncasecmp): [!POSIX] Ditto. + * src/dir.c (vms_hash): [VMS] Ditto. + * src/vms_progname.c (set_program_name): [VMS] Ditto. + * src/vms_jobs.c (posix_parse_dq): [VMS] Ditto. + (posix_parse_dollar): [VMS] Ditto. + (build_vms_cmd): [VMS] Ditto. + (child_execute_job): [VMS] Ditto. + +2020-05-03 Paul Smith + + Convert [ ... ] to test ... in scripting. + The "[" link may be missing during OS boostrapping. + + * build.sh: Convert "[ ... ]" to "test ..." + * maintMakefile: Ditto. + * scripts/copyright-update: Ditto + * tests/scripts/features/reinvoke: Ditto + * tests/scripts/features/targetvars: Ditto + +2020-05-03 Paul Smith + + * maintMakefile: Clean up output + + * mainMakefile: Check that INSTALL exists in the dist file + For some reason the INSTALL file symlinked to gnulib was omitted from + the 4.3 release package: I can't reproduce this but check for it. + +2020-05-02 Kevin Buettner (tiny change) + + [SV 58232] Disable inheritance of jobserver FDs for recursive make + A parent make will invoke a sub-make with close-on-exec disabled for + the jobserver pipe FDs. Force close-on-exec to be to be enabled in + the sub-make so the pipe is not always passed to child jobs. + + I have a test case which, when invoked with a suitable -j switch, + will hang if the recipe inherits the jobserver pipe. This test case + was inspired by a real world case in which testing GDB on Fedora + would hang due to some poorly written test GDB cases having been + passed the jobserver file descriptors. + + * src/posixos.c (jobserver_parse_auth): Call fd_noinherit() for + jobserver pipe descriptors. + +2020-04-01 Paul Smith + + [SV 57674] Use the system default PATH if $PATH is not set + When using execvp() if $PATH is not present in the environment + it will automatically search the system default PATH string. Emulate + this by passing the system default PATH to find_in_given_path() if + we don't find PATH in the environment. + + * src/job.c (child_execute_job): Use confstr(_CS_PATH) if PATH is not + found. + +2020-04-01 Paul Smith + + tests: Simplify customization of %ENV + Rather than having an %extraENV that is added to the default %ENV + and resetting %ENV _before_ each test, allow the test setup to + modify %ENV directly as needed then reset %ENV _after_ each test. + + * tests/test_driver.pl: Remove unused %extraENV. + (resetENV): Don't add in %extraENV. + (_run_command): Reset after we run the command rather than before. + * tests/scripts/features/export: Convert %extraENV to %ENV + * tests/scripts/features/jobserver: Ditto + * tests/scripts/features/parallelism: Ditto + * tests/scripts/features/targetvars: Ditto + * tests/scripts/functions/eval: Ditto + * tests/scripts/functions/foreach: Ditto + * tests/scripts/functions/origin: Ditto + * tests/scripts/misc/general4: Ditto + * tests/scripts/options/dash-e: Ditto + * tests/scripts/targets/POSIX: Ditto + * tests/scripts/variables/GNUMAKEFLAGS: Ditto + * tests/scripts/variables/SHELL: Ditto + +2020-03-31 Jens Rehsack (tiny change) + + * src/output.h: [WINDOWS32] [SV 57888] Use gnulib fcntl if available + If gnulib fcntl is available (for MinGW32) use it rather than our + homegrown version. + + * src/w32/compat/dirent.c: [SV 57888] Use gnulib opendir on MinGW32 + + * src/dir.c (local_stat): [WINDOWS32] Fix buffer-overflow warning. + [SV 57888] Provide space for the path to use MAXPATHLEN plus nul. + +2020-03-31 Paul Smith + + [SV 57896] Change directories before checking jobserver auth + We want to process -C options as early as possible, before we might + write informational messages, so that Entering/Leaving messages have + the correct directory. + + * src/main.c (main): Move code dealing with changing directories + before parsing of the jobserver auth flag. + * tests/scripts/features/jobserver: Test the order of enter/leave. + +2020-03-31 Paul Smith (tiny change) + + [SV 57967] Only set APPEND mode for regular files + APPEND is a permanent mode shared by all users of a file. If we + set it on a tty, pipe, etc. it will stay in effect even after make + exits, which can cause problems. + + Patch provided by 0xef967c36@gmail.com + + * src/output.c (set_append_mode): Check for a regular file. + +2020-03-31 Paul Smith + + Obey order of multiple print/no-print directory options + Previously if --no-print-directory was seen anywhere even once + (environment, command line, etc.) it would always take precedence + over any --print-directory option. Change this so that the last + seen option (which will be the command line, if present there) takes + precedence. + + * NEWS: Mark this change in behavior. + * src/makeint.h (print_directory): A new variable to control printing. + * src/output.c (output_dump): Use the new variable. + (output_start): Ditto. + * src/main.c: Add a new variable print_directory. Use -1 for + print_directory_flag so we know of the option was seen or not. Add a + new default_print_directory_flag set to -1 to keep options from being + added. + (switches): Use flag_off for --no-print-directory, rather than a + separate inhibit_print_directory_flag. + (main): If print_directory_flag was set by the user, use that for + print_directory. If not, compute the print_directory value based on + -s, -C, and sub-makes as before. + * tests/scripts/variables/GNUMAKEFLAGS: -w is not added automatically + * tests/scripts/options/print-directory: Add tests for overriding + print-directory options. + +2020-03-29 Paul Smith + + * NEWS: Update 4.3 with information on .SILENT / -s + +2020-02-29 Eli Zaretskii + + * NEWS: Mention the new tcc support. + +2020-02-29 Christian Jullien + + Add support for building with Tiny C for MS-Windows + * src/config.h.W32.template (HAVE_DIRECT_H, HAVE_STRCASECMP) + (HAVE_STRNCASECMP, HAVE_UMASK): Add __TINYC__ to MinGW condition. + (BATCH_MODE_ONLY_SHELL): Make this the default for Tiny C. + + * build_w32.bat: Support building with Tiny C's tcc compiler. + +2020-01-20 Paul Smith + + Apply spelling corrections from Fossies spellcheck + See https://fossies.org/features.html#codespell + Spelling issues in Git commit messages or lib/* source are not applied. + + * README.OS2.template: Apply spelling corrections. + * README.VMS: Ditto. + * src/commands.c: Ditto. + * src/config.ami.template: Ditto. + * src/configh.dos.template: Ditto. + * src/job.c: Ditto. + * src/job.h: Ditto. + * src/read.c: Ditto. + * src/variable.c: Ditto. + * src/vms_exit.c: Ditto. + * src/vms_export_symbol.c: Ditto. + * src/vms_progname.c: Ditto. + * src/vmsfunctions.c: Ditto. + * src/vmsjobs.c: Ditto. + * src/w32/pathstuff.c: Ditto. + * tests/scripts/variables/automatic: Ditto. + * tests/test_driver.pl: Ditto. + +2020-01-20 Paul Smith + + Update to GNU make 4.3.90 + * NEWS: Add a 4.3.90 section and update Savannah bug URL + * configure.ac (AC_INIT): Change release to 4.3.90 + +2020-01-19 Paul Smith + + GNU Make release 4.3 + * NEWS: Update for the release + * configure.ac: New release number + * doc/make.texi: New edition number + + * configure.ac (guile): Check for Guile 3.0 installations + + * src/job.c (sh_cmds): [SV 57625] Update builtin shell command list + + Resolve some documentation issues + * doc/make.texi (Interrupts): [SV 46193] Recommend defensive recipes + * doc/make.texi: [SV 49262] Clarify interaction of prerequisites and + non-terminal match-anything rules. + +2020-01-19 Paul Smith + + [SV 40657] Reinstate old behavior for suffix rules with prereqs + POSIX says that suffix rules cannot have prerequisites, but after + making this change we observed a number of makefiles "in the wild" + that were relying on this behavior and failed. + + For .POSIX: makefiles, obey POSIX. Otherwise preserve the old + behavior. However, generate a warning so users know this is a + problem. In a future version we will change all behavior to be + POSIX-conforming. + + * NEWS: describe the change + * src/rule.c (convert_to_pattern): If posix_pedantic don't make a + pattern rule if prereqs exist. Otherwise show a warning. + * tests/scripts/features/suffixrules: Add tests for the new behavior + including .POSIX vs. non-.POSIX. + +2020-01-05 Dmitry Goncharov + + * tests/test_driver.pl: Enhance error messages + +2020-01-04 Paul Smith + + * doc/make.texi: Change the GFDL to an Appendix + + * NEWS: Clarify authorship of new features. + + Enable compilation with C90 compilers + * configure.ac: Try compiling Guile headers: they don't work with C90. + * maintMakefile: Simplify config checks via target-specific variables. + * src/makeint.h: Use ATTRIBUTE rather than defining __attribute__, + as that causes compile issues with system headers. + (ENUM_BITFIELD): Don't use enum bitfields in ANSI mode. + * src/main.c: Use ATTRIBUTE instead of __attribute__. + * src/job.h: Ditto. + * src/file.c: Don't define variables inside for loops. + * src/rule.c: Ditto. + * src/dep.h (SI): Only use static inline in non-ANSI mode. + +2020-01-03 Paul Smith + + * bootstrap: Update to the latest gnulib version + + Release GNU make 4.2.93 + * NEWS: Update the release and date + * configure.ac: Update the release number + + Update copyright statements for 2020 + +2020-01-03 Paul Smith + + Support the .EXTRA_PREREQS special variable + Initial implementation by Christof Warlich + + * NEWS: Announce the new feature. + * doc/make.texi (Other Special Variables): Document .EXTRA_PREREQS. + * src/dep.h (struct dep): New flag to note extra prereq deps. + * src/filedef.h (expand_extra_prereqs): Declare a function to expand + the value of .EXTRA_PREREQS. + * src/file.c (expand_extra_prereqs): Given a struct variable lookup + of .EXTRA_PREREQS, convert it into a list of deps and for each one + make sure it has a struct file and has the new flag set. + (snap_file): A new function invoked by hash_map that will perform + per-file operations: set up second expansion, intermediate, and also + .EXTRA_PREREQS. Manage circular dependencies by ignoring them. + (snap_deps): Defer per-file operations until the end. Look up the + global .EXTRA_PREREQS and pass it along to snap_file for each file. + * src/implicit.c (struct patdeps): Remember the extra prereqs flag. + (pattern_search): Transfer extra prereqs flag settings into the + matched pattern rule. + * src/rule.h (snap_implicit_rules): Rename count_implicit_rules to + snap_implicit_rules since we now do more than count. + * src/rule.c (snap_implicit_rules): As we walk through all the pattern + rules, add in any global .EXTRA_PREREQS to the dep list. Ensure we + take them into account for the max number of prereqs and name length. + * src/main.c (main): Add extra-prereqs to .FEATURES. + Call the renamed snap_implicit_rules. + * tests/scripts/variables/EXTRA_PREREQS: Add tests. + +2020-01-03 Paul Smith + + * tests/scripts/features/patternrules: Use Windows-compatible quoting + + * tests/test_driver.pl: Compute full path to Perl interpreter + + * tests/scripts/features/exec: Don't use $ENV in the description + + * src/makeint.h: Add a declaration for memrchr() + +2019-12-27 Paul Smith + + * NEWS: Remove info about disabled /proc/loadavg usage. + +2019-12-27 Paul Smith + + [SV 57022] Avoid posix_spawn which fails asynchronously + Avoid using posix_spawn implementations that fail asynchronously when + the spawned program can't be invoked: this means instead of getting + an error such as "No such file or directory" we get just "Exit 127". + + Original implementation of the configure.ac macro provided by + Martin Dorey + + Original implementation of the regression tests provided by + Dmitry Goncharov + + * configure.ac: Test whether posix_spawn fails asynchronously. In a + cross-compilation environment, assume that it does not. If we detect + that it does, fall back to fork/exec. + * tests/scripts/features/exec: Add regression tests for different + shebang invocation methods. + +2019-12-26 Paul Smith + + [SV 56655] Allow pattern expansion to contain spaces + * src/dep.h: Add a new flag PARSEFS_ONEWORD + * src/read.c (parse_file_seq): If PARSEFS_ONEWORD is given, treat the + entire incoming string as a single pattern. + * src/implicit.c (pattern_search): Pass PARSEFS_ONEWORD when parsing + patterns for wildcards. + * tests/scripts/features/patternrules: Add a new test. + +2019-12-18 Ben Wijen + + * src/misc.c (spin): On WINDOWS32 use Sleep() instead of sleep() + + * bootstrap.bat: Fix typo in batch file name + +2019-12-18 Paul Smith + + * src/config.h.W32.template: [SV 57152] MinGW32 doesn't support d_type + +2019-12-18 Jouke Witteveen + + [SV 54161] Fix second expansion of $* for paths + If the stem matches a path containing a directory not just a + filename, make sure the second expansion of $* in the + prerequisites matches $* in the recipe. This requires using + $(*F) when replacing % in the first expansion to preserve the + simple filename. + + * src/implicit.c (pattern_search): If lastslash is set prepend + the directory onto the stem. Then use $(*F) when expanding %. + * tests/scripts/features/se_implicit: Add a test case + +2019-12-17 Jouke Witteveen + + * src/implicit.c (pattern_search): Set lastslash correctly + If filename contained multiple slashes lastslash is wrongly set to 0. + * configure.ac: Check for the GNU memrchr() extension function. + * src/misc.c (memrchr): Supply memrchr() if not available. + + * src/implicit.c (pattern-search): Remove unneeded 'dir' variable + +2019-12-17 Paul Smith + + * Makefile.am: Build lzip package instead of bzip2 + * README.git: Mention changed requirements. + + * src/job.c (load_too_high): Disable Linux /proc/loadavg for now + This new feature has a problem: if you provide a load which is + larger than the number of cores then it will always run every job. + Before we can enable it we need to at the least learn how to clamp + this value to the number of cores. To experiment with it, set + PROC_FD_INIT to -2 in job.c to re-enable the feature. + + * tests/run_make_tests.pl (set_more_defaults): Fix typo + +2019-12-16 Paul Smith + + * tests/run_make_tests.pl (subst_make_string): Force use of / + On Windows the path to the helper tool will contain '\': this will + fail if recipes are run with a POSIX shell. Convert '\' to '/' + on Windows. While here, escape any spaces in the path as well. + + Rename jhelp.pl to thelp.pl and make it a generic test helper. + * tests/thelp.pl: Rename from tests/jhelp.pl. + (op): Use names instead of options for the operations. + (op): Add new operations for sleep, mkdir, and rm. + (op): Enhance wait to time out + * tests/run_make_tests.pl: Add a new #HELPER# replacement + (subst_make_string): Use fully-qualified path to thelp.pl + * tests/scripts/features/parallelism: Update to use thelp.pl + and the new named operations. Use thelp.pl sleep instead of + system-specific sleep commands. + * tests/scripts/features/output-sync: Update to use thelp.pl + instead of complex shell scripts. + * Makefile.am: Distribute tests/thelp.pl instead of tests/jhelp.pl + +2019-10-10 Paul Eggert + + Port functions/shell test to Solaris 10 + * tests/scripts/functions/shell: Port exit-status calculation + to Solaris 10 with Perl 5.8.4. + +2019-10-08 Paul Smith + + Release GNU make 4.2.92 + * NEWS: Update the release and date + * configure.ac: Update the release number + +2019-10-06 Paul Smith + + * doc/make.text (Reading Makefiles): Rewrite to be more clear. + +2019-10-05 Paul Smith + + * Makefile.am (check-regression): Use PERLFLAGS when running Perl + * maintMakefile: Set PERLFLAGS to enable warnings. + * tests/run_make_tests.pl: Clean up issues pointed out by perl -w. + + * tests/scripts/functions/wildcard: Skip slash tests for local glob. + + tests: Convert %CONFIG_FLAGS to get_config() + * tests/config-flags.pm.W32: Create a predefined Windows file. + * Makefile.am (test_FILES): Add it to the distribution. + * build_w32.bat: Install tests/config-flags.pm if not existing. + * tests/run_make_tests.pl (get_config): Create new function. + * tests/scripts/features/archives: Call get_config() rather than + using %CONFIG_FLAGS directly. + * tests/scripts/features/load: Ditto. + * tests/scripts/features/loadapi: Ditto. + * tests/scripts/functions/wildcard: Ditto. + + * src/hash.c (jhash_string): Don't read past end of string. + Original patch from Dmitry Goncharov . + + * tests/run_make_tests.pl (valid_option): Add missing File::Spec + +2019-09-23 Paul Smith + + * src/function.c (func_realpath) [AIX]: Remove trailing slashes. + +2019-09-22 Paul Smith + + * tests/scripts/features/vpathplus: Fix output for big-endian systems. + Our hashing algorithm gives different ordering on LE vs BE systems. + Patch from Dmitry Goncharov . + +2019-09-22 Florian Weimer (tiny change) + + * configure.ac (HAVE_GETTIMEOFDAY): Avoid undeclared exit function. + +2019-09-22 Paul Smith + + * test/test_driver.el (_run_with_timeout): Show error message. + + * job.c (child_error): Modify error message string. + This reverts commit 6264deece3bb77798240a906ceed79097adbcf48. + Further investigation discovers that the real issue is that + GNU Emacs compile mode doesn't have a matching regex for GNU + make error messages generated when targets fail. I submitted + a patch to GNU Emacs adding a matcher for compile mode. + +2019-09-21 Paul Smith + + * tests: Convert from File::Spec::Functions to File::Spec. + Users report the Functions version doesn't work correctly for some + older versions of Perl. + + * tests/scripts/function/guile: Valgrind doesn't work with Guile. + + * src/job.c (child_execute_job): Allocate space for argv NULL. + +2019-09-21 Paul Smith + + [SV 56918] Compute job slots properly on failing command + Ensure we properly reduce job_slots_used if a command fails because + it doesn't exist/can't be started. + + * src/job.h (struct child): Add a field jobslot to be set when using + a job slot. + * src/job.c (start_waiting_job): Remember if we are using a job slot. + (reap_children): Reduce number of job slots used by jobslot. + +2019-09-21 Paul Smith + + * src/arscan.c (ar_scan): Restrict length for sscanf of ar_mode. + + * tests/scripts/functions/shell: Detect correct SHELLSTATUS code. + + * tests/run_make_test.pl: Fix support for valgrind. + Change the variable holding the make command to be a list that can + hold extra commands and options, not just a string. + + * tests/run_make_tests.pl (find_prog): Fix syntax error. + +2019-09-16 Paul Smith + + * NEWS: Update date and clarify -l change. + + * tests/run_make_tests.pl: Create $scriptsuffix for Windows/VMS. + * tests/scripts/features/targetvars: Add a suffix to scripts. + * tests/scripts/misc/general4: Ditto. + +2019-09-16 Paul Smith + + Refresh the test suite framework implementation. + Go through both run_make_tests.pl and test_driver.pl and slightly + modernize the Perl and clean up indentation etc. Fix a number of + warnings in the test scripts detected by running with -w. + + * tests/test_driver.pl: Move make error string detection out of the + base test driver. + (run_all_tests): Ensure that we always look for tests in the cwd. + * tests/run_make_tests.pl: Use File::Spec for path manipulations. + Correctly use setlocale() when detecting error strings. + Get configuration from the config-flags.pm file not config.status. + * tests/scripts/features/archives: Use new $cwddir variable. + * tests/scripts/features/reinvoke: Add missing semicolon. + * tests/scripts/features/vpath2: Avoid non-existent variable. + * tests/scripts/functions/foreach: Escape variables. + * tests/scripts/misc/bs-nl: Remove non-existing \v escape sequence. + * tests/scripts/misc/general4: Use handy create_file(). + * tests/scripts/options/dash-C: Use Cwd/$cwddir. + * tests/scripts/options/dash-I: Use subst_make_string() and #PWD#. + * tests/scripts/options/symlinks: Use File::Spec. + * tests/scripts/targets/DEFAULT: Use create_file and run_make_test. + * tests/scripts/variables/CURDIR: Use run_make_test. + * tests/scripts/variables/automatic: Remove extraneous "\". + * tests/scripts/vms/library: Remove extra "my" and extraneous "\". + +2019-09-16 Paul Smith + + * tests/config-flags.pm.in: Add USE_SYSTEM_GLOB. + * tests/config_flags_pm.com [VMS]: Ditto. + + * README.git: [SV 56895] Provide more info about "maintainer mode". + * src/read.c (get_next_mword) [HAVE_DOS_PATHS]: Don't fall through to + parsing variable references if we find a drivespec in a word! + + * tests/test_driver.pl: Remember error for "running" a directory. + * tests/scripts/features/errors: Check errors "running" a directory. + + * src/job.c (child_execute_job): Use errno from find_in_given_path(). + * tests/test_driver.pl: Determine non-executable error message. + * tests/scripts/features/errors: Use the local non-executable error. + + * src/job.c (child_execute_job): Use newer gnulib findprog version. + +2019-09-10 Eli Zaretskii + + Revert "[SV 56449] (Windows) Use slow path if '%' appears in the command" + This reverts commit 38e96eadea6e2cd42a0f414959bac327de9f468a. + Per discussion on Savannah, the modified behavior matches + the way % is handled in batch files, but not in cmd command + lines. And since Make mostly tries to emulate the command + line, the new behavior is unexpected and backward-incompatible. + +2019-09-09 Paul Smith + + Rework the creation of build.sh so it's not a template. + * build.sh: Rename from build.template. Get the list of objects + from the Makefile. Move configure-replaced variables ... + * build.cfg.in: to this new .in file. + * configure.ac: Remove special handling of build.sh.in and add + build.cfg as a generated file. + * Makefile.am (EXTRA_DIST): Remove build.sh.in and add build.sh + and build.cfg.in for build.sh.in. + * maintMakefile: Remove handling for build.template. Treat + build.sh as a source file, not a generated file. + * .gitignore: Ignore generated build.cfg file. + +2019-09-08 Paul Smith + + * gl/modules/make-glob: Move local glob configure.ac to here + * configure.ac: from here. + +2019-09-08 Paul Smith + + [SV 56834] Support local PATH search with posix_spawnp + When using exec we install the child's environment before invoking + execlp(), so commands are found on the child's PATH. posix_spawnp + searches on the parent's PATH, which we don't want. + + Import gnulib's findprog-in module and use it to search the child's + PATH, then use posix_spawn() to run it. + + Also, posix_spawn() does not fall back to trying sh on ENOEXEC, as + execlp() does, so implement that as well. + + * bootstrap.conf: Add the findprog-in gnulib module + * src/job.c: Include findprog.h if we're using posix_spawn. + (start_job_command): Remove the handling of child->cmd_name, + (child_execute_job): and add it here. Look up the command to be + run in the child's path and invoke it if found. If it fails with + ENOEXEC then retry it as an argument to the default shell. + * tests/scripts/misc/general4: Test makefile PATH assignments. + * tests/scripts/features/targetvars: Ditto, for target variables. + +2019-09-07 Paul Smith + + * doc/make.texi (Recipe Execution): Correct example to use $(<[DF]) + + * configure.ac: Check whether struct dirent has a d_type field + * src/dir.c (dir_contents_file_exists_p): Use the autoconf macro + HAVE_STRUCT_DIRENT_D_TYPE rather than relying on the GNU libc- + specific _DIRENT_HAVE_D_TYPE. + * lib/glob.c: Set HAVE_D_TYPE if HAVE_STRUCT_DIRENT_D_TYPE. + + * src/config.h.W32.template [W32]: Add support for dirent.d_type + * src/w32/include/dirent.h: Add DT_* values for dirent.d_type + (struct dirent): Add d_type + * src/w32/compat/durent.c (readdir): Set dirent.d_type based on + Windows file attributes. + + * src/makeint.h: Add typedef for mode_t if !HAVE_UMASK + + * build.template: Rewrite to allow gnulib support. + + * doc/make.texi: Clarify that the jobserver pipe is "blocking" + +2019-09-07 Paul Smith + + Align child_execute_job among different ports + Create a struct childbase which is the basics of struct child needed + to invoke child_execute_job(), and can be cast back and forth to a + struct child. Ensure all implementations of child_execute_job() take + the same arguments. + + * src/job.h (CHILDBASE): Create a macro to hold the base parts. + (struct childbase): A structure containing CHILDBASE. + (struct child): Use CHILDBASE as the initial part of child. + [VMS]: Remove declaration of VMS version of child_execute_job. + * src/job.c (start_job_command): Use new child_execute_job() call. + (child_execute_job) [__EMX__]: Implement new calling signature. + (child_execute_job): Implement new calling signature. + * src/main.c (main) [__EMX__]: Use new child_execute_job() call. + * src/function.c (func_shell_base): Use new child_execute_job() call. + * src/vmsjobs.c (vmsHandleChildTerm): Accept struct childbase. + * src/vmsjobs.c (child_execute_job): Implement new calling signature. + Modify the return value to be pid_t, not a boolean, and return the + PID rather than setting it in the child. This is OK because our only + caller immediately reset PID to -1 anyway if we return 0. + +2019-09-07 Paul Smith + + * doc/make.tex (Substitution Refs): Clarify patsubst relationship. + + * src/job.c (start_job_command) [VMS]: Correct VMS comment. + +2019-09-07 Paul Smith + + Show useful errors when posix_spawn() doesn't do so + The posix_spawn() function may not detect that the command to run is + invalid when it's invoked. Instead, it will run then exit with + error code 127. If that happens do our best to present the user + with a useful error message. + + * src/job.h (struct child): Add cmd_name to hold the command we ran. + * src/job.c (start_job_command): On success, remember the cmd_name. + (reap_children): On exit 127, stat cmd_name and show a useful error. + (free_child): Free cmd_name. + +2019-09-07 Paul Smith + + * README.git: Describe GCC and GNU make requirements + * maintMakefile: Put custom C flags into a separate variable + so they can be overridden more easily on the command line. + + * tests/scripts/features/archives: Fix expected long ar name output. + + * tetss/run_make_test.pl: Avoid 'sh -c' for Windows portability. + + Update to GNU make release candidate 4.2.91 + + * tests/scripts/functions/wildcard: Skip dangling symlink test. + The built-in glob implementation does not correctly handle dangling + symlinks. This needs to be fixed by switching to the latest glob + implementation from gnulib but that's a big job: for now avoid the + test if we know it will fail. + + * maintMakefile: Use check-local when testing build.sh. + Running 'make check' will rebuild 'make' so we're not testing the + build.sh-generated make binary. + +2019-09-07 Paul Smith + + Don't reset stack size when using posix_spawn() + There's no way to run setrlimit() from posix_spawn() so we can't reset + the stack limit in children; thus, don't change it in the parent. + + * src/makeint.h (SET_STACK_SIZE): Don't set this when HAVE_POSIX_SPAWN. + * src/job.c (child_execute_job): Remove useless comment. + +2019-09-07 Paul Smith + + * configure.ac: Remove redundant getloadavg gnulib support + + * src/dir.c (dir_setup_glob): Initialize unused gl_offs. + * tests/scripts/functions/wildcard: Add trailing slash tests. + Initial changes by Dmitry Goncharov + +2019-09-02 Paul Eggert + + Pacify Oracle Studio c99 + * src/dep.h (DEP): + * src/function.c (struct function_table_entry): + Use unsigned int, not unsigned short. Without this patch, c99 + complains ‘warning: nonportable bit-field type’. + + Port grouped_targets test to Solaris 10 + * tests/scripts/features/grouped_targets: Use ‘printf ''’ + instead of ‘echo -n’, as POSIX says the latter is not portable. + + Remove useless code in eval + * src/read.c (eval): Remove useless code. Without this patch, + Oracle Studio 12.6 complains ‘"src/read.c", line 1405: warning: + loop not entered at top’. + + Pacify Oracle Studio 12.6 in init_switches + * src/main.c (init_switches): Use a cast to convert char const * + to char *. Without this patch, the compiler complains + ‘"src/main.c", line 2643: warning: assignment type mismatch: + pointer to char "=" pointer to const char’. + + Pacify Oracle Studio 12.6 + * src/arscan.c [VMS]: Use ‘#if !defined LBR$_HDRTRUNC’ instead + of ‘#ifndef LBR$_HDRTRUNC’ to pacify Oracle Studio 12.6, which + looks inside unused #if branches for preprocessor syntax errors. + Without this patch it complains ‘"src/arscan.c", line 43: warning: + tokens ignored at end of directive line’. + +2019-09-02 Paul Smith + + * NEWS: Fix incorrect notes. + + * src/read.c (parse_file_seq): [SV 52076] Don't reverse glob() results. + +2019-08-28 Eli Zaretskii + + Fix MS-Windows MinGW build + * src/w32/subproc/sub_proc.c (process_wait_for_multiple_objects): + Fix format specifier for GetLastError's value. + + * src/job.c (reap_children): Define the 'remote_status_lose' label + only for Posix platforms, to avoid compiler warning. + + * build_w32.bat (LNKOUT): New variable, using forward slashes. + Use forward slashes in calls to :Compile, so that linking with GNU + ld works. + + * src/makeint.h [!HAVE_UMASK]: Prototype for 'umask'. + (UMASK, MODE_T): Don't define. + + * src/misc.c (get_tmpfile): Don't call UMASK, call umask, to + avoid compilation warning on !HAVE_UMASK platforms. + * src/output.c (output_tmpfd): Likewise. + + * src/misc.c (umask) [!HAVE_UMASK]: New no-op function. + + * src/config.h.W32.template (__USE_MINGW_ANSI_STDIO) + [__MINGW32__]: Define to 1, to force Make use ANSI-compatible + stdio functions, which also support the non-standard 'Id' and 'Ix' + specifiers. + (HAVE_UMASK) [__MINGW32__]: Define to 1. + + * src/arscan.c (ar_member_touch): Type-cast argument of strlen to + avoid compiler warnings. + +2019-08-26 Paul Smith + + * NEWS: Update for pre-release + +2019-08-26 Paul Smith + + Update maintainer mode to support debug wait points. + Make a spin() method available when compiled in maintainer mode. + If a file exists in the working directory with a specific name, + make will sleep until the file is deleted. + + Ensure that maintainer mode is enabled on Windows, using the same + algorithm we use on POSIX / autoconf systems. + + * build_w32.bat: If maintMakefile exists, enable maintainer mode. + * src/main.c (main): Replace Windows-only suspend flag with spin(). + * src/makeint.h: A SPIN() macro calls spin() in maintainer mode. + * src/misc.c (spin): If a spin file exists sleep until it's deleted. + +2019-08-26 Paul Smith + + * tests/scripts/features/archives: [SV 54395] Support non-GNU ar. + + * tests/scripts/misc/general3: Add more tests for SHELL/.SHELLFLAGS + +2019-08-25 Paul Smith + + * src/job.c (construct_command_argv): Remove unused VMS code + + * src/job.c (child_execute_job): Set pid to -1 on posix_spawn failure. + +2019-08-24 Paul Smith + + * bootstrap: Update from latest gnulib version + + * scripts/copyright-update: Use git ls-files for controlled files + + * po/LINGUAS: Add a translation for Bulgarian. + +2019-07-14 Christian Eggers (tiny change) + + [SV 56449] (Windows) Use slow path if '%' appears in the command + * src/job.c (sh_chars_dos): Add '%' as a special character + * src/job.c (construct_command_argv_internal): Check for '%' in quotes + + For the windows version of make, a recipe line cannot be executed + diretly by make (without a shell) if a '%' character is present. This + character starts a cmd.exe escape sequence. + +2019-07-14 Paul Smith + + * src/read.c (parse_file_seq): Update comments. + +2019-07-13 Mike Haboustak (tiny change) + + [SV 28456] Don't override $< when no default rule has been defined + The check for matching a file's command to the default rule's command + does not account for null. If no .DEFAULT is defined a rule with no + recipe has it's $< variable set to the value of $@. This breaks second + expansion, particularly when used with pattern rules. + + * src/commands.c [set_file_variables]: Check that cmds is set + * tests/scripts/features/se_explicit: Test case + * tests/scripts/features/se_implicit: Test case + +2019-07-13 Paul Smith + + Switch to the gnulib version of strerror() + * bootstrap.conf: Add strerror module + * configure.ac: Remove strerror check + * src/misc.c: Remove local strerror() implementation + * src/config.ami.template: Remove HAVE_STRERROR + * src/config.h-vms.template: Ditto. + * src/config.h.W32.template: Ditto. + +2019-05-19 Paul Smith + + * doc/make.texi: [SV 51974] Clarify makefile parsing operations. + + * doc/make.texi: [SV 54116] Document whitespace removal trick. + Discovered and explained by Michael Henry + * tests/scripts/variables/flavors: Add a test to preserve the behavior. + +2019-05-19 Paul Smith + + [SV 46013] Allow recursive variable overrides from Makefiles + Ensure that variable overrides are passed to recursive make instances + even if no overrides were provided on the command line. + Fix suggested by Rici Lake + + * src/main.c (define_makeflags): Add overrides without respect to the + value of command_variables. + * tests/scripts/features/recursion: Add a test. + +2019-05-19 Paul Smith + + Update developer customizations + * .ccls: Remove -std=c99: it disables __attribute__ causing warnings. + * .dir-locals.el: Force the C coding style to "gnu". + * make-gdb.py: Add GDB macros for pretty-printing GNU make structs. + * scripts/copyright-update: Use GNULIB_SRCDIR to find update-copyright. + +2019-05-19 Paul Smith + + [SV 54549] Don't free used set_lists during merge + When merging the variable_set_lists for two targets it could be + that the "from" set list is a subset of the "to" set list: check + for this situation to avoid freeing used memory. + + * src/variable.c (merge_variable_set_lists): Walk the "to" list and + if the "from" list is contained in it, nothing to do. + * tests/scripts/features/se_explicit: Add a test. + +2019-05-19 Paul Smith + + * src/hash.c (jash_string): [SV 54980] Avoid ASAN error + +2019-05-19 Paul Smith + + [SV 54740] Ensure .SILENT settings do not leak into sub-makes + Create a new variable run_silent to hold the current instance's global + silence setting, allowing silent_flag to represent only whether the -s + option was provided on the command line. + + * src/makeint.h: Change silent_flag variable to run_silent. + * src/job.c: Ditto. + * src/remake.c: Ditto. + * src/file.c: Ditto. + * src/main.c: Add a new global variable run_silent. + (decode_switches): After switches are decoded, initialize run_silent. + * tests/scripts/targets/SILENT: Add a test for recursive behavior. + +2019-05-19 Paul Smith + + Update copyright statements for 2019 + +2019-05-12 Kaz Kylheku + + [SV 8297] Implement "grouped targets" for explicit rules. + This patch allows "grouped targets" using the &: syntax: + + tgt1 tgt2 ... tgtn &: pre1 pre2 ... + recipe + + When the &: separator is used (in single or double colon forms), all + the targets are understood to be built by a single invocation of the + recipe. This is accomplished by piggy-backing on the already-existing + pattern rule feature, using the file's "also_make" list. + + * NEWS: Add information about grouped targets. + * doc/make.texi (Multiple Targets): Add information on grouped targets. + (Pattern Intro): Refer to the new section to discuss multiple patterns. + * src/main.c (main): Add "grouped-targets" to .FEATURES + * src/read.c (make_word_type): Add new types for &: and &::. + (eval): Recognize the &: and &:: separator and remember when used. + (record_files): Accept an indicator of whether the rule is grouped. + If so, update also_make for each file to depend on the other files. + (get_next_mword): Recognize the &: and &:: word types. + * tests/scripts/features/grouped_targets: New test script. + * AUTHORS: Add Kaz Kylheku + +2019-05-12 Paul Smith + + * variable.c (define_variable_in_set): Clear new structs + + * po/LINGUAS: Add Portuguese translation + + Add developer customizations + * .ccls: Configure the ccls LSP server + * .dir-locals.el: Reset some parameters for ccls and lsp-mode + * .gitignore: Update for GTAGS and ccls + * maintMakefile: Don't search hidden directories for sources + +2018-09-16 Paul Smith + + * src/arscan.c (ar_member_touch): [SV 54533] Stop \0 in archive headers + + Change output_write() to writebuf(), add readbuf() helper. + * src/misc.c (writebuf, readbuf): Create helper functions that will + reliably write a buffer to a file descriptor in the face of EINTR + causing short writes, and read from a file descriptor into a buffer + in the face of EINTR causing short reads. + * src/makeint.h: Declare these functions. + * src/output.c: Remove output_write() and replace with writebuf(). + (_outputs, out_of_memory): Call writebuf(), not output_write(). + * src/arscan.c (ar_scan): Call readbuf() instead of read(2). + (ar_member_touch): Remove duplicate header write, call writebuf() + instead of output_write(), and readbuf() instead of read(2). + +2018-09-15 Paul Smith + + * doc/make.texi (Remaking Makefiles): [SV 52273] Note MAKE_RESTARTS + + * src/main.c (main): Set jobserver permissions before re-execing + Fixes an issue seen in the Linux kernel build system, reported by + Masahiro Yamada . Fix suggested + on the bug-make mailing list by Mike Shal . + * tests/scripts/features/parallelism: Add a test to verify this. + + * doc/make.texi: [SV 48970] Clarify the value of $? + + * doc/make.text: [SV 54360] Weaken "obsolete" language in the manual. + There's no need to frighten users away from capabilities which are + perfectly reasonable and definitely not going away, by calling them + obsolete or discouraged in the manual. + + [SV 40657] Don't create pattern rules for suffix rules with deps. + * NEWS: Update with a backward-compatibility warning. + * src/rule.c (convert_to_pattern): If a suffix rule has dependencies, + do not create a pattern rule for it. According to the manual suffix + rules with prerequisites are treated as normal targets. + * tests/scrips/features/suffixrules: Create some regression tests for + .SUFFIXES and suffix rules. + +2018-08-04 Paul Smith + + * NEWS: Update for the latest changes. + +2018-08-04 Paul Smith + + [SV 54233] Preserve higher command_state values on also_make targets. + If multiple pattern rules have the same pattern as also-make targets + and we attempt to run them at the same time, we might downgrade the + command state from 'running' to 'deps_running'; this will prevent + that also_make from being considered complete causing make to wait + forever for it to finish. + + Ensure that set_command_state never downgrades the state of a target. + + * src/file.c (set_command_state): Don't downgrade command_state. + * src/filedef.h (struct file): Document the order prerequisite. + * test/scripts/features/patternrules: Test the behavior. + +2018-08-04 Paul Smith + + * src/job.c (reap_children): Fix inverted win/lose message. + + * tests/scripts/functions/wildcard: [SV 52018] Test dangling symlink. + +2018-08-04 Bernhard M. Wiedemann + + * src/read.c (parse_file_seq): [SV 52076] Sort wildcard results. + +2018-08-04 Paul Smith + + * tests/scripts/features/archives: [SV 54395] Test long archive names. + +2018-08-04 Ben Hutchings + + * src/arscan.c (ar_scan): [SV 54395] Allow long names in archives. + Commit bc9d72beb0cb "Resolve issues discovered by static code + analysis." added range checks on archive member name length. However, + on non-AIX systems it also checked BSD-style long names against the + short name limits and and checked the *offset* for GNU-style long + names against the short name limits. This caused valid long names to + be rejected. + + * Record the size of the GNU name map and validate offsets against it + * Ensure that the last entry in the name map is null-terminated + * Apply a maximum length of INT_MAX for element sizes + + Reported-by: Philipp Wolski + +2018-08-04 Paul Smith + + * lib/glob.c (glob_in_dir): [SV 53465] Allow symlinks to directories. + Fix from Rich Felker on the musl mailing list. + * tests/scripts/functions/wildcard: Create a regression test for this. + + * configure.ac: Add --disable-posix-spawn option + * maintMakefile: Add a test for the option + * src/job.c: Change HAVE_* preprocessor checks to USE_POSIX_SPAWN + + * src/job.c (child_execute_job): Clean up posix_spawn invocation + +2018-08-04 Aron Barath + + * job.c (child_execute_job): Prefer posix_spawn() over fork()/exec() + +2018-08-04 Paul Smith + + Clean up errors for invalid commands and add regression tests. + * src/function.c (func_shell_base): Use error() instead of recreating + the error output. + * src/job.c (exec_command): Show more standard error messages. + * src/load.c (unload_file): Fix whitespace in the error message. + * tests/scripts/features/errors: Add tests for starting non- + existent commands and new error message formats. + * tests/scripts/features/output-sync: New error message formats. + * tests/scripts/functions/shell: Ditto. + +2018-08-04 Paul Smith + + Queue failed fork() (etc.) to be handled like any other failed job. + If we failed to fork() we were essentially exiting make immediately + without respect to ignore flags, etc. On one hand that makes sense + because if you can't fork you're in real trouble, but it doesn't + work so well on systems where we don't fork at all. Instead, treat + a fork error like any other error by delaying the handling until + the next call to reap_children(). Any child with a PID of -1 is + considered to have died before starting so check these first without + waiting for them. + + * src/commands.c (fatal_error_signal): Don't kill children that + never started. + * src/function.c (func_shell_base): Handle cleanup properly if the + child doesn't start. + * src/job.c (reap_children): Check for children that died before + starting and handle them without waiting for the PID. + (start_job_command): Free memory when the child doesn't start. + (start_waiting_job): Don't manage children who never started. + (child_execute_job): If the fork fails return PID -1. + * src/vmsjobs.c: Check for children that never started. + * tests/run_make_tests.pl: Parse config.status to get all options. + +2018-08-02 Aron Barath + + * configure.ac: Check for posix_spawnattr_setsigmask + + * configure.ac: Check for spawn.h and posix_spawn() + + * src/makeint.h: Use pid_t to store PIDs, of int. + * src/commands.c (getpid): Ditto. + * src/job.h (*): Ditto. + * src/job.c (*): Ditto. + * src/main.c (main): Ditto. + * src/remote-cstms.c (start_remote_job): Ditto. + * src/remote-stub.c (start_remote_job): Ditto. + +2018-08-02 spagoveanu@gmail.com (tiny change) + + * src/dir.c: Preserve glob d_type field + When using GNU make on a system with glibc glob a pattern ending in + a slash is also matching regular files, but only in subdirectories: + + $ mkdir -p dir/subdir + $ cd dir + $ touch file1 subdir/file2 + $ echo 'test:; @echo $(wildcard */ */*/)' | make -f - + subdir/ subdir/file2 + $ echo 'test: */ */*/; @echo "$?" != */ */*/' | make -f - + subdir/ subdir/file2 != subdir/ */*/ + + It happens because in the gl->gl_readdir callback supplied to glob(), + dirent->d_type is set to DT_UNKNOWN, and the glob() implementation + in glibc assumes that such a directory entry *cannot* possibly be a + regular file. + + Pass the actual d_type down to glob(); this is the right thing to do + even if glibc is fixed, because it saves an extra stat() syscall for + each dirent. + +2018-08-02 Paul Smith + + * src/read.c(unescape_char): Use C comments not C++ comments. + * src/posixos.c(set_blocking): Ditto. + * src/w32/subproc/sub_proc.c(process_init): Ditto + + Enhance the Basic.mk environment to work with Gnulib + * maintMakefile: Omit generated headers from Basic.mk prerequisites. + * Basic.mk.template: Rework commands to use with $(call ...) macros. + * mk/Amiga.mk: Ditto. + * mk/VMS.mk: Ditto. + * mk/Windows32.mk: Ditto, plus P2W to convert POSIX to Windows paths. + * mk/msdosdjgpp.mk: Ditto. + +2018-07-02 Paul Smith + + Resolve most of the Windows Visual Studio warnings. + * Convert integer types to size_t where necessary. + * Align other integral types to avoid casts and type warnings. + +2018-07-02 Paul Smith + + Update regression tests for Windows. + * tests/scripts/features/jobserver: Windows doesn't use pipes + * tests/scripts/functions/shell: Don't test kill -2 on Windows + * tests/scripts/misc/bs-nl: Windows doesn't handle single quotes + * tests/scripts/misc/general3: Ditto. + + * maintMakefile: Preserve comments during compilation + + * function.c(abspath): Use memcpy() to avoid GCC 8.1 warnings + +2018-07-02 Paul Smith + + Convert GNU make to use the gnulib portability library + Move content from glob/* and config/* into standard GNU directory + locations lib/* and m4/*. + + Install the gnulib bootstrap script and its configuration file, and + create a bootstrap.bat file for Windows. Update the README.git file + with new requirements and instructions for building from Git. + + At this point we only install the alloca, getloadavg, and FDL modules + from gnulib. We keep our old glob/fnmatch implementation since the + gnulib versions require significant amounts of infrastructure which + doesn't exist on Windows yet. Further work is required here. + + Due to a problem with gnulib's version of getloadavg, we need to bump + the minimum required version of automake to 1.16.1 unfortunately. + + * README.git: Update instructions + * NEWS: Move developer news to a separate section + * configure.ac: Update for use with gnulib modules + + * bootstrap: Bootstrap from Git workspace (import from gnulib) + * bootstrap.conf: Bootstrap configuration for GNU make + * bootstrap.bat: Bootstrap from Git workspace for Windows + * gl/modules/make-glob: Support our local fnmatch/glob implementation + + * config/acinclude.m4: Move to m4/ + * config/dospaths.m4: Move to m4/ + * glob/fnmatch.c: Move to lib/ + * glob/fnmatch.h.in: Move to lib/ + * glob/glob.c: Move to lib/ + * glob/glob.h.in: Move to lib/ + + * Makefile.am: Update for new directories + * build.template: Update for new directories + * build_w32.bat: Update for new directories + * builddos.bat: Update for new directories + * maintMakefile: Update for new directories + * makefile.com: Update for new directories + * mk/Amiga.mk: Update for new directories + * mk/Posix.mk.in: Update for new directories + * mk/VMS.mk: Update for new directories + * mk/Windows32.mk: Update for new directories + * mk/msdosdjgpp.mk: Update for new directories + + * po/LINGUAS: One language per line (needed by gnulib) + + * INSTALL: Remove (obtained from gnulib) + * src/alloca.c: Remove (obtained from gnulib) + * src/getloadavg.c: Remove (obtained from gnulib) + * po/Makevars: Remove (created by bootstrap) + * config/*: Remove leftover files + * glob/*: Remove leftover files + +2018-07-01 Paul Smith + + * Makefile.ami, glob/Makefile.ami: Remove obsolete files + +2018-07-01 Ola Olsson + + * doc/make.texi: Updated language + +2018-07-01 Paul Smith + + * all: Update Copyright statements for 2018 + + * scripts/copyright-update: Maintainer's script for copyright mgmt + +2018-02-10 Paul Smith + + * build_w32.bat: Support Visual Studio 17. + +2017-11-19 Paul Smith + + * configure.ac: Support GLIBC glob interface version 2 + +2017-11-19 Paul Smith + + Rework directory structure to use GNU-recommended "src" directory. + Move the source code (other than glob) into the "src" subdirectory. + Update all scripting and recommendations to support this change. + + * *.c, *.h, w32/*: Move to src/ + * configure.ac, Makefile.am, maintMakefile: Locate new source files. + * Basic.mk.template, mk/*: Update for new source file locations. + * NEWS, README.DOS.template: Update for new locations. + * build.template, build_w32.bat, builddos.bat: Ditto. + * po/POTFILES.in: Ditto + * tests/run_make_tests.pl, tests/scripts/features/load*: Ditto. + * make.1: Move to doc. + * mk/VMS.mk: Add support for building on VMS (hopefully). + * makefile.vms, prepare_w32.bat: Remove. + * SCOPTIONS: Update to define HAVE_CONFIG_H + +2017-11-18 Paul Smith + + * job.c: Add "command" as a known shell built-in. + This is not a POSIX shell built-in but it's common in UNIX shells. + Reported by Nick Bowler . + + * tests/scripts/features/output-sync: Revert bad change in 0c5a9f9b92a + +2017-11-18 Paul Smith + + Remove unsupported build facilities. + Over time the non-standard build and install systems (nmake files, + smake files, Visual Studio project files, etc.) have atrophied and + maintaining them is not worth the effort, for such a simple utility + as make. Remove all the non-standard build tool support and unify + OS-specific build rules under a basic set of (GNU make) makefiles. + + Preserve the existing bootstrapping scripts (for POSIX, Windows, + and MS-DOS). Also the existing VMS build scripts are left unchanged: + I don't have enough experience with VMS to venture into this area. + Perhaps one of the VMS maintainers might like to determine whether + conversion would be appropriate. + + Rather than create libraries for w32 and glob (non-POSIX), simply + link the object files directly to remove the complexity. + + * NEWS: Update with user-facing notes. + * Makefile.am: Clean up to use the latest automake best practices. + Build Windows code directly from the root makefile to avoid recursion. + * README.Amiga, README.DOS.template, README.W32.template: Updated. + * INSTALL: Point readers at the README.git file. + * maintMakefile: Remove obsolete files. Create Basic.mk file. + * Basic.mk.template, mk/*.mk: Create basic GNU make-based makefiles. + * build_w32.bat: Copy Basic.mk to Makefile + * configure.ac: We no longer need AM_PROG_AR. + * dosbuild.bat: Rename to builddos.bat. Incorporate configure.bat. + * Makefile.DOS.template: Remove. + * NMakefile.template, w32/subproc/NMakefile: Remove. + * SMakefile.template, glob/SMakefile, glob/SCOPTIONS, make.lnk: Remove. + * configure.bat, glob/configure.bat: Remove. + * w32/Makefile.am: Remove. + * make_msvc_net2003.sln, make_msvc_net2003.vcproj: Remove. + +2017-11-11 Paul Smith + + * Makefile.am: Add jhelp.pl to remote test setup. + +2017-11-11 Paolo Bonzini + + Do not use STOP_SET for singleton compares. + Compare against '$' directly rather than using MAP_VARIABLE. + This saves ~10% for find_map_function, which is the top hotspot in + QEMU's no-op build. The build is sped up overall by about 1.5% + more (from 11.1s to 10.95s). + + * read.c (find_map_function): Do not compare against singleton sets. + +2017-11-11 Paolo Bonzini + + Speedup parsing of functions. + Use the stopchar map to quickly jump over everything that is + not an open/close brace, an open/close parenthesis or a comma. + + This saves 1% on QEMU's noop build (from 11.23s to 11.1s). + + * function.c (find_next_argument, handle_function): Check + with STOP_SET before comparing against individual characters. + * main.c (initialize_stopchar_map): Initialize MAP_VARSEP + mappings in stopchar_map. + * makeint.h (MAP_VARSEP): New. + +2017-11-11 Paolo Bonzini + + Remove MAP_PERCENT as strchr is faster. + * read.c (find_percent_cached): Use strchr instead of STOP_SET + to find % or nul. + * makeint.h (MAP_PERCENT): Remove. + * main.c (initialize_stopchar_map): Remove. + +2017-11-11 Paolo Bonzini + + Use Jenkins hash. + This is about twice as fast as the current hash, and removes the + need for double hashing (improving locality of reference). The + hash function is based on Bob Jenkins' design, slightly adapted + wherever Make needs to hash NUL-terminated strings. The old hash + function is kept for case-insensitive hashing. + + This saves 8.5% on QEMU's no-op build (from 12.87s to 11.78s). + + * configure.ac: Check endianness. + * hash.c (rol32, jhash_mix, jhash_final, JHASH_INITVAL, + sum_get_unaligned_32, jhash): New. + * hash.h (STRING_HASH_1, STRING_N_HASH_1): Use jhash. + (STRING_HASH_2, STRING_N_HASH_2): Return a dummy value. + (STRING_N_COMPARE, return_STRING_N_COMPARE): Prefer memcmp to strncmp. + +2017-11-11 Paolo Bonzini + + Use strchr for simple case of find_char_unquote. + In most cases, find_char_unquote has a single stopchar. In that + case we can look for it using strchr's optimized implementation. + + This saves 3.5% on QEMU's noop build (from 11.78s to 11.37s). + + * read.c (find_char_unquote): Rename to find_map_unquote. Replace + with an implementation optimized for the case where the stopchar + is a singleton. Adjust all callers. + +2017-11-11 Paolo Bonzini + + Use strchr/memmove in collapse_continuations. + collapse_continuations is already using strchr to speed up the + common case of no backslash-newline sequence, but on modern + processors it is faster to scan the string twice with + strchr+memmove (or strlen+memmove) than to move bytes manually. + + Saves about 1.5% on QEMU's no-op build (from 11.37s to 11.23s). + + * misc.c (collapse_continuations): Rewrite the scanning of LINE. + +2017-10-31 Paul Smith + + * main.c (main): [SV 48274] Allow -j in makefile MAKEFLAGS variable. + * tests/jhelp.pl: New file to allow testing parallelism without sleep. + * tests/scripts/features/parallelism: Test this. + * tests/scripts/features/jobserver: Update tests. + * tests/scripts/features/output-sync: Remove useless rm command. + +2017-10-30 Paul Smith + + * job.c (child_error): Modify error message string. + Ensure Emacs compile-mode's next-error doesn't match target failure + messages. Syntax errors in makefiles are still matched. + + * function.c (func_if): Check the first character of condition. + Reported by Rob W + +2017-10-30 Paul Eggert + + glob: Do not assume glibc glob internals. + It has been proposed that glibc glob start using gl_lstat, + which the API allows it to do. GNU 'make' should not get in + the way of this. See: + https://sourceware.org/ml/libc-alpha/2017-09/msg00409.html + + * dir.c (local_lstat): New function, like local_stat. + (dir_setup_glob): Use it to initialize gl_lstat too, as the API + requires. + +2017-10-30 Paul Smith + + Compute load from number of running processes. + * job.c (load_too_high): If /proc/loadavg is available, compare the + maximum load against the number of processes currently running. If + we can't parse /proc/loadavg, use the previous algorithm. + + Concept and initial patch from Sven C. Dack + +2017-09-30 Eli Zaretskii + + Fix checking existence of directories on MS-Windows + * remake.c (name_mtime) [WINDOWS32]: Emulate Posix behavior of + 'stat' with the likes of "foo/" and "foo/.". + +2017-07-09 Paul Smith + + Update copyright statements for 2017. + + Remove uses of unnecessary "register" keyword. + + * variable.c (create_pattern_var): [SV 51266] Create with xcalloc(). + Reported by Chris Metcalf + + [SV 51400] Only unblock fatal signals after child invocation + * job.c (unblock_sigs): Only unblock fatal signals not all signals. + (unblock_all_sigs): Unblock all signals not just fatal signals. + (child_execute_job): Call unblock_all_sigs() in child process. + * job.h: Remove unused function definitions. + * remote-cstms.c (start_remote_job): Call unblock_all_sigs() in + child process. + Reported by Koen Van Hoof + +2017-07-01 Paul Smith + + * function.c (shell_completed): [SV 51014] Add signal to .SHELLSTATUS + * tests/scripts/functions/shell: Verify that .SHELLSTATUS contains + a non-0 value when the shell exits due to a signal. + +2017-06-07 Eli Zaretskii + + Avoid crashes when SHELL=abcde is specified on the command line + * variable.c (do_variable_definition): If $SHELL was not found, + process "SHELL=foo" as any other variable definition. This avoids + segfaults when SHELL=foo is specified on the Make command line. + Reported by Orgad Shaneh . + +2017-06-04 Paul Smith + + [SV 51159] Use a non-blocking read with pselect to avoid hangs. + * posixos.c (set_blocking): Set blocking on a file descriptor. + (jobserver_setup): Set non-blocking on the jobserver read side. + (jobserver_parse_auth): Ditto. + (jobserver_acquire_all): Set blocking to avoid a busy-wait loop. + (jobserver_acquire): If the non-blocking read() returns without + taking a token then try again. + + [SV 50823] Support filenames containing '$' in MAKEFILE_LIST + * variable.h (enum variable_flavor: Add a new flavor for appended + values that shouldn't be expanded. + * variable.c (do_variable_definition): If given this new flavor, + do not expand the value before appending it. + * read.c (eval_makefile): Use this new flavor for MAKEFILE_LIST + * tests/scripts/variables/MFILE_LIST: Test filenames containing '$'. + + * tests/test_driver.pl: Useful error if given an invalid test name. + + * NEWS: Do not insert a space during '+=' if the value is empty. + * doc/make.texi (Appending): Document this behavior. + * variable.c (do_variable_definition): Only add a space if the variable + value is not empty. + * tests/scripts/variables/flavors: Test this behavior. + +2017-06-04 Enrique Olaizola (tiny change) + + * read.c (read_all_makefiles): [SV 50909] Add MAKEFILES to strcache + +2017-06-04 Paul Smith + + * po/LINGUAS: Add support for traditional Chinese (zh_TW) + + Rename output_tmpfile() to a misc function get_tmpfile() + * output.c: Remove output_tmpfile() and umask handling. + * output.h: Ditto. + * misc.c: Add get_tmpfile() and umask handling. + * makeint.h: Ditto. + * function.c: Rename output_tmpfile() to get_tmpfile(). + * main.c: Ditto. + * vmsjobs.c: Ditto. + + [SV 13651] Handle out-of-memory conditions slightly more gracefully. + * makeint.h: Change OUT_OF_MEM() macro to out_of_memory() function. + * output.h, job.h: Move FD_* macros from job.h to output.h. + * output.c (output_write): Write a buffer to an FD directly. + (out_of_memory): Use output_write() to avoid allocating more + memory while writing the error, and call exit() instead of die(). + This does mean we can't translate the error string, though. + * misc.c (xmalloc, xcalloc, xrealloc, xstrdup, xstrndup): Call new + out_of_memory() rather than OUT_OF_MEM(). + * read.c (parse_file_seq): Ditto. + + Clean up close-on-exec, particularly with jobserver pipes. + * configure.ac: Check sys/file.h and assume fileno() always exists. + * output.h: Move output-specific content from job.h to output.h. + * os.h (fd_inherit, fd_noinherit): New functions manage FD inheritance. + * posixos.c (fd_inherit, fd_noinherit): Implement for POSIX systems. + (jobserver_setup): Force jobserver FDs to not be inherited by default. + (jobserver_pre_child): Enable inheritance in recursive invocations. + (jobserver_post_child): Disable inheritance after recursive invocations. + * w32/w32os.c (fd_inherit, fd_noinherit): Implement for W32 systems. + * job.h (CLOSE_ON_EXEC): Remove macro in deference to new fd_noinherit. + * function.c (func_shell_base): Convert CLOSE_ON_EXEC to fd_noinherit. + * job.c (child_execute_job): Ditto. + * output.c (setup_tmpfile): Ditto. + * read.c (eval_makefile): Ditto, plus remove HAVE_FILENO check. + * w32/include/sub_proc.h: Remove process_noinherit for fd_noinherit. + * w32/subproc/sub_proc.c: Ditto. + + [SV 50300] Use CFLAGS value of "-O1" in POSIX mode. + * read.c (record_files): Use "-O1" not "-O" for CFLAGS and FFLAGS. + * tests/scripts/targets/POSIX: Test for the new value. + + * configure.ac: [SV 50648] Detect Guile 2.2 packages. + + * doc/make.texi: [SV 50304] Add missing close parenthesis. + + Add test suite support to Windows + * main.c (main): Sanitize program name detection on Windows. + * makeint.h: 'program' is a const string on all platforms now. + * tests/run_make_tests.bat: Windows bat file to invoke tests + * tests/test_driver.pl: Obtain system-specific error messages. + (get_osname): Compute the $port_type here. Add more $osname checks + for different Windows Perl ports. + (_run_command): Rewrite the timeout capability to work properly + with Windows. Don't use Perl fork/exec; instead use system(1,...) + which allows a more reliable/proper kill operation. + Also, allow options to be given as a list instead of a string, to + allow more complex quoting of command-line arguments. + * tests/run_make_tests.pl (run_make_with_options): Allow options + to be provided as a list in addition to a simple string. + (set_more_defaults): Write sample makefiles and run make on them + instead of trying to run echo and invoking make with -f-, to avoid + relying on shell and echo to get basic configuration values. Also + create a $sh_name variable instead of hard-coding /bin/sh. + * tests/scripts/features/archives: Skip on Windows. + * tests/scripts/features/escape: Use list method for passing options. + * tests/scripts/features/include: Use system-specific error messages. + * tests/scripts/features/output-sync: "Command not found" errors + generate very different / odd output on Windows. This needs to be + addressed but for now disable these tests on Windows. + * tests/scripts/functions/abspath: Disable on Windows. + * tests/scripts/functions/file: Use system-specific error messages. + * tests/scripts/functions/shell: "Command not found" errors generate + very different / odd output on Windows. This needs to be addressed + but for now disable these tests on Windows. + * tests/scripts/misc/close_stdout: Disable on Windows. + * tests/scripts/options/dash-k: Use system-specific error messages. + * tests/scripts/options/dash-l: Disable on Windows. + * tests/scripts/options/eval: Use list method for passing options. + * tests/scripts/options/general: Skip some non-portable tests. + * tests/scripts/targets/ONESHELL: Skip some non-portable tests. + * tests/scripts/targets/POSIX: Skip some non-portable tests. + * tests/scripts/variables/MAKEFILES: Skip some non-portable tests. + * tests/scripts/variables/SHELL: Use a makefile not -f- for testing. + +2017-06-04 Enrique Olaizola + + * tests/run_make_tests.pl: [SV 50902] Find Perl modules + +2017-01-11 Eli Zaretskii + + [SV 50021] Avoid infloop on MS-Windows with short scripts + * job.c (reap_children) [WINDOWS32]: Avoid recursive call to + reap_children when the argument passed to + map_windows32_error_to_string is negative or too large. + +2016-12-28 Paul Smith + + * main.c (switches): Add -E as an alias for --eval. + * make.1: Document the -E and --eval options. + * doc/make.texi: Document the -E option. + * tests/scripts/options/eval: Test the -E option and MAKEFILES. + * NEWS: Add information about the new option. + + * main.c (switches): Add --no-silent to undo -s options. + * make.1: Document the new flag. + * doc/make.texi: Document the new flag. Remove suggestions that the + .SILENT special target is deprecated or should not be used. + * tests/scripts/options/dash-s: Test the -s and --no-silent options. + * NEWS: Add information about the new option. + +2016-12-26 Martin Dorey + + * job.c (child_execute_job): [SV 49938] Avoid spurious GCC warning. + + * main.c (main): [SV 49935] Fix uninitialized variable. + +2016-12-26 Paul Smith + + [SV 40236] Handle included file open failures properly. + * read.c (eval_makefile): Set deps->error if we discovered any + error reading makefiles, and set NONEXISTENT_MTIME so we know + it needs to be rebuilt. + * main.c (main): Clean up management of makefile_mtimes. + * tests/scripts/features/include: Add open failure testcases. + + Portability changes for the test suite. + * tests/test_driver.pl: Save error strings for later comparison. + * tests/run_make_tests.pl: Create portable commands for later use. + * tests/*: Use these new variables. + + [SV 20513] Un-escaped # are not comments in function invocations + * NEWS: Document the change, as a backward-incompatible change. + * main.c (main): Add 'nocomment' to the .FEATURES variable. + * read.c (remove_comments): Skip variable references during remove. + (find_char_unquote): Fix comments for new STOPMAP support. + * tests/scripts/features/escape: Test new escape syntax. + * tests/scripts/functions/guile: Ditto. + * tests/scripts/functions/shell: Ditto. + + * main.c (main): [SV 40234] Show correct error message. + +2016-12-26 Christoph Schulz + + * main.c (switches): [SV 48809] Accept obsolete jobserver flag. + +2016-12-26 Paul Smith + + * read.c (get_next_mword): [SV 49865] Make fallthrough explicit. + + [SV 49114] Remove support for the NO_FLOAT compile flag. + * makeint.h (max_load_average): Always a double. + * main.c (max_load_average, default_load_average): Always doubles. + (switches): -l option is a "floating" format. + (decode_switches, define_makeflags): Support "floating" format. + * remake.c (f_mtime): Show time skew as double. + * rule.c (print_rule_data_base): Show percentages as double. + * Makefile.ami, README.DOS.template, SMakefile.template: Remove + references to NO_FLOAT. + * SCOPTIONS, glob/SCOPTIONS: Remove NO_FLOAT settings. + + [SV 45477] [SV 49115] Parse DOS/Windows drivespecs correctly. + * read.c (parse_file_seq) [WINDOWS32]: Only consider a colon part of + a path if it's in a valid Windows drivespec. + +2016-12-25 Paul Smith + + [SV 49116] Check potential null pointer dereference. + * w32/subproc/sub_proc.c (make_command_line): Simplify cygwin shell + check for correctness. + +2016-12-25 Jaak Ristioja + + * expand.c (variable_append): [SV 49113] Possible null ptr deref + + * w32/*/dirent.*: [SV 49111] Remove unused telldir() + +2016-12-25 Paul Smith + + Add more GCC warnings to the maintainer build. + * arscan.c: [SV 49112] Correct TEST printf() formatting. + Recommended by Jaak Ristioja + * hash.c: Correct fprintf() formatting. + * maintMakefile: Add extra GCC warning flags. + + * po/Makevars, makeint.h, debug.h: Add xgettext C format flags. + + * po/LINGUAS: Added Serbian translation. + + * README.template: Clarify some items in the README + + * doc/make.texi: [SV 48951] Fix documentation typo. + + * maintMakefile: Update default GPG ID for new key. + +2016-12-14 Paul Smith + + Resolve issues discovered by static code analysis. + * maintMakefile: Add a rule to submit code for analysis. + * configure.ac: Check for availability of the umask() function. + * output.c (output_tmpfd, output_tmpfile): Use umask on temp files. + * makeint.h (PATH_VAR): Reserve an extra character for nul bytes. + * function.c (func_error): Initialize buffer to empty string. + * job.c (child_execute_job): Verify validity of fdin. + * main.c (main): Simplify code for makefile updating algorithm. + * arscan.c (ar_scan): Verify member name length before reading. + * read.c (readline): Cast pointer arithmetic to avoid warnings. + * remake.c (update_file): Remove unreachable code. + (name_mtime): Verify symlink name length. + +2016-11-12 Eli Zaretskii + + * NEWS: Mention the extended support for -jN on MS-Windows. + +2016-11-12 Marc Ullman + + Support more than 63 jobs on MS-Windows + * job.c (start_waiting_job, load_too_high): + * w32/w32os.c (jobserver_setup, jobserver_acquire): Abstracted out + MAXIMUM_WAIT_OBJECTS. Call process_table_full instead. + * w32/include/sub_proc.h: Update and add prototypes. + * w32/subproc/sub_proc.c (GMAKE_MAXIMUM_WAIT_OBJECTS): New macro. + (process_wait_for_multiple_objects): Drop-in replacement for Windows + API WaitForMultipleOjects. + (process_wait_for_any_private): Replaced MAXIMUM_WAIT_OBJECTS with + GMAKE_MAXIMUM_WAIT_OBJECTS. + (process_table_full): Replacement for process_used_slots. + (process_used_slots): Removed, as no longer needed. + (process_table_usable_size): Returns maximum usable size of process + table. + (process_table_actual_size): Returns actual size of process table. + (process_register): Added assertion. + (process_easy): Abstracted out MAXIMUM_WAIT_OBJECTS. + +2016-10-09 Eli Zaretskii + + Only include strings.h in MinGW builds + * main.c: + * job.c: Include strings.h only if HAVE_STRINGS_H is defined. + + * config.h.W32.template (HAVE_STRINGS_H): Define only for MinGW, + as MSVC doesn't have this header. + +2016-10-06 Eli Zaretskii + + Update the Guile version tested with the MS-Windows build. + + Avoid compiler warnings with MinGW runtime 3.22.2 + * main.c: + * job.c: Include strings.h, to get the prototypes of strcasecmp + and strncasecmp with latest MinGW runtime versions. + * config.h.W32.template (HAVE_STRINGS_H): Define. + +2016-06-24 Paul Smith + + * README.W32.template: Update the build documentation. + * build_w32.bat: Fix issues with Visual Studio builds. Fix an error + that always created Debug builds. Support 32bit and 64bit builds. + + * Update to pre-release version 4.2.90. + +2016-06-10 Paul Smith + + GNU Make release 4.2.1. + +2016-06-06 Paul Smith + + * maintMakefile: TP recommends rsync for retrieving PO files. + +2016-05-31 Jeremy Devenport (tiny change) + + * main.c (main): [SV 48009] Reset stack limit for make re-exec. + +2016-05-31 Paul Smith + + [SV 47995] Ensure forced double-colon rules work with -j. + The fix for SV 44742 had a side-effect that some double-colon targets + were skipped. This happens because the "considered" facility assumed + that all targets would be visited on each walk through the dependency + graph: we used a bit for considered and toggled it on each pass; if + we didn't walk the entire graph on every pass the bit would get out + of sync. The new behavior after SV 44742 might return early without + walking the entire graph. To fix this I changed the considered value + to an integer which is monotonically increasing: it is then never + possible to incorrectly determine that a previous pass through the + graph already considered the current target. + + * filedef.h (struct file): make CONSIDERED an unsigned int. + * main.c (main): No longer need to reset CONSIDERED. + * remake.c (update_goal_chain): increment CONSIDERED rather than + inverting it between 0<->1. + (update_file_1): Reset CONSIDERED to 0 so it's re-considered. + (check_dep): Ditto. + * tests/scripts/features/double_colon: Add a regression test. + +2016-05-31 Paul Smith + + * DELETE_ON_ERROR: [SV 48061] Use "exit 1" for portability. + Reported by Joel Fredrikson + + * w32/pathstuff.c: [SV 47996] Use ISBLANK() not isblank(). + +2016-05-28 Eli Zaretskii + + Fix printing time stamps on MS-Windows + * dir.c (print_dir_data_base) [WINDOWS32]: Use %I64u format for + printing unsigned 64-bit data types, as %ull is not universally + supported. + +2016-05-27 Luke Allardyce (tiny change) + + [SV 48037] Fix MinGW build with Posix configury tools + * w32/Makefile.am (libw32_a_CPPFLAGS): Add -I$(srcdir)/glob. + +2016-05-22 Paul Smith + + GNU Make release 4.2. + +2016-05-21 Joe Crayne (tiny change) + + [SV 44742] Fix double-colon rules plus parallel builds. + * remake.c (update_file): Don't update double-colon target status + if we're still building targets. + (ftime_t): Don't propagate timestamps for double-colon targets that + we've not examined yet. + * tests/scripts/features/double_colon: Add parallel build tests. + +2016-05-21 Paul Smith + + * read.c (eval): [SV 47960] Skip record waiting files when ignoring. + * tests/scripts/features/conditionals: Test this scenario. + + Separate the GNU make load ABI from internal types. + Create an internal type "floc" and convert all users to that type. + * gnumake.h (gmk_floc): Remove the offset field from this type. + * loadapi.c (gmk_eval): Convert gmk_floc to internal floc. + +2016-05-21 Paul Eggert + + Fixes for enhanced GCC warnings. + Move function prototypes into header files and out of .c files. + Use void argument lists for functions that accept no args. + Remove unused macros. Make private functions static. Align + types with printf format characters. + +2016-05-21 Paul Smith + + Fix compile issues with Windows and VMS. + * main.c (initialize_stopchar_map): isblank() is not part of C89. + Install bits for space and tab directly. + * makeint.h: Don't define vfork; autoconf handles this for us. + * vmsjobs.c: Rename NEXT_TOKEN to V_NEXT_TOKEN to avoid conflicts. + * dir.c (print_dir_data_base): Visual Studio C doesn't have int64_t. + * w32/subproc/sub_proc.c (process_begin): Missing arg to memset(). + * build_w32.bat: Don't use obsolete Visual Studio flags. + + Allow compiling with an ISO C 1989/1990 compiler. + * posixos.c (jobserver_post_child): Use C89 for loop syntax. + * remake.c (update_goal_chain): Ditto. + * variable.c (parse_variable_definition): Ditto. + +2016-05-17 Eli Zaretskii + + [SV 47942] Avoid random crashes in subordinate programs on MS-Windows + * w32/subproc/sub_proc.c (process_begin): Zero out startInfo + before using it. Fixes crashes in Intel Fortran compiler invoked + by Make. + +2016-04-24 Eli Zaretskii + + Fix the MS-Windows MinGW build + * build_w32.bat (GccCompile): Use -std=gnu99, as some code uses + C99 features ('for' loop initial declarations). + + * dir.c (print_dir_data_base) [WINDOWS32]: Cast 'mtime' to + 'int64_t', and use %I64d to print it, to avoid compile-time + warning about printing a 'time_t' value, which could be either + a 32-bit or a 64 bit integral type. + +2016-04-23 Paul Smith + + * tests/scripts/features/output-sync: increase test timeout. + I'm getting random failures with a timeout of 10s; increase to 30s. + +2016-04-11 Paul Smith + + * NEWS: Update for pre-release + + * dep.h, makeint.h (show_goal_error): Move to makeint.h. + +2016-04-11 Paul Smith + + [SV 46433] Show recipe line offsets in line number messages. + While displaying line numbers, show the relevant line number inside + the recipe not just the first line of the entire recipe. + Sample changes suggested by Brian Vandenberg + + * gnumake.h (gmk_floc): Add an 'offset' to track the recipe offset. + * read.c (eval, eval_makefile, eval_buffer): Initialize 'offset'. + (record_files, install_pattern_rule): Ditto. + * job.c (new_job, job_next_command): Update 'offset' based on the + line of the recipe we're expanding or invoking. + (child_error): Add 'offset' when showing the line number. + * function.c (func_shell_base): Ditto. + * output.c (error, fatal): Ditto. + * NEWS: Mention the new ability. + * tests/scripts/features/errors: Check the line number on errors. + * tests/scripts/functions/warning: Check the line number on warnings. + * tests/scripts/features/output-sync, + tests/scripts/features/parallelism, tests/scripts/functions/shell, + tests/scripts/functions/error: Update line numbers. + +2016-04-09 Paul Smith + + * maintMakefile: Add a rule for storing preprocessor output. + + [SV 102] Don't show unnecessary include file errors. + Delay the generation of error messages for included files until we + are sure that we can't rebuild that included file. + * dep.h (struct dep): Don't reuse "changed"; make a separate field + to keep "flags". Get rid of dontcare and use the flag. + (struct goaldep): Create a new structure for goal prereqs + that tracks an errno value and the floc where the include happened. + Rework the structures to ensure they are supersets as expected. + In maintainer mode with GCC, use inline to get type checking. + * read.c (eval_makefile): Return a struct goaldep for the new + makefile. Ensure errno is set properly to denote a failure. + (read_all_makefiles): Switch to goaldep and check errno. + (eval): Don't show included file errors; instead remember them. + * remake.c (update_goal_chain): Set global variables to the current + goaldep we're building, and the entire chain. + (show_goal_error): Check if the current failure is a consequence + of building an included makefile and if so print an error. + (complain): Call show_goal_error() on rule failure. + * job.c (child_error): Call show_goal_error() on child error. + * main.c (main): Switch from struct dep to goaldep. + * misc.c (free_dep_chain): Not used; make into a macro. + * tests/scripts/features/include: Update and include new tests. + * tests/scripts/options/dash-B, tests/scripts/options/dash-W, + tests/scripts/options/print-directory, + tests/scripts/variables/MAKE_RESTARTS: Update known-good-output. + + * job.c (child_error): Add filename length to output length. + Reported by Dale Stimson + +2016-04-04 Paul Smith + + Preserve the real value of -jN in MAKEFLAGS using jobserver. + Previously if the jobserver was active, MAKEFLAGS would contain only + the -j option but not the number (not -j5 or whatever) so users + could not discover that value. Allow that value to be provided in + MAKEFLAGS without error but still give warnings if -jN is provided + on the command line if the jobserver is already activated. + + * NEWS: Discuss the new behavior. + * os.h, posixos.c, w32/w32os.c: Return success/failure from + jobserver_setup() and jobserver_parse_auth(). + * main.c (main): Separate the command line storage of job slots (now + in arg_job_slots) from the control storage (in job_slots). Make a + distinction between -jN flags read from MAKEFLAGS and those seen + on the command line: for the latter if the jobserver is enabled then + warn and disable it, as before. + * tests/scripts/features/jobserver: Add new testing. + +2016-04-04 Paul Smith + + * tests/run_make_tests.pl: Add file/lineno info to .run file. + + * maintMakefile: Fix logging of check-alt-config target. + + * job.c (child_execute_job): Fix $(shell...) under NO_OUTPUT_SYNC. + * main.c (decode_output_sync_flags): Use NONE for NO_OUTPUT_SYNC. + + * main.c (main): Restrict disabling debugging for MAKEFILES. + + * Makefile.am, w32/Makefile.am: Fix *os.c for Windows builds. + Original change provided by Luke Allardyce + + * make.texi: Confirm that CURDIR contains an absolute path. + + * docs/make.texi: [SV 47392] Add "Integrating make" chapter. + + Change --jobserver-fds to more generic --jobserver-auth. + * NEWS: Mention the change. + * main.c: Rename jobserver_fds variable to jobserver_auth and + --jobserver-fds option to --jobserver-auth. + * os.h, posixos.c, w32/w32os.c: Rename jobserver_parse_arg() and + jobserver_get_arg() to jobserver_parse_auth()/jobserver_get_auth(). + +2016-03-23 Paul Smith + + * tests/run_make_tests.pl: Preserve $make_command + * tests/scripts/options/dash-n: Use $make_command. This fixes + a spurious failure when running tests with valgrind enabled. + + * variable.c: Clean up some memory leaks. + + [SV 46995] Strip leading/trailing space from variable names + * makeint.h: Change MAP_SPACE to MAP_NEWLINE, and add MAP_PATHSEP + and MAP_SPACE which is now MAP_BLANK|MAP_NEWLINE. Create + NEW_TOKEN(), END_OF_TOKEN(), ISBLANK(), ISSPACE() macros. + * main.c (initialize_stopchar_map): Set MAP_NEWLINE only for + newline characters. + * Convert all uses of isblank() and isspace() to macros. + * Examine all uses of isblank() (doesn't accept newlines) and + change them wherever possible to ISSPACE() (does accept newlines). + * function.c (func_foreach): Strip leading/trailing space. + * variable.c (parse_variable_definition): Clean up. + * tests/scripts/functions/foreach: Test settings and errors. + * tests/scripts/functions/call: Rewrite to new-style. + * tests/scripts/misc/bs-nl: Add many more tests for newlines. + +2016-03-21 Paul Smith + + * function.c (func_file): Support reading from files. + * NEWS: Add information about reading files. + * make.texi (File Function): Describe reading files. + * tests/scripts/functions/file: Test new features for $(file ...) + +2016-03-20 Paul Smith + + * doc/make.texi (Setting Variables): Fix typo (add comma). + + * job.c (child_error): Combine file info with error message. + * tests/scripts/...: Update error message matches. + +2016-03-19 Paul Smith + + * variable.c: Align type of variable_changenum. + +2016-03-13 Paul Smith + + [SV 45728] Detect changes in .VARIABLES more accurately. + For performance, we only recompute .VARIABLES when (a) it's expanded + and (b) when its value will change from a previous expansion. To + determine (b) we were checking the number of entries in the hash + table which used to work until we started undefining entries: now if + you undefine and redefine the same number of entries in between + expanding .VARIABLES, it doesn't detect any change. Instead, keep + an increasing change number. + * variables.c: Add variable_changenum. + (define_variable_in_set, merge_variable_sets): Increment + variable_changenum if adding a new variable to the global set. + (undefine_variable_in_set): Increment variable_changenum if + undefining a variable from the global set. + (lookup_special_var): Test variable_changenum not the hash table. + * tests/scripts/variables/special: Test undefining variables. + + * main.c(main): Disable output sync without parallel builds. + + [SV 46581] Pre-define .LOADED to avoid warnings. + * main.c (main): Pre-define .LOADED as a default-level variable. + * load.c (load_file): Set the value rather than append it. Avoid + adding an extra initial whitespace. + * tests/scripts/features/load: Run with --warn-undefined-variables. + +2016-03-13 Paul Smith + + [SV 44555] Use vfork() instead of fork() where available. + Testing has shown that vfork() is actually significantly + more efficient on systems where it's supported, even for + copy-on-write implementations. If make is big enough, + duplicating the page tables is significant overhead. + + * configure.ac: Check for fork/vfork. + * makeint.h: Include vfork.h and set up #define for it. + * os.h, posixos.c (get_bad_stdin): For children who can't use + the normal stdin file descriptor, get a broken one. + * job.c (start_job_command): Avoid so many ifdefs and simplify + the invocation of child_execute_job() + (child_execute_job): move the fork operation here so it can + return early for the parent process. Switch to use vfork(). + * function.c (func_shell_base): Use new child_execute_job() and + simplify ifdefs. + * job.h, main.c, remote-cstms.c, vmsjobs.c, w32os.c: Update + declarations and calls. + +2016-03-09 Paul Smith + + * job.c (exec_command): [SV 47365] Show error on exec failure. + +2016-03-08 Paul Smith + + [SV 46261] Use pselect() for jobserver where supported. + * Makefile.am, configure.ac: Check for pselect() and sys/select.h. + * main.c (main): Block SIGCHLD if we have pselect() support. + * posixos.c (jobserver_acquire): If we support pselect() then use + it to query the jobserver pipe, while also listening for SIGCHLD. + Also pselect() supports a timeout so avoid alarm() calls. + + Clean up some compiler warnings. + * commands.c, commands.h: Use unsigned char for flags. + * dir.c: Use time_t and size_t, and char for a boolean value. + * job.c: Use unsigned and char. + * read.c: Return a signed type since -1 is a valid return code. + + Extract jobserver implementation into OS-specific files. + * os.h, posixos.c, w32/w32os.c: New files implementing jobserver. + * job.c, job.h, main.c, makeint.h: Move content to new files. + * w32/include/sub_proc.h, w32/subproc/sub_proc.c: Ditto. + * Makefile.am: Build and package OS-specific files. + * build_w32.bat, make_msvc_net2003.vcproj, README.W32.template: + Update for new files, and clean up the build. + * POTFILES.in, maintMakefile, NMakefile.template: Ditto. + * w32/subproc/build.bat: Delete as unused. + + [SV 46261] Add more EINTRLOOP wrappers. + This cannot be a perfect solution because there are always other + possible places EINTR can happen, including external libraries + such as gettext, Guile etc. + +2016-02-29 Paul Smith + + * strcache.c (add_hugestring): [SV 46832] Support huge strings. + The strcache was limited to strings of length 65535 or less, + because the length is kept in an unsigned short. To support + huge strings add a new simple linked list, which we don't try + to hash. + + * strcache.c (add_string): [SV 47071] Handle huge initial string. + If the very first string added to the string cache is more than + half the maximum size, we failed when moving the only strcache + buffer to the full list. + + [SV 47151] Exit with 1 when checking recursive make -q + * job.h (struct child): New bit to mark recursive command lines. + * job.c (start_job_command): Set the recursive command line bit. + (reap_children): If the child is a recursive command and it exits + with 1 during question mode, don't print an error and exit with 1. + * tests/scripts/options/dash-q: Add a regression test. + + * main.c (define_makeflags): Add parens to avoid GCC warning. + +2016-02-29 Paul Smith + + * tests/scripts/features/archives: Handle deterministic archives. + Newer versions of binutils allow ar to be compiled to generate + "deterministic archives" by default: in this mode no timestamp + information is generated in the static archive, which utterly + breaks GNU make's archive updating capability. Debian and Ubuntu + have turned this feature on by default in their distributions + which causes the regression tests to fail. + + Update the regression tests to check for the availability of the + "U" option to ar which disables deterministic archives and allows + GNU make's archive support to work properly again. + +2016-02-28 Paul Smith + + Update Copyright statements for the new year. + + * doc/make.texi: [SV 47163] Fix typo in 'ifdef' documentation. + + * doc/make.texi: [SV 35455] Add more uses for Empty Recipes. + +2015-11-07 Gisle Vanem + + Fix diagnostics on MS-Windows when environment is too large + * w32/subproc/sub_proc.c (process_begin): Fix test of the error + cause when the environment block is too large. + +2015-10-27 Eli Zaretskii + + Update README.W32.template + * README.W32.template: Update for latest developments. Make it + clear we don't recommend using HAVE_CASE_INSENSITIVE_FS in + general. + + [SV 46304] Don't invoke C++ compiler on C sources on MS-Windows + * default.c (default_variables) [HAVE_CASE_INSENSITIVE_FS]: Make + COMPILE.C and LINK.C be synonyms for COMPILE.c and LINK.c, + respectively. + +2015-09-23 Eli Zaretskii + + [SV 45838] When invoking w32 programs, don't use free'd memory. + * w32/subproc/sub_proc.c (process_begin): Freeing argv[0] makes + the other argv[i] pointers invalid, so need to allocate a new + array and copy argv[i] for i != 0 first, replacing argv[0] with + the batch file name, before we can free argv[0]. + +2015-07-13 Paul Smith + + * implicit.c (pattern_search): [SV 43677] Mark files secondary. + In order to fix SV 12267 we were marking the prerequisites of + implicit (pattern) targets that existed elsewhere in the makefile + as precious to keep them from being deleted as intermediate files. + However this also keeps them from being deleted on error. Instead + mark them as secondary. + * tests/scripts/targets/DELETE_ON_ERROR: Test DELETE_ON_ERROR. + +2015-07-12 Paul Smith + + [SV 28092] Preserve the exit status of the $(shell...) function. + Add a new variable .SHELLSTATUS which holds the exit status of the + last-invoked shell function or != assignment. + + * NEWS, doc/make.texi: Document the change. + * function.c (shell_completed, msdos_openpipe, func_shell_base): Add + shell_completed() to handle the completion of the shell, by setting + .SHELLSTATUS. Call it where needed. + * job.c (child_handler): Call shell_completed(). + * tests/scripts/functions/shell: Add tests for .SHELLSTATUS. + +2015-07-12 Paul Smith + + * tests/scripts/misc/fopen-fail: [SV 42390] Increase test timeout. + * Makefile.am (check-regression): Force ulimit -n for fopen-fail test. + + * job.c: [SV 43936] Check sigaction for error return. + + [SV 45049] Check for '$' being the last character in a string. + * expand.c (variable_expand_string): Add a single '$' if '$' ends the + string. + * read.c (find_char_unquote, get_next_mword): Stop if '$' ends the + string. + * variable.c (parse_variable_definition): Ditto. + + * read.c (unescape_char): [SV 45050] Handle final backslashes. + If the last thing in the string to be unescaped is a backslash, + stop without reading beyond the end of the string. + + * strcache.c: [SV 45275] Handle very long strings. + Our previous behavior for handling too-long strings involved + increasing the size of the default string cache buffer, but the + implementation was incomplete. Instead, create a one-off large + string cache entry and add it directly to the full cache list + without changing the default buffer size. + +2015-07-12 Duncan Moore (tiny change) + + * job.c [RISCOS]: Remove logic that is no longer required. + +2015-07-12 Paul Smith + + * remake.c (update_file): [SV 44742] Keep double-colon rule status. + Fix suggested by Everett Boyer + +2015-07-10 James Johnston (tiny change) + + [SVN 45515] Check exit status of sub-make in subproc.bat + * subproc.bat: Exit when sub-make invocation fails. + +2015-07-10 Eli Zaretskii + + [SV 45515] Ignore Windows-specific build artifacts + * .gitignore: Ignore *.exe, *.dll.a, *.lib, *pdb, and a few more MSVC + specific artifacts. + Suggested by James Johnston + +2015-02-28 Eli Zaretskii + + [SV 44348] Fix handling of shell widlcards on MS-Windows. + * job.c (construct_command_argv_internal): If shell wildcard + characters are found inside a string quoted with "..", give up the + fast route and go through the shell. Fixes Savannah bug #44348. + +2015-01-27 John Malmberg + + Fix bs-nl handling, exit and Environment for VMS. + This fix required a complete rewrite of the command parser vmsjobs.c + child_execute_job. The old parser had too many incorrect assumptions + about DCL commands and could not be repaired to extended. + + The parser now more closely parses VMS commands and handles quoted + commands and redirection. Command File mode has been improved, but can + not fully support bs-nl syntax. + + VMS Unix shell simulation has been improved. + + * commands.c: vms_comma_separator is now a run-time setting. + * function.c: vms_comma_separator is now a run-time setting. + * function.c(func_basename_dir) now reports "[]" or "./" based on + VMS crtl runtime setting. + * job.c(start_job_command): VMS Handle empty commands propery. + * main.c: Add VMS environment variables for run-time settings. + * vms_legacy_behavior - Force older behavior. + * vms_comma_separator - Commas or spaces for separators. + * vms_unix_simulation - Enhanced Posix shell simulation features. + * Detect if VMS CRTL is set to report Unix paths instead of VMS. + * ':' and '>' are also MAP_DIRSEP on VMS. + * makeint.h: Add VMS run-time option variables. + * readme.vms: Update to current behavior. + * variable.c(define_variable_in_set): Fix VMS Environment variable + lookup. + * variable.c(define_automatic_variables): Remove some VMS specific + automatic variables and use the Unix ones instead. + * vms_export_symbol.c: Set max symbol size correctly. + * vmsjobs.c: child_execute_job() complete rewrite of VMS comand + parsing. + * vmsjobs.c(build_vms_cmd): VMS commmand building with shell simulation. + +2014-12-27 Christian Boos (tiny change) + + Fix $(shell) on hosts with 64-bit pid_t. + * function.c: Use pid_t for shell_function_pid. + * job.c: Likewise. + +2014-10-20 Paul Smith + + * main.c (main): [SV 43434] Handle NULL returns from ttyname(). + +2014-10-20 Benedikt Morbach (tiny change) + + * tests/scripts/features/archives: [SV 43405] override AR variable. + +2014-10-20 John Malmberg + + Fix VMS implicit rules and UNIX paths. + This fixes VMS implicit rules and UNIX style pathname handling. + It also fixes some of the VMS style pathname handling, more work + there will be needed later. + TODO: There are other case insensitive platforms besides VMS. + We need to find out why there is extra VMS code for this. This + indicates either the extra VMS code is not needed, or the case + insensitive support may not be complete on the other case + insensitive platforms. + + * default.c: Add missing definitions to default_suffix_rules[] and + default_variables[]. + TODO: As it is important that VMS DCL mode definitions must always + be a superset of UNIX definitions, a better way of maintaining the + VMS DCL mode definitions should be devised. + * dir.c (downcase_inplace): Add a reentrant downcase() routine. + Add future support for VMS 8.2+ _USE_STD_STAT macro which will + disable a lot of VMS specific code from compiling. + (dir_file_exists_p): vmsify filename only if directory name has VMS + directory delimiters. + (file_exists_p): Handle both VMS and UNIX directories. + (file_impossible): Handle both VMS and Unix directories. Track + whether a VMS format path is needed for the return value. + * file.c (lookup_file): Check if vmsify is needed; handle UNIX paths. + * implicit.c (pattern_search): Enable UNIX paths. + * read.c (parse_file_seq): Enable UNIX paths. + * remake.c (f_mtime): Fix gpath_search call for VMS paths. + * rule.c (count_implicit_rule): Enable UNIX paths, Fix VMS paths. + * vpath.c (selective_vpath_search): Enable UNIX paths. + +2014-10-20 John Malmberg + + Update README.VMS and move news to the NEWS file + * NEWS: Merge in VMS history. + * README.VMS: Remove VMS history, document current behavior and + known issues. + +2014-10-20 John Malmberg + + [SV 41758]: Fix archive support for VMS. + Upated to match change to run_make_tests and some future fixes to + make on VMS. + + * arscan.c: Use ANSI compatible pragmas instead of VAX C extensions. + * tests/scripts/features/archives: Fix tests to use VMS rules and + answers when running on VMS and using DCL as a shell. + * tests/scripts/features/vpath3: Fix epected answer on test when + run on VMS. + * tests/scripts/vms/library: (New) Test the VMS library rules that + are not tested by existing tests. + +2014-10-20 John Malmberg + + [SV 42447]: VMS simulate exporting symbols + This also includes fixing the most of the exit handling code for VMS. + + Self tests: + Previously about 94 Tests in 36 categories fail. + Now about 45 tests in 22 categories fail. + + Because some tests do not properly clean up, the number of tests that + fail can vary by one or two test cases between consecutive runs. + + * Makefile.am: Add new VMS files. + * job.c: add prototype for vms_strsignal(). + * job.c: (child_error): Remove VMS specific code as no longer needed. + * job.c: (reap_children): The VMS specific code was setting the + status to 0 instead of setting it to the proper exit status. + * job.h: Add vms_launch_status to struct child. + * main.c: (main): Use environment variables for options to use MCR + * instead of a foreign command, and to always use command files for + subprocesses. + For VMS use (set_program_name) routine which is common to ports of + other GNU packages to VMS to set the program name used internally. + Use (vms_putenv_symbol) to set up symbols to be visible in child + programs, including recursive make launched by execve() + Start of Bash shell detection code for VMS. + * makefile.com: Need nested_include=none for building on VMS search + lists. Add vms_progname, vms_exit, and vms_export_symbol. + * makefile.vms: Need nested_include=none for building on VMS search + lists. Add vms_progname, vms_exit, vms_export_symbol. + * makeint.h: Make sure non-standard "VMS" macro is defined. Add + prototypes for new VMS routines. Remove VMS-specific failure codes. + * vmsjobs.c: Add VMS POSIX exit code constants. + (_is_unixy_shell): Detect Bash shell. + (vms_strsignal): simulate strsignal() on VMS. + (vmsHandleChildTerm): fix to properly report failed LIB$SPAWN() exit + status codes. Remove code that duplicated code in job.c. + (child_execute_job): Export environment symbols before spawning a + child and restore afterward unless option to use command files for + subprocesses is set. Improve handling of UNIX null commands ":". + * vms_exit.c: Provides vms_exit() to detect if an exit code is UNIX + or VMS, and converts the UNIX code into a VMS exit code. + * vms_export_symbol.c: Routines to create DCL symbols that work like + shell aliases or exported shell symbols and clean them up on exit. + * vms_export_symbol_test.com: Unit test for vms_export_symbol.c + * vms_progname.c: New file: VMS specific replace for progname.c that + is used in some GNU projects. + +2014-10-20 John Malmberg + + Set up for running tests on VMS. + * run_make_tests.pl: set $port_type to be 'VMS-DCL' when the test are + run from the VMS DCL Interpreter. When the tests are run from GNV + on VMS, the $port_type will be 'UNIX'. + * run_make_tests.com: VMS search list support. This is needed for + using a search list such as prj_root = lcl_root:,vms_root:,src_root: + for building and testing. + +2014-10-09 Paul Smith + + * configure.ac, NEWS, README.git: Set up for the next release. + +2014-10-05 Paul Smith + + GNU Make release 4.1. + +2014-10-02 Eli Zaretskii + + Fix Cygwin compilation error. + * job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]: Fix + initializer for sh_chars_sh. + Reported by Denis Excoffier. + +2014-10-01 Gisle Vanem + + Fix last commit. + + * makeint.h (ftruncate): Define also for __WATCOMC__. + +2014-10-01 Eli Zaretskii + + Avoid compilation warnings. + * main.c (find_and_set_default_shell, main) [WINDOWS32]: Declare + variables 'const char *' to avoid compiler warnings. + * job.c (construct_command_argv_internal) [!NDEBUG]: Declare 'end' + and set it only if NDEBUG is not defined, to avoid compiler + warnings. + + Treat redirection of standard handles on Windows as it is done on Unix. + * job.c (start_job_command) [WINDOWS32]: Compute outfd and errfd + as on Posix platforms, and pass the results to process_easy. + * function.c (windows32_openpipe) [WINDOWS32]: Accept an + additional argument ERRFD and use it for redirecting the standard + error handle passed to the subprocess. + (func_shell_base) [WINDOWS32]: Pass the computed errfd to + windows32_openpipe. + +2014-09-30 Paul Smith + + Update Copyright statements for 2014. + + * tests/scripts/features/load: Avoid unused variable warnings. + + * loadapi.c (gmk_eval): Use C90 syntax. + +2014-09-30 Hartmut Becker + + * job.c: fix make action continuation lines. + * vmsjobs.c: fix writing DCL command files when trimming (white + spaces and $ signs) especially after a split (command continuation). + +2014-09-15 Bernhard Reutner-Fischer (tiny change) + + * configure.ac: Fix spacing in helptext of customs + +2014-09-15 Eli Zaretskii + + Support MAKE_TERMOUT and MAKE_TERMERR on MS-Windows. + * w32/compat/posixfcn.c (isatty, ttyname): New functions. + * config.h.W32.template (HAVE_TTYNAME): Define. Add a prototype + for ttyname. + +2014-09-15 Paul Smith + + * loadapi.c (gmk_eval): [SV 43221] Preserve var buff content for eval. + + * main.c, NEWS, doc/make.text: Rename MAKE_TTY* to MAKE_TERM* + +2014-09-14 Paul Smith + + * main.c (main): Set MAKE_TTYOUT and MAKE_TTYERR. + * configure.ac: Test for isatty() and ttyname() + * makeint.h: provide a substitute for ttyname() if it's not available. + * config.ami.template, config.h-vms.template, config.h.W32.template: + define/undefine HAVE_ISATTY/HAVE_TTYNAME macros. + * NEWS, doc/make.texi: Document these new variables. + +2014-09-07 Paul Smith + + * tests/config-flags.pm.in, tests/scripts/features/archives: [SV 43046] + Use the "ar" program detected by configure when running the test suite. + + * doc/make.texi: Clarify implicit rule lookup of phony targets + Reported by Frank Heckenbach + +2014-09-07 Hartmut Becker + + Fix and enhance VMS library support. + * ar.c: fix VMS library search for members, which do not have + suffixes, aka filename extensions. + * arscan.c: fix time conversion and library callback routines. + * default.c: more suffixes and automatically create the VMS library + if it doesn't exists. + + Enhance VMS exporting make environment variables. + * config.h-vms.template: add feature macro USE_DCL_COM_FILE to always + write a DCL command file, enabled by default. + * vmsjobs.c: with USE_DCL_COM_FILE enabled write make variables as DCL + symbol assignments into the command file. This enables printing + directory and make level info for recursive use of make. This also + enables forced DCL symbol substitution in the actions. + + Fix VMS automatic variable expansion + * function.c: add VMS code to func_notdir_suffix and func_basename_dir + to work on comma separated lists; this fixes the expansion of + $(^D), $(+D) and the F variants for VMS. + + * main.c [VMS]: Say that parallel jobs (-j) are not supported on VMS + + Enhance/fix VMS ONESHELL implementation and command execution + * job.c, vmsjobs.c: fix some double quote and new line handling; + implement ONESHELL with writing multiple lines into one DCL command + procedure; in ONESHELL allow VMS/make internal redirection only on the + first line; fix the created DCL command procedure, which didn't abort + on errors; return correct exit status from the DCL command procedure; + preserve current procedure verification; make the generated command + procedure more robust. + + Enhance/fix VMS setting of program name, MAKE/MAKE_COMMAND variables + * default.c, main.c, makeint.h, vmsfunctions.c: prefix argv[0] with + "mcr " for MAKE/MAKE_COMMAND and set the program name to the image + filename (without the .exe;version) + * vmsfunctions.c: remove obsolete code + * vmsify: use xmalloc + + Enhance/fix VMS exit code handling. + * commands.c, function.c, hash.c, job.c, main.c, output.c: + use MAKE exit codes. + * makeint.h: encode make exit codes so that they are VMS compatible. + * job.c: check child exit code for VMS style exit codes. + * vmsjobs.c: save and return VMS style exit code. + + Enhance/fix VMS multi-line support. + * job.c: split the command line at a newline. + * default.c, vmsjobs.c: change ECHO variable to a pseudo builtin, + which ensures that the VMS/DCL ECHO ("write sys$output") is used + and is correctly quoted. + * vmsjobs.c: remove unused builtin 'rm'. + + * config_flags_pm.com, [RENAMED test_make.com] run_make_tests.com: + Moved into tests directory. + + Enhance/fix VMS build environment + * config.h-vms.template: make sure the CRTL version is known + * makefile.com: always compile/link the guile module, remove VAXCRTL + parameter, new LIST parameter + * makefile.vms: always compile/link the guile module, use more + complete dependencies + * prepare_vms.com: helper to create a VMS config file when building + from a snapshot of the repository + +2014-09-07 Paul Smith + + * configure.ac, maintMakefile, w32/Makefile.am: Fix autotools issues. + Reported by Paul Eggert + +2014-08-30 Eli Zaretskii + + Change the order of "makefile" and "Makefile" to match the manual. + + Fix regression with "makefile" not being found on MS-Windows. + * read.c (read_all_makefiles) [WINDOWS32]: Recognize "makefile", + all-lowercase, as a makefile. Reported by Michael Waeber + . + +2014-07-16 Eli Zaretskii + + Fix compilation on MS-Windows. + * makeint.h [WINDOWS32]: Don't declare 'program' as 'const char *', + since it is modified in 'main'. + +2014-07-12 Eli Zaretskii + + [SV 42695] Fix compilation error on MS-Windows. + * main.c [WINDOWS32]: Don't declare 'program' as 'const char *', + since it is modified in 'main'. + +2014-07-12 Jonny Grant (tiny change) + + Fix defalt_makefiles[] for MS-Windows. + * read.c (read_all_makefiles) [WINDOWS32]: Remove the redundant + "makefile" and add "makefile.mak". + +2014-07-07 Fredrik Fornwall (tiny change) + + * arscan.c [ANDROID]: Android has no ar.h but supports archives. + +2014-07-07 Paul Smith + + * read.c (eval): [SV 41677] Correct test for TAB vs. 8 spaces. + +2014-07-07 Piotr Jaroszynski (tiny change) + + * output.c (pump_from_tmp): [SV 42378] Flush the output file regularly. + +2014-07-07 John Malmberg + + Update the regression test harness to support VMS. + * config_flags_pm.com, test_make.com: set up and run the regression + test environment on VMS. + * tests/run_make_tests.pl [VMS]: Use an alternate rmdir() + implementation on VMS. + (run_make_with_options) [VMS]: Provide VMS-specific quoting and shell + invocations. + (set_more_defaults) [VMS]: Set default values when running on VMS. + * tests/test_driver.pl (vms_get_process_logicals) [VMS]: Retrieve the + proper values from %ENV on VMS. + (resetENV) [VMS]: Use it. + (toplevel) [VMS]: Fix a bug with opendir() on some logical_devices. + (compare_output) [VMS]: Convert VMS test output to a "standard" format. + (_run_command) [VMS]: Handle signals and exit codes the VMS way. + (remove_directory_tree_inner) [VMS]: Unlink all versions of the file. + +2014-07-07 Paul Smith + + * various: Assume ISO C89-compliant free() implementation. + + * maintMakefile, various: Improve constification of the codebase. + + [SV 41983] Support omitting the text argument to $(file ...) + Reported by Tim Murphy + * function.c (func_file): Only write TEXT if it is not NULL. + * NEWS, doc/make.texi: Document the new feature + * tests/scripts/functions/file: Verify that the no-text version of + $(file ...) works and doesn't add a newline. + +2014-05-13 Jacques Germishuys + + NMakefile.template ($(OUTDIR)/posixfcn.obj): Fix a typo. + +2014-05-01 Paul Smith + + [SV 42249] Propagate correct rule status results. + * remake.c (update_file, update_file_1, check_dep): Return an enum + update_status value instead of an int, and keep the highest value we + find as we walk the graph so that the ultimate status is correct. + * tests/scripts/options/dash-q: Add a test for updating prerequisites. + +2014-02-08 Paul Smith + + * Rename MAP_PATHSEP to MAP_DIRSEP. + + * configure.ac: Fixup for newer autoconf/automake + +2014-02-08 Ray Donnelly (tiny change) + + * output.c: Ensure space for final nul byte in fmtbuf. + +2014-02-07 Gisle Vanem (tiny change) + + Improve error reporting in the Windows port when env size is too large. + w32/subproc/misc.c (arr2envblk): Compute and return the size of + the environment passed to child process. + + w32/subproc/sub_proc.c (process_begin): If the call to + CreateProcess failed with EINVAL, and the required environment + size was larger than 32KB, assume it's a Windows XP limitation, + and display an error message to that effect. + + w32/subproc/proc.h (arr2envblk): Update prototype. + +2014-02-01 Paul Smith + + * job.c (set_child_handler_action_flags): [SV 41341] + Ensure signal handler is in place before alarm(1). + +2014-01-20 Alan Hourihane (tiny change) + + * configure.ac: [SV 40790] Fix load autoconf variables. + +2014-01-17 Pavel Fedin (tiny change) + + Allow the EMX build to use output_sync. + job.c (start_job_command): Move the child output diversion out + of non-EMX branch. + [__EMX__]: Don't use fixed FD_STDOUT and FD_STDERR in the call to + child_execute_job. + +2014-01-12 Paul Smith + + * commands.c: [SV 40789] Remove unneeded header dlfcn.h + + * main.c (die): Close output_context AND make_sync. + die() can be invoked inside a separate output_context, if the + $(error ...) function is expanded as part of a recipe. + +2014-01-11 Pavel Fedin (tiny change) + + Fix .LIBPATTERNS for MS-Windows builds. + default.c (.LIBPATTERNS) [__CYGWIN__ || WINDOWS32]: Provide + library patterns for MS-Windows. + +2013-11-27 Paul Smith + + * w32/*: Remove TABs from the source code. + I know whitespace commits are annoying, but having these TABs is + causing me to miss things when I search through the code. This + doesn't try to change the w32 code to meet GNU coding standards. + + * main.c (decode_env_switches): Ensure we have enough space. + Reported (with patch) by Gerte Hoogewerf + +2013-11-27 Stephan T. Lavavej (tiny change) + + Solve some Windows build issues. + * main.c (main): Use ONS(), not OSN(). + (prepare_mutex_handle_string) [WINDOWS32]: Use %Ix formatting to + support both 32bit and 64bit systems. + * job.c (free_child, new_job): Use ONS(), not OSN(). + * w32/subproc/w32err.c (map_windws32_error_to_string): Use O() when + calling fatal(). + +2013-11-24 Paul Smith + + * features/loadapi (test_expand): Allocate memory for the nul byte. + + * load.c (load_file): Reset the name length minus the symbol. + + * read.c (unescape_char): Use memmove() for overlapping memory. + + Fix memory leak during environment option decoding. + * main.c (decode_switches): Always make a copy of option arguments. + (decode_env_switches): Use a stack buffer to convert environment + switches for parsing. + + [SV 40226] Add a new type of switch: single-string options + * main.c (struct command_switch): Change the "string" types to "strlist" + and make "string" be a single-valued string instead. + (output_sync_option, jobserver_fds, sync_mutex): Change to string type. + (decode_output_sync_flags): Handle single strings instead of lists. + (prepare_mutex_handle_string): Ditto. + (main): Ditto. + (clean_jobserver): Ditto. + (init_switches): Handle the new type. + (decode_switches): Ditto. + (define_makeflags): Ditto. + +2013-11-23 Daniel Richard G (tiny change) + + * load.c: [SV 40515] Define RTLD_GLOBAL if not set. + +2013-11-23 Paul Smith + + [SV 40361] Don't use vsnprintf(), which is an ISO C99 function. + * output.c (error, fatal, message): Take an extra argument specifying + how many bytes are used by the formatted arguments. + (get_buffer): New function that allocates the requested buffer size. + Remove msc_vsnprintf(), vfmtconcat(), and fmtconcat() as unneeded. + * makeint.h: Declare various helper macros for generating output. + * *.c: Change all error(), fatal(), message() calls to use the macros, + or pass the extra length argument directly. + +2013-10-27 Paul Smith + + * makeint.h (STOP_SET): [SV 40371] Cast to unsigned char. + * tests/scripts/misc/utf8: Test variable names with characters >127. + Fix suggested by Robert Bogomip + +2013-10-24 Gerte Hoogewerf + + Fix MS Visual Studio NET2003 build. + * make_msvc_net2003.vcproj: Do not exclude guile.c from compilation. + +2013-10-23 Christian Boos + + Fix SV bug #40227 with respect to stack size set for the MSVC build. + * NMakefile.template (/STACK): Increase to 0x400000, mainly for + the 64-bit builds. Fixes SV bug #40227. + (guile): Uncomment. + +2013-10-23 Eli Zaretskii + + Fix the MS-Windows build: now guile.c must always be compiled in. + * build_w32.bat: Always compile guile.c and link against guile.o. + Reported by Alexey Pavlov . + + * makeint.h (guile_gmake_setup): Define prototype unconditionally, + to avoid compiler warnings. + +2013-10-22 Eli Zaretskii + + Fix Savannah bug #31150 with failures due to setting window title. + * sub_proc.c (process_begin): Don't set startInfo.lpTitle, it + reportedly causes SV bug #31150, and according to MSDN it's a + no-no. + + Fix Savannah bug 40241 with Unixy file names as commands to MSYS shell. + * sub_proc.c: Include filedef.h and variable.h. + (process_begin): If exec_path was not found, but its first + character is '/', assume there's some shell magic, and invoke the + command through '$(SHELL) -c "COMMAND"'. Fixes SV bug#40241. + (make_command_line): Kludgey feature: if full_exec_path is "-c", + assume that argv[0] is not to be skipped, as it holds the command + string to be passed to the shell. + +2013-10-20 Paul Smith + + * glob.c (glob) [SV 18123]: Cherry-pick glibc fix + Apply commit a471e96a5352a5f0bde6d32dd36d33524811a2b1 from + git://sourceware.org/git/glibc.git to fix + https://sourceware.org/bugzilla/show_bug.cgi?id=10278 + + * read.c (record_files): [SV 33034] Change fatal() to error() + Allows deprecated syntax. However we don't guarantee this syntax + will continue to be legal in the future. + Change suggested by David Boyce + + * README.git: Add some missing release steps. + +2013-10-19 Paul Smith + + [SV 40240] Use configure info to build load test shared libs + * tests/config-flags.pm.in: A new file containing variable assignments + for the test suite; these variables are set by configure to contain + the values detected there for compilers, flags, etc. + * tests/run_make_tests.pl: Require the config-flags.pm file + * tests/scripts/features/load, tests/scripts/features/loadapi: Use the + configure-provided values when building the shared test library. + * configure.ac: Replace tests/config-flags.pm.in + * Makefile.am: Make sure tests/config-flags.pm is up to date + + * maintMakefile (checkcfg.%): Add testing of build.sh + + [SV 40254] Modify build.sh to work properly with Guile support. + * guile.c (guile_gmake_setup) [HAVE_GUILE]: Define a stub function + when Guile support is not enabled. + * main.c (main) [HAVE_GUILE]: Always invoke guile_gmake_setup(). + * Makefile.am: Make guile.c standard, not optional. + * build.template: Add the Guile compiler and linker flags. + + * maintMakefile: Accept variable overrides from the environment. + + * NEWS: Fix version so we can build a distfile. + + * read.c (eval): Avoid GCC warning to add braces. + + * GNUMAKEFLAGS: Remove -O so it passes in NO_OUTPUT_SYNC mode. + +2013-10-18 Christian Boos + + Fix initialization of stringlist variables for jobserver_fds and sync_mutex. + (tiny change) + + main.c (prepare_mutex_handle_string, main): Initialize + stringlist variables with at least 2 members, as one member is not + currently supported. + +2013-10-18 Eli Zaretskii + + Fix MinGW64 problem with non-compliant vsnprintf. + makeint.h (__USE_MINGW_ANSI_STDIO) [__MINGW64_VERSION_MAJOR]: + Define for MinGW64, to force it to use an ANSI-compliant + implementation of vsnprintf. Reported by Christian Boos + . + + Fix the MSVC build on MS-Windows. + output.c (vsnprintf) [_MSC_VER]: Define, instead of defining + snprintf, which isn't used. Reported by Christian Boos + . + NMakefile.template (OBJS): Add load.obj and posixfcn.obj. + ($(OUTDIR)/pathstuff.obj): New dependency. + Suggested by Christian Boos . + +2013-10-13 Paul Smith + + [SV 40139] Modify "missing separator" for better translation + + Add support for updating the GNU make web pages. + Add makefile rules for updating the http://www.gnu.org/software/make + web pages, including the online GNU make manual. + + Convert to auto-generated ChangeLog files. + Rename existing ChangeLog files so they won't be distributed. + Add targets to maintMakefile to generate ChangeLog from the Git + repository. This will require a version of gnulib be available. + Because ChangeLog is auto-generated, we have to switch our + automake mode to "foreign" or it will complain and fail. + + Set up for the next release. diff --git a/local/recipes/dev/gnu-make/source/INSTALL b/local/recipes/dev/gnu-make/source/INSTALL new file mode 100644 index 0000000000..a093a3644b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/INSTALL @@ -0,0 +1,368 @@ +Installation Instructions +************************* + + Copyright (C) 1994-1996, 1999-2002, 2004-2017, 2020-2022 Free +Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell command './configure && make && make install' +should configure, build, and install this package. The following +more-detailed instructions are generic; see the 'README' file for +instructions specific to this package. Some packages provide this +'INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The 'configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a 'Makefile' in each directory of the package. +It may also create one or more '.h' files containing system-dependent +definitions. Finally, it creates a shell script 'config.status' that +you can run in the future to recreate the current configuration, and a +file 'config.log' containing compiler output (useful mainly for +debugging 'configure'). + + It can also use an optional file (typically called 'config.cache' and +enabled with '--cache-file=config.cache' or simply '-C') that saves the +results of its tests to speed up reconfiguring. Caching is disabled by +default to prevent problems with accidental use of stale cache files. + + If you need to do unusual things to compile the package, please try +to figure out how 'configure' could check whether to do them, and mail +diffs or instructions to the address given in the 'README' so they can +be considered for the next release. If you are using the cache, and at +some point 'config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file 'configure.ac' (or 'configure.in') is used to create +'configure' by a program called 'autoconf'. You need 'configure.ac' if +you want to change it or regenerate 'configure' using a newer version of +'autoconf'. + + The simplest way to compile this package is: + + 1. 'cd' to the directory containing the package's source code and type + './configure' to configure the package for your system. + + Running 'configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type 'make' to compile the package. + + 3. Optionally, type 'make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type 'make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the 'make install' phase executed with root + privileges. + + 5. Optionally, type 'make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior 'make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing 'make clean'. To also remove the + files that 'configure' created (so you can compile the package for + a different kind of computer), type 'make distclean'. There is + also a 'make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type 'make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide 'make + distcheck', which can by used by developers to test that all other + targets like 'make install' and 'make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the 'configure' script does not know about. Run './configure --help' +for details on some of the pertinent environment variables. + + You can give 'configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here is +an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU 'make'. 'cd' to the +directory where you want the object files and executables to go and run +the 'configure' script. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. This is known +as a "VPATH" build. + + With a non-GNU 'make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use 'make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple '-arch' options to the +compiler but only a single '-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the 'lipo' tool if you have problems. + +Installation Names +================== + + By default, 'make install' installs the package's commands under +'/usr/local/bin', include files under '/usr/local/include', etc. You +can specify an installation prefix other than '/usr/local' by giving +'configure' the option '--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option '--exec-prefix=PREFIX' to 'configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like '--bindir=DIR' to specify different values for particular +kinds of files. Run 'configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the default +for these options is expressed in terms of '${prefix}', so that +specifying just '--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to 'configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +'make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, 'make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +'${prefix}'. Any directories that were specified during 'configure', +but not in terms of '${prefix}', must each be overridden at install time +for the entire installation to be relocated. The approach of makefile +variable overrides for each directory variable is required by the GNU +Coding Standards, and ideally causes no recompilation. However, some +platforms have known limitations with the semantics of shared libraries +that end up requiring recompilation when using this method, particularly +noticeable in packages that use GNU Libtool. + + The second method involves providing the 'DESTDIR' variable. For +example, 'make install DESTDIR=/alternate/directory' will prepend +'/alternate/directory' before all installation names. The approach of +'DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of '${prefix}' +at 'configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving 'configure' the +option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. + + Some packages pay attention to '--enable-FEATURE' options to +'configure', where FEATURE indicates an optional part of the package. +They may also pay attention to '--with-PACKAGE' options, where PACKAGE +is something like 'gnu-as' or 'x' (for the X Window System). The +'README' should mention any '--enable-' and '--with-' options that the +package recognizes. + + For packages that use the X Window System, 'configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the 'configure' options '--x-includes=DIR' and +'--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of 'make' will be. For these packages, running './configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with 'make V=1'; while running './configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with 'make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC +is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX 'make' updates targets which have the same timestamps as their +prerequisites, which makes it generally unusable when shipped generated +files such as 'configure' are involved. Use GNU 'make' instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its '' header file. The option '-nodtk' can be used as a +workaround. If GNU CC is not installed, it is therefore recommended to +try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put '/usr/ucb' early in your 'PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in '/usr/bin'. So, if you need '/usr/ucb' +in your 'PATH', put it _after_ '/usr/bin'. + + On Haiku, software installed for all users goes in '/boot/common', +not '/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features 'configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, 'configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +'--build=TYPE' option. TYPE can either be a short name for the system +type, such as 'sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file 'config.sub' for the possible values of each field. If +'config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option '--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with '--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for 'configure' scripts to share, +you can create a site shell script called 'config.site' that gives +default values for variables like 'CC', 'cache_file', and 'prefix'. +'configure' looks for 'PREFIX/share/config.site' if it exists, then +'PREFIX/etc/config.site' if it exists. Or, you can set the +'CONFIG_SITE' environment variable to the location of the site script. +A warning: not all 'configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to 'configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the 'configure' command line, using 'VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified 'gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an +Autoconf limitation. Until the limitation is lifted, you can use this +workaround: + + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash + +'configure' Invocation +====================== + + 'configure' recognizes the following options to control how it +operates. + +'--help' +'-h' + Print a summary of all of the options to 'configure', and exit. + +'--help=short' +'--help=recursive' + Print a summary of the options unique to this package's + 'configure', and exit. The 'short' variant lists options used only + in the top level, while the 'recursive' variant lists options also + present in any nested packages. + +'--version' +'-V' + Print the version of Autoconf used to generate the 'configure' + script, and exit. + +'--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally 'config.cache'. FILE defaults to '/dev/null' to + disable caching. + +'--config-cache' +'-C' + Alias for '--cache-file=config.cache'. + +'--quiet' +'--silent' +'-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to '/dev/null' (any error + messages will still be shown). + +'--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + 'configure' can determine that directory automatically. + +'--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: for + more details, including other options available for fine-tuning the + installation locations. + +'--no-create' +'-n' + Run the configure checks, but stop before creating any output + files. + +'configure' also accepts some other, not widely useful, options. Run +'configure --help' for more details. diff --git a/local/recipes/dev/gnu-make/source/Makefile.am b/local/recipes/dev/gnu-make/source/Makefile.am new file mode 100644 index 0000000000..53ec73c2ee --- /dev/null +++ b/local/recipes/dev/gnu-make/source/Makefile.am @@ -0,0 +1,221 @@ +# This is a -*-Makefile-*-, or close enough +# +# Copyright (C) 1997-2022 Free Software 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 . + +AUTOMAKE_OPTIONS = dist-lzip silent-rules std-options subdir-objects nostdinc +ACLOCAL_AMFLAGS = -I m4 + +MAKE_HOST = @MAKE_HOST@ + +SUBDIRS = lib po doc + +bin_PROGRAMS = make +include_HEADERS = src/gnumake.h + +man_MANS = doc/make.1 + +make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ + src/debug.h src/default.c src/dep.h src/dir.c src/expand.c \ + src/file.c src/filedef.h src/function.c src/getopt.c \ + src/getopt.h src/getopt1.c src/gettext.h src/guile.c \ + src/hash.c src/hash.h src/implicit.c src/job.c src/job.h \ + src/load.c src/loadapi.c src/main.c src/makeint.h src/misc.c \ + src/os.h src/output.c src/output.h src/read.c src/remake.c \ + src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ + src/signame.c src/strcache.c src/variable.c src/variable.h \ + src/version.c src/vpath.c + +w32_SRCS = src/w32/pathstuff.c src/w32/w32os.c src/w32/compat/dirent.c \ + src/w32/compat/posixfcn.c src/w32/include/dirent.h \ + src/w32/include/dlfcn.h src/w32/include/pathstuff.h \ + src/w32/include/sub_proc.h src/w32/include/w32err.h \ + src/w32/subproc/misc.c src/w32/subproc/proc.h \ + src/w32/subproc/sub_proc.c src/w32/subproc/w32err.c + +vms_SRCS = src/vms_exit.c src/vms_export_symbol.c src/vms_progname.c \ + src/vmsdir.h src/vmsfunctions.c src/vmsify.c + +amiga_SRCS = src/amiga.c src/amiga.h + +glob_SRCS = lib/fnmatch.c lib/fnmatch.h lib/glob.c lib/glob.h + +alloca_SRCS = lib/alloca.c + +loadavg_SRCS = lib/getloadavg.c + +make_SOURCES = $(make_SRCS) +EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS) + +if HAVE_GUILE + _GUILE_CFLAGS = $(GUILE_CFLAGS) + _GUILE_LIBS = $(GUILE_LIBS) +else + _GUILE_CFLAGS = + _GUILE_LIBS = +endif + +make_LDADD = $(LIBOBJS) $(_GUILE_LIBS) lib/libgnu.a $(GETLOADAVG_LIBS) \ + @LIBINTL@ + +localedir = $(datadir)/locale + +AM_CPPFLAGS = -Isrc -I$(top_srcdir)/src -Ilib -I$(top_srcdir)/lib \ + -DLIBDIR=\"$(libdir)\" -DLOCALEDIR=\"$(localedir)\" + +# If prefix is not a standard location, look in prefix as well +if !KNOWN_PREFIX + AM_CPPFLAGS += -DINCLUDEDIR=\"$(includedir)\" +endif + +AM_CFLAGS = $(_GUILE_CFLAGS) + +if WINDOWSENV + make_SOURCES += $(w32_SRCS) + AM_CPPFLAGS += -I $(top_srcdir)/src/w32/include +else + make_SOURCES += src/posixos.c +endif + +if USE_CUSTOMS + make_SOURCES += src/remote-cstms.c +else + make_SOURCES += src/remote-stub.c +endif + +# Extra stuff to include in the distribution. + +mk_FILES = Basic.mk mk/msdosdjgpp.mk mk/Amiga.mk mk/VMS.mk mk/Windows32.mk +# We don't need this, since the standard automake output will do. +#mk/Posix.mk.in + +m4_FILES = m4/gnulib-cache.m4 + +test_FILES = tests/run_make_tests tests/run_make_tests.bat \ + tests/run_make_tests.pl tests/test_driver.pl \ + tests/config-flags.pm.in tests/config_flags_pm.com \ + tests/config-flags.pm.W32 \ + tests/mkshadow tests/thelp.pl tests/guile.supp tests/README +# test/scripts are added via dist-hook below. + +EXTRA_DIST = ChangeLog INSTALL README build.sh build.cfg.in $(man_MANS) \ + src/mkconfig.h README.customs README.OS2 \ + README.Amiga SCOPTIONS src/config.ami \ + README.DOS builddos.bat src/configh.dos \ + README.W32 build_w32.bat src/config.h.W32 \ + README.VMS makefile.com src/config.h-vms src/vmsjobs.c \ + vms_export_symbol_test.com \ + src/gmk-default.scm src/gmk-default.h \ + $(mk_FILES) $(m4_FILES) $(test_FILES) + +# --------------- Generate the Guile default module content + +src/guile.$(OBJEXT): src/gmk-default.h +src/gmk-default.h: $(top_srcdir)/src/gmk-default.scm + (echo 'static const char *const GUILE_module_defn = " '\\ \ + && sed -e 's/;.*//' -e '/^[ \t]*$$/d' -e 's/"/\\"/g' -e 's/$$/ \\/' \ + $(top_srcdir)/src/gmk-default.scm \ + && echo '";') > src/gmk-default.h + +# --------------- Local DIST Section + +# Install the mk and tests subdirectories +# +dist-hook: + (cd $(top_srcdir); \ + sub=`find tests/scripts -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name \*.out -o -name Makefile \) -prune -o -type f -print`; \ + $(AMTAR) chf - $$sub) \ + | (cd $(distdir); $(AMTAR) xfBp -) + + +# --------------- Local CHECK Section + +check-local: check-regression + @banner=" Regression PASSED: $(PACKAGE_STRING) ($(MAKE_HOST)) built with $(CC) "; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes"; \ + echo + +# > check-regression +# +# Look for the make test suite, and run it if found and we can find perl. +# If we're building outside the tree, we use symlinks to make a local copy of +# the test suite. Unfortunately the test suite itself isn't localizable yet. +# +MAKETESTFLAGS = + +.PHONY: check-regression + +GMK_OUTDIR = .. + +testlog = test-suite.log +testresult = tests/.test-result +errorpre = makeerror-$(PACKAGE_VERSION)-$(host_triplet) + +testfiles = $(testlog) $(testresult) $(errorfile) +MOSTLYCLEANFILES = $(testfiles) + +errordetails = config.status config.log src/config.h $(testlog) tests/work + +# Create a 4-letter random sequence +rand_value = c = "abcdefghijklmnopqrstuvwxyz0123456789" +rand_char = substr(c,int(rand()*36),1) +rand_string = $(AWK) 'BEGIN{srand(); $(rand_value); print $(rand_char) "" $(rand_char) "" $(rand_char) "" $(rand_char);}' + +check-regression: tests/config-flags.pm + @rm -f $(testfiles) + @if test -f '$(top_srcdir)/tests/run_make_tests'; then \ + ulimit -n 128; \ + if $(PERL) -v >/dev/null 2>&1; then \ + case `cd '$(top_srcdir)'; pwd` in `pwd`) : ;; \ + *) test -d tests || mkdir tests; \ + rm -f srctests; \ + if ln -s '$(top_srcdir)/tests' srctests; then \ + for f in run_make_tests run_make_tests.pl test_driver.pl scripts thelp.pl; do \ + rm -f tests/$$f; ln -s ../srctests/$$f tests; \ + done; fi ;; \ + esac; \ + echo "cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir $(abs_top_srcdir) -make $(GMK_OUTDIR)/make$(EXEEXT) $(MAKETESTFLAGS)"; \ + (cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir '$(abs_top_srcdir)' -make '$(GMK_OUTDIR)/make$(EXEEXT)' $(MAKETESTFLAGS); echo $$? >.test-result) 2>&1 | tee $(testlog); \ + er=$$(cat $(testresult)); if test "$$er" -ne 0; then \ + dirnm="$(errorpre)-$$($(rand_string))"; fnm="$$dirnm.tar.gz"; \ + rm -rf "$$dirnm"; mkdir "$$dirnm"; \ + $(AMTAR) chf - $(errordetails) | (cd "$$dirnm"; $(AMTAR) xf -); \ + $(AMTAR) chf - "$$dirnm" | eval GZIP= gzip $(GZIP_ENV) -c >"$$fnm"; \ + echo "*** Testing FAILED! Details: $$fnm"; \ + echo '*** Please report to <$(PACKAGE_BUGREPORT)>'; echo; \ + exit $$er; \ + fi; \ + else \ + echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \ + fi; \ + else \ + echo "Can't find the $(PACKAGE_NAME) test suite ($(top_srcdir)/tests)."; \ + fi + + +# --------------- 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 Git +# distribution). + +README: + +@MAINT_MAKEFILE@ diff --git a/local/recipes/dev/gnu-make/source/Makefile.in b/local/recipes/dev/gnu-make/source/Makefile.in new file mode 100644 index 0000000000..3f5fcfbace --- /dev/null +++ b/local/recipes/dev/gnu-make/source/Makefile.in @@ -0,0 +1,1622 @@ +# Makefile.in generated by automake 1.18.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2025 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# This is a -*-Makefile-*-, or close enough +# +# Copyright (C) 1997-2022 Free Software 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 . + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +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 = @build@ +host_triplet = @host@ +bin_PROGRAMS = make$(EXEEXT) + +# If prefix is not a standard location, look in prefix as well +@KNOWN_PREFIX_FALSE@am__append_1 = -DINCLUDEDIR=\"$(includedir)\" +@WINDOWSENV_TRUE@am__append_2 = $(w32_SRCS) +@WINDOWSENV_TRUE@am__append_3 = -I $(top_srcdir)/src/w32/include +@WINDOWSENV_FALSE@am__append_4 = src/posixos.c +@USE_CUSTOMS_TRUE@am__append_5 = src/remote-cstms.c +@USE_CUSTOMS_FALSE@am__append_6 = src/remote-stub.c +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ + $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \ + $(top_srcdir)/m4/asm-underscore.m4 \ + $(top_srcdir)/m4/dospaths.m4 $(top_srcdir)/m4/eaccess.m4 \ + $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/findprog-in.m4 \ + $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/gnulib-comp.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ + $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/warn-on-use.m4 \ + $(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(include_HEADERS) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = build.cfg tests/config-flags.pm +CONFIG_CLEAN_VPATH_FILES = build.sh +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ + "$(DESTDIR)$(includedir)" +PROGRAMS = $(bin_PROGRAMS) +am__make_SOURCES_DIST = src/ar.c src/arscan.c src/commands.c \ + src/commands.h src/debug.h src/default.c src/dep.h src/dir.c \ + src/expand.c src/file.c src/filedef.h src/function.c \ + src/getopt.c src/getopt.h src/getopt1.c src/gettext.h \ + src/guile.c src/hash.c src/hash.h src/implicit.c src/job.c \ + src/job.h src/load.c src/loadapi.c src/main.c src/makeint.h \ + src/misc.c src/os.h src/output.c src/output.h src/read.c \ + src/remake.c src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ + src/signame.c src/strcache.c src/variable.c src/variable.h \ + src/version.c src/vpath.c src/w32/pathstuff.c src/w32/w32os.c \ + src/w32/compat/dirent.c src/w32/compat/posixfcn.c \ + src/w32/include/dirent.h src/w32/include/dlfcn.h \ + src/w32/include/pathstuff.h src/w32/include/sub_proc.h \ + src/w32/include/w32err.h src/w32/subproc/misc.c \ + src/w32/subproc/proc.h src/w32/subproc/sub_proc.c \ + src/w32/subproc/w32err.c src/posixos.c src/remote-cstms.c \ + src/remote-stub.c +am__dirstamp = $(am__leading_dot)dirstamp +am__objects_1 = src/ar.$(OBJEXT) src/arscan.$(OBJEXT) \ + src/commands.$(OBJEXT) src/default.$(OBJEXT) src/dir.$(OBJEXT) \ + src/expand.$(OBJEXT) src/file.$(OBJEXT) src/function.$(OBJEXT) \ + src/getopt.$(OBJEXT) src/getopt1.$(OBJEXT) src/guile.$(OBJEXT) \ + src/hash.$(OBJEXT) src/implicit.$(OBJEXT) src/job.$(OBJEXT) \ + src/load.$(OBJEXT) src/loadapi.$(OBJEXT) src/main.$(OBJEXT) \ + src/misc.$(OBJEXT) src/output.$(OBJEXT) src/read.$(OBJEXT) \ + src/remake.$(OBJEXT) src/rule.$(OBJEXT) src/shuffle.$(OBJEXT) \ + src/signame.$(OBJEXT) src/strcache.$(OBJEXT) \ + src/variable.$(OBJEXT) src/version.$(OBJEXT) \ + src/vpath.$(OBJEXT) +am__objects_2 = src/w32/pathstuff.$(OBJEXT) src/w32/w32os.$(OBJEXT) \ + src/w32/compat/dirent.$(OBJEXT) \ + src/w32/compat/posixfcn.$(OBJEXT) \ + src/w32/subproc/misc.$(OBJEXT) \ + src/w32/subproc/sub_proc.$(OBJEXT) \ + src/w32/subproc/w32err.$(OBJEXT) +@WINDOWSENV_TRUE@am__objects_3 = $(am__objects_2) +@WINDOWSENV_FALSE@am__objects_4 = src/posixos.$(OBJEXT) +@USE_CUSTOMS_TRUE@am__objects_5 = src/remote-cstms.$(OBJEXT) +@USE_CUSTOMS_FALSE@am__objects_6 = src/remote-stub.$(OBJEXT) +am_make_OBJECTS = $(am__objects_1) $(am__objects_3) $(am__objects_4) \ + $(am__objects_5) $(am__objects_6) +make_OBJECTS = $(am_make_OBJECTS) +am__DEPENDENCIES_1 = +@HAVE_GUILE_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) +make_DEPENDENCIES = $(LIBOBJS) $(am__DEPENDENCIES_2) lib/libgnu.a \ + $(am__DEPENDENCIES_1) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +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_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = src/$(DEPDIR)/amiga.Po src/$(DEPDIR)/ar.Po \ + src/$(DEPDIR)/arscan.Po src/$(DEPDIR)/commands.Po \ + src/$(DEPDIR)/default.Po src/$(DEPDIR)/dir.Po \ + src/$(DEPDIR)/expand.Po src/$(DEPDIR)/file.Po \ + src/$(DEPDIR)/function.Po src/$(DEPDIR)/getopt.Po \ + src/$(DEPDIR)/getopt1.Po src/$(DEPDIR)/guile.Po \ + src/$(DEPDIR)/hash.Po src/$(DEPDIR)/implicit.Po \ + src/$(DEPDIR)/job.Po src/$(DEPDIR)/load.Po \ + src/$(DEPDIR)/loadapi.Po src/$(DEPDIR)/main.Po \ + src/$(DEPDIR)/misc.Po src/$(DEPDIR)/output.Po \ + src/$(DEPDIR)/posixos.Po src/$(DEPDIR)/read.Po \ + src/$(DEPDIR)/remake.Po src/$(DEPDIR)/remote-cstms.Po \ + src/$(DEPDIR)/remote-stub.Po src/$(DEPDIR)/rule.Po \ + src/$(DEPDIR)/shuffle.Po src/$(DEPDIR)/signame.Po \ + src/$(DEPDIR)/strcache.Po src/$(DEPDIR)/variable.Po \ + src/$(DEPDIR)/version.Po src/$(DEPDIR)/vms_exit.Po \ + src/$(DEPDIR)/vms_export_symbol.Po \ + src/$(DEPDIR)/vms_progname.Po src/$(DEPDIR)/vmsfunctions.Po \ + src/$(DEPDIR)/vmsify.Po src/$(DEPDIR)/vpath.Po \ + src/w32/$(DEPDIR)/pathstuff.Po src/w32/$(DEPDIR)/w32os.Po \ + src/w32/compat/$(DEPDIR)/dirent.Po \ + src/w32/compat/$(DEPDIR)/posixfcn.Po \ + src/w32/subproc/$(DEPDIR)/misc.Po \ + src/w32/subproc/$(DEPDIR)/sub_proc.Po \ + src/w32/subproc/$(DEPDIR)/w32err.Po +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 " $@; +am__v_CC_1 = +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_CCLD_1 = +SOURCES = $(make_SOURCES) $(EXTRA_make_SOURCES) +DIST_SOURCES = $(am__make_SOURCES_DIST) $(EXTRA_make_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-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/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ + } +man1dir = $(mandir)/man1 +NROFF = nroff +MANS = $(man_MANS) +HEADERS = $(include_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/build.cfg.in \ + $(srcdir)/build.sh $(top_srcdir)/build-aux/compile \ + $(top_srcdir)/build-aux/config.guess \ + $(top_srcdir)/build-aux/config.rpath \ + $(top_srcdir)/build-aux/config.sub \ + $(top_srcdir)/build-aux/depcomp \ + $(top_srcdir)/build-aux/install-sh \ + $(top_srcdir)/build-aux/missing $(top_srcdir)/src/config.h.in \ + $(top_srcdir)/tests/config-flags.pm.in ABOUT-NLS AUTHORS \ + COPYING ChangeLog INSTALL NEWS README build-aux/compile \ + build-aux/config.guess build-aux/config.rpath \ + build-aux/config.sub build-aux/depcomp build-aux/install-sh \ + build-aux/mdate-sh build-aux/missing build-aux/texinfo.tex +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \ + ; rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.lz +GZIP_ENV = -9 +DIST_TARGETS = dist-lzip dist-gzip +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = \ + find . \( -type f -a \! \ + \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +GETLOADAVG_LIBS = @GETLOADAVG_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ +GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ +GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GUILE_CFLAGS = @GUILE_CFLAGS@ +GUILE_LIBS = @GUILE_LIBS@ +HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE__BOOL = @HAVE__BOOL@ +HOST_CPU = @HOST_CPU@ +HOST_CPU_C_ABI = @HOST_CPU_C_ABI@ +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@ +LDFLAGS = @LDFLAGS@ +LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ +LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKE_HOST = @MAKE_HOST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +REMOTE = @REMOTE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STDBOOL_H = @STDBOOL_H@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@ +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@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ +am__tar = @am__tar@ +am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = $(datadir)/locale +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = dist-lzip silent-rules std-options subdir-objects nostdinc +ACLOCAL_AMFLAGS = -I m4 +SUBDIRS = lib po doc +include_HEADERS = src/gnumake.h +man_MANS = doc/make.1 +make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ + src/debug.h src/default.c src/dep.h src/dir.c src/expand.c \ + src/file.c src/filedef.h src/function.c src/getopt.c \ + src/getopt.h src/getopt1.c src/gettext.h src/guile.c \ + src/hash.c src/hash.h src/implicit.c src/job.c src/job.h \ + src/load.c src/loadapi.c src/main.c src/makeint.h src/misc.c \ + src/os.h src/output.c src/output.h src/read.c src/remake.c \ + src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ + src/signame.c src/strcache.c src/variable.c src/variable.h \ + src/version.c src/vpath.c + +w32_SRCS = src/w32/pathstuff.c src/w32/w32os.c src/w32/compat/dirent.c \ + src/w32/compat/posixfcn.c src/w32/include/dirent.h \ + src/w32/include/dlfcn.h src/w32/include/pathstuff.h \ + src/w32/include/sub_proc.h src/w32/include/w32err.h \ + src/w32/subproc/misc.c src/w32/subproc/proc.h \ + src/w32/subproc/sub_proc.c src/w32/subproc/w32err.c + +vms_SRCS = src/vms_exit.c src/vms_export_symbol.c src/vms_progname.c \ + src/vmsdir.h src/vmsfunctions.c src/vmsify.c + +amiga_SRCS = src/amiga.c src/amiga.h +glob_SRCS = lib/fnmatch.c lib/fnmatch.h lib/glob.c lib/glob.h +alloca_SRCS = lib/alloca.c +loadavg_SRCS = lib/getloadavg.c +make_SOURCES = $(make_SRCS) $(am__append_2) $(am__append_4) \ + $(am__append_5) $(am__append_6) +EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS) +@HAVE_GUILE_FALSE@_GUILE_CFLAGS = +@HAVE_GUILE_TRUE@_GUILE_CFLAGS = $(GUILE_CFLAGS) +@HAVE_GUILE_FALSE@_GUILE_LIBS = +@HAVE_GUILE_TRUE@_GUILE_LIBS = $(GUILE_LIBS) +make_LDADD = $(LIBOBJS) $(_GUILE_LIBS) lib/libgnu.a $(GETLOADAVG_LIBS) \ + @LIBINTL@ + +AM_CPPFLAGS = -Isrc -I$(top_srcdir)/src -Ilib -I$(top_srcdir)/lib \ + -DLIBDIR=\"$(libdir)\" -DLOCALEDIR=\"$(localedir)\" \ + $(am__append_1) $(am__append_3) +AM_CFLAGS = $(_GUILE_CFLAGS) + +# Extra stuff to include in the distribution. +mk_FILES = Basic.mk mk/msdosdjgpp.mk mk/Amiga.mk mk/VMS.mk mk/Windows32.mk +# We don't need this, since the standard automake output will do. +#mk/Posix.mk.in +m4_FILES = m4/gnulib-cache.m4 +test_FILES = tests/run_make_tests tests/run_make_tests.bat \ + tests/run_make_tests.pl tests/test_driver.pl \ + tests/config-flags.pm.in tests/config_flags_pm.com \ + tests/config-flags.pm.W32 \ + tests/mkshadow tests/thelp.pl tests/guile.supp tests/README + +# test/scripts are added via dist-hook below. +EXTRA_DIST = ChangeLog INSTALL README build.sh build.cfg.in $(man_MANS) \ + src/mkconfig.h README.customs README.OS2 \ + README.Amiga SCOPTIONS src/config.ami \ + README.DOS builddos.bat src/configh.dos \ + README.W32 build_w32.bat src/config.h.W32 \ + README.VMS makefile.com src/config.h-vms src/vmsjobs.c \ + vms_export_symbol_test.com \ + src/gmk-default.scm src/gmk-default.h \ + $(mk_FILES) $(m4_FILES) $(test_FILES) + + +# > check-regression +# +# Look for the make test suite, and run it if found and we can find perl. +# If we're building outside the tree, we use symlinks to make a local copy of +# the test suite. Unfortunately the test suite itself isn't localizable yet. +# +MAKETESTFLAGS = +GMK_OUTDIR = .. +testlog = test-suite.log +testresult = tests/.test-result +errorpre = makeerror-$(PACKAGE_VERSION)-$(host_triplet) +testfiles = $(testlog) $(testresult) $(errorfile) +MOSTLYCLEANFILES = $(testfiles) +errordetails = config.status config.log src/config.h $(testlog) tests/work + +# Create a 4-letter random sequence +rand_value = c = "abcdefghijklmnopqrstuvwxyz0123456789" +rand_char = substr(c,int(rand()*36),1) +rand_string = $(AWK) 'BEGIN{srand(); $(rand_value); print $(rand_char) "" $(rand_char) "" $(rand_char) "" $(rand_char);}' +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +src/config.h: src/stamp-h1 + @test -f $@ || rm -f src/stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) src/stamp-h1 + +src/stamp-h1: $(top_srcdir)/src/config.h.in $(top_builddir)/config.status + $(AM_V_at)rm -f src/stamp-h1 + $(AM_V_GEN)cd $(top_builddir) && $(SHELL) ./config.status src/config.h +$(top_srcdir)/src/config.h.in: $(am__configure_deps) + $(AM_V_GEN)($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + $(AM_V_at)rm -f src/stamp-h1 + $(AM_V_at)touch $@ + +distclean-hdr: + -rm -f src/config.h src/stamp-h1 +build.cfg: $(top_builddir)/config.status $(srcdir)/build.cfg.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +tests/config-flags.pm: $(top_builddir)/config.status $(top_srcdir)/tests/config-flags.pm.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @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 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && $(am__rm_f) $$files + +clean-binPROGRAMS: + -$(am__rm_f) $(bin_PROGRAMS) + +installcheck-binPROGRAMS: $(bin_PROGRAMS) + bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ + case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ + *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ + esac; \ + f=`echo "$$p" | \ + sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + for opt in --help --version; do \ + "$(DESTDIR)$(bindir)/$$f" $$opt \ + >c$${pid}_.out 2>c$${pid}_.err &2; \ + cat c$${pid}_.err 1>&2; \ + bad=1; \ + else \ + if test -z "`cat c$${pid}_.out`"; then \ + echo "$$f does not support $$opt: no output" 1>&2; \ + bad=1; \ + else \ + if test $$xc != 0; then \ + echo "$$f does not support $$opt: exit code $$xc" 1>&2; \ + bad=1; \ + else \ + :; \ + fi; \ + fi; \ + fi; \ + done; \ + done; rm -f c$${pid}_.???; exit $$bad +src/$(am__dirstamp): + @$(MKDIR_P) src + @: >>src/$(am__dirstamp) +src/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/$(DEPDIR) + @: >>src/$(DEPDIR)/$(am__dirstamp) +src/ar.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/arscan.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/commands.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/default.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/dir.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/expand.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/file.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/function.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/getopt.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/getopt1.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/guile.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/hash.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/implicit.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/job.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/load.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/loadapi.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/main.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/misc.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/output.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/read.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/remake.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/rule.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/shuffle.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/signame.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/strcache.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/variable.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/version.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vpath.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/w32/$(am__dirstamp): + @$(MKDIR_P) src/w32 + @: >>src/w32/$(am__dirstamp) +src/w32/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/w32/$(DEPDIR) + @: >>src/w32/$(DEPDIR)/$(am__dirstamp) +src/w32/pathstuff.$(OBJEXT): src/w32/$(am__dirstamp) \ + src/w32/$(DEPDIR)/$(am__dirstamp) +src/w32/w32os.$(OBJEXT): src/w32/$(am__dirstamp) \ + src/w32/$(DEPDIR)/$(am__dirstamp) +src/w32/compat/$(am__dirstamp): + @$(MKDIR_P) src/w32/compat + @: >>src/w32/compat/$(am__dirstamp) +src/w32/compat/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/w32/compat/$(DEPDIR) + @: >>src/w32/compat/$(DEPDIR)/$(am__dirstamp) +src/w32/compat/dirent.$(OBJEXT): src/w32/compat/$(am__dirstamp) \ + src/w32/compat/$(DEPDIR)/$(am__dirstamp) +src/w32/compat/posixfcn.$(OBJEXT): src/w32/compat/$(am__dirstamp) \ + src/w32/compat/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/$(am__dirstamp): + @$(MKDIR_P) src/w32/subproc + @: >>src/w32/subproc/$(am__dirstamp) +src/w32/subproc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/w32/subproc/$(DEPDIR) + @: >>src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/misc.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \ + src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/sub_proc.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \ + src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/w32/subproc/w32err.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \ + src/w32/subproc/$(DEPDIR)/$(am__dirstamp) +src/posixos.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/remote-cstms.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/remote-stub.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/amiga.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +src/vms_exit.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vms_export_symbol.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vms_progname.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vmsfunctions.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) +src/vmsify.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) + +make$(EXEEXT): $(make_OBJECTS) $(make_DEPENDENCIES) $(EXTRA_make_DEPENDENCIES) + @rm -f make$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(make_OBJECTS) $(make_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f src/*.$(OBJEXT) + -rm -f src/w32/*.$(OBJEXT) + -rm -f src/w32/compat/*.$(OBJEXT) + -rm -f src/w32/subproc/*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/amiga.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ar.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/arscan.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/commands.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/default.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dir.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/expand.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/file.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/function.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/getopt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/getopt1.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/guile.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/hash.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/implicit.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/job.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/load.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/loadapi.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/misc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/output.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/posixos.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/read.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remake.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remote-cstms.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remote-stub.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/rule.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/shuffle.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/signame.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/strcache.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/variable.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/version.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_exit.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_export_symbol.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_progname.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vmsfunctions.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vmsify.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vpath.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/$(DEPDIR)/pathstuff.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/$(DEPDIR)/w32os.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/compat/$(DEPDIR)/dirent.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/compat/$(DEPDIR)/posixfcn.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/misc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/sub_proc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/w32err.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @: >>$@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @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"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + 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. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + 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-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + 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" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + $(AM_V_at)$(MKDIR_P) "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + 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 + @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; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-bzip3: distdir + tardir=$(distdir) && $(am__tar) | bzip3 -c >$(distdir).tar.bz3 + $(am__post_remove_distdir) +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.bz3*) \ + bzip3 -dc $(distdir).tar.bz3 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + 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: + @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)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-recursive +all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + 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: + -$(am__rm_f) $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) src/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) src/$(am__dirstamp) + -$(am__rm_f) src/w32/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) src/w32/$(am__dirstamp) + -$(am__rm_f) src/w32/compat/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) src/w32/compat/$(am__dirstamp) + -$(am__rm_f) src/w32/subproc/$(DEPDIR)/$(am__dirstamp) + -$(am__rm_f) src/w32/subproc/$(am__dirstamp) + +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-recursive + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f src/$(DEPDIR)/amiga.Po + -rm -f src/$(DEPDIR)/ar.Po + -rm -f src/$(DEPDIR)/arscan.Po + -rm -f src/$(DEPDIR)/commands.Po + -rm -f src/$(DEPDIR)/default.Po + -rm -f src/$(DEPDIR)/dir.Po + -rm -f src/$(DEPDIR)/expand.Po + -rm -f src/$(DEPDIR)/file.Po + -rm -f src/$(DEPDIR)/function.Po + -rm -f src/$(DEPDIR)/getopt.Po + -rm -f src/$(DEPDIR)/getopt1.Po + -rm -f src/$(DEPDIR)/guile.Po + -rm -f src/$(DEPDIR)/hash.Po + -rm -f src/$(DEPDIR)/implicit.Po + -rm -f src/$(DEPDIR)/job.Po + -rm -f src/$(DEPDIR)/load.Po + -rm -f src/$(DEPDIR)/loadapi.Po + -rm -f src/$(DEPDIR)/main.Po + -rm -f src/$(DEPDIR)/misc.Po + -rm -f src/$(DEPDIR)/output.Po + -rm -f src/$(DEPDIR)/posixos.Po + -rm -f src/$(DEPDIR)/read.Po + -rm -f src/$(DEPDIR)/remake.Po + -rm -f src/$(DEPDIR)/remote-cstms.Po + -rm -f src/$(DEPDIR)/remote-stub.Po + -rm -f src/$(DEPDIR)/rule.Po + -rm -f src/$(DEPDIR)/shuffle.Po + -rm -f src/$(DEPDIR)/signame.Po + -rm -f src/$(DEPDIR)/strcache.Po + -rm -f src/$(DEPDIR)/variable.Po + -rm -f src/$(DEPDIR)/version.Po + -rm -f src/$(DEPDIR)/vms_exit.Po + -rm -f src/$(DEPDIR)/vms_export_symbol.Po + -rm -f src/$(DEPDIR)/vms_progname.Po + -rm -f src/$(DEPDIR)/vmsfunctions.Po + -rm -f src/$(DEPDIR)/vmsify.Po + -rm -f src/$(DEPDIR)/vpath.Po + -rm -f src/w32/$(DEPDIR)/pathstuff.Po + -rm -f src/w32/$(DEPDIR)/w32os.Po + -rm -f src/w32/compat/$(DEPDIR)/dirent.Po + -rm -f src/w32/compat/$(DEPDIR)/posixfcn.Po + -rm -f src/w32/subproc/$(DEPDIR)/misc.Po + -rm -f src/w32/subproc/$(DEPDIR)/sub_proc.Po + -rm -f src/w32/subproc/$(DEPDIR)/w32err.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-includeHEADERS install-man + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: installcheck-binPROGRAMS + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f src/$(DEPDIR)/amiga.Po + -rm -f src/$(DEPDIR)/ar.Po + -rm -f src/$(DEPDIR)/arscan.Po + -rm -f src/$(DEPDIR)/commands.Po + -rm -f src/$(DEPDIR)/default.Po + -rm -f src/$(DEPDIR)/dir.Po + -rm -f src/$(DEPDIR)/expand.Po + -rm -f src/$(DEPDIR)/file.Po + -rm -f src/$(DEPDIR)/function.Po + -rm -f src/$(DEPDIR)/getopt.Po + -rm -f src/$(DEPDIR)/getopt1.Po + -rm -f src/$(DEPDIR)/guile.Po + -rm -f src/$(DEPDIR)/hash.Po + -rm -f src/$(DEPDIR)/implicit.Po + -rm -f src/$(DEPDIR)/job.Po + -rm -f src/$(DEPDIR)/load.Po + -rm -f src/$(DEPDIR)/loadapi.Po + -rm -f src/$(DEPDIR)/main.Po + -rm -f src/$(DEPDIR)/misc.Po + -rm -f src/$(DEPDIR)/output.Po + -rm -f src/$(DEPDIR)/posixos.Po + -rm -f src/$(DEPDIR)/read.Po + -rm -f src/$(DEPDIR)/remake.Po + -rm -f src/$(DEPDIR)/remote-cstms.Po + -rm -f src/$(DEPDIR)/remote-stub.Po + -rm -f src/$(DEPDIR)/rule.Po + -rm -f src/$(DEPDIR)/shuffle.Po + -rm -f src/$(DEPDIR)/signame.Po + -rm -f src/$(DEPDIR)/strcache.Po + -rm -f src/$(DEPDIR)/variable.Po + -rm -f src/$(DEPDIR)/version.Po + -rm -f src/$(DEPDIR)/vms_exit.Po + -rm -f src/$(DEPDIR)/vms_export_symbol.Po + -rm -f src/$(DEPDIR)/vms_progname.Po + -rm -f src/$(DEPDIR)/vmsfunctions.Po + -rm -f src/$(DEPDIR)/vmsify.Po + -rm -f src/$(DEPDIR)/vpath.Po + -rm -f src/w32/$(DEPDIR)/pathstuff.Po + -rm -f src/w32/$(DEPDIR)/w32os.Po + -rm -f src/w32/compat/$(DEPDIR)/dirent.Po + -rm -f src/w32/compat/$(DEPDIR)/posixfcn.Po + -rm -f src/w32/subproc/$(DEPDIR)/misc.Po + -rm -f src/w32/subproc/$(DEPDIR)/sub_proc.Po + -rm -f src/w32/subproc/$(DEPDIR)/w32err.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \ + uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: $(am__recursive_targets) check-am install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--depfiles am--refresh check check-am check-local clean \ + clean-binPROGRAMS clean-cscope clean-generic cscope \ + cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-bzip3 dist-gzip dist-hook dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip dist-zstd 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-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 installcheck-binPROGRAMS \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-includeHEADERS \ + uninstall-man uninstall-man1 + +.PRECIOUS: Makefile + + +# --------------- Generate the Guile default module content + +src/guile.$(OBJEXT): src/gmk-default.h +src/gmk-default.h: $(top_srcdir)/src/gmk-default.scm + (echo 'static const char *const GUILE_module_defn = " '\\ \ + && sed -e 's/;.*//' -e '/^[ \t]*$$/d' -e 's/"/\\"/g' -e 's/$$/ \\/' \ + $(top_srcdir)/src/gmk-default.scm \ + && echo '";') > src/gmk-default.h + +# --------------- Local DIST Section + +# Install the mk and tests subdirectories +# +dist-hook: + (cd $(top_srcdir); \ + sub=`find tests/scripts -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name \*.out -o -name Makefile \) -prune -o -type f -print`; \ + $(AMTAR) chf - $$sub) \ + | (cd $(distdir); $(AMTAR) xfBp -) + +# --------------- Local CHECK Section + +check-local: check-regression + @banner=" Regression PASSED: $(PACKAGE_STRING) ($(MAKE_HOST)) built with $(CC) "; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes"; \ + echo + +.PHONY: check-regression + +check-regression: tests/config-flags.pm + @rm -f $(testfiles) + @if test -f '$(top_srcdir)/tests/run_make_tests'; then \ + ulimit -n 128; \ + if $(PERL) -v >/dev/null 2>&1; then \ + case `cd '$(top_srcdir)'; pwd` in `pwd`) : ;; \ + *) test -d tests || mkdir tests; \ + rm -f srctests; \ + if ln -s '$(top_srcdir)/tests' srctests; then \ + for f in run_make_tests run_make_tests.pl test_driver.pl scripts thelp.pl; do \ + rm -f tests/$$f; ln -s ../srctests/$$f tests; \ + done; fi ;; \ + esac; \ + echo "cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir $(abs_top_srcdir) -make $(GMK_OUTDIR)/make$(EXEEXT) $(MAKETESTFLAGS)"; \ + (cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir '$(abs_top_srcdir)' -make '$(GMK_OUTDIR)/make$(EXEEXT)' $(MAKETESTFLAGS); echo $$? >.test-result) 2>&1 | tee $(testlog); \ + er=$$(cat $(testresult)); if test "$$er" -ne 0; then \ + dirnm="$(errorpre)-$$($(rand_string))"; fnm="$$dirnm.tar.gz"; \ + rm -rf "$$dirnm"; mkdir "$$dirnm"; \ + $(AMTAR) chf - $(errordetails) | (cd "$$dirnm"; $(AMTAR) xf -); \ + $(AMTAR) chf - "$$dirnm" | eval GZIP= gzip $(GZIP_ENV) -c >"$$fnm"; \ + echo "*** Testing FAILED! Details: $$fnm"; \ + echo '*** Please report to <$(PACKAGE_BUGREPORT)>'; echo; \ + exit $$er; \ + fi; \ + else \ + echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \ + fi; \ + else \ + echo "Can't find the $(PACKAGE_NAME) test suite ($(top_srcdir)/tests)."; \ + fi + +# --------------- 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 Git +# distribution). + +README: + +@MAINT_MAKEFILE@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/local/recipes/dev/gnu-make/source/NEWS b/local/recipes/dev/gnu-make/source/NEWS new file mode 100644 index 0000000000..c370b0a14a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/NEWS @@ -0,0 +1,1834 @@ +GNU Make NEWS -*-indented-text-*- + History of user-visible changes. + 31 October 2022 + +See the end of this file for copyrights and conditions. + +All user-visible changes are more fully described in the GNU Make 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 4.4 (31 Oct 2022) + +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=109&set=custom + +* WARNING: Deprecation! + The following systems are deprecated in this release: + - OS/2 (EMX) + - AmigaOS + - Xenix + - Cray + In the NEXT release of GNU Make, support for these systems will be removed. + If you want to see them continue to be supported, contact . + +* WARNING: Future backward-incompatibility! + In the NEXT release of GNU Make, pattern rules will implement the same + behavior change for multiple targets as explicit grouped targets, below: if + any target of the rule is needed by the build, the recipe will be invoked if + any target of the rule is missing or out of date. During testing some + makefiles were found to contain pattern rules that do not build all targets; + this can cause issues so we are delaying this change for one release cycle + to allow these makefiles to be updated. GNU Make shows a warning if it + detects this situation: "pattern recipe did not update peer target". + +* WARNING: Backward-incompatibility! + GNU Make now uses temporary files in more situations than previous releases. + If your build system sets TMPDIR (or TMP or TEMP on Windows) and deletes the + contents during the build, or uses restrictive permissions, this may cause + problems. You can choose an alternative temporary directory only for use by + GNU Make by setting the new MAKE_TMPDIR environment variable before invoking + make. Note that this value CANNOT be set inside the makefile, since make + needs to find its temporary directory before the makefiles are parsed. + +* WARNING: Backward-incompatibility! + Previously each target in a explicit grouped target rule was considered + individually: if the targets needed by the build were not out of date the + recipe was not run even if other targets in the group were out of date. Now + if any of the grouped targets are needed by the build, then if any of the + grouped targets are out of date the recipe is run and all targets in the + group are considered updated. + +* WARNING: Backward-incompatibility! + Previously if --no-print-directory was seen anywhere in the environment or + command line it would take precedence over any --print-directory. Now, the + last setting of directory printing options seen will be used, so a command + line such as "--no-print-directory -w" _will_ show directory entry/exits. + +* WARNING: Backward-incompatibility! + Previously the order in which makefiles were remade was not explicitly + stated, but it was (roughly) the inverse of the order in which they were + processed by make. In this release, the order in which makefiles are + rebuilt is the same order in which make processed them, and this is defined + to be true in the GNU Make manual. + +* WARNING: Backward-incompatibility! + Previously only simple (one-letter) options were added to the MAKEFLAGS + variable that was visible while parsing makefiles. Now, all options are + available in MAKEFLAGS. If you want to check MAKEFLAGS for a one-letter + option, expanding "$(firstword -$(MAKEFLAGS))" is a reliable way to return + the set of one-letter options which can be examined via findstring, etc. + +* WARNING: Backward-incompatibility! + Previously makefile variables marked as export were not exported to commands + started by the $(shell ...) function. Now, all exported variables are + exported to $(shell ...). If this leads to recursion during expansion, then + for backward-compatibility the value from the original environment is used. + To detect this change search for 'shell-export' in the .FEATURES variable. + +* WARNING: New build requirement + GNU Make utilizes facilities from GNU Gnulib: Gnulib requires certain C99 + features in the C compiler and so these features are required by GNU Make: + https://www.gnu.org/software/gnulib/manual/html_node/C99-features-assumed.html + The configure script should verify the compiler has these features. + +* New feature: The .WAIT special target + If the .WAIT target appears between two prerequisites of a target, then + GNU Make will wait for all of the targets to the left of .WAIT in the list + to complete before starting any of the targets to the right of .WAIT. + This feature is available in some other versions of make, and it will be + required by an upcoming version of the POSIX standard for make. + Different patches were made by Alexey Neyman (2005) + and Steffen Nurpmeso (2020) that were useful but the + result is a different implementation (closer to Alexey's idea). + +* New feature: .NOTPARALLEL accepts prerequisites + If the .NOTPARALLEL special target has prerequisites then all prerequisites + of those targets will be run serially (as if .WAIT was specified between + each prerequisite). + +* New feature: The .NOTINTERMEDIATE special target + .NOTINTERMEDIATE disables intermediate behavior for specific files, for all + files built using a pattern, or for the entire makefile. + Implementation provided by Dmitry Goncharov + +* New feature: The $(let ...) function + This function allows user-defined functions to define a set of local + variables: values can be assigned to these variables from within the + user-defined function and they will not impact global variable assignments. + Implementation provided by Jouke Witteveen + +* New feature: The $(intcmp ...) function + This function allows conditional evaluation controlled by a numerical + comparison. + Implementation provided by Jouke Witteveen + +* New feature: Improved support for -l / --load-average + On systems that provide /proc/loadavg (Linux), GNU Make will use it to + determine the number of runnable jobs and use this as the current load, + avoiding the need for heuristics. + Implementation provided by Sven C. Dack + +* New feature: The --shuffle command line option + This option reorders goals and prerequisites to simulate non-determinism + that may be seen using parallel build. Shuffle mode allows a form of "fuzz + testing" of parallel builds to verify that all prerequisites are correctly + described in the makefile. + Implementation provided by Sergei Trofimovich + +* New feature: The --jobserver-style command line option and named pipes + A new jobserver method is used on systems where mkfifo(3) is supported. + This solves a number of obscure issues related to using the jobserver + and recursive invocations of GNU Make. This change means that sub-makes + will connect to the jobserver even if they are not marked as recursive. + It also means that other tools that want to participate in the jobserver + will need to be enhanced as described in the GNU Make manual. + You can force GNU Make to use the simple pipe-based jobserver (perhaps if + you are integrating with other tools or older versions of GNU Make) by + adding the '--jobserver-style=pipe' option to the command line of the + top-level invocation of GNU Make, or via MAKEFLAGS or GNUMAKEFLAGS. + To detect this change search for 'jobserver-fifo' in the .FEATURES variable. + +* Some POSIX systems (*BSD) do not allow locks to be taken on pipes, which + caused the output sync feature to not work properly there. Also multiple + invocations of make redirecting to the same output file (e.g., /dev/null) + would cause hangs. Instead of locking stdout (which does have some useful + performance characteristics, but is not portable) create a temporary file + and lock that. Windows continues to use a mutex as before. + +* GNU Make has sometimes chosen unexpected, and sub-optimal, chains of + implicit rules due to the definition of "ought to exist" in the implicit + rule search algorithm, which considered any prerequisite mentioned in the + makefile as "ought to exist". This algorithm has been modified to prefer + prerequisites mentioned explicitly in the target being built and only if + that results in no matching rule, will GNU Make consider prerequisites + mentioned in other targets as "ought to exist". + Implementation provided by Dmitry Goncharov + +* GNU Make was performing secondary expansion of all targets, even targets + which didn't need to be considered during the build. In this release + only targets which are considered will be secondarily expanded. + Implementation provided by Dmitry Goncharov + +* If the MAKEFLAGS variable is modified in a makefile, it will be re-parsed + immediately rather than after all makefiles have been read. Note that + although all options are parsed immediately, some special effects won't + appear until after all makefiles are read. + +* The -I option accepts an argument "-" (e.g., "-I-") which means "reset the + list of search directories to empty". Among other things this can be used + to prevent GNU Make from searching in its default list of directories. + +* New debug option "print" will show the recipe to be run, even when silent + mode is set, and new debug option "why" will show why a target is rebuilt + (which prerequisites caused the target to be considered out of date). + Implementation provided by David Boyce + +* The existing --trace option is made equivalent to --debug=print,why + +* Target-specific variables can now be marked "unexport". + +* Exporting / unexporting target-specific variables is handled correctly, so + that the attribute of the most specific variable setting is used. + +* Special targets like .POSIX are detected upon definition, ensuring that any + change in behavior takes effect immediately, before the next line is parsed. + +* When the pipe-based jobserver is enabled and GNU Make decides it is invoking + a non-make sub-process and closes the jobserver pipes, it will now add a new + option to the MAKEFLAGS environment variable that disables the jobserver. + This prevents sub-processes that invoke make from accidentally using other + open file descriptors as jobserver pipes. For more information see + https://savannah.gnu.org/bugs/?57242 and https://savannah.gnu.org/bugs/?62397 + +* A long-standing issue with the directory cache has been resolved: changes + made as a side-effect of some other target's recipe are now noticed as + expected. + +* GNU Make can now be built for MS-Windows using the Tiny C tcc compiler. + Port provided by Christian Jullien + + +Version 4.3 (19 Jan 2020) + +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&set=custom + +* WARNING: Backward-incompatibility! + Number signs (#) appearing inside a macro reference or function invocation + no longer introduce comments and should not be escaped with backslashes: + thus a call such as: + foo := $(shell echo '#') + is legal. Previously the number sign needed to be escaped, for example: + foo := $(shell echo '\#') + Now this latter will resolve to "\#". If you want to write makefiles + portable to both versions, assign the number sign to a variable: + H := \# + foo := $(shell echo '$H') + This was claimed to be fixed in 3.81, but wasn't, for some reason. + To detect this change search for 'nocomment' in the .FEATURES variable. + +* WARNING: Backward-incompatibility! + Previously appending using '+=' to an empty variable would result in a value + starting with a space. Now the initial space is only added if the variable + already contains some value. Similarly, appending an empty string does not + add a trailing space. + +* WARNING: Backward-incompatibility! + Previously using the .SILENT pseudo-target in a makefile would force all + sub-makes to be invoked with the '-s' option, effectively making all + sub-makes silent as well. In this release .SILENT only affects the current + invocation of make. A side-effect of this is that .SILENT will no longer + enable the --no-print-directory option, which using -s will do. + +* NOTE: Deprecated behavior. + Contrary to the documentation, suffix rules with prerequisites are being + treated BOTH as simple targets AND as pattern rules. Further, the + prerequisites are ignored by the pattern rules. POSIX specifies that in + order to be a suffix rule there can be no prerequisites defined. In this + release if POSIX mode is enabled then rules with prerequisites cannot be + suffix rules. If POSIX mode is not enabled then the previous behavior is + preserved (a pattern rule with no extra prerequisites is created) AND a + warning about this behavior is generated: + warning: ignoring prerequisites on suffix rule definition + The POSIX behavior will be adopted as the only behavior in a future release + of GNU make so please resolve any warnings. + +* New feature: Grouped explicit targets + Pattern rules have always had the ability to generate multiple targets with + a single invocation of the recipe. It's now possible to declare that an + explicit rule generates multiple targets with a single invocation. To use + this, replace the ":" token with "&:" in the rule. To detect this feature + search for 'grouped-target' in the .FEATURES special variable. + Implementation contributed by Kaz Kylheku + +* New feature: .EXTRA_PREREQS variable + Words in this variable are considered prerequisites of targets but they are + not added to any of the automatic variable values when expanding the + recipe. This variable can either be global (applies to all targets) or + a target-specific variable. To detect this feature search for 'extra-prereqs' + in the .FEATURES special variable. + Implementation contributed by Christof Warlich + +* Makefiles can now specify the '-j' option in their MAKEFLAGS variable and + this will cause make to enable that parallelism mode. + +* GNU make will now use posix_spawn() on systems where it is available. + If you prefer to use fork/exec even on systems where posix_spawn() is + present, you can use the --disable-posix-spawn option to configure. + Implementation contributed by Aron Barath + +* Error messages printed when invoking non-existent commands have been cleaned + up and made consistent. + +* The previous limit of 63 jobs under -jN on MS-Windows is now + increased to 4095. That limit includes the subprocess started by + the $(shell) function. + +* A new option --no-silent has been added, that cancels the effect of the + -s/--silent/--quiet flag. + +* A new option -E has been added as a short alias for --eval. + +* All wildcard expansion within GNU make, including $(wildcard ...), will sort + the results. See https://savannah.gnu.org/bugs/index.php?52076 + +* Interoperate with newer GNU libc and musl C runtime libraries. + +* Performance improvements provided by Paolo Bonzini + +GNU make Developer News + +* Import the GNU standard bootstrap script to replace the hand-rolled + "make update" method for building code from a GNU make Git repository. + +* Rework the source distribution to move source files into the src/* + subdirectory. This aligns with modern best practices in GNU. + +* Replace local portability code with Gnulib content. Unfortunately due to a + problem with Gnulib support for getloadavg, this forces a requirement on + Automake 1.16 or above in order to build from Git. See README.git. + + +Version 4.2.1 (10 Jun 2016) + +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=107&set=custom + +This release is a bug-fix release. + + +Version 4.2 (22 May 2016) + +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=106&set=custom + +* New variable: $(.SHELLSTATUS) is set to the exit status of the last != or + $(shell ...) function invoked in this instance of make. This will be "0" if + successful or not "0" if not successful. The variable value is unset if no + != or $(shell ...) function has been invoked. + +* The $(file ...) function can now read from a file with $(file + +* The interface to GNU make's "jobserver" is stable as documented in the + manual, for tools which may want to access it. + + WARNING: Backward-incompatibility! The internal-only command line option + --jobserver-fds has been renamed for publishing, to --jobserver-auth. + +* The amount of parallelism can be determined by querying MAKEFLAGS, even when + the job server is enabled (previously MAKEFLAGS would always contain only + "-j", with no number, when job server was enabled). + +* VMS-specific changes: + + * Perl test harness now works. + + * Full support for converting Unix exit status codes to VMS exit status + codes. BACKWARD INCOMPATIBILITY Notice: On a child failure the VMS exit + code is now the encoded Unix exit status that Make usually generates, not + the VMS exit status of the child. + + +Version 4.1 (05 Oct 2014) + +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=105&set=custom + +* New variables: $(MAKE_TERMOUT) and $(MAKE_TERMERR) are set to non-empty + values if stdout or stderr, respectively, are believed to be writing to a + terminal. These variables are exported by default. + +* Allow a no-text-argument form of the $(file ...) function. Without a text + argument nothing is written to the file: it is simply opened in the + requested mode, then closed again. + +* Change the fatal error for mixed explicit and implicit rules, that was + introduced in GNU make 3.82, to a non-fatal error. However, this syntax is + still deprecated and may return to being illegal in a future version of GNU + make. Makefiles that rely on this syntax should be fixed. + See https://savannah.gnu.org/bugs/?33034 + +* VMS-specific changes: + + * Support for library files added, including support for using the GNV ar + utility. + + * Partial support for properly encoding Unix exit status codes into VMS exit + status codes. + + WARNING: Backward-incompatibility! These are different exit status codes + than Make exited with in the past. + + * Macros to hold the current make command are set up to translate the + argv[0] string to a VMS format path name and prefix it with "MCR " so that + the macro has a space in it. + + WARNING: Backward-incompatibility! This may break complex makefiles that + do processing on those macros. This is unlikely because so much in that + area was not and is still not currently working on VMS, it is unlikely to + find such a complex makefile, so this is more likely to impact + construction of a future makefile. + + * A command file is always used to run the commands for a recipe. + + WARNING: Backward-incompatibility! Running the make self tests has + exposed that there are significant differences in behavior when running + with the command file mode. It is unknown if this will be noticed by most + existing VMS makefiles. + +Version 4.0 (09 Oct 2013) + +A complete list of bugs fixed in this version is available here: + +https://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 . + Reworked and enhanced by Frank Heckenbach . + Windows support by Eli Zaretskii . + +* 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 + +* New feature: The .ONESHELL capability is now supported on Windows. Support + added by Eli Zaretskii . + +* 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 https://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: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom + +* Compiling GNU make now requires a conforming ISO C 1989 compiler and + standard runtime library. + +* WARNING: Backward-incompatibility! + The POSIX standard for make was changed in the 2008 version in a + fundamentally incompatible way: make is required to invoke the shell as if + the '-e' flag were provided. Because this would break many makefiles that + have been written to conform to the original text of the standard, the + default behavior of GNU make remains to invoke the shell with simply '-c'. + However, any makefile specifying the .POSIX special target will follow the + new POSIX standard and pass '-e' to the shell. See also .SHELLFLAGS + below. + +* WARNING: Backward-incompatibility! + The '$?' variable now contains all prerequisites that caused the target to + be considered out of date, even if they do not exist (previously only + existing targets were provided in $?). + +* WARNING: Backward-incompatibility! + 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! + As a result of parser enhancements, three backward-compatibility issues + exist: first, a prerequisite containing an "=" cannot be escaped with a + backslash any longer. You must create a variable containing an "=" and + use that variable in the prerequisite. Second, variable names can no + longer contain whitespace, unless you put the whitespace in a variable and + use the variable. Third, in previous versions of make it was sometimes + not flagged as an error for explicit and pattern targets to appear in the + same rule. Now this is always reported as an error. + +* WARNING: Backward-incompatibility! + The pattern-specific variables and pattern rules are now applied in the + shortest stem first order instead of the definition order (variables + and rules with the same stem length are still applied in the definition + order). This produces the usually-desired behavior where more specific + patterns are preferred. To detect this feature search for 'shortest-stem' + in the .FEATURES special variable. + +* WARNING: Backward-incompatibility! + The library search behavior has changed to be compatible with the standard + linker behavior. Prior to this version for prerequisites specified using + the -lfoo syntax make first searched for libfoo.so in the current + directory, vpath directories, and system directories. If that didn't yield + a match, make then searched for libfoo.a in these directories. Starting + with this version make searches first for libfoo.so and then for libfoo.a + in each of these directories in order. + +* New command line option: --eval=STRING causes STRING to be evaluated as + makefile syntax (akin to using the $(eval ...) function). The evaluation + is performed after all default rules and variables are defined, but before + any makefiles are read. + +* New special variable: .RECIPEPREFIX allows you to reset the recipe + introduction character from the default (TAB) to something else. The + first character of this variable value is the new recipe introduction + character. If the variable is set to the empty string, TAB is used again. + It can be set and reset at will; recipes will use the value active when + they were first parsed. To detect this feature check the value of + $(.RECIPEPREFIX). + +* New special variable: .SHELLFLAGS allows you to change the options passed + to the shell when it invokes recipes. By default the value will be "-c" + (or "-ec" if .POSIX is set). + +* New special target: .ONESHELL instructs make to invoke a single instance + of the shell and provide it with the entire recipe, regardless of how many + lines it contains. As a special feature to allow more straightforward + conversion of makefiles to use .ONESHELL, any recipe line control + characters ('@', '+', or '-') will be removed from the second and + subsequent recipe lines. This happens _only_ if the SHELL value is deemed + to be a standard POSIX-style shell. If not, then no interior line control + characters are removed (as they may be part of the scripting language used + with the alternate SHELL). + +* New variable modifier 'private': prefixing a variable assignment with the + modifier 'private' suppresses inheritance of that variable by + prerequisites. This is most useful for target- and pattern-specific + variables. + +* New make directive: 'undefine' allows you to undefine a variable so that + it appears as if it was never set. Both $(flavor) and $(origin) functions + will return 'undefined' for such a variable. To detect this feature search + for 'undefine' in the .FEATURES special variable. + +* The parser for variable assignments has been enhanced to allow multiple + modifiers ('export', 'override', 'private') on the same line as variables, + including define/endef variables, and in any order. Also, it is possible + to create variables and targets named as these modifiers. + +* The 'define' make directive now allows a variable assignment operator + after the variable name, to allow for simple, conditional, or appending + multi-line variable assignment. + +* VMS-specific changes: + + * Michael Gehre (at VISTEC-SEMI dot COM) supplied a fix for a problem with + timestamps of object modules in OLBs. The timestamps were not correctly + adjusted to GMT based time, if the local VMS time was using a daylight + saving algorithm and if daylight saving was switched off. + + * John Eisenbraun (at HP dot COM) supplied fixes and and an enhancement to + append output redirection in action lines. + + * Rework of ctrl+c and ctrl+y handling. + + * Fix a problem with cached strings, which showed on case-insensitive file + systems. + + * Build fixes for const-ified code in VMS specific sources. + + * A note on appending the redirected output. With this change, a simple + mechanism is implemented to make ">>" work in action lines. In VMS + there is no simple feature like ">>" to have DCL command or program + output redirected and appended to a file. GNU make for VMS already + implements the redirection of output. If such a redirection is detected, + an ">" on the action line, GNU make creates a DCL command procedure to + execute the action and to redirect its output. Based on that, now ">>" + is also recognized and a similar but different command procedure is + created to implement the append. The main idea here is to create a + temporary file which collects the output and which is appended to the + wanted output file. Then the temporary file is deleted. This is all done + in the command procedure to keep changes in make small and simple. This + obviously has some limitations but it seems good enough compared with + the current ">" implementation. (And in my opinion, redirection is not + really what GNU make has to do.) With this approach, it may happen that + the temporary file is not yet appended and is left in SYS$SCRATCH. + The temporary file names look like "CMDxxxxx.". Any time the created + command procedure can not complete, this happens. Pressing Ctrl+Y to + abort make is one case. In case of Ctrl+Y the associated command + procedure is left in SYS$SCRATCH as well. Its name is CMDxxxxx.COM. + + * Change in the Ctrl+Y handling. 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 + 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. + + +Version 3.81 (01 Apr 2006) + +* GNU make is ported to OS/2. + +* GNU make is ported to MinGW. The MinGW build is only supported by + the build_w32.bat batch file; see the file README.W32 for more + details. + +* WARNING: Future backward-incompatibility! + Up to and including this release, the '$?' variable does not contain + any prerequisite that does not exist, even though that prerequisite + might have caused the target to rebuild. Starting with the _next_ + release of GNU make, '$?' will contain all prerequisites that caused + the target to be considered out of date. + See https://savannah.gnu.org/bugs/?16051 + +* WARNING: Backward-incompatibility! + GNU make now implements a generic "second expansion" feature on the + prerequisites of both explicit and implicit (pattern) rules. In order + to enable this feature, the special target '.SECONDEXPANSION' must be + defined before the first target which takes advantage of it. If this + feature is enabled then after all rules have been parsed the + prerequisites are expanded again, this time with all the automatic + variables in scope. This means that in addition to using standard + SysV $$@ in prerequisites lists, you can also use complex functions + such as $$(notdir $$@) etc. This behavior applies to implicit rules, + as well, where the second expansion occurs when the rule is matched. + However, this means that when '.SECONDEXPANSION' is enabled you must + double-quote any "$" in your filenames; instead of "foo: boo$$bar" you + now must write "foo: foo$$$$bar". Note that the SysV $$@ etc. feature, + which used to be available by default, is now ONLY available when the + .SECONDEXPANSION target is defined. If your makefiles take advantage + of this SysV feature you will need to update them. + +* WARNING: Backward-incompatibility! + In order to comply with POSIX, the way in which GNU make processes + backslash-newline sequences in recipes has changed. If your makefiles + use backslash-newline sequences inside of single-quoted strings in + recipes you will be impacted by this change. See the GNU make manual + subsection "Splitting Recipe Lines" (node "Splitting Lines"), in + section "Recipe Syntax", chapter "Writing Recipe in Rules", for + details. + +* WARNING: Backward-incompatibility! + Some previous versions of GNU make had a bug where "#" in a function + invocation such as $(shell ...) was treated as a make comment. A + workaround was to escape these with backslashes. This bug has been + fixed: if your makefile uses "\#" in a function invocation the + backslash is now preserved, so you'll need to remove it. + +* New command line option: -L (--check-symlink-times). On systems that + support symbolic links, if this option is given then GNU make will + use the most recent modification time of any symbolic links that are + used to resolve target files. The default behavior remains as it + always has: use the modification time of the actual target file only. + +* The "else" conditional line can now be followed by any other valid + conditional on the same line: this does not increase the depth of the + conditional nesting, so only one "endif" is required to close the + conditional. + +* All pattern-specific variables that match a given target are now used + (previously only the first match was used). + +* Target-specific variables can be marked as exportable using the + "export" keyword. + +* In a recursive $(call ...) context, any extra arguments from the outer + call are now masked in the context of the inner call. + +* Implemented a solution for the "thundering herd" problem with "-j -l". + This version of GNU make uses an algorithm suggested by Thomas Riedl + to track the number of jobs started in the + last second and artificially adjust GNU make's view of the system's + load average accordingly. + +* New special variables available in this release: + - .INCLUDE_DIRS: Expands to a list of directories that make searches + for included makefiles. + - .FEATURES: Contains a list of special features available in this + version of GNU make. + - .DEFAULT_GOAL: Set the name of the default goal make will + use if no goals are provided on the command line. + - MAKE_RESTARTS: If set, then this is the number of times this + instance of make has been restarted (see "How Makefiles Are Remade" + in the manual). + - New automatic variable: $| (added in 3.80, actually): contains all + the order-only prerequisites defined for the target. + +* New functions available in this release: + - $(lastword ...) returns the last word in the list. This gives + identical results as $(word $(words ...) ...), but is much faster. + - $(abspath ...) returns the absolute path (all "." and ".." + directories resolved, and any duplicate "/" characters removed) for + each path provided. + - $(realpath ...) returns the canonical pathname for each path + provided. The canonical pathname is the absolute pathname, with + all symbolic links resolved as well. + - $(info ...) prints its arguments to stdout. No makefile name or + line number info, etc. is printed. + - $(flavor ...) returns the flavor of a variable. + - $(or ...) provides a short-circuiting OR conditional: each argument + is expanded. The first true (non-empty) argument is returned; no + further arguments are expanded. Expands to empty if there are no + true arguments. + - $(and ...) provides a short-circuiting AND conditional: each + argument is expanded. The first false (empty) argument is + returned; no further arguments are expanded. Expands to the last + argument if all arguments are true. + +* Changes made for POSIX compatibility: + - Only touch targets (under -t) if they have a recipe. + - Setting the SHELL make variable does NOT change the value of the + SHELL environment variable given to programs invoked by make. As + an enhancement to POSIX, if you export the make variable SHELL then + it will be set in the environment, just as before. + +* On MS Windows systems, explicitly setting SHELL to a pathname ending + in "cmd" or "cmd.exe" (case-insensitive) will force GNU make to use + the DOS command interpreter in batch mode even if a UNIX-like shell + could be found on the system. + +* On VMS there is now support for case-sensitive filesystems such as ODS5. + See the README.VMS file for information. + +* Parallel builds (-jN) no longer require a working Bourne shell on + Windows platforms. They work even with the stock Windows shells, such + as cmd.exe and command.com. + +* Updated to autoconf 2.59, automake 1.9.5, and gettext 0.14.1. Users + should not be impacted. + +* New translations for Swedish, Chinese (simplified), Ukrainian, + Belarusian, Finnish, Kinyarwandan, and Irish. Many updated + translations. + +A complete list of bugs fixed in this version is available here: + + https://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=103 + + +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 + the rebuild/no-rebuild decision of their dependents. That is to say, + they allow you to require target B be built before target A, without + requiring that target A will always be rebuilt if target B is updated. + Patch for this feature provided by Greg McGary . + +* For compatibility with SysV make, GNU make now supports the peculiar + syntax $$@, $$(@D), and $$(@F) in the prerequisites list of a rule. + This syntax is only valid within explicit and static pattern rules: it + cannot be used in implicit (suffix or pattern) rules. Edouard G. Parmelan + provided a patch implementing this feature; however, I + decided to implement it in a different way. + +* The argument to the "ifdef" conditional is now expanded before it's + tested, so it can be a constructed variable name. + + Similarly, the arguments to "export" (when not used in a variable + definition context) and "unexport" are also now expanded. + +* A new function is defined: $(value ...). The argument to this + function is the _name_ of a variable. The result of the function is + the value of the variable, without having been expanded. + +* A new function is defined: $(eval ...). The arguments to this + function should expand to makefile commands, which will then be + evaluated as if they had appeared in the makefile. In combination + with define/endef multiline variable definitions this is an extremely + powerful capability. The $(value ...) function is also sometimes + useful here. + +* A new built-in variable is defined, $(MAKEFILE_LIST). It contains a + list of each makefile GNU make has read, or started to read, in the + order in which they were encountered. So, the last filename in the + list when a makefile is just being read (before any includes) is the + name of the current makefile. + +* A new built-in variable is defined: $(.VARIABLES). When it is + expanded it returns a complete list of variable names defined by all + makefiles at that moment. + +* A new command line option is defined, -B or --always-make. If + specified GNU make will consider all targets out-of-date even if they + would otherwise not be. + +* The arguments to $(call ...) functions were being stored in $1, $2, + etc. as recursive variables, even though they are fully expanded + before assignment. This means that escaped dollar signs ($$ etc.) + were not behaving properly. Now the arguments are stored as simple + variables. This may mean that if you added extra escaping to your + $(call ...) function arguments you will need to undo it now. + +* The variable invoked by $(call ...) can now be recursive: unlike other + variables it can reference itself and this will not produce an error + when it is used as the first argument to $(call ...) (but only then). + +* New pseudo-target .LOW_RESOLUTION_TIME, superseding the configure + option --disable-nsec-timestamps. You might need this if your build + process depends on tools like "cp -p" preserving time stamps, since + "cp -p" (right now) doesn't preserve the subsecond portion of a time + stamp. + +* Updated translations for French, Galician, German, Japanese, Korean, + and Russian. New translations for Croatian, Danish, Hebrew, and + Turkish. + +* Updated internationalization support to Gettext 0.11.5. + GNU make now uses Gettext's "external" feature, and does not include + any internationalization code itself. Configure will search your + system for an existing implementation of GNU Gettext (only GNU Gettext + is acceptable) and use it if it exists. If not, NLS will be disabled. + See ABOUT-NLS for more information. + +* Updated to autoconf 2.54 and automake 1.7. Users should not be impacted. + +* VMS-specific changes: + + * In default.c define variable ARCH as IA64 for VMS on Itanium systems. + + * In makefile.vms avoid name collision for glob and globfree. + + * This is the VMS port of GNU Make done by Hartmut.Becker@compaq.com. + + It is based on the specific version 3.77k and on 3.78.1. 3.77k was done + by Klaus Kämpf , the code was based on the VMS port of + GNU Make 3.60 by Mike Moretti. + + It was ported on OpenVMS/Alpha V7.1, DECC V5.7-006. It was re-build and + tested on OpenVMS/Alpha V7.2, OpenVMS/VAX 7.1 and 5.5-2. Different + versions of DECC were used. VAXC was tried: it fails; but it doesn't + seem worth to get it working. There are still some PTRMISMATCH warnings + during the compile. Although perl is working on VMS the test scripts + don't work. The function $shell is still missing. + + There is a known bug in some of the VMS CRTLs. It is in the shipped + versions of VMS V7.2 and V7.2-1 and in the currently (October 1999) + available ECOs for VMS V7.1 and newer versions. It is fixed in versions + shipped with newer VMS versions and all ECO kits after October 1999. It + only shows up during the daylight saving time period (DST): stat() + 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) + cc /obj=x.obj x.c + link x.obj /exe=x.exe + gmake.exe;1: *** Warning: Clock skew detected. Your build may be + incomplete. + + +A complete list of bugs fixed in this version is available here: + + https://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=102 + + +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 + listed in the makefile. + +* New configure option --disable-nsec-timestamps, but this was + superseded in later versions by the .LOW_RESOLUTION_TIME pseudo-target. + +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 + file for more information on configuring GNU make for NLS. + +* Previously, GNU make quoted variables such as MAKEFLAGS and + MAKEOVERRIDES for proper parsing by the shell. This allowed them to + be used within make build scripts. However, using them there is not + proper behavior: they are meant to be passed to subshells via the + environment. Unfortunately the values were not quoted properly to be + passed through the environment. This meant that make didn't properly + pass some types of command line values to submakes. + + With this version we change that behavior: now these variables are + quoted properly for passing through the environment, which is the + correct way to do it. If you previously used these variables + explicitly within a make rule you may need to re-examine your use for + correctness given this change. + +* A new pseudo-target .NOTPARALLEL is available. If defined, the + current makefile is run serially regardless of the value of -j. + However, submakes are still eligible for parallel execution. + +* The --debug option has changed: it now allows optional flags + controlling the amount and type of debugging output. By default only + a minimal amount information is generated, displaying the names of + "normal" targets (not makefiles) that were deemed out of date and in + need of being rebuilt. + + Note that the -d option behaves as before: it takes no arguments and + all debugging information is generated. + +* The `-p' (print database) output now includes filename and linenumber + information for variable definitions, to aid debugging. + +* The wordlist function no longer reverses its arguments if the "start" + value is greater than the "end" value. If that's true, nothing is + returned. + +* Hartmut Becker provided many updates for the VMS port of GNU make. + See the README.VMS file for more details. + +* VMS-specific changes: + + * Fix a problem with automatically remaking makefiles. GNU make uses an + execve to restart itself after a successful remake of the makefile. On + UNIX systems execve replaces the running program with a new one and + resets all signal handling to the default. On VMS execve creates a child + process, signal and exit handlers of the parent are still active, and, + unfortunately, corrupt the exit code from the child. Fix in job.c: + ignore SIGCHLD. + + * Added some switches to reflect latest features of DECC. Modifications in + makefile.vms. + + * Set some definitions to reflect latest features of DECC. Modifications in + config.h-vms (which is copied to config.h). + + * Added extern strcmpi declaration to avoid 'implicitly declared' messages. + Modification in make.h. + + * Default rule for C++, conditionals for gcc (GCC_IS_NATIVE) or DEC/Digital/ + Compaq c/c++ compilers. Modifications in default.c. + + * Usage of opendir() and friends, suppress file version. Modifications in + dir.c. + + * Added VMS specific code to handle ctrl+c and ctrl+y to abort make. + Modifications in job.c. + + * Added support to have case sensitive targets and dependencies but to + still use case blind file names. This is especially useful for Java + makefiles on VMS: + + .SUFFIXES : + .SUFFIXES : .class .java + .java.class : + javac "$< + HelloWorld.class : HelloWorld.java + + * A new macro WANT_CASE_SENSITIVE_TARGETS in config.h-vms was introduced. + It needs to be enabled to get this feature; default is disabled. The + macro HAVE_CASE_INSENSITIVE_FS must not be touched: it is still enabled. + Modifications in file.c and config.h-vms. + + * Bootstrap make to start building make is still makefile.com, but make + needs to be re-made with a make to make a correct version: ignore all + possible warnings, delete all objects, rename make.exe to a different + name and run it. + + * Made some minor modifications to the bootstrap build makefile.com. + +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 + the function, with the text provided as the error message. The latter + causes the text provided to be printed as a warning message, but make + proceeds normally. + +* A new function $(call ...) is available. This allows users to create + their own parameterized macros and invoke them later. Original + implementation of this function was provided by Han-Wen Nienhuys + . + +* A new function $(if ...) is available. It provides if-then-else + capabilities in a builtin function. Original implementation of this + function was provided by Han-Wen Nienhuys . + +* Make defines a new variable, .LIBPATTERNS. This variable controls how + library dependency expansion (dependencies like ``-lfoo'') is performed. + +* Make accepts CRLF sequences as well as traditional LF, for + compatibility with makefiles created on other operating systems. + +* Make accepts a new option: -R, or --no-builtin-variables. This option + disables the definition of the rule-specific builtin variables (CC, + LD, AR, etc.). Specifying this option forces -r (--no-builtin-rules) + as well. + +* A "job server" feature, suggested by Howard Chu . + + On systems that support POSIX pipe(2) semantics, GNU make can now pass + -jN options to submakes rather than forcing them all to use -j1. The + top make and all its sub-make processes use a pipe to communicate with + each other to ensure that no more than N jobs are started across all + makes. To get the old behavior of -j back, you can configure make + with the --disable-job-server option. + +* The confusing term "dependency" has been replaced by the more accurate + and standard term "prerequisite", both in the manual and in all GNU make + output. + +* GNU make supports the "big archive" library format introduced in AIX 4.3. + +* GNU make supports large files on AIX, HP-UX, and IRIX. These changes + were provided by Paul Eggert . (Large file + support for Solaris and Linux was introduced in 3.77, but the + configuration had issues: these have also been resolved). + +* The Windows 95/98/NT (W32) version of GNU make now has native support + for the Cygnus Cygwin release B20.1 shell (bash). + +* The GNU make regression test suite, long available separately "under + the table", has been integrated into the release. You can invoke it + by running "make check" in the distribution. Note that it requires + Perl (either Perl 4 or Perl 5) to run. + +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 + defined. + +* Make defines a new variable, "CURDIR", to contain the current working + directory (after the -C option, if any, has been processed). + Modifying this variable has no effect on the operation of make. + +* Make defines a new default RCS rule, for new-style master file + storage: ``% :: RCS/%'' (note no ``,v'' suffix). + + Make defines new default rules for DOS-style C++ file naming + conventions, with ``.cpp'' suffixes. All the same rules as for + ``.cc'' and ``.C'' suffixes are provided, along with LINK.cpp and + COMPILE.cpp macros (which default to the same value as LINK.cc and + COMPILE.cc). Note CPPFLAGS is still C preprocessor flags! You should + use CXXFLAGS to change C++ compiler flags. + +* A new feature, "target-specific variable values", has been added. + This is a large change so please see the appropriate sections of the + manual for full details. Briefly, syntax like this: + + TARGET: VARIABLE = VALUE + + defines VARIABLE as VALUE within the context of TARGET. This is + similar to SunOS make's "TARGET := VARIABLE = VALUE" feature. Note + that the assignment may be of any type, not just recursive, and that + the override keyword is available. + + COMPATIBILITY: This new syntax means that if you have any rules where + the first or second dependency has an equal sign (=) in its name, + you'll have to escape them with a backslash: "foo : bar\=baz". + Further, if you have any dependencies which already contain "\=", + you'll have to escape both of them: "foo : bar\\\=baz". + +* A new appendix listing the most common error and warning messages + generated by GNU make, with some explanation, has been added to the + GNU make User's Manual. + +* Updates to the GNU make Customs library support (see README.customs). + +* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32), + and to the DOS port from Eli Zaretski (see README.DOS). + +* VMS-specific changes: + + * This is the VMS port of GNU Make. + It is based on the VMS port of GNU Make 3.60 by Mike Moretti. + This port was done by Klaus Kämpf + + * There is first-level support available from proGIS Software, Germany. + Visit their web-site at https://www.progis.de to get information + about other vms software and forthcoming updates to gnu make. + + * /bin/sh style I/O redirection is supported. You can now write lines like + mcr sys$disk:[]program.exe < input.txt > output.txt &> error.txt + + * Makefile variables are looked up in the current environment. You can set + symbols or logicals in DCL and evaluate them in the Makefile via + $(). Variables defined in the Makefile + override VMS symbols/logicals ! + + * Functions for file names are working now. See the GNU Make manual for + $(dir ...) and $(wildcard ...). Unix-style and VMS-style names are + supported as arguments. + + * The default rules are set up for GNU C. Building an executable from a + single source file is as easy as 'make file.exe'. + + * The variable $(ARCH) is predefined as ALPHA or VAX resp. Makefiles for + different VMS systems can now be written by checking $(ARCH) as in + ifeq ($(ARCH),ALPHA) + $(ECHO) "On the Alpha" + else + $(ECHO) "On the VAX" + endif + + * Command lines of excessive length are correctly broken and written to a + batch file in sys$scratch for later execution. There's no limit to the + lengths of commands (and no need for .opt files :-) any more. + + * Empty commands are handled correctly and don't end in a new DCL process. + +Version 3.76.1 (19 Sep 1997) + +* Small (but serious) bug fix. Quick rollout to get into the GNU source CD. + +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. + +* VPATH functionality has been changed to incorporate the VPATH+ patch, + previously maintained by Paul Smith . See the + manual. + +* Make defines a new variable, `MAKECMDGOALS', to contain the goals that + were specified on the command line, if any. Modifying this variable + has no effect on the operation of make. + +* A new function, `$(wordlist S,E,TEXT)', is available: it returns a + list of words from number S to number E (inclusive) of TEXT. + +* Instead of an error, detection of future modification times gives a + warning and continues. The warning is repeated just before GNU make + exits, so it is less likely to be lost. + +* Fix the $(basename) and $(suffix) functions so they only operate on + the last filename, not the entire string: + + Command Old Result New Result + ------- ---------- ---------- + $(basename a.b) a a + $(basename a.b/c) a a.b/c + $(suffix a.b) b b + $(suffix a.b/c) b/c + +* The $(strip) function now removes newlines as well as TABs and spaces. + +* The $(shell) function now changes CRLF (\r\n) pairs to a space as well + as newlines (\n). + +* Updates to the Windows 95/NT port from Rob Tulloh (see README.W32). + +* Eli Zaretskii has updated the port to 32-bit protected mode on MSDOS + and MS-Windows, building with the DJGPP v2 port of GNU C/C++ compiler + and utilities. See README.DOS for details, and direct all questions + concerning this port to Eli Zaretskii or DJ + Delorie . + +* VMS-specific changes: + + * John W. Eaton has updated the VMS port to support libraries and VPATH. + + * The cd command is supported if it's called as $(CD). This invokes + the 'builtin_cd' command which changes the directory. + Calling 'set def' doesn't do the trick, since a sub-shell is + spawned for this command, the directory is changed *in this sub-shell* + and the sub-shell ends. + + * Libraries are not supported. They were in GNU Make 3.60 but somehow I + didn't care porting the code. If there is enough interest, I'll do it at + some later time. + + * The variable $^ separates files with commas instead of spaces (It's the + natural thing to do for VMS). + + * See defaults.c for VMS default suffixes and my definitions for default + rules and variables. + + * The shell function is not implemented yet. + + * Load average routines haven't been implemented for VMS yet. + + * The default include directory for including other makefiles is + SYS$SYSROOT:[SYSLIB] (I don't remember why I didn't just use + SYS$LIBRARY: instead; maybe it wouldn't work that way). + + * The default makefiles make looks for are: makefile.vms, gnumakefile, + makefile., and gnumakefile. . + + * The stat() function and handling of time stamps in VMS is broken, so I + 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 precede it with a backslash ('\'). + E.g.- hobbes\:[bogas.files] + + * Make ignores success, informational, or warning errors (-S-, -I-, or -W-). + But it will stop on -E- and -F- errors. (unless you do something + to override this in your makefile, or whatever). + + * Remote stuff isn't implemented yet. + + * Multiple line DCL commands, such as "if" statements, must be put inside + command files. You can run a command file by using \@. + +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. + +* Make now detects files that for whatever reason have modification times + in the future and gives an error. Files with such impossible timestamps + can result from unsynchronized clocks, or archived distributions + containing bogus timestamps; they confuse Make's dependency engine + thoroughly. + +* The new directive `sinclude' is now recognized as another name for + `-include', for compatibility with some other Makes. + +* Aaron Digulla has contributed a port to AmigaDOS. See README.Amiga for + details, and direct all Amiga-related questions to . + +* Rob Tulloh of Tivoli Systems has contributed a port to Windows NT or 95. + See README.W32 for details, and direct all Windows-related questions to + . + +* VMS-specific changes: + + * Lots of default settings are adapted for VMS. See default.c. + + * Long command lines are now converted to command files. + + * Comma (',') as a separator is now allowed. See makefile.vms for an example. + +Version 3.73 (05 Apr 1995) + +* Converted to use Autoconf version 2, so `configure' has some new options. + See INSTALL for details. + +* 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 (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; + please direct bugs and questions for DOS to . + MS-DOS binaries are available for FTP from ftp.simtel.net in + /pub/simtelnet/gnu/djgpp/. + +* The `MAKEFLAGS' variable (in the environment or in a makefile) can now + contain variable definitions itself; these are treated just like + command line variable definitions. Make will automatically insert any + variable definitions from the environment value of `MAKEFLAGS' or from + the command line, into the `MAKEFLAGS' value exported to children. The + `MAKEOVERRIDES' variable previously included in the value of `$(MAKE)' + for sub-makes is now included in `MAKEFLAGS' instead. As before, you can + reset `MAKEOVERRIDES' in your makefile to avoid putting all the variables + in the environment when its size is limited. + +* If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of + a rule if it has changed when its recipe exits with a nonzero status, + just as when the recipe gets a signal. + +* The automatic variable `$+' is new. It lists all the dependencies like + `$^', but preserves duplicates listed in the makefile. This is useful + for linking rules, where library files sometimes need to be listed twice + in the link order. + +* You can now specify the `.IGNORE' and `.SILENT' special targets with + dependencies to limit their effects to those files. If a file appears as + a dependency of `.IGNORE', then errors will be ignored while running the + recipe to update that file. Likewise if a file appears as a dependency + of `.SILENT', then the recipe to update that file will not be printed + before it is run. (This change was made to conform to POSIX.2.) + +Version 3.71 (21 May 1994) + +* The automatic variables `$(@D)', `$(%D)', `$(*D)', `$(. diff --git a/local/recipes/dev/gnu-make/source/README b/local/recipes/dev/gnu-make/source/README new file mode 100644 index 0000000000..43075d3e88 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README @@ -0,0 +1,221 @@ +This directory contains the 4.4 release of GNU Make. + +See the file NEWS for the user-visible changes from previous releases. +In addition, there have been bugs fixed. + +Please check the system-specific notes below for any caveats related to your +operating system. + +If you are trying to build GNU Make from a Git clone rather than a downloaded +source distribution, see the README.git file for instructions. + +For source distribution 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 will compile the program in the current directory. +Then you will have a 'make' program that you can use for './make install', or +whatever else. + +Some systems' 'make' programs 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. + + +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 +----------- + +GNU Make can be obtained in many different ways. See a description here: + + https://www.gnu.org/software/software.html + + +Documentation +------------- + +GNU Make is fully documented in the GNU Make manual, which is contained in +this distribution as the file make.texi. You can also find on-line and +preformatted (PostScript and DVI) versions at the FSF's web site. There is +information there about ordering hardcopy documentation. + + https://www.gnu.org/ + https://www.gnu.org/doc/doc.html + https://www.gnu.org/manual/manual.html + + +Development +----------- + +GNU Make development is hosted by Savannah, the FSF's online development +management tool. Savannah is here: + + https://savannah.gnu.org + +And the GNU Make development page is here: + + https://savannah.gnu.org/projects/make/ + +You can find most information concerning the development of GNU Make at +this site. + + +Regression Tests +---------------- + +GNU Make contains a suite of regression tests. To run them use "make check" +after building GNU Make. If they fail a tar package will be created +containing useful information, which can be emailed (as an attachment) to +the mailing list. + +Please note that since these tests rely on known-good-output comparisons, +they can show spurious failures on some systems (particularly non-POSIX systems +such as Windows). + + +Bug Reporting +------------- + +If you need help using GNU Make, try asking on . + +If you found a bug, you can send a bug reports to . +Please see the section of the GNU Make manual entitled 'Problems and Bugs' +for information on submitting useful and complete bug reports. + +You do not need to subscribe to these lists first. + +You can also use the online bug tracking system in the Savannah GNU Make +project to submit new problem reports or search for existing ones: + + https://savannah.gnu.org/bugs/?group=make + +We prefer to use the bug tracking system ONLY for bugs or enhancements, +not for help requests: please use the mailing lists to get help. + + +Submitting Patches +------------------ + +If you'd like to propose a change to GNU Make, you can provide a patch with +your changes. If you are making your changes in a Git workspace you can run +"git format-patch" to create a patch file. If not, you can use the diff(1) +utility to create a patch file; please use "diff -u". + +Once you have a patch you can submit it in any of these ways: + + * Create a bug on Savannah and add the patch as an attachment: + https://savannah.gnu.org/bugs/?group=make&func=additem + + * Send the patch via email to : be sure to add it as an + attachment to avoid interference by email processors. + +All non-trivial changes require FSF copyright paperwork to be completed +before they can be accepted. Contact for help. + + +Git Access +---------- + +The GNU Make source repository is available via Git from the GNU Savannah Git +server; look here for details: + + https://savannah.gnu.org/git/?group=make + +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.git file for instructions 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 Git repository: it is not unheard of for code that is +known to be broken to be checked in. Use at your own risk. + + +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. + +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 +bash or pdksh in order to run "configure". See this message for more +information: + https://mail.gnu.org/archive/html/bug-autoconf/2003-10/msg00190.html + +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 +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. + +On systems that support micro- and nano-second timestamp values and +where stat(2) provides this information, GNU Make will use it when +comparing timestamps to get the most accurate possible result. However, +note that many current implementations of tools that *set* timestamps do +not preserve micro- or nano-second granularity. This means that "cp -p" +and other similar tools (tar, etc.) may not exactly duplicate timestamps +with micro- and nano-second granularity on some systems. If your build +system contains rules that depend on proper behavior of tools like "cp +-p", you should consider using the .LOW_RESOLUTION_TIME pseudo-target to +force make to treat them properly. See the manual for details. + + +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.Amiga for details about GNU Make on AmigaDOS. + + - See README.W32 for details about GNU Make on Windows NT, 95, or 98. + + - See README.DOS for compilation instructions on MS-DOS and MS-Windows + using DJGPP tools. + + A precompiled binary of the MSDOS port of GNU Make is available as part + of DJGPP; see the WWW page https://www.delorie.com/djgpp/ for more + information. + + The Cygwin project maintains its own port of GNU Make. That port may have + patches which are not present in this version. If you are using Cygwin + you should use their version of GNU Make, and if you have questions about + it you should start by asking on those mailing lists and forums. + +Please note there are two _separate_ ports of GNU Make for Microsoft +systems: a native Windows tool built with (for example) MSVC or Cygwin, +and a DOS-based tool built with DJGPP. Please be sure you are looking +at the right README! + + +------------------------------------------------------------------------------- +Copyright (C) 1988-2022 Free Software 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 . diff --git a/local/recipes/dev/gnu-make/source/README.Amiga b/local/recipes/dev/gnu-make/source/README.Amiga new file mode 100644 index 0000000000..94fcc13d3b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.Amiga @@ -0,0 +1,80 @@ +Short: Port of GNU Make with SAS/C (no ixemul.library required) +Author: GNU, Amiga port by Aaron "Optimizer" Digulla +Uploader: Aaron "Optimizer" Digulla (digulla@fh-konstanz.de) +Type: dev/c + +This is a pure Amiga port of GNU Make. It needs no extra libraries or +anything. It has the following features (in addition to any features of +GNU Make): + +- Runs Amiga-Commands with SystemTags() (Execute) +- Can run multi-line statements +- Allows to use Device-Names in targets: + + 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 + delimiter, if there are none, it's taken as the name of a device. Note + 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 + + 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 ...) + +BUGS: +- The line + + dummy.h : src/*.c + +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. + +As of GNU Make 4.3, the build environment has been cleaned up and alternate +make files (including smakefiles) have been removed. If you have an existing +version of GNU Make available you _should_ be able to run: + + make -f Basic.mk + +However this is untested. + +If you have an Amiga system and would like to collaborate on getting +bootstrapping to work properly please contact bug-make@gnu.org. + +INSTALLATION + +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-2022 Free Software 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 . diff --git a/local/recipes/dev/gnu-make/source/README.DOS b/local/recipes/dev/gnu-make/source/README.DOS new file mode 100644 index 0000000000..95c3388f74 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.DOS @@ -0,0 +1,296 @@ +Port of GNU Make to 32-bit protected mode on MSDOS and MS-Windows. + +Builds with DJGPP v2 port of GNU C/C++ compiler and utilities. + + +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). + + 3. Supports DOS drive letters in dependencies and pattern rules. + + 4. Better support for DOS-style backslashes in pathnames (but see + 'Notes' below). + + 5. The $(shell) built-in can run arbitrary complex commands, + including pipes and redirection, even when COMMAND.COM is your + shell. + + 6. Can be built without floating-point code (see below). + + 7. Supports signals in child programs and restores the original + directory if the child was interrupted. + + 8. Can be built without (a previous version of) Make. + + 9. The build process requires only standard tools. (Optional + targets like "check:" still need additional programs, though, + see below.) + + 10. Beginning with v3.78, the test suite works in the DJGPP + environment (requires Perl and auxiliary tools; see below). + + +To install a binary distribution: + + Simply unzip the makNNNb.zip file (where NNN is the version number) + preserving the directory structure (-d switch if you use PKUNZIP). + If you are installing Make on Windows 9X or Windows 2000, use an + unzip program that supports long filenames in zip files. After + unzipping, make sure the directory with make.exe is on your PATH, + and that's all you need to use Make. + + +To build from sources: + + 1. Unzip the archive, preserving the directory structure (-d switch + if you use PKUNZIP). If you build Make on Windows 9X or Windows + 2000, use an unzip program that supports long filenames in zip + files. + + If you are unpacking an official GNU source distribution, use + either DJTAR (which is part of the DJGPP development + environment), or the DJGPP port of GNU Tar. + + 2. If you have a working Make already, you can run: + + make -f Basic.mk + + 3. If you don't have a working Make already you can bootstrap one + by running: + + .\builddos.bat + + 4. If you are building from outside of the source directory, you + need to tell Make where the sources are, like this: + + make -f c:/djgpp/gnu/make/Basic.mk SRCDIR=c:/djgpp/gnu/make + + or: + + c:/djgpp/gnu/make/builddos.bat c:/djgpp/gnu/make + + 5. 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 + and Sh-utils. + + 6. To install copy make.exe to the preferred location. + + Since GNU Make 4.3, support for customized platform installations + has been removed. If you'd like to collaborate on reinstating + these capabilities, contact bug-make@gnu.org. + + +Notes: +----- + + 1. The shell issue. + + This is probably the most significant improvement, first + introduced in the port of GNU Make 3.75. + + The original behavior of GNU Make is to invoke commands + directly, as long as they don't include characters special to + the shell or internal shell commands, because that is faster. + When shell features like redirection or filename wildcards are + involved, Make calls the shell. + + 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 + Daisuke Aoyama ). + + When the $SHELL variable points to a Unix-style shell, Make + works just like you'd expect on Unix, calling the shell for any + command that involves characters special to the shell or + internal shell commands. The only difference is that, since + there is no standard way to pass command lines longer than the + infamous DOS 126-character limit, this port of Make writes the + command line to a temporary disk file and then invokes the shell + on that file. + + If $SHELL points to a DOS-style shell, however, Make will not + call it automatically, as it does with Unix shells. Stock + COMMAND.COM is too dumb and would unnecessarily limit the + functionality of Make. For example, you would not be able to + use long command lines in commands that use redirection or + pipes. Therefore, when presented with a DOS shell, this port of + Make will emulate most of the shell functionality, like + 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 + 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 + 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 + 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 + name is mentioned on the first line of the script is installed + anywhere along the $PATH. It is impossible to tell here + everything about these functions; refer to the DJGPP library + reference for more details. + + The $(shell) built-in is implemented in this port by calling + '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 + the Unix-style command substitution (`command`) feature. + + + 2. "SHELL=/bin/sh" -- or is it? + + 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 + 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 + above example) can indeed be found in the directory that is + 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 + an executable file (.exe, .com, .bat, .btm, .sh, and even .sed + and .pl). If any such file is found, then $SHELL will be + defined to the exact pathname of that file, and that shell will + hence be used for the rest of processing. But if the named + shell is *not* found, the line which sets it will be effectively + ignored, leaving the value of $SHELL as it was before. Since a + lot of decisions that this port makes depend on the gender of + the shell, I feel it doesn't make any sense to tailor Make's + behavior to a shell which is nowhere to be found. + + Note that the above special handling of "SHELL=" only happens + for Makefiles; if you set $SHELL in the environment or on the + Make command line, you are expected to give the complete + pathname of the shell, including the filename extension. + + The default value of $SHELL is computed as on Unix (see the Make + manual for details), except that if $SHELL is not defined in the + environment, $COMSPEC is used. Also, if an environment variable + named $MAKESHELL is defined, it takes precedence over both + $COMSPEC and $SHELL. Note that, unlike Unix, $SHELL in the + environment *is* used to set the shell (since on MSDOS, it's + unlikely that the interactive shell will not be suitable for + Makefile processing). + + The bottom line is that you can now write Makefiles where some + of the targets require a real (i.e. Unix-like) shell, which will + nevertheless work when such shell is not available (provided, of + course, that the commands which should always work, don't + 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). + + + 3. Default directories. + + GNU Make knows about standard directories where it searches for + library and include files mentioned in the Makefile. Since + MSDOS machines don't have standard places for these, this port + will search ${DJDIR}/lib and ${DJDIR}/include respectively. + $DJDIR is defined automatically by the DJGPP startup code as the + root of the DJGPP installation tree (unless you've tampered with + the DJGPP.ENV file). This should provide reasonable default + values, unless you moved parts of DJGPP to other directories. + + + 4. Letter-case in filenames. + + 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 + 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' + 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, + will be automatically down-cased.) User reports that I have + indicate that this default behavior is generally what you'd + expect; however, your input is most welcome. + + In any case, if you hit a situation where you must force Make to + get the 8+3 DOS filenames in upper case, set FNCASE=y in the + environment or in the Makefile. + + + 5. DOS-style pathnames. + + 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 + 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 + support is not complete; I feel that pursuing this support too + far might break some more important features, particularly if + you use a Unix-style shell (where a backslash is a quote + character). I only consider support of backslashes desirable + because some Makefiles invoke non-DJGPP programs which don't + understand forward slashes. A notable example of such programs + 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 + (backslash is special in filename wildcards, and I didn't want + to break that). + + One feature which *does* work with backslashes is the filename- + related built-in functions such as $(dir), $(notdir), etc. + Drive letters in pathnames are also fully supported. + + + +Bug reports: +----------- + + Bugs that are clearly related to the MSDOS/DJGPP port should be + reported first on the comp.os.msdos.djgpp news group (if you cannot + post to Usenet groups, write to the DJGPP mailing list, + , 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 + browser/editor. + + + Enjoy, + Eli Zaretskii + + +------------------------------------------------------------------------------- +Copyright (C) 1996-2022 Free Software 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 . diff --git a/local/recipes/dev/gnu-make/source/README.OS2 b/local/recipes/dev/gnu-make/source/README.OS2 new file mode 100644 index 0000000000..82f496e016 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.OS2 @@ -0,0 +1,176 @@ +Port of GNU Make to OS/2. + +Features of GNU Make that do not work under OS/2: + - remote job execution + - dynamic load balancing + + +Special features of the OS/2 version: + +Due to the fact that some people might want to use sh syntax in +Makefiles while others might want to use OS/2's native shell cmd.exe, +GNU Make supports both shell types. The following list defines the order +that is used to determine the shell: + + 1. The shell specified by the environment variable MAKESHELL. + 2. The shell specified by the SHELL variable within a Makefile. Like + Unix, SHELL is NOT taken from the environment. + 3. The shell specified by the COMSPEC environment variable. + 4. The shell specified by the OS2_SHELL environment variable. + 5. If none of the above is defined /bin/sh is used as default. This + happens e.g. in the make testsuite. + +Note: - Points 3 and 4 can be turned off at compile time by adding + -DNO_CMD_DEFAULT to the CPPFLAGS. + - DOS support is not tested for EMX and therefore might not work. + - The UNIXROOT environment variable is supported to find /bin/sh + if it is not on the current drive. + + +COMPILATION OF GNU MAKE FOR OS/2: + +I. ***** SPECIAL OPTIONS ***** + + - At compile time you can turn off that cmd is used as default shell + (but only /bin/sh). Simply set CPPFLAGS="-DNO_CMD_DEFAULT" and make + will not use cmd unless you cause it to do so by setting MAKESHELL to + cmd or by specifying SHELL=cmd in your Makefile. + + - At compile time you can set CPPFLAGS="-DNO_CHDIR2" to turn off that + GNU Make prints drive letters. This is necessary if you want to run + the testsuite. + + +II. ***** REQUIREMENTS FOR THE COMPILATION ***** + +A standard Unix like build environment: + + - sh compatible shell (ksh, bash, ash, but tested only with pdksh 5.2.14 + release 2) + If you use pdksh it is recommended to update to 5.2.14 release 2. Older + versions may not work! You can get this version at + https://www.math.ohio-state.edu/~ilya/software/os2/pdksh-5.2.14-bin-2.zip + - GNU file utilities (make sure that install.exe from the file utilities + is in front of your PATH before X:\OS2\INSTALL\INSTALL.EXE. I recommend + also to change the filename to ginstall.exe instead of install.exe + to avoid confusion with X:\OS2\INSTALL\INSTALL.EXE) + - GNU shell utilities + - GNU text utilities + - gawk + - grep + - sed + - GNU Make 3.79.1 (special OS/2 patched version) or higher + - perl 5.005 or higher + - GNU texinfo (you can use 3.1 (gnuinfo.zip), but I recommend 4.0) + +If you want to recreate the configuration files (developers only!) +you need also: GNU m4 1.4, autoconf 2.59, automake 1.9.6 (or compatible) + + +III. ***** COMPILATION AND INSTALLATION ***** + + a) ** Developers only - Everyone else should skip this section ** + To recreate the configuration files use: + + export EMXSHELL=ksh + aclocal -I config + automake + autoconf + autoheader + + +b) Installation into x:/usr + + Note: Although it is possible to compile make using "./configure", + "make", "make install" this is not recommended. In particular, + you must ALWAYS use LDFLAGS="-Zstack 0x6000" because the default + stack size is far to small and make will not work properly! + +Recommended environment variables and installation options: + + export ac_executable_extensions=".exe" + export CPPFLAGS="-D__ST_MT_ERRNO__" + export CFLAGS="-O2 -Zomf -Zmt" + export LDFLAGS="-Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000" + export RANLIB="echo" + ./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man --without-included-gettext + make AR=emxomfar + make install + +Note: If you use gcc 2.9.x I recommend to set also LIBS="-lgcc" + +Note: You can add -DNO_CMD_DEFAULT and -DNO_CHDIR2 to CPPFLAGS. + See section I. for details. + + +IV. ***** NLS support ***** + +GNU Make has NLS (National Language Support), with the following +caveats: + + a) It will only work with GNU gettext, and + b) GNU gettext support is not included in the GNU Make package. + +Therefore, if you wish to enable the internationalization features of +GNU Make you must install GNU gettext on your system before configuring +GNU Make. + +You can choose the languages to be installed. To install support for +English, German and French only enter: + + export LINGUAS="en de fr" + +If you don't specify LINGUAS all languages are installed. + +If you don't want NLS support (English only) use the option +--disable-nls for the configure script. Note if GNU gettext is not +installed then NLS will not be enabled regardless of this flag. + + +V. ***** Running the make test suite ***** + +To run the included make test suite you have to set + + CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2" + +before you compile make. This is due to some restrictions of the +testsuite itself. -DNO_CMD_DEFAULT causes make to use /bin/sh as default +shell in every case. Normally you could simply set MAKESHELL="/bin/sh" +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 interprets 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 +drive letter. This would be interpreted as an error even if there is +none. + +To run the testsuite do the following: + + export CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2" + export CFLAGS="-Zomf -O2 -Zmt" + export LDFLAGS="-Zcrtdll -s -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000" + export RANLIB="echo" + ./configure --prefix=x:/usr --disable-nls + make AR=emxomfar + make check + +All tests should work fine with the exception of one of the "INCLUDE_DIRS" +tests which will fail if your /usr/include directory is on a drive different +from the make source tree. + + +------------------------------------------------------------------------------- +Copyright (C) 2003-2022 Free Software 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 . diff --git a/local/recipes/dev/gnu-make/source/README.VMS b/local/recipes/dev/gnu-make/source/README.VMS new file mode 100644 index 0000000000..e9c03e5d2c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.VMS @@ -0,0 +1,515 @@ +Overview: -*-text-mode-*- +--------- + + This version of GNU Make has been tested on: + OpenVMS V8.3/V8.4 (Alpha) and V8.4 (Integrity) AND V7.3 (VAX) + + This version of GNU Make is intended to be run from DCL to run + make scripts with a special syntax that is described below. It + likely will not be able to run unmodified Unix makefiles. + + There is an older implementation of GNU Make that was ported to GNV. + Work is now in progress to merge that port to get a single version + of GNU Make available. When that merge is done, GNU Make will auto + detect that it is running under a POSIX shell and then operate as close to + GNU Make on Unix as possible. + + The descriptions below are for running GNU Make from DCL or equivalent. + +Recipe differences: +------------------- + + GNU Make for OpenVMS can not currently run native Unix make files because of + differences in the implementation. + + I am trying to document the current behavior in this section. This is based + on the information in the file NEWS. and running the test suite. + TODO: More tests are needed to validate and demonstrate the OpenVMS + expected behavior. + + In some cases the older behavior of GNU Make when run from DCL is not + compatible with standard makefile behavior. + + This behavior can be changed when running GNU Make from DCL by setting + either DCL symbols or logical names of the format GNV$. The settings + are enabled with a string starting with one of '1', 'T', or 'E' for "1", + "TRUE", or "ENABLE". They are disabled with a '0', 'F', or 'D' for "1", + "FALSE", or "DISABLE". If they are not explicitly set to one of these + values, then they will be set to their default values. + + The value of the setting DECC$FILENAME_UNIX_REPORT or + DECC$FILENAME_UNIX_ONLY will now cause the $(dir x) function to return + './' or '[]' as appropriate. + + The name GNV$MAKE_OLD_VMS when enabled will cause GNU Make to behave as + much as the older method as can be done with out disabling VMS features. + When it is disabled GNU Make have the new behavior which more closely + matches Unix Make behavior. + + The default is currently the old behavior when running GNU Make from DCL. + In the future this may change. When running make from GNV Bash the new + behavior is the default. + + This is a global setting that sets the default behavior for several other + options that can be individually changed. Many of the individual settings + are to make it so that the self tests for GNU Make need less VMS specific + modifications. + + The name GNV$MAKE_COMMA when enabled will cause GNU Make to expect a comma + for a path separator and use a comma for the separator for a list of files. + When disabled, it will cause GNU Make to use a colon for a path separator + and a space for the separator for a list of files. The default is to be + enabled if the GNU Make is set to the older behavior. + + The name GNV$MAKE_SHELL_SIM when enabled will cause GNU Make to try to + simulate a POSIX shell more closely. The following behaviors occur: + + * Single quotes are converted to double quotes and any double + quotes inside of them are doubled. No environment variable expansion + is simulated. + * A exit command status will be converted to a POSIX Exit + where 0 is success and non-zero is failure. + * The $ character will cause environment variable expansion. + * Environment variables can be set on the command line before a command. + + VMS generally uses logical name search lists instead of path variables + where the resolution is handled by VMS independent of the program. Which + means that it is likely that nothing will notice if the default path + specifier is changed in the future. + + Currently the built in VMS specific macros and recipes depend on the comma + being used as a file list separator. + TODO: Remove this dependency as other functions in GNU Make depend on a + space being used as a separator. + + The format for recipes are a combination of Unix macros, a subset of + simulated UNIX commands, some shell emulation, and OpenVMS commands. + This makes the resulting makefiles unique to the OpenVMS port of GNU Make. + + If you are creating a OpenVMS specific makefile from scratch, you should also + look at MMK (Madgoat Make) available at https://github.com/endlesssoftware/mmk + MMK uses full OpenVMS syntax and a persistent sub-process is used for the + recipe lines, allowing multiple line rules. + + The default makefile search order is "makefile.vms", "gnumakefile", + "makefile". TODO: See if that lookup is case sensitive. + + When Make is invoked from DCL, it will create a foreign command + using the name of executable image, with any facility prefix removed, + for the duration of the make program, so it can be used internally + to recursively run make(). The macro MAKE_COMMAND will be set to + this foreign command. + + When make is launched from an exec*() command from a C program, + the foreign command is not created. The macro MAKE_COMMAND will be + set to the actual command passed as argv[0] to the exec*() function. + + If the DCL symbol or logical name GNV$MAKE_USE_MCR exists, then + the macro MAKE_COMMAND will be set to be an "MCR" command with the + absolute path used by DCL to launch make. The foreign command + will not be created. + + The macro MAKE is set to be the same value as the macro MAKE_COMMAND + on all platforms. + + Each recipe command is normally run as a separate spawned processes, + except for the cases documented below where a temporary DCL command + file may be used. + + BUG: Testing has shown that the commands in the temporary command files + are not always created properly. This issue is still under investigation. + + Any macros marked as exported are temporarily created as DCL symbols + for child images to use. DCL symbol substitution is not done with these + commands. + Untested: Symbol substitution. + + When a temporary DCL command file is used, DCL symbol substitution + will work. + + For VMS 7.3-1 and earlier, command lines are limited to 255 characters + or 1024 characters in a command file. + For VMS 7.3-2 and later, command lines are limited to 4059 characters + or 8192 characters in a command file. + + VMS limits each token of a command line to 256 characters, and limits + a command line to 127 tokens. + + Command lines above the limit length are written to a command file + in sys$scratch:. + + In order to handle Unix style extensions to VMS DCL, GNU Make has + parsed the recipe commands and them modified them as needed. The + parser has been re-written to resolve numerous bugs in handling + valid VMS syntax and potential buffer overruns. + + The new parser may need whitespace characters where DCL does not require + it, and also may require that quotes are matched were DCL forgives if + they are not. There is a small chance that existing VMS specific makefiles + will be affected. + + The '<', '>' was previously implemented using command files. Now + GNU Make will check to see if the is already a VMS "PIPE" command and + if it is not, will convert the command to a VMS "PIPE" command. + + The '>>' redirection has been implemented by using a temporary command file. + This will be described later. + + The DCL symbol or logical name GNV$MAKE_USE_CMD_FILE when set to a + string starting with one of '1','T', or 'E' for "1", "TRUE", or "ENABLE", + then temporary DCL command files are always used for running commands. + + Some recipe strings with embedded new lines will not be handled correctly + when a command file is used. + + GNU Make generally does text comparisons for the targets and sources. The + make program itself can handle either Unix or OpenVMS format filenames, but + normally does not do any conversions from one format to another. + TODO: The OpenVMS format syntax handling is incomplete. + TODO: ODS-5 EFS support is missing. + BUG: The internal routines to convert filenames to and from OpenVMS format + do not work correctly. + + Note: In the examples below, line continuations such as a backslash may have + been added to make the examples easier to read in this format. + BUG: That feature does not completely work at this time. + + Since the OpenVMS utilities generally expect OpenVMS format paths, you will + usually have to use OpenVMS format paths for rules and targets. + BUG: Relative OpenVMS paths may not work in targets, especially combined + with vpaths. This is because GNU Make will just concatenate the directories + as it does on Unix. + + The variables $^ and $@ separate files with commas instead of spaces. + This is controlled by the name GNV$MAKE_COMMA as documented in the + previous section. + + While this may seem the natural thing to do with OpenVMS, it actually + causes problems when trying to use other make functions that expect the + files to be separated by spaces. If you run into this, you need the + following workaround to convert the output. + TODO: Look at have the $^ and $@ use spaces like on Unix and have + and easy to use function to do the conversions and have the built + in OpenVMS specific recipes and macros use it. + + Example: + +comma := , +empty := +space := $(empty) $(empty) + +foo: $(addsuffix .3,$(subs $(comma),$(space),$^) + + + Makefile variables are looked up in the current environment. You can set + symbols or logicals in DCL and evaluate them in the Makefile via + $(). Variables defined in the Makefile + override OpenVMS symbols/logicals. + + OpenVMS logical and symbols names show up as "environment" using the + origin function. when the "-e" option is specified, the origin function + shows them as "environment override". On POSIX the test scripts indicate + that they should show up just as "environment". + + When GNU Make reads in a symbol or logical name into the environment, it + converts any dollar signs found to double dollar signs for convenience in + using DCL symbols and logical names in recipes. When GNU Make exports a + DCL symbol for a child process, if the first dollar sign found is followed + by second dollar sign, then all double dollar signs will be converted to + single dollar signs. + + The variable $(ARCH) is predefined as IA64, ALPHA or VAX respectively. + Makefiles for different OpenVMS systems can now be written by checking + $(ARCH). Since IA64 and ALPHA are similar, usually just a check for + VAX or not VAX is sufficient. + + You may have to update makefiles that assume VAX if not ALPHA. + +ifeq ($(ARCH),VAX) + $(ECHO) "On the VAX" +else + $(ECHO) "On the ALPHA or IA64" +endif + + Empty commands are handled correctly and don't end in a new DCL process. + + The exit command needs to have OpenVMS exit codes. To pass a POSIX code + back to the make script, you need to encode it by multiplying it by 8 + and then adding %x1035a002 for a failure code and %x1035a001 for a + success. Make will interpret any POSIX code other than 0 as a failure. + TODO: Add an option have simulate POSIX exit commands in recipes. + + Lexical functions can be used in pipes to simulate shell file test rules. + + Example: + + POSIX: +b : c ; [ -f $@ ] || echo >> $@ + + OpenVMS: +b : c ; if f$$search("$@") then pipe open/append xx $@ ; write xx "" ; close xx + + + You can also use pipes and turning messages off to silently test for a + failure. + +x = %x1035a00a + +%.b : %.c +pipe set mess/nofac/noiden/nosev/notext ; type $^/output=$@ || exit $(x) + + +Runtime issues: + + The OpenVMS C Runtime has a convention for encoding a POSIX exit status into + to OpenVMS exit codes. These status codes will have the hex value of + 0x35a000. OpenVMS exit code may also have a hex value of %x10000000 set on + them. This is a flag to tell DCL not to write out the exit code. + + To convert an OpenVMS encoded POSIX exit status code to the original code + You subtract %x35a000 and any flags from the OpenVMS code and divide it by 8. + + WARNING: Backward-incompatibility! + The make program exit now returns the same encoded POSIX exit code as on + Unix. Previous versions returned the OpenVMS exit status code if that is what + caused the recipe to fail. + TODO: Provide a way for scripts calling make to obtain that OpenVMS status + code. + + Make internally has two error codes, MAKE_FAILURE and MAKE_TROUBLE. These + will have the error "-E-" severity set on exit. + + MAKE_TROUBLE is returned only if the option "-q" or "--question" is used and + has a POSIX value of 1 and an OpenVMS status of %x1035a00a. + + MAKE_FAILURE has a POSIX value of 2 and an OpenVMS status of %x1035a012. + + Output from GNU Make may have single quotes around some values where on + other platforms it does not. Also output that would be in double quotes + on some platforms may show up as single quotes on VMS. + + There may be extra blank lines in the output on VMS. + https://savannah.gnu.org/bugs/?func=detailitem&item_id=41760 + + There may be a "Waiting for unfinished jobs..." show up in the output. + + Error messages generated by Make or Unix utilities may slightly vary from + POSIX platforms. Typically the case may be different. + + When make deletes files, on POSIX platforms it writes out 'rm' and the list + of files. On VMS, only the files are written out, one per line. + TODO: VMS + + There may be extra leading white space or additional or missing whitespace + in the output of recipes. + + GNU Make uses sys$scratch: for the tempfiles that it creates. + + The OpenVMS CRTL library maps /tmp to sys$scratch if the TMP: logical name + does not exist. As the CRTL may use both sys$scratch: and /tmp internally, + if you define the TMP logical name to be different than SYS$SCRATCH:, + you may end up with only some temporary files in TMP: and some in SYS$SCRATCH: + + The default include directory for including other makefiles is + SYS$SYSROOT:[SYSLIB] (I don't remember why I didn't just use + SYS$LIBRARY: instead; maybe it wouldn't work that way). + TODO: A better default may be desired. + + If the device for a file in a recipe does not exist, on OpenVMS an error + message of "stat: : no such device or address" will be output. + + Make ignores success, informational, or warning errors (-S-, -I-, or + -W-). But it will stop on -E- and -F- errors. (unless you do something + to override this in your makefile, or whatever). + + +Unix compatibility features: +---------------------------- + + If the command 'echo' is seen, any single quotes on the line will be + converted to double quotes. + + The variable $(CD) is implemented as a built in Change Directory + command. This invokes the 'builtin_cd' Executing a 'set default' + recipe doesn't do the trick, since it only affects the sub-process + spawned for that command. + + The 'builtin_cd' is generally expected to be on its own line. + The 'builtin_cd' either from the expansion of $(CD) or directly + put in a recipe line will be executed before any other commands in + that recipe line. DCL parameter substitution will not work for the + 'builtin_cd' command. + + Putting a 'builtin_cd' in a pipeline or an IF-THEN line should not be + done because the 'builtin_cd' is always executed + and executed first. The directory change is persistent. + + Unix shell style I/O redirection is supported. You can now write lines like: + "mcr sys$disk:[]program.exe < input.txt > output.txt &> error.txt" + + POSIX shells have ":" as a null command. These are now handled. + https://savannah.gnu.org/bugs/index.php?41761 + + A note on appending the redirected output. A simple mechanism is + implemented to make ">>" work in action lines. In OpenVMS there is no simple + feature like ">>" to have DCL command or program output redirected and + appended to a file. GNU Make for OpenVMS implements the redirection + of ">>" by using a command procedure. + + The current algorithm creates the output file if it does not exist and + then uses the DCL open/append to extend it. SYS$OUTPUT is then directed + to that file. + + The implementation supports only one redirected append output to a file + and that redirection is done before any other commands in that line + are executed, so it redirects all output for that command. + + The older implementation wrote the output to a temporary file in + in sys$scratch: and then attempted to append the file to the existing file. + The temporary file names looked like "CMDxxxxx.". Any time the created + command procedure can not complete, this happens. Pressing CTRL+Y to + abort make is one case. + + In case of CTRL+Y the associated command procedure is left in SYS$SCRATCH:. + The command procedures will be named gnv$make_cmd*.com. + + 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. + + Temporary command files are now deleted in the OpenVMS child termination + handler. That deletes them even if a CTRL+C was pressed. + TODO: Does the previous section about >> leaving files still apply? + + 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. + + +Build Options: + + Added support to have case sensitive targets and dependencies but to + still use case blind file names. This is especially useful for Java + makefiles on VMS: + +.SUFFIXES : +.SUFFIXES : .class .java +.java.class : +javac "$<" +HelloWorld.class : HelloWorld.java + + A new macro WANT_CASE_SENSITIVE_TARGETS in config.h-vms was introduced. + It needs to be enabled to get this feature; default is disabled. + TODO: This should be a run-time setting based on if the process + has been set to case sensitive. + + +Unimplemented functionality: + + 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 OpenVMS does not support running multiple commands simultaneously. + + +Self test failures and todos: +----------------------------- + + The test harness can not handle testing some of the VMS specific modes + because of the features needed for to be set for the Perl to run. + Need to find a way to set the VMS features before running make as a + child. + + GNU Make was not currently translating the OpenVMS encoded POSIX values + returned to it back to the POSIX values. I have temporarily modified the + Perl test script to compensate for it. This should be being handled + internally to Make. + TODO: Verify and update the Perl test script. + + The features/parallelism test was failing. OpenVMS is executing the rules + in sequence not in parallel as this feature was not implemented. + GNU Make on VMS no longer claims it is implemented. + TODO: Implement it. + + Symlink support is not present. Symlinks are supported by OpenVMS 8.3 and + later. + + Error messages should be suppressed with the "-" at the beginning of a line. + On openVMS they were showing up. TODO: Is this still an issue? + + The internal vmsify and unixify OpenVMS to/from UNIX are not handling logical + names correctly. + + +Build instructions: +------------------- + + 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. + +Make a 1st version + $ @makefile.com ! ignore any compiler and/or linker warning + $ copy make.exe 1st-make.exe + + Use the 1st version to generate a 2nd version as a test. + $ mc sys$disk:[]1st-make clean ! ignore any file not found messages + $ mc sys$disk:[]1st-make + + Verify your 2nd version by building Make again. + $ copy make.exe 2nd-make.exe + $ mc sys$disk:[]2nd-make clean + $ mc sys$disk:[]2nd-make + + +Running the tests: +------------------ + + Running the tests on OpenVMS requires the following software to be installed + as most of the tests are Unix oriented. + + * Perl 5.18 or later. + https://sourceforge.net/projects/vmsperlkit/files/ + * GNV 2.1.3 + Updates including a minimum of: + * Bash 4.3.30 + * ld_tools 3.0.2 + * coreutils 8.21 + https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/ + https://sourceforge.net/projects/gnv/files/ + + As the test scripts need to create some foreign commands that persist + after the test is run, it is recommend that either you use a sub-process or + a dedicated login to run the tests. + + To get detailed information for running the tests: + + $ set default [.tests] + $ @run_make_tests help + + Running the script with no parameters will run all the tests. + + After the the test script has been run once in a session, assuming + that you built make in sys$disk:[make], you can redefined the + "bin" logical name as follows: + + $ define bin sys$disk:[make],gnv$gnu:[bin] + + Then you can use Perl to run the scripts. + + $ perl run_make_tests.pl + + +Acknowledgments: +---------------- + +See NEWS. for details of past changes. + + These are the currently known contributors to this port. + + Hartmut Becker + John Malmberg + Michael Gehre + John Eisenbraun + Klaus Kaempf + Mike Moretti + John W. Eaton diff --git a/local/recipes/dev/gnu-make/source/README.W32 b/local/recipes/dev/gnu-make/source/README.W32 new file mode 100644 index 0000000000..7802b7324f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.W32 @@ -0,0 +1,363 @@ +This version of GNU Make has been tested on: + Microsoft Windows 2000/XP/2003/Vista/7/8/10 +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, 4.8.1, +and 4.9.3). + +It also builds with MSVC 2.x, 4.x, 5.x, 6.x, 2005, 2008, 2010, 2012, +2013, and 2015 as well as with .NET 7.x and .NET 2003. + +Building with Guile is supported (tested with Guile 2.0.x). 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 ezwinports site: + + https://sourceforge.net/projects/ezwinports/ + +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. A precompiled 32-bit Windows build of Guile is available from +the ezwinports site mentioned above. + +The Windows port of GNU Make is maintained jointly by various people. +It was originally made by Rob Tulloh. +It is currently maintained by Eli Zaretskii. + + +Do this first, regardless of the build method you choose: +--------------------------------------------------------- + + 1. If you have special requirements, edit config.h.W32 to your liking + (especially the shell-related defines, or HAVE_CASE_INSENSITIVE_FS which + corresponds to './configure --enable-case-insensitive-file-system'). We + don't recommend to define HAVE_CASE_INSENSITIVE_FS, but you may wish to + consider that if you have a lot of files whose names are in upper case, + while Makefile rules are written for lower-case versions. + + If you don't have special requirements no changes are needed. + + +Building with (MinGW-)GCC using build_w32.bat +--------------------------------------------- + + 2. Open a W32 command prompt for your installed (MinGW-)GCC, setup a + correct PATH and other environment variables for it, then execute ... + + .\build_w32.bat gcc + + This produces gnumake.exe in the GccRel directory. + + If you want a version of GNU Make built with debugging enabled, + add the --debug option. Output goes into the GccDebug 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 +--------------------------------------------- + + 2. Open a command shell, then execute ... + + .\build_w32.bat + + This produces a 64bit Release build of gnumake.exe in .\WinRel, using + the compiler found on the %Path%. If no compiler is found, the batch + file will probe your system and choose the newest MSVC version it can + find. + + If you want a 32bit version of GNU Make, add the --x86 option. + + If you want a Debug build of GNU Make, add the --debug option. Output + will go into the .\WinDebug directory. + + The batch file will probe for Guile installation, and will build + gnumake.exe with Guile if it finds it. If Guile is installed, + but you prefer to build GNU Make without Guile support, add the + --without-guile option. + + +Building with (MinGW-)GCC using GNU Make +---------------------------------------- + + 2. If you already have a version of GNU Make available you can use it + to build this version. Open a W32 command prompt for your installed + (MinGW-)GCC, setup a correct PATH and other environment variables + for it, then execute ... + + make -f Basic.mk TOOLCHAIN=gcc + + This produces GccRel\gnumake.exe. + If you want a version of GNU Make built with debugging enabled, + add the TARGET_TYPE=debug option: + + make -f Basic.mk TOOLCHAIN=gcc TARGET_TYPE=debug + + The makefile doesn't support Guile integration. Use build_w32.bat + if you want to build with Guile support. + + +Building with (MSVC++-)cl using GNU Make +---------------------------------------- + + 2. If you already have a version of GNU Make available you can use it + to build this version. Open a W32 command prompt for your installed + (MSVC++-)cl, setup a correct PATH and other environment variables + for it (usually via executing vcvars32.bat or vsvars32.bat from the + cl-installation, or using a corresponding start menu entry from the + cl-installation), then execute ... + + make -f Basic.mk + + This produces an optimized WinRel/gnumake.exe. + If you want a version of GNU Make built with debugging enabled, + add the TARGET_TYPE=debug option: + + make -f Basic.mk TARGET_TYPE=debug + + The makefile doesn't support Guile integration. Use build_w32.bat + if you want to build with Guile support. + + +Running the test suite +---------------------- + + 3. You will need an installation of Perl. Be sure to use a relatively + modern version: older versions will sometimes throw spurious errors. + + To run the suite after building using GNU Make, use: + + make -f Basic.mk check + + Alternatively if you'd like to run tests by hand, use: + + cd tests + .\run_make_tests.bat -make + + I've found seems to want forward-slashes in the path. + For example if building with .\build_w32.bat non-debug, use: + + cd tests + .\run_make_tests.bat -make ../WinRel/gnumake.exe + + I've tested this with the MSYS2 shell and POSIX tools installation + that you get by installing Git for Windows. + + + +------------------- +-- Notes/Caveats -- +------------------- + +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. + + 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). + + 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 (https://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. + +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. + +Support for parallel builds + + Parallel builds (-jN) are supported in this port. The number of + concurrent processes has a hard limit of 4095. + +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. + +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. + +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. + +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: + + 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. + +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"). + + 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: + + subdir/Target: + touch $@ + + 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. + +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. + + 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. + +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. + +Bug reports: + + Please submit bugs via the normal bug reporting mechanism which + is described in the GNU Make manual and the base README. + +------------------------------------------------------------------------------- +Copyright (C) 1996-2022 Free Software 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 . diff --git a/local/recipes/dev/gnu-make/source/README.customs b/local/recipes/dev/gnu-make/source/README.customs new file mode 100644 index 0000000000..c6cf979499 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/README.customs @@ -0,0 +1,112 @@ + -*-indented-text-*- + +GNU Make can utilize the Customs library, distributed with Pmake, to +provide builds distributed across multiple hosts. + +In order to utilize this capability, you must first download and build +the Customs library. It is contained in the Pmake distribution, which +can be obtained at: + + ftp://ftp.icsi.berkeley.edu/pub/ai/stolcke/software/ + +This integration was tested (superficially) with Pmake 2.1.33. + + +BUILDING CUSTOMS +---------------- + +First, build pmake and Customs. You need to build pmake first, because +Customs require pmake to build. Unfortunately, this is not trivial; +please see the pmake and Customs documentation for details. The best +place to look for instructions is in the pmake-2.1.33/INSTALL file. + +Note that the 2.1.33 Pmake distribution comes with a set of patches to +GNU Make, distributed in the pmake-2.1.33/etc/gnumake/ directory. These +patches are based on GNU Make 3.75 (there are patches for earlier +versions of GNU Make, also). The parts of this patchfile which relate +directly to Customs support have already been incorporated into this +version of GNU Make, so you should _NOT_ apply the patch file. + +However, there are a few non-Customs specific (as far as I could tell) +changes here which are not incorporated (for example, the modification +to try expanding -lfoo to libfoo.so). If you rely on these changes +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). + + +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' +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. + +Run make (or use build.sh) normally to build GNU Make as described in +the INSTALL file. + +See the documentation for Customs for information on starting and +configuring Customs. + + +INVOKING CUSTOMS-IZED GNU MAKE +----------------------------- + +One thing you should be aware of is that the default build environment +for Customs requires root permissions. Practically, this means that GNU +make must be installed setuid root to use Customs. + +If you don't want to do this, you can build Customs such that root +permissions are not necessary. Andreas Stolcke +writes: + + > pmake, gnumake or any other customs client program is not required to + > be suid root if customs was compiled WITHOUT the USE_RESERVED_PORTS + > option in customs/config.h. Make sure the "customs" service in + > /etc/services is defined accordingly (port 8231 instead of 1001). + + > Not using USE_RESERVED_PORTS means that a user with programming + > skills could impersonate another user by writing a fake customs + > client that pretends to be someone other than himself. See the + > discussion in etc/SECURITY. + + +PROBLEMS +-------- + +SunOS 4.1.x: + The customs/sprite.h header file #includes the header + files; this conflicts with GNU Make's configuration so you'll get a + compile error if you use GCC (or any other ANSI-capable C compiler). + + I commented out the #include in sprite.h:107: + + #if defined(sun) || defined(ultrix) || defined(hpux) || defined(sgi) + /* #include */ + #else + + YMMV. + + +------------------------------------------------------------------------------- +Copyright (C) 1998-2022 Free Software 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 . diff --git a/local/recipes/dev/gnu-make/source/SCOPTIONS b/local/recipes/dev/gnu-make/source/SCOPTIONS new file mode 100644 index 0000000000..758f82f93e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/SCOPTIONS @@ -0,0 +1,13 @@ +ERRORREXX +OPTIMIZE +NOVERSION +OPTIMIZERTIME +OPTIMIZERALIAS +DEFINE HAVE_CONFIG_H +DEFINE INCLUDEDIR="include:" +DEFINE LIBDIR="lib:" +DEFINE NO_ALLOCA +DEFINE NO_ARCHIVES +IGNORE=161 +IGNORE=100 +STARTUP=cres diff --git a/local/recipes/dev/gnu-make/source/aclocal.m4 b/local/recipes/dev/gnu-make/source/aclocal.m4 new file mode 100644 index 0000000000..36981d7d12 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/aclocal.m4 @@ -0,0 +1,1747 @@ +# generated automatically by aclocal 1.18.1 -*- Autoconf -*- + +# Copyright (C) 1996-2025 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. + +# 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. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.73],, +[m4_warning([this file was generated for autoconf 2.73. +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'.])]) + +# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- +# serial 16 (pkgconf) + +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, see . +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.2]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +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 +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurrence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl 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]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +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 +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +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 +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl 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 $2]) + +_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( +[A pkg-config implementation 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 a pkg-config implementation, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------ +dnl +dnl Prepare a "--with-" configure option using the lowercase +dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and +dnl PKG_CHECK_MODULES in a single macro. +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],[$3],[$4])], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +])dnl PKG_WITH_MODULES + +dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ----------------------------------------------- +dnl +dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES +dnl check._[VARIABLE-PREFIX] is exported as make variable. +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +])dnl PKG_HAVE_WITH_MODULES + +dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------------------ +dnl +dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make +dnl and preprocessor variable. +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +])dnl PKG_HAVE_DEFINE_WITH_MODULES + +# Copyright (C) 2002-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.18' +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.18.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION 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.18.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_COND_IF -*- Autoconf -*- + +# Copyright (C) 2008-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_COND_IF +# _AM_COND_ELSE +# _AM_COND_ENDIF +# -------------- +# These macros are only used for tracing. +m4_define([_AM_COND_IF]) +m4_define([_AM_COND_ELSE]) +m4_define([_AM_COND_ENDIF]) + +# AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) +# --------------------------------------- +# If the shell condition COND is true, execute IF-TRUE, otherwise execute +# IF-FALSE. Allow automake to learn about conditional instantiating macros +# (the AC_CONFIG_FOOS). +AC_DEFUN([AM_COND_IF], +[m4_ifndef([_AM_COND_VALUE_$1], + [m4_fatal([$0: no such condition "$1"])])dnl +_AM_COND_IF([$1])dnl +if test -z "$$1_TRUE"; then : + m4_n([$2])[]dnl +m4_ifval([$3], +[_AM_COND_ELSE([$1])dnl +else + $3 +])dnl +_AM_COND_ENDIF([$1])dnl +fi[]dnl +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2025 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. + + +# 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, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +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 -*- + +# Copyright (C) 1999-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) + + +# Copyright (C) 1996-2025 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. + +AC_DEFUN([AM_WITH_DMALLOC], +[AC_MSG_CHECKING([if malloc debugging is wanted]) +AC_ARG_WITH([dmalloc], +[AS_HELP_STRING([--with-dmalloc], + [use dmalloc, as in http://www.dmalloc.com])], +[if test "$withval" = yes; then + AC_MSG_RESULT([yes]) + AC_DEFINE([WITH_DMALLOC], [1], + [Define if using the dmalloc debugging malloc package]) + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + AC_MSG_RESULT([no]) +fi], [AC_MSG_RESULT([no])]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2025 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. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], + [_AM_PROG_TAR([ustar])])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + +AC_REQUIRE([_AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +AC_REQUIRE([_AM_PROG_RM_F]) +AC_REQUIRE([_AM_PROG_XARGS_N]) + +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2025 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. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. +AC_DEFUN([AM_MAKE_INCLUDE], +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +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)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2022-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_RM_F +# --------------- +# Check whether 'rm -f' without any arguments works. +# https://bugs.gnu.org/10828 +AC_DEFUN([_AM_PROG_RM_F], +[am__rm_f_notfound= +AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) +AC_SUBST(am__rm_f_notfound) +]) + +# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SLEEP_FRACTIONAL_SECONDS +# ---------------------------- +AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl +AC_CACHE_CHECK([whether sleep supports fractional seconds], + am_cv_sleep_fractional_seconds, [dnl +AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], + [am_cv_sleep_fractional_seconds=no]) +])]) + +# _AM_FILESYSTEM_TIMESTAMP_RESOLUTION +# ----------------------------------- +# Determine the filesystem's resolution for file modification +# timestamps. The coarsest we know of is FAT, with a resolution +# of only two seconds, even with the most recent "exFAT" extensions. +# The finest (e.g. ext4 with large inodes, XFS, ZFS) is one +# nanosecond, matching clock_gettime. However, it is probably not +# possible to delay execution of a shell script for less than one +# millisecond, due to process creation overhead and scheduling +# granularity, so we don't check for anything finer than that. (See below.) +AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl +AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) +AC_CACHE_CHECK([filesystem timestamp resolution], + am_cv_filesystem_timestamp_resolution, [dnl +# Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `[ls -t conftest.ts[12]]` && + { + test "$[]*" != "X conftest.ts1 conftest.ts2" || + test "$[]*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # 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_ECHO_UNQUOTED( + ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], + [AS_MESSAGE_LOG_FD]) + AC_MSG_FAILURE([ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment.]) +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$[]2" = conftest.ts3 && + test "$[]3" = conftest.ts2 && + test "$[]4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) +])]) + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) +# This check should not be cached, as it may vary across builds of +# different projects. +AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[]*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$[]2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +AC_MSG_RESULT([$am_build_env_is_sane]) +if test "$am_build_env_is_sane" = no; then + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl + ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! +]) +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SILENT_RULES +# ---------------- +# Enable less verbose build rules support. +AC_DEFUN([_AM_SILENT_RULES], +[AM_DEFAULT_VERBOSITY=1 +AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +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]) +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 +dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls +dnl to AM_SILENT_RULES to change the default value. +AC_CONFIG_COMMANDS_PRE([dnl +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +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 +])dnl +]) + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Set the default verbosity level to DEFAULT ("yes" being less verbose, "no" or +# empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_REQUIRE([_AM_SILENT_RULES]) +AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])m4_newline +dnl We intentionally force a newline after the assignment, since a) nothing +dnl good can come of more text following, and b) that was the behavior +dnl before 1.17. See https://bugs.gnu.org/72267. +]) + +# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test x$am_uid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) + elif test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test x$gm_gid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) + elif test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +# Copyright (C) 2022-2025 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_XARGS_N +# ---------------- +# Check whether 'xargs -n' works. It should work everywhere, so the fallback +# is not optimized at all as we never expect to use it. +AC_DEFUN([_AM_PROG_XARGS_N], +[AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl +AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) +AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl + am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' +])dnl +AC_SUBST(am__xargs_n) +]) + +m4_include([m4/00gnulib.m4]) +m4_include([m4/acinclude.m4]) +m4_include([m4/alloca.m4]) +m4_include([m4/asm-underscore.m4]) +m4_include([m4/dospaths.m4]) +m4_include([m4/eaccess.m4]) +m4_include([m4/extensions.m4]) +m4_include([m4/findprog-in.m4]) +m4_include([m4/getloadavg.m4]) +m4_include([m4/gettext.m4]) +m4_include([m4/gnulib-common.m4]) +m4_include([m4/gnulib-comp.m4]) +m4_include([m4/host-cpu-c-abi.m4]) +m4_include([m4/iconv.m4]) +m4_include([m4/intlmacosx.m4]) +m4_include([m4/largefile.m4]) +m4_include([m4/lib-ld.m4]) +m4_include([m4/lib-link.m4]) +m4_include([m4/lib-prefix.m4]) +m4_include([m4/longlong.m4]) +m4_include([m4/nls.m4]) +m4_include([m4/po.m4]) +m4_include([m4/progtest.m4]) +m4_include([m4/sig_atomic_t.m4]) +m4_include([m4/stdbool.m4]) +m4_include([m4/warn-on-use.m4]) +m4_include([m4/year2038.m4]) +m4_include([m4/zzgnulib.m4]) diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/output.0 b/local/recipes/dev/gnu-make/source/autom4te.cache/output.0 new file mode 100644 index 0000000000..83bbf2e660 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/output.0 @@ -0,0 +1,17350 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.73 for GNU Make 4.4. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, +@%:@ Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# 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 +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +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 \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in @%:@( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || 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'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in @%:@( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + 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 +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf '%s\n' "$0: This script requires a shell more modern than all" + printf '%s\n' "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." + else + printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_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 +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$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 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf '%s\n' "$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). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# 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` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_CONFIG_STATUS= +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +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 +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ECHO_T +ECHO_N +ECHO_C +target_alias +host_alias +build_alias +LIBS +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --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" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # 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'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` + 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" ;; + *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +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" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +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 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --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 + --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 + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/make@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --disable-largefile omit support for large files + --disable-year2038 omit support for timestamps past the year 2038 + --enable-cross-guesses={conservative|risky} + specify policy for cross-compilation guesses + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + --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 + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --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-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 + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + 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. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.73 + +Copyright (C) 2026 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES +@%:@ ------------------------------------------- +@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache +@%:@ variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) eval "$3=yes" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_type + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to run conftest.@S|@ac_ext, and return whether this succeeded. Assumes that +@%:@ executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: program exited with status $ac_status" >&5 + printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +@%:@ ------------------------------------------------------------------ +@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +@%:@ accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} @%:@ ac_fn_check_decl + +@%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +@%:@ ---------------------------------------------------- +@%:@ Tries to find if the field MEMBER exists in type AGGR, after including +@%:@ INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) eval "$4=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$4 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf '%s\n' "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# Dump the cache to stdout. It can be in a pipe (this is a requirement). +ac_cache_dump () +{ + # The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) +} + +# Print debugging info to stdout. +ac_dump_debugging_info () +{ + echo + + printf '%s\n' "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + ac_cache_dump + echo + + printf '%s\n' "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf '%s\n' "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + fi + + if test -s confdefs.h; then + printf '%s\n' "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf '%s\n' "$as_me: caught signal $ac_signal" + printf '%s\n' "$as_me: exit $exit_status" +} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. +ac_exit_trap () +{ + exit_status= + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + ac_dump_debugging_info >&5 + eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +} + +trap 'ac_exit_trap $?' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf '%s\n' "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf '%s\n' "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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 + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf '%s\n' "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf '%s\n' "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C23 (global declarations) +ac_c_conftest_c23_globals=' +/* Does the compiler advertise conformance to C17 or earlier? + Although GCC 14 does not do that, even with -std=gnu23, + it is close enough, and defines __STDC_VERSION == 202000L. */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L +# error "Compiler advertises conformance to C17 or earlier" +#endif + +// Check alignas. +char alignas (double) c23_aligned_as_double; +char alignas (0) c23_no_special_alignment; +extern char c23_aligned_as_int; +char alignas (0) alignas (int) c23_aligned_as_int; + +// Check alignof. +enum +{ + c23_int_alignment = alignof (int), + c23_int_array_alignment = alignof (int[100]), + c23_char_alignment = alignof (char) +}; +static_assert (0 < -alignof (int), "alignof is signed"); + +int function_with_unnamed_parameter (int) { return 0; } + +void c23_noreturn (); + +/* Test parsing of string and char UTF-8 literals (including hex escapes). + The parens pacify GCC 15. */ +bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); + +bool check_that_bool_works = true | false | !nullptr; +#if !true +# error "true does not work in #if" +#endif +#if false +#elifdef __STDC_VERSION__ +#else +# error "#elifdef does not work" +#endif + +#ifndef __has_c_attribute +# error "__has_c_attribute not defined" +#endif + +#ifndef __has_include +# error "__has_include not defined" +#endif + +#define LPAREN() ( +#define FORTY_TWO(x) 42 +#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) +static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); + +static_assert (0b101010 == 42); +static_assert (0B101010 == 42); +static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); +static_assert (0.500'\''000'\''000 == 0.5); + +enum unsignedish : unsigned int { uione = 1 }; +static_assert (0 < -uione); + +#include +constexpr nullptr_t null_pointer = nullptr; + +static typeof (1 + 1L) two () { return 2; } +static long int three () { return 3; } +' + +# Test code for whether the C compiler supports C23 (body of main). +ac_c_conftest_c23_main=' + { + label_before_declaration: + int arr[10] = {}; + if (arr[0]) + goto label_before_declaration; + if (!arr[0]) + goto label_at_end_of_block; + label_at_end_of_block: + } + ok |= !null_pointer; + ok |= two != three; +' + +# Test code for whether the C compiler supports C23 (complete). +ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} + +int +main (int, char **) +{ + int ok = 0; + ${ac_c_conftest_c23_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Do not test the value of __STDC__, because some compilers define it to 0 + or do not define it, while otherwise adequately conforming. */ + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (char **p, int i) +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +/* Does the compiler advertise C99 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr, and "aND" is used instead of "and" to work around +// GCC bug 40564 which is irrelevant here. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, aND third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + const char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + static struct incomplete_array *volatile incomplete_array_pointer; + struct incomplete_array *ia = incomplete_array_pointer; + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + // Do not test for VLAs, as some otherwise-conforming compilers lack them. + // C code should instead use __STDC_NO_VLA__; see Autoconf manual. + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || ni.number != 58); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +/* Does the compiler advertise C11 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +gt_needs="$gt_needs " +as_fn_append ac_header_c_list " vfork.h vfork_h HAVE_VFORK_H" +as_fn_append ac_func_c_list " fork HAVE_FORK" +as_fn_append ac_func_c_list " vfork HAVE_VFORK" + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath config.guess config.sub compile missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf '%s\n' "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf '%s\n' "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w= + for ac_val in x $ac_old_val; do + ac_old_val_w="$ac_old_val_w $ac_val" + done + ac_new_val_w= + for ac_val in x $ac_new_val; do + ac_new_val_w="$ac_new_val_w $ac_val" + done + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.18' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in @%:@(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF/1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF/1 since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf '%s\n' "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in @%:@( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf '%s\n' "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # 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". + printf '%s\n' ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf '%s\n' "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf '%s\n' "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in @%:@( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf '%s\n' "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf '%s\n' "$STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf '%s\n' "$ac_ct_STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + 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 ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf '%s\n' "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk 'busybox awk' +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf '%s\n' "$AWK" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf '%s\n' "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @printf '%s\n' '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# 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;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + SET_MAKE= +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +@%:@ Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if printf '%s\n' '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 ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf '%s\n' "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in @%:@( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in @%:@( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf '%s\n' "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in @%:@( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf '%s\n' "@%:@define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf '%s\n' "@%:@define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# 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}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf '%s\n' "$am_cv_prog_tar_ustar" >&6; } + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + + + + + + +# Checks for programs. + + + + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in @%:@( + '0:this is the am__doit target') : + case $s in @%:@( + BSD) : + am__include='.include' am__quote='"' ;; @%:@( + *) : + am__include='include' am__quote='' ;; +esac ;; @%:@( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf '%s\n' "${_am_result}" >&6; } + +@%:@ Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +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= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in @%:@( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf '%s\n' "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf '%s\n' "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf '%s\n' "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf '%s\n' "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf '%s\n' "$gl_cv_compiler_clang" >&6; } + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf '%s\n' "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf '%s\n' "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else case e in @%:@( + e) ac_cv_safe_to_define___extensions__=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf '%s\n' "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf '%s\n' "$ac_cv_should_define__xopen_source" >&6; } + + printf '%s\n' "@%:@define _ALL_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _COSMO_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _GNU_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf '%s\n' "@%:@define _NETBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _OPENBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf '%s\n' "@%:@define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf '%s\n' "@%:@define _MINIX 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h + +else case e in @%:@( + e) MINIX= ;; +esac +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf '%s\n' "@%:@define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf '%s\n' "@%:@define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf '%s\n' "$gl_cv_compiler_clang" >&6; } + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Configure gnulib + + + # 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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf '%s\n' "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`printf '%s\n' "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf '%s\n' "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`printf '%s\n' "$host_os" | sed 's/ /-/g'`;; esac + + + + + + + case "$host_os" in + openbsd*) + +printf '%s\n' "@%:@define _ISOC11_SOURCE 1" >>confdefs.h + + ;; + esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf '%s\n' "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 +printf %s "checking for Minix Amsterdam compiler... " >&6; } +if test ${gl_cv_c_amsterdam_compiler+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else case e in @%:@( + e) gl_cv_c_amsterdam_compiler=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf '%s\n' "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf '%s\n' "$ac_ct_AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +@%:@ Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO" +then : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf '%s\n' "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf '%s\n' "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +printf '%s\n' "@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h +;; +esac +rm -rf conftest* + case $ac_cv_sys_file_offset_bits in @%:@( + unknown) : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _LARGE_FILES +#define _LARGE_FILES 1 +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +printf '%s\n' "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +printf '%s\n' "@%:@define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h +;; +esac +rm -rf conftest* ;; @%:@( + 64) : + + @%:@ Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; +fi + + if test "$enable_year2038" != no +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for time_t past the year 2038" >&5 +printf %s "checking for time_t past the year 2038... " >&6; } +if test ${gl_cv_type_time_t_y2038+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else case e in @%:@( + e) gl_cv_type_time_t_y2038=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_y2038" >&5 +printf '%s\n' "$gl_cv_type_time_t_y2038" >&6; } + if test "$gl_cv_type_time_t_y2038" = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit time_t with _TIME_BITS=64" >&5 +printf %s "checking for 64-bit time_t with _TIME_BITS=64... " >&6; } +if test ${gl_cv_type_time_t_bits_macro+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else case e in @%:@( + e) gl_cv_type_time_t_bits_macro=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_bits_macro" >&5 +printf '%s\n' "$gl_cv_type_time_t_bits_macro" >&6; } + if test "$gl_cv_type_time_t_bits_macro" = yes; then + +printf '%s\n' "@%:@define _TIME_BITS 64" >>confdefs.h + + +printf '%s\n' "@%:@define _FILE_OFFSET_BITS 64" >>confdefs.h + + gl_cv_type_time_t_y2038=yes + fi + fi + if test $gl_cv_type_time_t_y2038 = no; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _USE_32BIT_TIME_T + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "The 'time_t' type stops working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags. +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) # If not cross-compiling and says we should check, + # and 'touch' works with a large timestamp, then evidently wider time_t + # is desired and supported, so fail and ask the builder to fix the + # problem. Otherwise, just warn the builder. + + if test "$gl_warned_about_y2038" != yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&5 +printf '%s\n' "$as_me: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&2;} + gl_warned_about_y2038=yes + fi + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +fi + ;; @%:@( + *) : + ;; +esac +fi + + + + case "$host_os" in + mingw*) + +printf '%s\n' "@%:@define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h + + ;; + esac + + + + # Pre-early section. + + + + # Code from module alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + @%:@ Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf '%s\n' "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else case e in @%:@( + e) gl_cross_guesses=conservative ;; +esac +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +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 case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else case e in @%:@( + e) ac_cv_working_alloca_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf '%s\n' "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_alloca_works=$ac_cv_working_alloca_h +if test "$ac_cv_func_alloca_works" != yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf '%s\n' "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf '%s\n' "@%:@define C_ALLOCA 1" >>confdefs.h + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + 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 (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else case e in @%:@( + e) ac_cv_c_stack_direction=-1 ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf '%s\n' "$ac_cv_c_stack_direction" >&6; } +printf '%s\n' "@%:@define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define eaccess access" >>confdefs.h + ;; +esac +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5 +printf %s "checking for $CC options to detect undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in @%:@( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf '%s\n' "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in @%:@( + 'cannot detect') : + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See 'config.log' for more details" "$LINENO" 5; } ;; @%:@( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; @%:@( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5 +printf %s "checking for $CC options to ignore future-version functions... " >&6; } +if test ${ac_cv_c_future_darwin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_compile_saved="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if ! (defined __APPLE__ && defined __MACH__) + #error "-Werror=unguarded-availability-new not needed here" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new' +else case e in @%:@( + e) ac_cv_c_future_darwin_options='none needed' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$ac_compile_saved" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5 +printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; } + case $ac_cv_c_future_darwin_options in @%:@( + 'none needed') : + ac_c_future_darwin_options='' ;; @%:@( + *) : + ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "MicrosoftCompiler" >/dev/null 2>&1 +then : + rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if test -f conftest.o; then + gl_asmext='s' + gl_c_asm_opt='-S' + else + gl_asmext='asm' + gl_c_asm_opt='-c -Fa' + fi + rm -f conftest* + +else case e in @%:@( + e) gl_asmext='s' + gl_c_asm_opt='-S' + ;; +esac +fi +rm -rf conftest* + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=x86_64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=i386 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=arm64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=hppa ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=ia64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else case e in @%:@( + e) # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=mips ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else case e in @%:@( + e) cpu=riscv32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else case e in @%:@( + e) main_abi=ilp32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else case e in @%:@( + e) float_abi='' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=s390 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=sparc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf '%s\n' "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else case e in @%:@( + e) gl_cv_type_off_t_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf '%s\n' "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else case e in @%:@( + e) gl_cv_member_st_size_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf '%s\n' "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf '%s\n' "@%:@define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C99 requires bool, true, and false to be macros, + C23 and C++11 overrule that, so do not test for that. + Although C99 requires __bool_true_false_are_defined and + _Bool, C23 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else case e in @%:@( + e) ac_cv_header_stdbool_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf '%s\n' "$ac_cv_header_stdbool_h" >&6; } + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf '%s\n' "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else case e in @%:@( + e) gl_cv_rpl_alloca=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf '%s\n' "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else case e in @%:@( + e) gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char elf_begin (void); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else case e in @%:@( + e) ac_cv_lib_elf_elf_begin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf '%s\n' "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kvm_open (void); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else case e in @%:@( + e) ac_cv_lib_kvm_kvm_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf '%s\n' "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_util_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_getloadavg_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else case e in @%:@( + e) LIBS=$gl_getloadavg_LIBS ;; +esac +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kstat_open (void); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else case e in @%:@( + e) ac_cv_lib_kstat_kstat_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf '%s\n' "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char perfstat_cpu_total (void); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else case e in @%:@( + e) ac_cv_lib_perfstat_perfstat_cpu_total=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf '%s\n' "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define DGUX 1" >>confdefs.h + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dg_sys_info (void); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else case e in @%:@( + e) ac_cv_lib_dgc_dg_sys_info=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf '%s\n' "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi ;; +esac +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else case e in @%:@( + e) HAVE_DECL_GETLOADAVG=0 ;; +esac +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + 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" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + + +printf '%s\n' "@%:@define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf '%s\n' "@%:@define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf '%s\n' "@%:@define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5 +printf %s "checking if system libc has GNU glob... " >&6; } +if test ${make_cv_sys_gnu_glob+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else case e in @%:@( + e) make_cv_sys_gnu_glob=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf '%s\n' "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + 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 (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else case e in @%:@( + e) ac_cv_dos_paths=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf '%s\n' "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + case "$GL_GENERATE_STDBOOL_H" in + false) STDBOOL_H='' ;; + true) + if test -z "$STDBOOL_H"; then + STDBOOL_H="${gl_source_base_prefix}stdbool.h" + fi + ;; + *) echo "*** GL_GENERATE_STDBOOL_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE='#' + fi + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi ;; +esac +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf '%s\n' "$PERL" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + +# Specialized system macros + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else case e in @%:@( + e) ac_cv_c_bigendian=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf '%s\n' "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf '%s\n' "@%:@define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf '%s\n' "@%:@define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf '%s\n' "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + @%:@ Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else case e in @%:@( + e) USE_NLS=yes ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf '%s\n' "$MSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf '%s\n' "$GMSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf '%s\n' "$XGETTEXT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf '%s\n' "$MSGMERGE" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +@%:@ Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else case e in @%:@( + e) with_gnu_ld=no ;; +esac +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf '%s\n' "$LD" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf '%s\n' "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf '%s\n' "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + 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+y} +then : + enableval=$enable_rpath; : +else case e in @%:@( + e) enable_rpath=yes ;; +esac +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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_TRADITIONAL "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else case e in @%:@( + e) gl_cv_solaris_64bit=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf '%s\n' "$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" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else case e in @%:@( + e) gt_cv_func_CFPreferencesCopyAppValue=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf '%s\n' "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf '%s\n' "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else case e in @%:@( + e) gt_cv_func_CFLocaleCopyCurrent=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf '%s\n' "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf '%s\n' "@%:@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 + + + + + + + LIBINTL= + 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 + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libc=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf '%s\n' "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* 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 ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* 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 ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#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 ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#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)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf '%s\n' "$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 + +printf '%s\n' "@%:@define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf '%s\n' "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libintl=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + 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 +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + fi + + 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 + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + 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 + +printf '%s\n' "@%:@define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf '%s\n' "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf '%s\n' "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf '%s\n' "@%:@define HAVE_GETTEXT 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (void); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else case e in @%:@( + e) ac_cv_search_strerror=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf '%s\n' "$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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getpwnam (void); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else case e in @%:@( + e) ac_cv_search_getpwnam=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf '%s\n' "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf '%s\n' "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else case e in @%:@( + e) eval "$as_ac_Header=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$as_ac_Header + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +@%:@define `printf '%s\n' "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else case e in @%:@( + e) ac_cv_header_stat_broken=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf '%s\n' "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf '%s\n' "@%:@define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_FCNTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRING_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default" +if test "x$ac_cv_header_spawn_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SPAWN_H 1" >>confdefs.h + +fi + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* 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; + if (s) return 0; + } + { /* Derived from code rejected by Sun C 1.0 and similar vintage. */ + int x[] = {25, 17}; + typedef int const *iptr; + iptr foo = &x[0]; + ++foo; + if (!*foo) return 0; + } + { /* IBM 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]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in @%:@( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf '%s\n' "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf '%s\n' "@%:@define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define uid_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define gid_t int" >>confdefs.h + ;; +esac +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" = xyes +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else case e in @%:@( + e) ac_pid_type='__int64' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf '%s\n' "@%:@define pid_t $ac_pid_type" >>confdefs.h + + ;; +esac +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define off_t long int" >>confdefs.h + ;; +esac +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 case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define ssize_t int" >>confdefs.h + ;; +esac +fi + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes +then : + : +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_long_long_int=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" +if test "x$ac_cv_type_intmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_INTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_long_long_int = yes \ + && ac_type='long long int' \ + || ac_type='long int' + +printf '%s\n' "@%:@define intmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_UINTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf '%s\n' "@%:@define uintmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else case e in @%:@( + e) +printf '%s\n' "@%:@define sig_atomic_t int" >>confdefs.h + ;; +esac +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # 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_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. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf '%s\n' "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf '%s\n' "@%:@define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +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.beam conftest.$ac_ext + +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf '%s\n' "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else case e in @%:@( + e) val=0 ;; +esac +fi + +printf '%s\n' "@%:@define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +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. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in @%:@( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf '%s\n' "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf '%s\n' "@%:@define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return 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 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf '%s\n' "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf '%s\n' "@%:@define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf '%s\n' "@%:@define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf '%s\n' "@%:@define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf '%s\n' "@%:@define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf '%s\n' "@%:@define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf '%s\n' "@%:@define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf '%s\n' "@%:@define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf '%s\n' "@%:@define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf '%s\n' "@%:@define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# 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_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By R. Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else case e in @%:@( + e) ac_cv_func_fork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf '%s\n' "$ac_cv_func_fork_works" >&6; } + +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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf '%s\n' "$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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* 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 , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + 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 (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + 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); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _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; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* 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 +else case e in @%:@( + e) ac_cv_func_vfork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf '%s\n' "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf '%s\n' "@%:@define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_strcoll_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_strcoll_works=no ;; + esac +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else case e in @%:@( + e) ac_cv_func_strcoll_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf '%s\n' "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf '%s\n' "@%:@define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else case e in @%:@( + e) ac_cv_func_closedir_void=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf '%s\n' "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf '%s\n' "@%:@define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +@%:@ Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +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 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf '%s\n' "$PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +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 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$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 +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf '%s\n' "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } + +if test -n "$GUILE_CFLAGS"; then + pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 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" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "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-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "A pkg-config implementation 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. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get a pkg-config implementation, see . +See 'config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf '%s\n' "@%:@define HAVE_GUILE 1" >>confdefs.h + +else case e in @%:@( + e) have_guile=no ;; +esac +fi + + if test "$have_guile" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else case e in @%:@( + e) have_guile=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf '%s\n' "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +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 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else case e in @%:@( + e) make_cv_union_wait=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf '%s\n' "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf '%s\n' "@%:@define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + +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+y} +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 + +cf_test_netlibs=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf '%s\n' "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 +printf %s "checking for gethostname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_socket_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else case e in @%:@( + e) ac_cv_lib_inet_main=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf '%s\n' "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +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" = xyes +then : + printf '%s\n' "@%:@define HAVE_SOCKET 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +printf %s "checking for socket in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else case e in @%:@( + e) ac_cv_lib_socket_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf '%s\n' "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else case e in @%:@( + e) ac_cv_lib_bsd_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf '%s\n' "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +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" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +printf %s "checking for gethostbyname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + +done + ;; +esac +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$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" +else case e in @%:@( + e) with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes ;; +esac +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +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+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf '%s\n' "@%:@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+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else case e in @%:@( + e) make_cv_job_server="yes" ;; +esac +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else case e in @%:@( + e) has_wait_nohang=yes ;; +esac +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else case e in @%:@( + e) make_cv_sa_restart=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf '%s\n' "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf '%s\n' "@%:@define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in @%:@( + */no/*) : + make_cv_job_server=no ;; @%:@( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in @%:@( + os2*|mingw*) : + make_cv_job_server=yes ;; @%:@( + *) : + ;; +esac + +# 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 ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +@%:@ Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else case e in @%:@( + e) make_cv_load="yes" ;; +esac +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else case e in @%:@( + e) ac_cv_search_dlopen=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf '%s\n' "$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 case e in @%:@( + e) make_cv_load= ;; +esac +fi + + +fi + +case /$make_cv_load/$user_load/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# 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 : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "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 : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "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 : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf '%s\n' "@%:@define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +@%:@ Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else case e in @%:@( + e) make_cv_posix_spawn="yes" ;; +esac +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf '%s\n' "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else case e in @%:@( + e) make_cv_path_sccs_get=get ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf '%s\n' "$make_cv_path_sccs_get" >&6; } + +printf '%s\n' "@%:@define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +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. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) make_cv_sys_get_minus_G=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf '%s\n' "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf '%s\n' "@%:@define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf '%s\n' "@%:@define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in @%:@( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf '%s\n' "@%:@define WINDOWS32 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; @%:@( + *) : + ;; +esac + + +printf '%s\n' "@%:@define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf '%s\n' "@%:@define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf '%s\n' "@%:@define MK_CONFIGURE 1" >>confdefs.h + + +# 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 + + +# Allow building with dmalloc +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +@%:@ Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +printf '%s\n' "@%:@define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi + + + +# 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 + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in @%:@( + ""|n|no|y|ye|yes) : + : ;; @%:@( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else case e in @%:@( + e) 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 + ;; +esac +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 + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +ac_cache_dump | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf '%s\n' "$as_me: updating cache $cache_file" >&6;} + 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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf '%s\n' "done" >&6; } +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +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 + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + 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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +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. +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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +case $CONFIG_STATUS in @%:@( + -*) : + CONFIG_STATUS=./$CONFIG_STATUS ;; @%:@( + */*) : + ;; @%:@( + *) : + CONFIG_STATUS=./$CONFIG_STATUS ;; +esac + +ac_write_fail=0 +ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$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 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ------------------------------------- ## +## Main body of "$CONFIG_STATUS" script. ## +## ------------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.73, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2026 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || { + awk '' >"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf '%s\n' "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf '%s\n' "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf '%s\n' "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +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 + shift + \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + printf '%s\n' "$ac_log" +} >&5 + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # 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%}" + + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap '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 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || 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. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final ':' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo 'cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1' && + printf '%s\n' 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + printf '%s\n' "$ac_subst_files" | sed 's/.*/F@<:@"&"@:>@="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >"$CONFIG_STATUS" || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$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 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[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_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 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >"$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + suffix = P[macro] D[macro] + while (suffix ~ /[\t ]$/) { + suffix = substr(suffix, 1, length(suffix) - 1) + } + # Preserve the white space surrounding the "#". + print prefix "define", macro suffix + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$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 ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf '%s\n' "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf '%s\n' "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $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' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf '%s\n' "$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 +printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) 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 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf '%s\n' "/* $configure_input */" >&1 \ + && 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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf '%s\n' "/* $configure_input */" >&1 \ + && 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" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf '%s\n' "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf '%s\n' "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in @%:@( + *\'*) : + eval set x "$CONFIG_FILES" ;; @%:@( + *) : + set x $CONFIG_FILES ;; @%:@( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf '%s\n' "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See 'config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # 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" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment 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 assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_CONFIG_STATUS= + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + case $CONFIG_STATUS in @%:@( + -*) : + ac_no_opts=-- ;; @%:@( + *) : + ac_no_opts= ;; +esac + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || + ac_cs_success=false + 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 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/output.1 b/local/recipes/dev/gnu-make/source/autom4te.cache/output.1 new file mode 100644 index 0000000000..83bbf2e660 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/output.1 @@ -0,0 +1,17350 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.73 for GNU Make 4.4. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, +@%:@ Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# 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 +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +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 \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in @%:@( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || 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'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in @%:@( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + 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 +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf '%s\n' "$0: This script requires a shell more modern than all" + printf '%s\n' "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." + else + printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_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 +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$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 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf '%s\n' "$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). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# 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` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_CONFIG_STATUS= +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +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 +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ECHO_T +ECHO_N +ECHO_C +target_alias +host_alias +build_alias +LIBS +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --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" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # 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'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` + 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" ;; + *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +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" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +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 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --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 + --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 + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/make@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --disable-largefile omit support for large files + --disable-year2038 omit support for timestamps past the year 2038 + --enable-cross-guesses={conservative|risky} + specify policy for cross-compilation guesses + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + --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 + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --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-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 + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + 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. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.73 + +Copyright (C) 2026 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES +@%:@ ------------------------------------------- +@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache +@%:@ variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) eval "$3=yes" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_type + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to run conftest.@S|@ac_ext, and return whether this succeeded. Assumes that +@%:@ executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: program exited with status $ac_status" >&5 + printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +@%:@ ------------------------------------------------------------------ +@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +@%:@ accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} @%:@ ac_fn_check_decl + +@%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +@%:@ ---------------------------------------------------- +@%:@ Tries to find if the field MEMBER exists in type AGGR, after including +@%:@ INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) eval "$4=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$4 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf '%s\n' "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# Dump the cache to stdout. It can be in a pipe (this is a requirement). +ac_cache_dump () +{ + # The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) +} + +# Print debugging info to stdout. +ac_dump_debugging_info () +{ + echo + + printf '%s\n' "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + ac_cache_dump + echo + + printf '%s\n' "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf '%s\n' "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + fi + + if test -s confdefs.h; then + printf '%s\n' "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf '%s\n' "$as_me: caught signal $ac_signal" + printf '%s\n' "$as_me: exit $exit_status" +} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. +ac_exit_trap () +{ + exit_status= + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + ac_dump_debugging_info >&5 + eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +} + +trap 'ac_exit_trap $?' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf '%s\n' "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf '%s\n' "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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 + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf '%s\n' "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf '%s\n' "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C23 (global declarations) +ac_c_conftest_c23_globals=' +/* Does the compiler advertise conformance to C17 or earlier? + Although GCC 14 does not do that, even with -std=gnu23, + it is close enough, and defines __STDC_VERSION == 202000L. */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L +# error "Compiler advertises conformance to C17 or earlier" +#endif + +// Check alignas. +char alignas (double) c23_aligned_as_double; +char alignas (0) c23_no_special_alignment; +extern char c23_aligned_as_int; +char alignas (0) alignas (int) c23_aligned_as_int; + +// Check alignof. +enum +{ + c23_int_alignment = alignof (int), + c23_int_array_alignment = alignof (int[100]), + c23_char_alignment = alignof (char) +}; +static_assert (0 < -alignof (int), "alignof is signed"); + +int function_with_unnamed_parameter (int) { return 0; } + +void c23_noreturn (); + +/* Test parsing of string and char UTF-8 literals (including hex escapes). + The parens pacify GCC 15. */ +bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); + +bool check_that_bool_works = true | false | !nullptr; +#if !true +# error "true does not work in #if" +#endif +#if false +#elifdef __STDC_VERSION__ +#else +# error "#elifdef does not work" +#endif + +#ifndef __has_c_attribute +# error "__has_c_attribute not defined" +#endif + +#ifndef __has_include +# error "__has_include not defined" +#endif + +#define LPAREN() ( +#define FORTY_TWO(x) 42 +#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) +static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); + +static_assert (0b101010 == 42); +static_assert (0B101010 == 42); +static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); +static_assert (0.500'\''000'\''000 == 0.5); + +enum unsignedish : unsigned int { uione = 1 }; +static_assert (0 < -uione); + +#include +constexpr nullptr_t null_pointer = nullptr; + +static typeof (1 + 1L) two () { return 2; } +static long int three () { return 3; } +' + +# Test code for whether the C compiler supports C23 (body of main). +ac_c_conftest_c23_main=' + { + label_before_declaration: + int arr[10] = {}; + if (arr[0]) + goto label_before_declaration; + if (!arr[0]) + goto label_at_end_of_block; + label_at_end_of_block: + } + ok |= !null_pointer; + ok |= two != three; +' + +# Test code for whether the C compiler supports C23 (complete). +ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} + +int +main (int, char **) +{ + int ok = 0; + ${ac_c_conftest_c23_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Do not test the value of __STDC__, because some compilers define it to 0 + or do not define it, while otherwise adequately conforming. */ + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (char **p, int i) +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +/* Does the compiler advertise C99 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr, and "aND" is used instead of "and" to work around +// GCC bug 40564 which is irrelevant here. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, aND third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + const char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + static struct incomplete_array *volatile incomplete_array_pointer; + struct incomplete_array *ia = incomplete_array_pointer; + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + // Do not test for VLAs, as some otherwise-conforming compilers lack them. + // C code should instead use __STDC_NO_VLA__; see Autoconf manual. + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || ni.number != 58); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +/* Does the compiler advertise C11 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +gt_needs="$gt_needs " +as_fn_append ac_header_c_list " vfork.h vfork_h HAVE_VFORK_H" +as_fn_append ac_func_c_list " fork HAVE_FORK" +as_fn_append ac_func_c_list " vfork HAVE_VFORK" + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath config.guess config.sub compile missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf '%s\n' "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf '%s\n' "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w= + for ac_val in x $ac_old_val; do + ac_old_val_w="$ac_old_val_w $ac_val" + done + ac_new_val_w= + for ac_val in x $ac_new_val; do + ac_new_val_w="$ac_new_val_w $ac_val" + done + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.18' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in @%:@(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF/1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF/1 since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf '%s\n' "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in @%:@( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf '%s\n' "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # 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". + printf '%s\n' ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf '%s\n' "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf '%s\n' "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in @%:@( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf '%s\n' "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf '%s\n' "$STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf '%s\n' "$ac_ct_STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + 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 ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf '%s\n' "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk 'busybox awk' +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf '%s\n' "$AWK" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf '%s\n' "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @printf '%s\n' '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# 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;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + SET_MAKE= +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +@%:@ Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if printf '%s\n' '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 ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf '%s\n' "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in @%:@( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in @%:@( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf '%s\n' "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in @%:@( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf '%s\n' "@%:@define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf '%s\n' "@%:@define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# 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}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf '%s\n' "$am_cv_prog_tar_ustar" >&6; } + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + + + + + + +# Checks for programs. + + + + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in @%:@( + '0:this is the am__doit target') : + case $s in @%:@( + BSD) : + am__include='.include' am__quote='"' ;; @%:@( + *) : + am__include='include' am__quote='' ;; +esac ;; @%:@( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf '%s\n' "${_am_result}" >&6; } + +@%:@ Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +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= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in @%:@( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf '%s\n' "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf '%s\n' "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf '%s\n' "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf '%s\n' "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf '%s\n' "$gl_cv_compiler_clang" >&6; } + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf '%s\n' "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf '%s\n' "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else case e in @%:@( + e) ac_cv_safe_to_define___extensions__=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf '%s\n' "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf '%s\n' "$ac_cv_should_define__xopen_source" >&6; } + + printf '%s\n' "@%:@define _ALL_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _COSMO_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _GNU_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf '%s\n' "@%:@define _NETBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _OPENBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf '%s\n' "@%:@define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf '%s\n' "@%:@define _MINIX 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h + +else case e in @%:@( + e) MINIX= ;; +esac +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf '%s\n' "@%:@define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf '%s\n' "@%:@define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf '%s\n' "$gl_cv_compiler_clang" >&6; } + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Configure gnulib + + + # 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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf '%s\n' "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`printf '%s\n' "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf '%s\n' "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`printf '%s\n' "$host_os" | sed 's/ /-/g'`;; esac + + + + + + + case "$host_os" in + openbsd*) + +printf '%s\n' "@%:@define _ISOC11_SOURCE 1" >>confdefs.h + + ;; + esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf '%s\n' "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 +printf %s "checking for Minix Amsterdam compiler... " >&6; } +if test ${gl_cv_c_amsterdam_compiler+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else case e in @%:@( + e) gl_cv_c_amsterdam_compiler=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf '%s\n' "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf '%s\n' "$ac_ct_AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +@%:@ Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO" +then : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf '%s\n' "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf '%s\n' "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +printf '%s\n' "@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h +;; +esac +rm -rf conftest* + case $ac_cv_sys_file_offset_bits in @%:@( + unknown) : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _LARGE_FILES +#define _LARGE_FILES 1 +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +printf '%s\n' "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +printf '%s\n' "@%:@define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h +;; +esac +rm -rf conftest* ;; @%:@( + 64) : + + @%:@ Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; +fi + + if test "$enable_year2038" != no +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for time_t past the year 2038" >&5 +printf %s "checking for time_t past the year 2038... " >&6; } +if test ${gl_cv_type_time_t_y2038+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else case e in @%:@( + e) gl_cv_type_time_t_y2038=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_y2038" >&5 +printf '%s\n' "$gl_cv_type_time_t_y2038" >&6; } + if test "$gl_cv_type_time_t_y2038" = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit time_t with _TIME_BITS=64" >&5 +printf %s "checking for 64-bit time_t with _TIME_BITS=64... " >&6; } +if test ${gl_cv_type_time_t_bits_macro+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else case e in @%:@( + e) gl_cv_type_time_t_bits_macro=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_bits_macro" >&5 +printf '%s\n' "$gl_cv_type_time_t_bits_macro" >&6; } + if test "$gl_cv_type_time_t_bits_macro" = yes; then + +printf '%s\n' "@%:@define _TIME_BITS 64" >>confdefs.h + + +printf '%s\n' "@%:@define _FILE_OFFSET_BITS 64" >>confdefs.h + + gl_cv_type_time_t_y2038=yes + fi + fi + if test $gl_cv_type_time_t_y2038 = no; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _USE_32BIT_TIME_T + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "The 'time_t' type stops working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags. +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) # If not cross-compiling and says we should check, + # and 'touch' works with a large timestamp, then evidently wider time_t + # is desired and supported, so fail and ask the builder to fix the + # problem. Otherwise, just warn the builder. + + if test "$gl_warned_about_y2038" != yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&5 +printf '%s\n' "$as_me: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&2;} + gl_warned_about_y2038=yes + fi + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +fi + ;; @%:@( + *) : + ;; +esac +fi + + + + case "$host_os" in + mingw*) + +printf '%s\n' "@%:@define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h + + ;; + esac + + + + # Pre-early section. + + + + # Code from module alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + @%:@ Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf '%s\n' "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else case e in @%:@( + e) gl_cross_guesses=conservative ;; +esac +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +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 case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else case e in @%:@( + e) ac_cv_working_alloca_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf '%s\n' "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_alloca_works=$ac_cv_working_alloca_h +if test "$ac_cv_func_alloca_works" != yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf '%s\n' "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf '%s\n' "@%:@define C_ALLOCA 1" >>confdefs.h + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + 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 (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else case e in @%:@( + e) ac_cv_c_stack_direction=-1 ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf '%s\n' "$ac_cv_c_stack_direction" >&6; } +printf '%s\n' "@%:@define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define eaccess access" >>confdefs.h + ;; +esac +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5 +printf %s "checking for $CC options to detect undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in @%:@( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf '%s\n' "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in @%:@( + 'cannot detect') : + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See 'config.log' for more details" "$LINENO" 5; } ;; @%:@( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; @%:@( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5 +printf %s "checking for $CC options to ignore future-version functions... " >&6; } +if test ${ac_cv_c_future_darwin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_compile_saved="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if ! (defined __APPLE__ && defined __MACH__) + #error "-Werror=unguarded-availability-new not needed here" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new' +else case e in @%:@( + e) ac_cv_c_future_darwin_options='none needed' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$ac_compile_saved" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5 +printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; } + case $ac_cv_c_future_darwin_options in @%:@( + 'none needed') : + ac_c_future_darwin_options='' ;; @%:@( + *) : + ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "MicrosoftCompiler" >/dev/null 2>&1 +then : + rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if test -f conftest.o; then + gl_asmext='s' + gl_c_asm_opt='-S' + else + gl_asmext='asm' + gl_c_asm_opt='-c -Fa' + fi + rm -f conftest* + +else case e in @%:@( + e) gl_asmext='s' + gl_c_asm_opt='-S' + ;; +esac +fi +rm -rf conftest* + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=x86_64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=i386 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=arm64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=hppa ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=ia64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else case e in @%:@( + e) # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=mips ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else case e in @%:@( + e) cpu=riscv32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else case e in @%:@( + e) main_abi=ilp32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else case e in @%:@( + e) float_abi='' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=s390 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=sparc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf '%s\n' "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else case e in @%:@( + e) gl_cv_type_off_t_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf '%s\n' "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else case e in @%:@( + e) gl_cv_member_st_size_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf '%s\n' "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf '%s\n' "@%:@define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C99 requires bool, true, and false to be macros, + C23 and C++11 overrule that, so do not test for that. + Although C99 requires __bool_true_false_are_defined and + _Bool, C23 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else case e in @%:@( + e) ac_cv_header_stdbool_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf '%s\n' "$ac_cv_header_stdbool_h" >&6; } + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf '%s\n' "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else case e in @%:@( + e) gl_cv_rpl_alloca=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf '%s\n' "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else case e in @%:@( + e) gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char elf_begin (void); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else case e in @%:@( + e) ac_cv_lib_elf_elf_begin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf '%s\n' "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kvm_open (void); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else case e in @%:@( + e) ac_cv_lib_kvm_kvm_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf '%s\n' "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_util_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_getloadavg_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else case e in @%:@( + e) LIBS=$gl_getloadavg_LIBS ;; +esac +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kstat_open (void); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else case e in @%:@( + e) ac_cv_lib_kstat_kstat_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf '%s\n' "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char perfstat_cpu_total (void); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else case e in @%:@( + e) ac_cv_lib_perfstat_perfstat_cpu_total=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf '%s\n' "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define DGUX 1" >>confdefs.h + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dg_sys_info (void); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else case e in @%:@( + e) ac_cv_lib_dgc_dg_sys_info=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf '%s\n' "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi ;; +esac +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else case e in @%:@( + e) HAVE_DECL_GETLOADAVG=0 ;; +esac +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + 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" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + + +printf '%s\n' "@%:@define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf '%s\n' "@%:@define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf '%s\n' "@%:@define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5 +printf %s "checking if system libc has GNU glob... " >&6; } +if test ${make_cv_sys_gnu_glob+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else case e in @%:@( + e) make_cv_sys_gnu_glob=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf '%s\n' "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + 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 (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else case e in @%:@( + e) ac_cv_dos_paths=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf '%s\n' "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + case "$GL_GENERATE_STDBOOL_H" in + false) STDBOOL_H='' ;; + true) + if test -z "$STDBOOL_H"; then + STDBOOL_H="${gl_source_base_prefix}stdbool.h" + fi + ;; + *) echo "*** GL_GENERATE_STDBOOL_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE='#' + fi + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi ;; +esac +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf '%s\n' "$PERL" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + +# Specialized system macros + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else case e in @%:@( + e) ac_cv_c_bigendian=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf '%s\n' "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf '%s\n' "@%:@define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf '%s\n' "@%:@define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf '%s\n' "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + @%:@ Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else case e in @%:@( + e) USE_NLS=yes ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf '%s\n' "$MSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf '%s\n' "$GMSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf '%s\n' "$XGETTEXT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf '%s\n' "$MSGMERGE" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +@%:@ Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else case e in @%:@( + e) with_gnu_ld=no ;; +esac +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf '%s\n' "$LD" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf '%s\n' "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf '%s\n' "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + 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+y} +then : + enableval=$enable_rpath; : +else case e in @%:@( + e) enable_rpath=yes ;; +esac +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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_TRADITIONAL "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else case e in @%:@( + e) gl_cv_solaris_64bit=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf '%s\n' "$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" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else case e in @%:@( + e) gt_cv_func_CFPreferencesCopyAppValue=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf '%s\n' "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf '%s\n' "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else case e in @%:@( + e) gt_cv_func_CFLocaleCopyCurrent=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf '%s\n' "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf '%s\n' "@%:@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 + + + + + + + LIBINTL= + 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 + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libc=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf '%s\n' "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* 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 ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* 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 ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#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 ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#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)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf '%s\n' "$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 + +printf '%s\n' "@%:@define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf '%s\n' "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libintl=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + 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 +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + fi + + 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 + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + 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 + +printf '%s\n' "@%:@define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf '%s\n' "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf '%s\n' "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf '%s\n' "@%:@define HAVE_GETTEXT 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (void); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else case e in @%:@( + e) ac_cv_search_strerror=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf '%s\n' "$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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getpwnam (void); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else case e in @%:@( + e) ac_cv_search_getpwnam=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf '%s\n' "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf '%s\n' "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else case e in @%:@( + e) eval "$as_ac_Header=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$as_ac_Header + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +@%:@define `printf '%s\n' "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else case e in @%:@( + e) ac_cv_header_stat_broken=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf '%s\n' "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf '%s\n' "@%:@define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_FCNTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRING_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default" +if test "x$ac_cv_header_spawn_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SPAWN_H 1" >>confdefs.h + +fi + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* 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; + if (s) return 0; + } + { /* Derived from code rejected by Sun C 1.0 and similar vintage. */ + int x[] = {25, 17}; + typedef int const *iptr; + iptr foo = &x[0]; + ++foo; + if (!*foo) return 0; + } + { /* IBM 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]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in @%:@( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf '%s\n' "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf '%s\n' "@%:@define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define uid_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define gid_t int" >>confdefs.h + ;; +esac +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" = xyes +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else case e in @%:@( + e) ac_pid_type='__int64' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf '%s\n' "@%:@define pid_t $ac_pid_type" >>confdefs.h + + ;; +esac +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define off_t long int" >>confdefs.h + ;; +esac +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 case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define ssize_t int" >>confdefs.h + ;; +esac +fi + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes +then : + : +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_long_long_int=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" +if test "x$ac_cv_type_intmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_INTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_long_long_int = yes \ + && ac_type='long long int' \ + || ac_type='long int' + +printf '%s\n' "@%:@define intmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_UINTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf '%s\n' "@%:@define uintmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else case e in @%:@( + e) +printf '%s\n' "@%:@define sig_atomic_t int" >>confdefs.h + ;; +esac +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # 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_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. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf '%s\n' "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf '%s\n' "@%:@define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +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.beam conftest.$ac_ext + +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf '%s\n' "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else case e in @%:@( + e) val=0 ;; +esac +fi + +printf '%s\n' "@%:@define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +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. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in @%:@( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf '%s\n' "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf '%s\n' "@%:@define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return 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 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf '%s\n' "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf '%s\n' "@%:@define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf '%s\n' "@%:@define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf '%s\n' "@%:@define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf '%s\n' "@%:@define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf '%s\n' "@%:@define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf '%s\n' "@%:@define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf '%s\n' "@%:@define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf '%s\n' "@%:@define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf '%s\n' "@%:@define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# 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_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By R. Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else case e in @%:@( + e) ac_cv_func_fork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf '%s\n' "$ac_cv_func_fork_works" >&6; } + +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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf '%s\n' "$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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* 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 , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + 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 (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + 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); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _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; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* 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 +else case e in @%:@( + e) ac_cv_func_vfork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf '%s\n' "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf '%s\n' "@%:@define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_strcoll_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_strcoll_works=no ;; + esac +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else case e in @%:@( + e) ac_cv_func_strcoll_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf '%s\n' "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf '%s\n' "@%:@define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else case e in @%:@( + e) ac_cv_func_closedir_void=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf '%s\n' "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf '%s\n' "@%:@define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +@%:@ Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +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 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf '%s\n' "$PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +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 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$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 +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf '%s\n' "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } + +if test -n "$GUILE_CFLAGS"; then + pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 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" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "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-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "A pkg-config implementation 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. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get a pkg-config implementation, see . +See 'config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf '%s\n' "@%:@define HAVE_GUILE 1" >>confdefs.h + +else case e in @%:@( + e) have_guile=no ;; +esac +fi + + if test "$have_guile" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else case e in @%:@( + e) have_guile=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf '%s\n' "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +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 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else case e in @%:@( + e) make_cv_union_wait=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf '%s\n' "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf '%s\n' "@%:@define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + +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+y} +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 + +cf_test_netlibs=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf '%s\n' "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 +printf %s "checking for gethostname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_socket_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else case e in @%:@( + e) ac_cv_lib_inet_main=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf '%s\n' "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +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" = xyes +then : + printf '%s\n' "@%:@define HAVE_SOCKET 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +printf %s "checking for socket in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else case e in @%:@( + e) ac_cv_lib_socket_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf '%s\n' "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else case e in @%:@( + e) ac_cv_lib_bsd_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf '%s\n' "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +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" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +printf %s "checking for gethostbyname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + +done + ;; +esac +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$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" +else case e in @%:@( + e) with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes ;; +esac +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +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+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf '%s\n' "@%:@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+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else case e in @%:@( + e) make_cv_job_server="yes" ;; +esac +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else case e in @%:@( + e) has_wait_nohang=yes ;; +esac +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else case e in @%:@( + e) make_cv_sa_restart=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf '%s\n' "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf '%s\n' "@%:@define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in @%:@( + */no/*) : + make_cv_job_server=no ;; @%:@( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in @%:@( + os2*|mingw*) : + make_cv_job_server=yes ;; @%:@( + *) : + ;; +esac + +# 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 ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +@%:@ Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else case e in @%:@( + e) make_cv_load="yes" ;; +esac +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else case e in @%:@( + e) ac_cv_search_dlopen=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf '%s\n' "$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 case e in @%:@( + e) make_cv_load= ;; +esac +fi + + +fi + +case /$make_cv_load/$user_load/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# 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 : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "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 : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "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 : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf '%s\n' "@%:@define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +@%:@ Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else case e in @%:@( + e) make_cv_posix_spawn="yes" ;; +esac +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf '%s\n' "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else case e in @%:@( + e) make_cv_path_sccs_get=get ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf '%s\n' "$make_cv_path_sccs_get" >&6; } + +printf '%s\n' "@%:@define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +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. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) make_cv_sys_get_minus_G=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf '%s\n' "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf '%s\n' "@%:@define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf '%s\n' "@%:@define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in @%:@( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf '%s\n' "@%:@define WINDOWS32 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; @%:@( + *) : + ;; +esac + + +printf '%s\n' "@%:@define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf '%s\n' "@%:@define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf '%s\n' "@%:@define MK_CONFIGURE 1" >>confdefs.h + + +# 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 + + +# Allow building with dmalloc +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +@%:@ Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +printf '%s\n' "@%:@define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi + + + +# 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 + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in @%:@( + ""|n|no|y|ye|yes) : + : ;; @%:@( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else case e in @%:@( + e) 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 + ;; +esac +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 + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +ac_cache_dump | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf '%s\n' "$as_me: updating cache $cache_file" >&6;} + 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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf '%s\n' "done" >&6; } +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +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 + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + 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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +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. +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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +case $CONFIG_STATUS in @%:@( + -*) : + CONFIG_STATUS=./$CONFIG_STATUS ;; @%:@( + */*) : + ;; @%:@( + *) : + CONFIG_STATUS=./$CONFIG_STATUS ;; +esac + +ac_write_fail=0 +ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$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 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ------------------------------------- ## +## Main body of "$CONFIG_STATUS" script. ## +## ------------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.73, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2026 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || { + awk '' >"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf '%s\n' "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf '%s\n' "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf '%s\n' "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +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 + shift + \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + printf '%s\n' "$ac_log" +} >&5 + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # 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%}" + + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap '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 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || 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. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final ':' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo 'cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1' && + printf '%s\n' 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + printf '%s\n' "$ac_subst_files" | sed 's/.*/F@<:@"&"@:>@="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >"$CONFIG_STATUS" || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$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 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[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_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 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >"$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + suffix = P[macro] D[macro] + while (suffix ~ /[\t ]$/) { + suffix = substr(suffix, 1, length(suffix) - 1) + } + # Preserve the white space surrounding the "#". + print prefix "define", macro suffix + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$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 ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf '%s\n' "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf '%s\n' "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $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' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf '%s\n' "$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 +printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) 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 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf '%s\n' "/* $configure_input */" >&1 \ + && 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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf '%s\n' "/* $configure_input */" >&1 \ + && 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" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf '%s\n' "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf '%s\n' "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in @%:@( + *\'*) : + eval set x "$CONFIG_FILES" ;; @%:@( + *) : + set x $CONFIG_FILES ;; @%:@( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf '%s\n' "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See 'config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # 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" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment 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 assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_CONFIG_STATUS= + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + case $CONFIG_STATUS in @%:@( + -*) : + ac_no_opts=-- ;; @%:@( + *) : + ac_no_opts= ;; +esac + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || + ac_cs_success=false + 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 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/output.2 b/local/recipes/dev/gnu-make/source/autom4te.cache/output.2 new file mode 100644 index 0000000000..7270c150d4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/output.2 @@ -0,0 +1,17351 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.73 for GNU Make 4.4. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, +@%:@ Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# 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 +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +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 \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in @%:@( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || 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'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in @%:@( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + 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 +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf '%s\n' "$0: This script requires a shell more modern than all" + printf '%s\n' "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." + else + printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_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 +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$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 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf '%s\n' "$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). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# 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` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_CONFIG_STATUS= +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +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 +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ECHO_T +ECHO_N +ECHO_C +target_alias +host_alias +build_alias +LIBS +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --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" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # 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'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` + 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" ;; + *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +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" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +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 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --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 + --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 + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/make@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --disable-largefile omit support for large files + --disable-year2038 omit support for timestamps past the year 2038 + --enable-cross-guesses={conservative|risky} + specify policy for cross-compilation guesses + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + --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 + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --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-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 + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + 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. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.73 + +Copyright (C) 2026 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES +@%:@ ------------------------------------------- +@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache +@%:@ variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) eval "$3=yes" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_type + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to run conftest.@S|@ac_ext, and return whether this succeeded. Assumes that +@%:@ executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: program exited with status $ac_status" >&5 + printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +@%:@ ------------------------------------------------------------------ +@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +@%:@ accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} @%:@ ac_fn_check_decl + +@%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +@%:@ ---------------------------------------------------- +@%:@ Tries to find if the field MEMBER exists in type AGGR, after including +@%:@ INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) eval "$4=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$4 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf '%s\n' "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# Dump the cache to stdout. It can be in a pipe (this is a requirement). +ac_cache_dump () +{ + # The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) +} + +# Print debugging info to stdout. +ac_dump_debugging_info () +{ + echo + + printf '%s\n' "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + ac_cache_dump + echo + + printf '%s\n' "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf '%s\n' "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + fi + + if test -s confdefs.h; then + printf '%s\n' "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf '%s\n' "$as_me: caught signal $ac_signal" + printf '%s\n' "$as_me: exit $exit_status" +} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. +ac_exit_trap () +{ + exit_status= + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + ac_dump_debugging_info >&5 + eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +} + +trap 'ac_exit_trap $?' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf '%s\n' "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf '%s\n' "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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 + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf '%s\n' "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf '%s\n' "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C23 (global declarations) +ac_c_conftest_c23_globals=' +/* Does the compiler advertise conformance to C17 or earlier? + Although GCC 14 does not do that, even with -std=gnu23, + it is close enough, and defines __STDC_VERSION == 202000L. */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L +# error "Compiler advertises conformance to C17 or earlier" +#endif + +// Check alignas. +char alignas (double) c23_aligned_as_double; +char alignas (0) c23_no_special_alignment; +extern char c23_aligned_as_int; +char alignas (0) alignas (int) c23_aligned_as_int; + +// Check alignof. +enum +{ + c23_int_alignment = alignof (int), + c23_int_array_alignment = alignof (int[100]), + c23_char_alignment = alignof (char) +}; +static_assert (0 < -alignof (int), "alignof is signed"); + +int function_with_unnamed_parameter (int) { return 0; } + +void c23_noreturn (); + +/* Test parsing of string and char UTF-8 literals (including hex escapes). + The parens pacify GCC 15. */ +bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); + +bool check_that_bool_works = true | false | !nullptr; +#if !true +# error "true does not work in #if" +#endif +#if false +#elifdef __STDC_VERSION__ +#else +# error "#elifdef does not work" +#endif + +#ifndef __has_c_attribute +# error "__has_c_attribute not defined" +#endif + +#ifndef __has_include +# error "__has_include not defined" +#endif + +#define LPAREN() ( +#define FORTY_TWO(x) 42 +#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) +static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); + +static_assert (0b101010 == 42); +static_assert (0B101010 == 42); +static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); +static_assert (0.500'\''000'\''000 == 0.5); + +enum unsignedish : unsigned int { uione = 1 }; +static_assert (0 < -uione); + +#include +constexpr nullptr_t null_pointer = nullptr; + +static typeof (1 + 1L) two () { return 2; } +static long int three () { return 3; } +' + +# Test code for whether the C compiler supports C23 (body of main). +ac_c_conftest_c23_main=' + { + label_before_declaration: + int arr[10] = {}; + if (arr[0]) + goto label_before_declaration; + if (!arr[0]) + goto label_at_end_of_block; + label_at_end_of_block: + } + ok |= !null_pointer; + ok |= two != three; +' + +# Test code for whether the C compiler supports C23 (complete). +ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} + +int +main (int, char **) +{ + int ok = 0; + ${ac_c_conftest_c23_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Do not test the value of __STDC__, because some compilers define it to 0 + or do not define it, while otherwise adequately conforming. */ + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (char **p, int i) +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +/* Does the compiler advertise C99 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr, and "aND" is used instead of "and" to work around +// GCC bug 40564 which is irrelevant here. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, aND third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + const char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + static struct incomplete_array *volatile incomplete_array_pointer; + struct incomplete_array *ia = incomplete_array_pointer; + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + // Do not test for VLAs, as some otherwise-conforming compilers lack them. + // C code should instead use __STDC_NO_VLA__; see Autoconf manual. + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || ni.number != 58); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +/* Does the compiler advertise C11 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +gt_needs="$gt_needs " +as_fn_append ac_header_c_list " vfork.h vfork_h HAVE_VFORK_H" +as_fn_append ac_func_c_list " fork HAVE_FORK" +as_fn_append ac_func_c_list " vfork HAVE_VFORK" + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath config.guess config.sub compile missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf '%s\n' "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf '%s\n' "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w= + for ac_val in x $ac_old_val; do + ac_old_val_w="$ac_old_val_w $ac_val" + done + ac_new_val_w= + for ac_val in x $ac_new_val; do + ac_new_val_w="$ac_new_val_w $ac_val" + done + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.18' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in @%:@(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF/1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF/1 since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf '%s\n' "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in @%:@( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf '%s\n' "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # 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". + printf '%s\n' ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf '%s\n' "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf '%s\n' "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in @%:@( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf '%s\n' "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf '%s\n' "$STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf '%s\n' "$ac_ct_STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + 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 ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf '%s\n' "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk 'busybox awk' +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf '%s\n' "$AWK" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf '%s\n' "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @printf '%s\n' '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# 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;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + SET_MAKE= +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +@%:@ Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if printf '%s\n' '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 ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf '%s\n' "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in @%:@( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in @%:@( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf '%s\n' "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in @%:@( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf '%s\n' "@%:@define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf '%s\n' "@%:@define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# 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}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf '%s\n' "$am_cv_prog_tar_ustar" >&6; } + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + + + + + + +# Checks for programs. + + + + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in @%:@( + '0:this is the am__doit target') : + case $s in @%:@( + BSD) : + am__include='.include' am__quote='"' ;; @%:@( + *) : + am__include='include' am__quote='' ;; +esac ;; @%:@( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf '%s\n' "${_am_result}" >&6; } + +@%:@ Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +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= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in @%:@( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf '%s\n' "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf '%s\n' "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf '%s\n' "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf '%s\n' "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf '%s\n' "$gl_cv_compiler_clang" >&6; } + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf '%s\n' "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf '%s\n' "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else case e in @%:@( + e) ac_cv_safe_to_define___extensions__=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf '%s\n' "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf '%s\n' "$ac_cv_should_define__xopen_source" >&6; } + + printf '%s\n' "@%:@define _ALL_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _COSMO_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _GNU_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf '%s\n' "@%:@define _NETBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _OPENBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf '%s\n' "@%:@define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf '%s\n' "@%:@define _MINIX 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h + +else case e in @%:@( + e) MINIX= ;; +esac +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf '%s\n' "@%:@define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf '%s\n' "@%:@define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf '%s\n' "$gl_cv_compiler_clang" >&6; } + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Configure gnulib + + + # 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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf '%s\n' "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`printf '%s\n' "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf '%s\n' "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`printf '%s\n' "$host_os" | sed 's/ /-/g'`;; esac + + + + + + + case "$host_os" in + openbsd*) + +printf '%s\n' "@%:@define _ISOC11_SOURCE 1" >>confdefs.h + + ;; + esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf '%s\n' "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 +printf %s "checking for Minix Amsterdam compiler... " >&6; } +if test ${gl_cv_c_amsterdam_compiler+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else case e in @%:@( + e) gl_cv_c_amsterdam_compiler=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf '%s\n' "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf '%s\n' "$ac_ct_AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +@%:@ Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO" +then : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf '%s\n' "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf '%s\n' "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +printf '%s\n' "@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h +;; +esac +rm -rf conftest* + case $ac_cv_sys_file_offset_bits in @%:@( + unknown) : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _LARGE_FILES +#define _LARGE_FILES 1 +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +printf '%s\n' "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +printf '%s\n' "@%:@define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h +;; +esac +rm -rf conftest* ;; @%:@( + 64) : + + @%:@ Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; +fi + + if test "$enable_year2038" != no +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for time_t past the year 2038" >&5 +printf %s "checking for time_t past the year 2038... " >&6; } +if test ${gl_cv_type_time_t_y2038+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else case e in @%:@( + e) gl_cv_type_time_t_y2038=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_y2038" >&5 +printf '%s\n' "$gl_cv_type_time_t_y2038" >&6; } + if test "$gl_cv_type_time_t_y2038" = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit time_t with _TIME_BITS=64" >&5 +printf %s "checking for 64-bit time_t with _TIME_BITS=64... " >&6; } +if test ${gl_cv_type_time_t_bits_macro+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else case e in @%:@( + e) gl_cv_type_time_t_bits_macro=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_bits_macro" >&5 +printf '%s\n' "$gl_cv_type_time_t_bits_macro" >&6; } + if test "$gl_cv_type_time_t_bits_macro" = yes; then + +printf '%s\n' "@%:@define _TIME_BITS 64" >>confdefs.h + + +printf '%s\n' "@%:@define _FILE_OFFSET_BITS 64" >>confdefs.h + + gl_cv_type_time_t_y2038=yes + fi + fi + if test $gl_cv_type_time_t_y2038 = no; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _USE_32BIT_TIME_T + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "The 'time_t' type stops working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags. +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) # If not cross-compiling and says we should check, + # and 'touch' works with a large timestamp, then evidently wider time_t + # is desired and supported, so fail and ask the builder to fix the + # problem. Otherwise, just warn the builder. + + if test "$gl_warned_about_y2038" != yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&5 +printf '%s\n' "$as_me: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&2;} + gl_warned_about_y2038=yes + fi + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +fi + ;; @%:@( + *) : + ;; +esac +fi + + + + case "$host_os" in + mingw*) + +printf '%s\n' "@%:@define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h + + ;; + esac + + + + # Pre-early section. + + + + # Code from module alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + @%:@ Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf '%s\n' "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else case e in @%:@( + e) gl_cross_guesses=conservative ;; +esac +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +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 case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else case e in @%:@( + e) ac_cv_working_alloca_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf '%s\n' "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_alloca_works=$ac_cv_working_alloca_h +if test "$ac_cv_func_alloca_works" != yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf '%s\n' "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf '%s\n' "@%:@define C_ALLOCA 1" >>confdefs.h + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + 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 (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else case e in @%:@( + e) ac_cv_c_stack_direction=-1 ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf '%s\n' "$ac_cv_c_stack_direction" >&6; } +printf '%s\n' "@%:@define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define eaccess access" >>confdefs.h + ;; +esac +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5 +printf %s "checking for $CC options to detect undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in @%:@( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf '%s\n' "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in @%:@( + 'cannot detect') : + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See 'config.log' for more details" "$LINENO" 5; } ;; @%:@( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; @%:@( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5 +printf %s "checking for $CC options to ignore future-version functions... " >&6; } +if test ${ac_cv_c_future_darwin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_compile_saved="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if ! (defined __APPLE__ && defined __MACH__) + #error "-Werror=unguarded-availability-new not needed here" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new' +else case e in @%:@( + e) ac_cv_c_future_darwin_options='none needed' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$ac_compile_saved" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5 +printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; } + case $ac_cv_c_future_darwin_options in @%:@( + 'none needed') : + ac_c_future_darwin_options='' ;; @%:@( + *) : + ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "MicrosoftCompiler" >/dev/null 2>&1 +then : + rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if test -f conftest.o; then + gl_asmext='s' + gl_c_asm_opt='-S' + else + gl_asmext='asm' + gl_c_asm_opt='-c -Fa' + fi + rm -f conftest* + +else case e in @%:@( + e) gl_asmext='s' + gl_c_asm_opt='-S' + ;; +esac +fi +rm -rf conftest* + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=x86_64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=i386 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=arm64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=hppa ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=ia64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else case e in @%:@( + e) # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=mips ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else case e in @%:@( + e) cpu=riscv32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else case e in @%:@( + e) main_abi=ilp32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else case e in @%:@( + e) float_abi='' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=s390 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=sparc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf '%s\n' "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else case e in @%:@( + e) gl_cv_type_off_t_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf '%s\n' "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else case e in @%:@( + e) gl_cv_member_st_size_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf '%s\n' "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf '%s\n' "@%:@define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C99 requires bool, true, and false to be macros, + C23 and C++11 overrule that, so do not test for that. + Although C99 requires __bool_true_false_are_defined and + _Bool, C23 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else case e in @%:@( + e) ac_cv_header_stdbool_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf '%s\n' "$ac_cv_header_stdbool_h" >&6; } + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf '%s\n' "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else case e in @%:@( + e) gl_cv_rpl_alloca=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf '%s\n' "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else case e in @%:@( + e) gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char elf_begin (void); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else case e in @%:@( + e) ac_cv_lib_elf_elf_begin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf '%s\n' "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kvm_open (void); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else case e in @%:@( + e) ac_cv_lib_kvm_kvm_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf '%s\n' "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_util_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_getloadavg_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else case e in @%:@( + e) LIBS=$gl_getloadavg_LIBS ;; +esac +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kstat_open (void); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else case e in @%:@( + e) ac_cv_lib_kstat_kstat_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf '%s\n' "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char perfstat_cpu_total (void); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else case e in @%:@( + e) ac_cv_lib_perfstat_perfstat_cpu_total=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf '%s\n' "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define DGUX 1" >>confdefs.h + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dg_sys_info (void); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else case e in @%:@( + e) ac_cv_lib_dgc_dg_sys_info=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf '%s\n' "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi ;; +esac +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else case e in @%:@( + e) HAVE_DECL_GETLOADAVG=0 ;; +esac +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + 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" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + + +printf '%s\n' "@%:@define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf '%s\n' "@%:@define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf '%s\n' "@%:@define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5 +printf %s "checking if system libc has GNU glob... " >&6; } +if test ${make_cv_sys_gnu_glob+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else case e in @%:@( + e) make_cv_sys_gnu_glob=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf '%s\n' "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + 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 (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else case e in @%:@( + e) ac_cv_dos_paths=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf '%s\n' "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + case "$GL_GENERATE_STDBOOL_H" in + false) STDBOOL_H='' ;; + true) + if test -z "$STDBOOL_H"; then + STDBOOL_H="${gl_source_base_prefix}stdbool.h" + fi + ;; + *) echo "*** GL_GENERATE_STDBOOL_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE='#' + fi + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi ;; +esac +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf '%s\n' "$PERL" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + +# Specialized system macros + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else case e in @%:@( + e) ac_cv_c_bigendian=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf '%s\n' "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf '%s\n' "@%:@define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf '%s\n' "@%:@define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf '%s\n' "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + @%:@ Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else case e in @%:@( + e) USE_NLS=yes ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf '%s\n' "$MSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf '%s\n' "$GMSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf '%s\n' "$XGETTEXT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf '%s\n' "$MSGMERGE" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +@%:@ Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else case e in @%:@( + e) with_gnu_ld=no ;; +esac +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf '%s\n' "$LD" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf '%s\n' "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf '%s\n' "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + 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+y} +then : + enableval=$enable_rpath; : +else case e in @%:@( + e) enable_rpath=yes ;; +esac +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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_TRADITIONAL "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else case e in @%:@( + e) gl_cv_solaris_64bit=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf '%s\n' "$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" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else case e in @%:@( + e) gt_cv_func_CFPreferencesCopyAppValue=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf '%s\n' "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf '%s\n' "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else case e in @%:@( + e) gt_cv_func_CFLocaleCopyCurrent=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf '%s\n' "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf '%s\n' "@%:@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 + + + + + + + LIBINTL= + 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 + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libc=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf '%s\n' "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* 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 ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* 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 ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#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 ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#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)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf '%s\n' "$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 + +printf '%s\n' "@%:@define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf '%s\n' "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libintl=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + 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 +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + fi + + 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 + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + 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 + +printf '%s\n' "@%:@define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf '%s\n' "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf '%s\n' "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf '%s\n' "@%:@define HAVE_GETTEXT 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (void); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else case e in @%:@( + e) ac_cv_search_strerror=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf '%s\n' "$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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getpwnam (void); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else case e in @%:@( + e) ac_cv_search_getpwnam=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf '%s\n' "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf '%s\n' "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else case e in @%:@( + e) eval "$as_ac_Header=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$as_ac_Header + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +@%:@define `printf '%s\n' "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else case e in @%:@( + e) ac_cv_header_stat_broken=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf '%s\n' "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf '%s\n' "@%:@define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_FCNTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRING_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default" +if test "x$ac_cv_header_spawn_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SPAWN_H 1" >>confdefs.h + +fi + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* 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; + if (s) return 0; + } + { /* Derived from code rejected by Sun C 1.0 and similar vintage. */ + int x[] = {25, 17}; + typedef int const *iptr; + iptr foo = &x[0]; + ++foo; + if (!*foo) return 0; + } + { /* IBM 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]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in @%:@( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf '%s\n' "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf '%s\n' "@%:@define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define uid_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define gid_t int" >>confdefs.h + ;; +esac +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" = xyes +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else case e in @%:@( + e) ac_pid_type='__int64' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf '%s\n' "@%:@define pid_t $ac_pid_type" >>confdefs.h + + ;; +esac +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define off_t long int" >>confdefs.h + ;; +esac +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 case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define ssize_t int" >>confdefs.h + ;; +esac +fi + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes +then : + : +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_long_long_int=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" +if test "x$ac_cv_type_intmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_INTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_long_long_int = yes \ + && ac_type='long long int' \ + || ac_type='long int' + +printf '%s\n' "@%:@define intmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_UINTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf '%s\n' "@%:@define uintmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else case e in @%:@( + e) +printf '%s\n' "@%:@define sig_atomic_t int" >>confdefs.h + ;; +esac +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # 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_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. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf '%s\n' "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf '%s\n' "@%:@define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +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.beam conftest.$ac_ext + +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf '%s\n' "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else case e in @%:@( + e) val=0 ;; +esac +fi + +printf '%s\n' "@%:@define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +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. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in @%:@( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf '%s\n' "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf '%s\n' "@%:@define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return 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 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf '%s\n' "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf '%s\n' "@%:@define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf '%s\n' "@%:@define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf '%s\n' "@%:@define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf '%s\n' "@%:@define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf '%s\n' "@%:@define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf '%s\n' "@%:@define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf '%s\n' "@%:@define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf '%s\n' "@%:@define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf '%s\n' "@%:@define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# 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_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By R. Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else case e in @%:@( + e) ac_cv_func_fork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf '%s\n' "$ac_cv_func_fork_works" >&6; } + +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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf '%s\n' "$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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* 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 , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + 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 (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + 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); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _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; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* 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 +else case e in @%:@( + e) ac_cv_func_vfork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf '%s\n' "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf '%s\n' "@%:@define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_strcoll_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_strcoll_works=no ;; + esac +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else case e in @%:@( + e) ac_cv_func_strcoll_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf '%s\n' "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf '%s\n' "@%:@define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else case e in @%:@( + e) ac_cv_func_closedir_void=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf '%s\n' "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf '%s\n' "@%:@define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +@%:@ Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +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 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf '%s\n' "$PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +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 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$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 +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf '%s\n' "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } + +if test -n "$GUILE_CFLAGS"; then + pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 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" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "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-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "A pkg-config implementation 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. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get a pkg-config implementation, see . +See 'config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf '%s\n' "@%:@define HAVE_GUILE 1" >>confdefs.h + +else case e in @%:@( + e) have_guile=no ;; +esac +fi + + if test "$have_guile" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else case e in @%:@( + e) have_guile=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf '%s\n' "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +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 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else case e in @%:@( + e) make_cv_union_wait=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf '%s\n' "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf '%s\n' "@%:@define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + +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+y} +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 + +cf_test_netlibs=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf '%s\n' "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 +printf %s "checking for gethostname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_socket_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else case e in @%:@( + e) ac_cv_lib_inet_main=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf '%s\n' "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +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" = xyes +then : + printf '%s\n' "@%:@define HAVE_SOCKET 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +printf %s "checking for socket in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else case e in @%:@( + e) ac_cv_lib_socket_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf '%s\n' "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else case e in @%:@( + e) ac_cv_lib_bsd_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf '%s\n' "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +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" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +printf %s "checking for gethostbyname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + +done + ;; +esac +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$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" +else case e in @%:@( + e) with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes ;; +esac +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +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+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf '%s\n' "@%:@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+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else case e in @%:@( + e) make_cv_job_server="yes" ;; +esac +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else case e in @%:@( + e) has_wait_nohang=yes ;; +esac +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else case e in @%:@( + e) make_cv_sa_restart=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf '%s\n' "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf '%s\n' "@%:@define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in @%:@( + */no/*) : + make_cv_job_server=no ;; @%:@( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in @%:@( + os2*|mingw*) : + make_cv_job_server=yes ;; @%:@( + *) : + ;; +esac + +# 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 ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +@%:@ Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else case e in @%:@( + e) make_cv_load="yes" ;; +esac +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else case e in @%:@( + e) ac_cv_search_dlopen=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf '%s\n' "$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 case e in @%:@( + e) make_cv_load= ;; +esac +fi + + +fi + +case /$make_cv_load/$user_load/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# 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 : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "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 : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "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 : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf '%s\n' "@%:@define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +@%:@ Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else case e in @%:@( + e) make_cv_posix_spawn="yes" ;; +esac +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf '%s\n' "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else case e in @%:@( + e) make_cv_path_sccs_get=get ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf '%s\n' "$make_cv_path_sccs_get" >&6; } + +printf '%s\n' "@%:@define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +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. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) make_cv_sys_get_minus_G=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf '%s\n' "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf '%s\n' "@%:@define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf '%s\n' "@%:@define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in @%:@( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf '%s\n' "@%:@define WINDOWS32 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; @%:@( + *) : + ;; +esac + + +printf '%s\n' "@%:@define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf '%s\n' "@%:@define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf '%s\n' "@%:@define MK_CONFIGURE 1" >>confdefs.h + + +# 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 + + +# Allow building with dmalloc +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +@%:@ Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +printf '%s\n' "@%:@define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi + + + +# 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 + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in @%:@( + ""|n|no|y|ye|yes) : + : ;; @%:@( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else case e in @%:@( + e) 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 + ;; +esac +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 + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +ac_cache_dump | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf '%s\n' "$as_me: updating cache $cache_file" >&6;} + 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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf '%s\n' "done" >&6; } +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +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 + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + 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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +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. +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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +case $CONFIG_STATUS in @%:@( + -*) : + CONFIG_STATUS=./$CONFIG_STATUS ;; @%:@( + */*) : + ;; @%:@( + *) : + CONFIG_STATUS=./$CONFIG_STATUS ;; +esac + +ac_write_fail=0 +ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$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 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ------------------------------------- ## +## Main body of "$CONFIG_STATUS" script. ## +## ------------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.73, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2026 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || { + awk '' >"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf '%s\n' "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf '%s\n' "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf '%s\n' "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +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 + shift + \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + printf '%s\n' "$ac_log" +} >&5 + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # 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%}" + + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap '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 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || 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. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final ':' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo 'cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1' && + printf '%s\n' 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + printf '%s\n' "$ac_subst_files" | sed 's/.*/F@<:@"&"@:>@="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >"$CONFIG_STATUS" || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$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 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[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_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 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >"$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + suffix = P[macro] D[macro] + while (suffix ~ /[\t ]$/) { + suffix = substr(suffix, 1, length(suffix) - 1) + } + # Preserve the white space surrounding the "#". + print prefix "define", macro suffix + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$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 ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf '%s\n' "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf '%s\n' "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $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' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf '%s\n' "$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 +printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) 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 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf '%s\n' "/* $configure_input */" >&1 \ + && 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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf '%s\n' "/* $configure_input */" >&1 \ + && 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" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf '%s\n' "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf '%s\n' "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in @%:@( + *\'*) : + eval set x "$CONFIG_FILES" ;; @%:@( + *) : + set x $CONFIG_FILES ;; @%:@( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf '%s\n' "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See 'config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # 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" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment 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 assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_CONFIG_STATUS= + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + case $CONFIG_STATUS in @%:@( + -*) : + ac_no_opts=-- ;; @%:@( + *) : + ac_no_opts= ;; +esac + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || + ac_cs_success=false + 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 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + \ No newline at end of file diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/output.3 b/local/recipes/dev/gnu-make/source/autom4te.cache/output.3 new file mode 100644 index 0000000000..83bbf2e660 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/output.3 @@ -0,0 +1,17350 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.73 for GNU Make 4.4. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, +@%:@ Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# 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 +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +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 \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in @%:@( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || 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'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in @%:@( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + 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 +case $@%:@ in @%:@ (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf '%s\n' "$0: This script requires a shell more modern than all" + printf '%s\n' "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." + else + printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_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 +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$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 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf '%s\n' "$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). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# 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` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_CONFIG_STATUS= +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +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 +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ECHO_T +ECHO_N +ECHO_C +target_alias +host_alias +build_alias +LIBS +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --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" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # 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'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` + 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" ;; + *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +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" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +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 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --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 + --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 + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/make@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --disable-largefile omit support for large files + --disable-year2038 omit support for timestamps past the year 2038 + --enable-cross-guesses={conservative|risky} + specify policy for cross-compilation guesses + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + --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 + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --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-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 + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + 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. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.73 + +Copyright (C) 2026 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES +@%:@ ------------------------------------------- +@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache +@%:@ variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) eval "$3=yes" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_type + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to run conftest.@S|@ac_ext, and return whether this succeeded. Assumes that +@%:@ executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else case e in @%:@( + e) printf '%s\n' "$as_me: program exited with status $ac_status" >&5 + printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +@%:@ ------------------------------------------------------------------ +@%:@ Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +@%:@ accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in @%:@( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} @%:@ ac_fn_check_decl + +@%:@ ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +@%:@ ---------------------------------------------------- +@%:@ Tries to find if the field MEMBER exists in type AGGR, after including +@%:@ INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in @%:@( + e) eval "$4=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$4 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf '%s\n' "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# Dump the cache to stdout. It can be in a pipe (this is a requirement). +ac_cache_dump () +{ + # The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) +} + +# Print debugging info to stdout. +ac_dump_debugging_info () +{ + echo + + printf '%s\n' "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + ac_cache_dump + echo + + printf '%s\n' "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf '%s\n' "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + fi + + if test -s confdefs.h; then + printf '%s\n' "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf '%s\n' "$as_me: caught signal $ac_signal" + printf '%s\n' "$as_me: exit $exit_status" +} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. +ac_exit_trap () +{ + exit_status= + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + ac_dump_debugging_info >&5 + eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +} + +trap 'ac_exit_trap $?' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf '%s\n' "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf '%s\n' "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf '%s\n' "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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 + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf '%s\n' "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf '%s\n' "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C23 (global declarations) +ac_c_conftest_c23_globals=' +/* Does the compiler advertise conformance to C17 or earlier? + Although GCC 14 does not do that, even with -std=gnu23, + it is close enough, and defines __STDC_VERSION == 202000L. */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L +# error "Compiler advertises conformance to C17 or earlier" +#endif + +// Check alignas. +char alignas (double) c23_aligned_as_double; +char alignas (0) c23_no_special_alignment; +extern char c23_aligned_as_int; +char alignas (0) alignas (int) c23_aligned_as_int; + +// Check alignof. +enum +{ + c23_int_alignment = alignof (int), + c23_int_array_alignment = alignof (int[100]), + c23_char_alignment = alignof (char) +}; +static_assert (0 < -alignof (int), "alignof is signed"); + +int function_with_unnamed_parameter (int) { return 0; } + +void c23_noreturn (); + +/* Test parsing of string and char UTF-8 literals (including hex escapes). + The parens pacify GCC 15. */ +bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); + +bool check_that_bool_works = true | false | !nullptr; +#if !true +# error "true does not work in #if" +#endif +#if false +#elifdef __STDC_VERSION__ +#else +# error "#elifdef does not work" +#endif + +#ifndef __has_c_attribute +# error "__has_c_attribute not defined" +#endif + +#ifndef __has_include +# error "__has_include not defined" +#endif + +#define LPAREN() ( +#define FORTY_TWO(x) 42 +#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) +static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); + +static_assert (0b101010 == 42); +static_assert (0B101010 == 42); +static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); +static_assert (0.500'\''000'\''000 == 0.5); + +enum unsignedish : unsigned int { uione = 1 }; +static_assert (0 < -uione); + +#include +constexpr nullptr_t null_pointer = nullptr; + +static typeof (1 + 1L) two () { return 2; } +static long int three () { return 3; } +' + +# Test code for whether the C compiler supports C23 (body of main). +ac_c_conftest_c23_main=' + { + label_before_declaration: + int arr[10] = {}; + if (arr[0]) + goto label_before_declaration; + if (!arr[0]) + goto label_at_end_of_block; + label_at_end_of_block: + } + ok |= !null_pointer; + ok |= two != three; +' + +# Test code for whether the C compiler supports C23 (complete). +ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} + +int +main (int, char **) +{ + int ok = 0; + ${ac_c_conftest_c23_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Do not test the value of __STDC__, because some compilers define it to 0 + or do not define it, while otherwise adequately conforming. */ + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (char **p, int i) +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +/* Does the compiler advertise C99 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr, and "aND" is used instead of "and" to work around +// GCC bug 40564 which is irrelevant here. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, aND third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + const char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + static struct incomplete_array *volatile incomplete_array_pointer; + struct incomplete_array *ia = incomplete_array_pointer; + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + // Do not test for VLAs, as some otherwise-conforming compilers lack them. + // C code should instead use __STDC_NO_VLA__; see Autoconf manual. + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || ni.number != 58); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +/* Does the compiler advertise C11 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +gt_needs="$gt_needs " +as_fn_append ac_header_c_list " vfork.h vfork_h HAVE_VFORK_H" +as_fn_append ac_func_c_list " fork HAVE_FORK" +as_fn_append ac_func_c_list " vfork HAVE_VFORK" + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath config.guess config.sub compile missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf '%s\n' "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf '%s\n' "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w= + for ac_val in x $ac_old_val; do + ac_old_val_w="$ac_old_val_w $ac_val" + done + ac_new_val_w= + for ac_val in x $ac_new_val; do + ac_new_val_w="$ac_new_val_w $ac_val" + done + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.18' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in @%:@(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF/1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF/1 since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf '%s\n' "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in @%:@( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf '%s\n' "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # 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". + printf '%s\n' ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf '%s\n' "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf '%s\n' "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in @%:@( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf '%s\n' "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf '%s\n' "$STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf '%s\n' "$ac_ct_STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + 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 ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf '%s\n' "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk 'busybox awk' +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf '%s\n' "$AWK" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf '%s\n' "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @printf '%s\n' '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# 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;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + SET_MAKE= +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +@%:@ Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if printf '%s\n' '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 ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf '%s\n' "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in @%:@( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in @%:@( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf '%s\n' "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in @%:@( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf '%s\n' "@%:@define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf '%s\n' "@%:@define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# 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}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf '%s\n' "$am_cv_prog_tar_ustar" >&6; } + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + + + + + + +# Checks for programs. + + + + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in @%:@( + '0:this is the am__doit target') : + case $s in @%:@( + BSD) : + am__include='.include' am__quote='"' ;; @%:@( + *) : + am__include='include' am__quote='' ;; +esac ;; @%:@( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf '%s\n' "${_am_result}" >&6; } + +@%:@ Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +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= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in @%:@( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf '%s\n' "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf '%s\n' "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf '%s\n' "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in @%:@( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf '%s\n' "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf '%s\n' "$gl_cv_compiler_clang" >&6; } + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf '%s\n' "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf '%s\n' "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else case e in @%:@( + e) ac_cv_safe_to_define___extensions__=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf '%s\n' "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf '%s\n' "$ac_cv_should_define__xopen_source" >&6; } + + printf '%s\n' "@%:@define _ALL_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _COSMO_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _GNU_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf '%s\n' "@%:@define _NETBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _OPENBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf '%s\n' "@%:@define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf '%s\n' "@%:@define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf '%s\n' "@%:@define _MINIX 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_SOURCE 1" >>confdefs.h + + printf '%s\n' "@%:@define _POSIX_1_SOURCE 2" >>confdefs.h + +else case e in @%:@( + e) MINIX= ;; +esac +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf '%s\n' "@%:@define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf '%s\n' "@%:@define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in @%:@( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in @%:@( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in @%:@( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else case e in @%:@( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf '%s\n' "$gl_cv_compiler_clang" >&6; } + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else case e in @%:@( + e) gl_cv_compiler_check_decl_option=none ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Configure gnulib + + + # 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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf '%s\n' "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`printf '%s\n' "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf '%s\n' "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`printf '%s\n' "$host_os" | sed 's/ /-/g'`;; esac + + + + + + + case "$host_os" in + openbsd*) + +printf '%s\n' "@%:@define _ISOC11_SOURCE 1" >>confdefs.h + + ;; + esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in @%:@( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf '%s\n' "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 +printf %s "checking for Minix Amsterdam compiler... " >&6; } +if test ${gl_cv_c_amsterdam_compiler+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else case e in @%:@( + e) gl_cv_c_amsterdam_compiler=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf '%s\n' "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf '%s\n' "$ac_ct_AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +@%:@ Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO" +then : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf '%s\n' "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf '%s\n' "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +printf '%s\n' "@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h +;; +esac +rm -rf conftest* + case $ac_cv_sys_file_offset_bits in @%:@( + unknown) : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _LARGE_FILES +#define _LARGE_FILES 1 +@%:@include +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +printf '%s\n' "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +printf '%s\n' "@%:@define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h +;; +esac +rm -rf conftest* ;; @%:@( + 64) : + + @%:@ Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; +fi + + if test "$enable_year2038" != no +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for time_t past the year 2038" >&5 +printf %s "checking for time_t past the year 2038... " >&6; } +if test ${gl_cv_type_time_t_y2038+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else case e in @%:@( + e) gl_cv_type_time_t_y2038=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_y2038" >&5 +printf '%s\n' "$gl_cv_type_time_t_y2038" >&6; } + if test "$gl_cv_type_time_t_y2038" = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit time_t with _TIME_BITS=64" >&5 +printf %s "checking for 64-bit time_t with _TIME_BITS=64... " >&6; } +if test ${gl_cv_type_time_t_bits_macro+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else case e in @%:@( + e) gl_cv_type_time_t_bits_macro=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_bits_macro" >&5 +printf '%s\n' "$gl_cv_type_time_t_bits_macro" >&6; } + if test "$gl_cv_type_time_t_bits_macro" = yes; then + +printf '%s\n' "@%:@define _TIME_BITS 64" >>confdefs.h + + +printf '%s\n' "@%:@define _FILE_OFFSET_BITS 64" >>confdefs.h + + gl_cv_type_time_t_y2038=yes + fi + fi + if test $gl_cv_type_time_t_y2038 = no; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _USE_32BIT_TIME_T + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "The 'time_t' type stops working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags. +See 'config.log' for more details" "$LINENO" 5; } +else case e in @%:@( + e) # If not cross-compiling and says we should check, + # and 'touch' works with a large timestamp, then evidently wider time_t + # is desired and supported, so fail and ask the builder to fix the + # problem. Otherwise, just warn the builder. + + if test "$gl_warned_about_y2038" != yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&5 +printf '%s\n' "$as_me: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&2;} + gl_warned_about_y2038=yes + fi + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +fi + ;; @%:@( + *) : + ;; +esac +fi + + + + case "$host_os" in + mingw*) + +printf '%s\n' "@%:@define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h + + ;; + esac + + + + # Pre-early section. + + + + # Code from module alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + @%:@ Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf '%s\n' "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else case e in @%:@( + e) gl_cross_guesses=conservative ;; +esac +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +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 case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else case e in @%:@( + e) ac_cv_working_alloca_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf '%s\n' "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_alloca_works=$ac_cv_working_alloca_h +if test "$ac_cv_func_alloca_works" != yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf '%s\n' "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf '%s\n' "@%:@define C_ALLOCA 1" >>confdefs.h + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + 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 (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else case e in @%:@( + e) ac_cv_c_stack_direction=-1 ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf '%s\n' "$ac_cv_c_stack_direction" >&6; } +printf '%s\n' "@%:@define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define eaccess access" >>confdefs.h + ;; +esac +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5 +printf %s "checking for $CC options to detect undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in @%:@( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in @%:@( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf '%s\n' "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in @%:@( + 'cannot detect') : + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See 'config.log' for more details" "$LINENO" 5; } ;; @%:@( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; @%:@( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5 +printf %s "checking for $CC options to ignore future-version functions... " >&6; } +if test ${ac_cv_c_future_darwin_options+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_compile_saved="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if ! (defined __APPLE__ && defined __MACH__) + #error "-Werror=unguarded-availability-new not needed here" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new' +else case e in @%:@( + e) ac_cv_c_future_darwin_options='none needed' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$ac_compile_saved" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5 +printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; } + case $ac_cv_c_future_darwin_options in @%:@( + 'none needed') : + ac_c_future_darwin_options='' ;; @%:@( + *) : + ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "MicrosoftCompiler" >/dev/null 2>&1 +then : + rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if test -f conftest.o; then + gl_asmext='s' + gl_c_asm_opt='-S' + else + gl_asmext='asm' + gl_c_asm_opt='-c -Fa' + fi + rm -f conftest* + +else case e in @%:@( + e) gl_asmext='s' + gl_c_asm_opt='-S' + ;; +esac +fi +rm -rf conftest* + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=x86_64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=i386 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=arm64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in @%:@( + e) # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=hppa ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=ia64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else case e in @%:@( + e) # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=mips ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=powerpc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else case e in @%:@( + e) cpu=riscv32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else case e in @%:@( + e) main_abi=ilp32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else case e in @%:@( + e) float_abi='' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=s390 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else case e in @%:@( + e) gl_cv_host_cpu_c_abi=sparc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf '%s\n' "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else case e in @%:@( + e) gl_cv_type_off_t_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf '%s\n' "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else case e in @%:@( + e) gl_cv_member_st_size_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf '%s\n' "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf '%s\n' "@%:@define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C99 requires bool, true, and false to be macros, + C23 and C++11 overrule that, so do not test for that. + Although C99 requires __bool_true_false_are_defined and + _Bool, C23 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else case e in @%:@( + e) ac_cv_header_stdbool_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf '%s\n' "$ac_cv_header_stdbool_h" >&6; } + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf '%s\n' "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else case e in @%:@( + e) gl_cv_rpl_alloca=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf '%s\n' "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf '%s\n' "@%:@define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else case e in @%:@( + e) gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char elf_begin (void); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else case e in @%:@( + e) ac_cv_lib_elf_elf_begin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf '%s\n' "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kvm_open (void); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else case e in @%:@( + e) ac_cv_lib_kvm_kvm_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf '%s\n' "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_util_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else case e in @%:@( + e) ac_cv_lib_getloadavg_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else case e in @%:@( + e) LIBS=$gl_getloadavg_LIBS ;; +esac +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kstat_open (void); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else case e in @%:@( + e) ac_cv_lib_kstat_kstat_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf '%s\n' "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char perfstat_cpu_total (void); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else case e in @%:@( + e) ac_cv_lib_perfstat_perfstat_cpu_total=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf '%s\n' "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define DGUX 1" >>confdefs.h + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dg_sys_info (void); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else case e in @%:@( + e) ac_cv_lib_dgc_dg_sys_info=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf '%s\n' "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi ;; +esac +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else case e in @%:@( + e) HAVE_DECL_GETLOADAVG=0 ;; +esac +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + 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" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + + +printf '%s\n' "@%:@define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf '%s\n' "@%:@define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf '%s\n' "@%:@define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf '%s\n' "@%:@define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5 +printf %s "checking if system libc has GNU glob... " >&6; } +if test ${make_cv_sys_gnu_glob+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else case e in @%:@( + e) make_cv_sys_gnu_glob=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf '%s\n' "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + 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 (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else case e in @%:@( + e) ac_cv_dos_paths=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf '%s\n' "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + case "$GL_GENERATE_STDBOOL_H" in + false) STDBOOL_H='' ;; + true) + if test -z "$STDBOOL_H"; then + STDBOOL_H="${gl_source_base_prefix}stdbool.h" + fi + ;; + *) echo "*** GL_GENERATE_STDBOOL_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE='#' + fi + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in @%:@( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in @%:@( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in @%:@( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi ;; +esac +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf '%s\n' "$PERL" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + +# Specialized system macros + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in @%:@( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else case e in @%:@( + e) ac_cv_c_bigendian=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf '%s\n' "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf '%s\n' "@%:@define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf '%s\n' "@%:@define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in @%:@( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +@%:@( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf '%s\n' "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + @%:@ Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else case e in @%:@( + e) USE_NLS=yes ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf '%s\n' "$MSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf '%s\n' "$GMSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf '%s\n' "$XGETTEXT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf '%s\n' "$MSGMERGE" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +@%:@ Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else case e in @%:@( + e) with_gnu_ld=no ;; +esac +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf '%s\n' "$LD" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf '%s\n' "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf '%s\n' "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + 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+y} +then : + enableval=$enable_rpath; : +else case e in @%:@( + e) enable_rpath=yes ;; +esac +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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_TRADITIONAL "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else case e in @%:@( + e) gl_cv_solaris_64bit=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf '%s\n' "$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" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else case e in @%:@( + e) gt_cv_func_CFPreferencesCopyAppValue=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf '%s\n' "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf '%s\n' "@%:@define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else case e in @%:@( + e) gt_cv_func_CFLocaleCopyCurrent=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf '%s\n' "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf '%s\n' "@%:@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 + + + + + + + LIBINTL= + 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 + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libc=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf '%s\n' "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + 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 case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* 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 ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* 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 ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#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 ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#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)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf '%s\n' "$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 + +printf '%s\n' "@%:@define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf '%s\n' "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +@%:@ Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else case e in @%:@( + e) eval "$gt_func_gnugettext_libintl=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + 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 +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + fi + + 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 + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + 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 + +printf '%s\n' "@%:@define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf '%s\n' "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf '%s\n' "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf '%s\n' "@%:@define HAVE_GETTEXT 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (void); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else case e in @%:@( + e) ac_cv_search_strerror=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf '%s\n' "$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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getpwnam (void); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else case e in @%:@( + e) ac_cv_search_getpwnam=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf '%s\n' "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf '%s\n' "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else case e in @%:@( + e) eval "$as_ac_Header=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$as_ac_Header + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +@%:@define `printf '%s\n' "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in @%:@( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else case e in @%:@( + e) ac_cv_header_stat_broken=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf '%s\n' "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf '%s\n' "@%:@define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_FCNTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRING_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default" +if test "x$ac_cv_header_spawn_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SPAWN_H 1" >>confdefs.h + +fi + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* 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; + if (s) return 0; + } + { /* Derived from code rejected by Sun C 1.0 and similar vintage. */ + int x[] = {25, 17}; + typedef int const *iptr; + iptr foo = &x[0]; + ++foo; + if (!*foo) return 0; + } + { /* IBM 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]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in @%:@( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf '%s\n' "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf '%s\n' "@%:@define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define uid_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define gid_t int" >>confdefs.h + ;; +esac +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" = xyes +then : + +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else case e in @%:@( + e) ac_pid_type='__int64' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf '%s\n' "@%:@define pid_t $ac_pid_type" >>confdefs.h + + ;; +esac +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define off_t long int" >>confdefs.h + ;; +esac +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 case e in @%:@( + e) +printf '%s\n' "@%:@define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else case e in @%:@( + e) +printf '%s\n' "@%:@define ssize_t int" >>confdefs.h + ;; +esac +fi + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_unsigned_long_long_int=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes +then : + : +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else case e in @%:@( + e) ac_cv_type_long_long_int=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +printf '%s\n' "@%:@define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" +if test "x$ac_cv_type_intmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_INTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_long_long_int = yes \ + && ac_type='long long int' \ + || ac_type='long int' + +printf '%s\n' "@%:@define intmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_UINTMAX_T 1" >>confdefs.h + +else case e in @%:@( + e) test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf '%s\n' "@%:@define uintmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf '%s\n' "@%:@define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else case e in @%:@( + e) +printf '%s\n' "@%:@define sig_atomic_t int" >>confdefs.h + ;; +esac +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # 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_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. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf '%s\n' "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf '%s\n' "@%:@define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +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.beam conftest.$ac_ext + +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf '%s\n' "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else case e in @%:@( + e) val=0 ;; +esac +fi + +printf '%s\n' "@%:@define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +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. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in @%:@( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf '%s\n' "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf '%s\n' "@%:@define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return 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 +else case e in @%:@( + e) ac_cv_func_gettimeofday=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf '%s\n' "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf '%s\n' "@%:@define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf '%s\n' "@%:@define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf '%s\n' "@%:@define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf '%s\n' "@%:@define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf '%s\n' "@%:@define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf '%s\n' "@%:@define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf '%s\n' "@%:@define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf '%s\n' "@%:@define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf '%s\n' "@%:@define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf '%s\n' "@%:@define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf '%s\n' "@%:@define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf '%s\n' "@%:@define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf '%s\n' "@%:@define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf '%s\n' "@%:@define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf '%s\n' "@%:@define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf '%s\n' "@%:@define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf '%s\n' "@%:@define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# 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_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By R. Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else case e in @%:@( + e) ac_cv_func_fork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf '%s\n' "$ac_cv_func_fork_works" >&6; } + +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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf '%s\n' "$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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* 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 , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + 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 (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + 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); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _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; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* 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 +else case e in @%:@( + e) ac_cv_func_vfork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf '%s\n' "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf '%s\n' "@%:@define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf '%s\n' "@%:@define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf '%s\n' "@%:@define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_strcoll_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_strcoll_works=no ;; + esac +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else case e in @%:@( + e) ac_cv_func_strcoll_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf '%s\n' "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf '%s\n' "@%:@define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else case e in @%:@( + e) ac_cv_func_closedir_void=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf '%s\n' "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf '%s\n' "@%:@define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf '%s\n' "@%:@define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +@%:@ Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +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 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf '%s\n' "$PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +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 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$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 +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf '%s\n' "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } + +if test -n "$GUILE_CFLAGS"; then + pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 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" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "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-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "A pkg-config implementation 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. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get a pkg-config implementation, see . +See 'config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf '%s\n' "@%:@define HAVE_GUILE 1" >>confdefs.h + +else case e in @%:@( + e) have_guile=no ;; +esac +fi + + if test "$have_guile" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else case e in @%:@( + e) have_guile=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf '%s\n' "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf '%s\n' "@%:@define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf '%s\n' "@%:@define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +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 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else case e in @%:@( + e) make_cv_union_wait=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf '%s\n' "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf '%s\n' "@%:@define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + +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+y} +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 + +cf_test_netlibs=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf '%s\n' "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 +printf %s "checking for gethostname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else case e in @%:@( + e) ac_cv_lib_socket_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else case e in @%:@( + e) ac_cv_lib_inet_main=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf '%s\n' "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +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" = xyes +then : + printf '%s\n' "@%:@define HAVE_SOCKET 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +printf %s "checking for socket in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else case e in @%:@( + e) ac_cv_lib_socket_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf '%s\n' "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else case e in @%:@( + e) ac_cv_lib_bsd_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf '%s\n' "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +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" = xyes +then : + printf '%s\n' "@%:@define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else case e in @%:@( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +printf %s "checking for gethostbyname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else case e in @%:@( + e) ac_cv_lib_nsl_gethostbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "@%:@define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in @%:@( + e) + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + +done + ;; +esac +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$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" +else case e in @%:@( + e) with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes ;; +esac +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +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+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf '%s\n' "@%:@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+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else case e in @%:@( + e) make_cv_job_server="yes" ;; +esac +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else case e in @%:@( + e) has_wait_nohang=yes ;; +esac +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else case e in @%:@( + e) make_cv_sa_restart=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf '%s\n' "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf '%s\n' "@%:@define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in @%:@( + */no/*) : + make_cv_job_server=no ;; @%:@( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in @%:@( + os2*|mingw*) : + make_cv_job_server=yes ;; @%:@( + *) : + ;; +esac + +# 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 ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else case e in @%:@( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "@%:@define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +@%:@ Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else case e in @%:@( + e) make_cv_load="yes" ;; +esac +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else case e in @%:@( + e) ac_cv_search_dlopen=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf '%s\n' "$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 case e in @%:@( + e) make_cv_load= ;; +esac +fi + + +fi + +case /$make_cv_load/$user_load/ in @%:@( + */no/*) : + make_cv_load=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# 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 : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "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 : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "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 : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf '%s\n' "@%:@define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +@%:@ Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else case e in @%:@( + e) make_cv_posix_spawn="yes" ;; +esac +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else case e in @%:@( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else case e in @%:@( + e) make_cv_synchronous_posix_spawn=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf '%s\n' "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in @%:@( + */no/*) : + make_cv_posix_spawn=no ;; @%:@( + *) : + +printf '%s\n' "@%:@define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else case e in @%:@( + e) make_cv_path_sccs_get=get ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf '%s\n' "$make_cv_path_sccs_get" >&6; } + +printf '%s\n' "@%:@define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +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. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) 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 case e in @%:@( + e) make_cv_sys_get_minus_G=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf '%s\n' "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf '%s\n' "@%:@define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf '%s\n' "@%:@define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in @%:@( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf '%s\n' "@%:@define WINDOWS32 1" >>confdefs.h + + +printf '%s\n' "@%:@define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; @%:@( + *) : + ;; +esac + + +printf '%s\n' "@%:@define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf '%s\n' "@%:@define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf '%s\n' "@%:@define MK_CONFIGURE 1" >>confdefs.h + + +# 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 + + +# Allow building with dmalloc +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +@%:@ Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +printf '%s\n' "@%:@define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +else case e in @%:@( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi + + + +# 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 + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in @%:@( + ""|n|no|y|ye|yes) : + : ;; @%:@( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else case e in @%:@( + e) 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 + ;; +esac +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 + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +ac_cache_dump | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf '%s\n' "$as_me: updating cache $cache_file" >&6;} + 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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf '%s\n' "done" >&6; } +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +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 + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + 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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +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. +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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +case $CONFIG_STATUS in @%:@( + -*) : + CONFIG_STATUS=./$CONFIG_STATUS ;; @%:@( + */*) : + ;; @%:@( + *) : + CONFIG_STATUS=./$CONFIG_STATUS ;; +esac + +ac_write_fail=0 +ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$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 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ------------------------------------- ## +## Main body of "$CONFIG_STATUS" script. ## +## ------------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.73, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2026 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || { + awk '' >"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf '%s\n' "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf '%s\n' "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf '%s\n' "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +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 + shift + \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + printf '%s\n' "$ac_log" +} >&5 + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # 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%}" + + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap '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 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || 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. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final ':' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo 'cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1' && + printf '%s\n' 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + printf '%s\n' "$ac_subst_files" | sed 's/.*/F@<:@"&"@:>@="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >"$CONFIG_STATUS" || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$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 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[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_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 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >"$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + suffix = P[macro] D[macro] + while (suffix ~ /[\t ]$/) { + suffix = substr(suffix, 1, length(suffix) - 1) + } + # Preserve the white space surrounding the "#". + print prefix "define", macro suffix + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$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 ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf '%s\n' "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf '%s\n' "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $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' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf '%s\n' "$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 +printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) 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 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf '%s\n' "/* $configure_input */" >&1 \ + && 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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf '%s\n' "/* $configure_input */" >&1 \ + && 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" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf '%s\n' "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf '%s\n' "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in @%:@( + *\'*) : + eval set x "$CONFIG_FILES" ;; @%:@( + *) : + set x $CONFIG_FILES ;; @%:@( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf '%s\n' "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See 'config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # 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" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment 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 assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_CONFIG_STATUS= + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + case $CONFIG_STATUS in @%:@( + -*) : + ac_no_opts=-- ;; @%:@( + *) : + ac_no_opts= ;; +esac + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || + ac_cs_success=false + 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 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/requests b/local/recipes/dev/gnu-make/source/autom4te.cache/requests new file mode 100644 index 0000000000..c9195a2c20 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/requests @@ -0,0 +1,604 @@ +# This file was generated by Autom4te 2.73. +# It contains the lists of macros which have been traced. +# It can be safely removed. + +@request = ( + bless( [ + '0', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + '/usr/share/aclocal-1.18/internal/ac-config-macro-dirs.m4', + '/usr/share/aclocal/lt~obsolete.m4', + '/usr/share/aclocal/pkg.m4', + '/usr/share/aclocal-1.18/amversion.m4', + '/usr/share/aclocal-1.18/auxdir.m4', + '/usr/share/aclocal-1.18/cond-if.m4', + '/usr/share/aclocal-1.18/cond.m4', + '/usr/share/aclocal-1.18/depend.m4', + '/usr/share/aclocal-1.18/depout.m4', + '/usr/share/aclocal-1.18/dmalloc.m4', + '/usr/share/aclocal-1.18/init.m4', + '/usr/share/aclocal-1.18/install-sh.m4', + '/usr/share/aclocal-1.18/lead-dot.m4', + '/usr/share/aclocal-1.18/make.m4', + '/usr/share/aclocal-1.18/missing.m4', + '/usr/share/aclocal-1.18/options.m4', + '/usr/share/aclocal-1.18/prog-cc-c-o.m4', + '/usr/share/aclocal-1.18/rmf.m4', + '/usr/share/aclocal-1.18/runlog.m4', + '/usr/share/aclocal-1.18/sanity.m4', + '/usr/share/aclocal-1.18/silent.m4', + '/usr/share/aclocal-1.18/strip.m4', + '/usr/share/aclocal-1.18/substnot.m4', + '/usr/share/aclocal-1.18/tar.m4', + '/usr/share/aclocal-1.18/xargsn.m4', + 'm4/00gnulib.m4', + 'm4/acinclude.m4', + 'm4/alloca.m4', + 'm4/asm-underscore.m4', + 'm4/codeset.m4', + 'm4/dospaths.m4', + 'm4/eaccess.m4', + 'm4/extensions.m4', + 'm4/extern-inline.m4', + 'm4/fcntl-o.m4', + 'm4/findprog-in.m4', + 'm4/getloadavg.m4', + 'm4/gettext.m4', + 'm4/glibc2.m4', + 'm4/glibc21.m4', + 'm4/gnulib-common.m4', + 'm4/gnulib-comp.m4', + 'm4/host-cpu-c-abi.m4', + 'm4/iconv.m4', + 'm4/intdiv0.m4', + 'm4/intl.m4', + 'm4/intlmacosx.m4', + 'm4/intmax.m4', + 'm4/inttypes-pri.m4', + 'm4/inttypes_h.m4', + 'm4/largefile.m4', + 'm4/lcmessage.m4', + 'm4/lib-ld.m4', + 'm4/lib-link.m4', + 'm4/lib-prefix.m4', + 'm4/lock.m4', + 'm4/longlong.m4', + 'm4/nls.m4', + 'm4/po.m4', + 'm4/printf-posix.m4', + 'm4/progtest.m4', + 'm4/sig_atomic_t.m4', + 'm4/size_max.m4', + 'm4/stdbool.m4', + 'm4/stdint_h.m4', + 'm4/threadlib.m4', + 'm4/uintmax_t.m4', + 'm4/visibility.m4', + 'm4/warn-on-use.m4', + 'm4/wchar_t.m4', + 'm4/wint_t.m4', + 'm4/xsize.m4', + 'm4/year2038.m4', + 'm4/zzgnulib.m4', + 'configure.ac' + ], + { + 'AC_' => 1, + 'AC_CHECK_HEADER_STDBOOL' => 1, + 'AC_CHECK_INCLUDES_DEFAULT' => 1, + 'AC_COMPUTE_INT' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_C_RESTRICT' => 1, + 'AC_DEFUN' => 1, + 'AC_DEFUN_ONCE' => 1, + 'AC_DEPLIBS_CHECK_METHOD' => 1, + 'AC_DISABLE_FAST_INSTALL' => 1, + 'AC_LIBTOOL_CONFIG' => 1, + 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, + 'AC_LIBTOOL_LANG_C_CONFIG' => 1, + 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, + 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, + 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, + 'AC_LIBTOOL_LINKER_OPTION' => 1, + 'AC_LIBTOOL_OBJDIR' => 1, + 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, + 'AC_LIBTOOL_PROG_CC_C_O' => 1, + 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, + 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, + 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, + 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, + 'AC_LIBTOOL_SETUP' => 1, + 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, + 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, + 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, + 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, + 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1, + 'AC_LIB_APPENDTOVAR' => 1, + 'AC_LIB_ARG_WITH' => 1, + 'AC_LIB_FROMPACKAGE' => 1, + 'AC_LIB_HAVE_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS_BODY' => 1, + 'AC_LIB_LINKFLAGS_FROM_LIBS' => 1, + 'AC_LIB_PREFIX' => 1, + 'AC_LIB_PREPARE_MULTILIB' => 1, + 'AC_LIB_PREPARE_PREFIX' => 1, + 'AC_LIB_PROG_LD' => 1, + 'AC_LIB_PROG_LD_GNU' => 1, + 'AC_LIB_RPATH' => 1, + 'AC_LIB_WITH_FINAL_PREFIX' => 1, + 'AC_LTDL_ENABLE_INSTALL' => 1, + 'AC_LTDL_OBJDIR' => 1, + 'AC_LTDL_PREOPEN' => 1, + 'AC_PATH_MAGIC' => 1, + 'AC_PROG_EGREP' => 1, + 'AC_PROG_LD_GNU' => 1, + 'AC_PROG_LD_RELOAD_FLAG' => 1, + 'AC_STRUCT_ST_MTIM_NSEC' => 1, + 'AC_SYS_LARGEFILE' => 1, + 'AC_TYPE_LONG_LONG_INT' => 1, + 'AC_TYPE_UNSIGNED_LONG_LONG_INT' => 1, + 'AC_USE_SYSTEM_EXTENSIONS' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_AUX_DIR_EXPAND' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_COND_IF' => 1, + 'AM_DEP_TRACK' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_GNU_GETTEXT_NEED' => 1, + 'AM_GNU_GETTEXT_VERSION' => 1, + 'AM_ICONV' => 1, + 'AM_ICONV_LINK' => 1, + 'AM_ICONV_LINKFLAGS_BODY' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_INTL_SUBDIR' => 1, + 'AM_LANGINFO_CODESET' => 1, + 'AM_MAKE_INCLUDE' => 1, + 'AM_MISSING_HAS_RUN' => 1, + 'AM_MISSING_PROG' => 1, + 'AM_NLS' => 1, + 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + 'AM_PATH_PROG_WITH_TEST' => 1, + 'AM_POSTPROCESS_PO_MAKEFILE' => 1, + 'AM_PO_SUBDIRS' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_INSTALL_SH' => 1, + 'AM_PROG_INSTALL_STRIP' => 1, + 'AM_RUN_LOG' => 1, + 'AM_SANITY_CHECK' => 1, + 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, + 'AM_SET_DEPDIR' => 1, + 'AM_SET_LEADING_DOT' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_SUBST_NOTMAKE' => 1, + 'AM_WITH_DMALLOC' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AM_XGETTEXT_OPTION_INIT' => 1, + 'AU_DEFUN' => 1, + 'CF_NETLIBS' => 1, + 'CF_RECHECK_FUNC' => 1, + 'CF_UPPER' => 1, + 'GL_MDA_DEFINES' => 1, + 'LTOBSOLETE_VERSION' => 1, + 'LT_AC_PROG_EGREP' => 1, + 'LT_AC_PROG_SED' => 1, + 'PKG_CHECK_EXISTS' => 1, + 'PKG_CHECK_MODULES' => 1, + 'PKG_CHECK_MODULES_STATIC' => 1, + 'PKG_CHECK_VAR' => 1, + 'PKG_HAVE_DEFINE_WITH_MODULES' => 1, + 'PKG_HAVE_WITH_MODULES' => 1, + 'PKG_INSTALLDIR' => 1, + 'PKG_NOARCH_INSTALLDIR' => 1, + 'PKG_PROG_PKG_CONFIG' => 1, + 'PKG_WITH_MODULES' => 1, + '_AC_AM_CONFIG_HEADER_HOOK' => 1, + '_AC_PROG_LIBTOOL' => 1, + '_AC_TYPE_LONG_LONG_SNIPPET' => 1, + '_AM_AUTOCONF_VERSION' => 1, + '_AM_CONFIG_MACRO_DIRS' => 1, + '_AM_DEPENDENCIES' => 1, + '_AM_FILESYSTEM_TIMESTAMP_RESOLUTION' => 1, + '_AM_IF_OPTION' => 1, + '_AM_MANGLE_OPTION' => 1, + '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + '_AM_PROG_CC_C_O' => 1, + '_AM_PROG_RM_F' => 1, + '_AM_PROG_TAR' => 1, + '_AM_PROG_XARGS_N' => 1, + '_AM_SET_OPTION' => 1, + '_AM_SET_OPTIONS' => 1, + '_AM_SILENT_RULES' => 1, + '_AM_SLEEP_FRACTIONAL_SECONDS' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_GL_MDA_DEFINES' => 1, + '_LT_AC_CHECK_DLFCN' => 1, + '_LT_AC_FILE_LTDLL_C' => 1, + '_LT_AC_LANG_CXX' => 1, + '_LT_AC_LANG_CXX_CONFIG' => 1, + '_LT_AC_LANG_C_CONFIG' => 1, + '_LT_AC_LANG_F77' => 1, + '_LT_AC_LANG_F77_CONFIG' => 1, + '_LT_AC_LANG_GCJ' => 1, + '_LT_AC_LANG_GCJ_CONFIG' => 1, + '_LT_AC_LANG_RC_CONFIG' => 1, + '_LT_AC_LOCK' => 1, + '_LT_AC_PROG_CXXCPP' => 1, + '_LT_AC_PROG_ECHO_BACKSLASH' => 1, + '_LT_AC_SHELL_INIT' => 1, + '_LT_AC_SYS_COMPILER' => 1, + '_LT_AC_SYS_LIBPATH_AIX' => 1, + '_LT_AC_TAGCONFIG' => 1, + '_LT_AC_TAGVAR' => 1, + '_LT_AC_TRY_DLOPEN_SELF' => 1, + '_LT_CC_BASENAME' => 1, + '_LT_COMPILER_BOILERPLATE' => 1, + '_LT_LINKER_BOILERPLATE' => 1, + '_LT_PREPARE_SED_QUOTE_VARS' => 1, + '_LT_PROG_CXX' => 1, + '_LT_PROG_ECHO_BACKSLASH' => 1, + '_LT_PROG_F77' => 1, + '_LT_PROG_FC' => 1, + '_LT_PROG_LTMAIN' => 1, + '_LT_REQUIRED_DARWIN_CHECKS' => 1, + '_PKG_SHORT_ERRORS_SUPPORTED' => 1, + '_m4_warn' => 1, + 'gl_00GNULIB' => 1, + 'gl_AC_HEADER_INTTYPES_H' => 1, + 'gl_AC_HEADER_STDINT_H' => 1, + 'gl_AC_TYPE_UINTMAX_T' => 1, + 'gl_ASM_SYMBOL_PREFIX' => 1, + 'gl_ASSERT_NO_GNULIB_POSIXCHECK' => 1, + 'gl_ASSERT_NO_GNULIB_TESTS' => 1, + 'gl_BIGENDIAN' => 1, + 'gl_CACHE_VAL_SILENT' => 1, + 'gl_CC_ALLOW_WARNINGS' => 1, + 'gl_CC_GNULIB_WARNINGS' => 1, + 'gl_COMMON' => 1, + 'gl_COMMON_BODY' => 1, + 'gl_COMPILER_CLANG' => 1, + 'gl_COMPILER_PREPARE_CHECK_DECL' => 1, + 'gl_CONDITIONAL' => 1, + 'gl_CONDITIONAL_HEADER' => 1, + 'gl_CXX_ALLOW_WARNINGS' => 1, + 'gl_C_ASM' => 1, + 'gl_DISABLE_THREADS' => 1, + 'gl_EARLY' => 1, + 'gl_EXTERN_INLINE' => 1, + 'gl_FCNTL_O_FLAGS' => 1, + 'gl_FEATURES_H' => 1, + 'gl_FILE_LIST' => 1, + 'gl_FINDPROG_IN' => 1, + 'gl_FUNC_ALLOCA' => 1, + 'gl_FUNC_EACCESS' => 1, + 'gl_GETLOADAVG' => 1, + 'gl_GLIBC21' => 1, + 'gl_HOST_CPU_C_ABI' => 1, + 'gl_HOST_CPU_C_ABI_32BIT' => 1, + 'gl_INIT' => 1, + 'gl_LARGEFILE' => 1, + 'gl_LIBOBJ' => 1, + 'gl_LIBSOURCES' => 1, + 'gl_LOCK' => 1, + 'gl_MODULE_INDICATOR' => 1, + 'gl_MODULE_INDICATOR_FOR_TESTS' => 1, + 'gl_MODULE_INDICATOR_INIT_VARIABLE' => 1, + 'gl_MODULE_INDICATOR_SET_VARIABLE' => 1, + 'gl_MODULE_INDICATOR_SET_VARIABLE_AUX' => 1, + 'gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR' => 1, + 'gl_PREREQ_ALLOCA' => 1, + 'gl_PREREQ_GETLOADAVG' => 1, + 'gl_PREREQ_LOCK' => 1, + 'gl_PROG_AR_RANLIB' => 1, + 'gl_PROG_CC_C99' => 1, + 'gl_REPLACE_FUNCS' => 1, + 'gl_SET_LARGEFILE_SOURCE' => 1, + 'gl_SILENT' => 1, + 'gl_SIZE_MAX' => 1, + 'gl_STDBOOL_H' => 1, + 'gl_STDLIB_H' => 1, + 'gl_STDLIB_H_DEFAULTS' => 1, + 'gl_STDLIB_H_REQUIRE_DEFAULTS' => 1, + 'gl_STDLIB_MODULE_INDICATOR' => 1, + 'gl_THREADLIB' => 1, + 'gl_THREADLIB_BODY' => 1, + 'gl_THREADLIB_EARLY' => 1, + 'gl_THREADLIB_EARLY_BODY' => 1, + 'gl_USE_SYSTEM_EXTENSIONS' => 1, + 'gl_VISIBILITY' => 1, + 'gl_W' => 1, + 'gl_WARN_ON_USE_PREPARE' => 1, + 'gl_XSIZE' => 1, + 'gl_YEAR2038' => 1, + 'gl_YEAR2038_BODY' => 1, + 'gl_YEAR2038_EARLY' => 1, + 'gl_YEAR2038_TEST_INCLUDES' => 1, + 'gl_ZZGNULIB' => 1, + 'gltests_LIBOBJ' => 1, + 'gltests_LIBSOURCES' => 1, + 'gltests_REPLACE_FUNCS' => 1, + 'gt_GLIBC2' => 1, + 'gt_GL_ATTRIBUTE' => 1, + 'gt_INTDIV0' => 1, + 'gt_INTL_MACOSX' => 1, + 'gt_INTL_SUBDIR_CORE' => 1, + 'gt_INTTYPES_PRI' => 1, + 'gt_LC_MESSAGES' => 1, + 'gt_PRINTF_POSIX' => 1, + 'gt_TYPE_INTMAX_T' => 1, + 'gt_TYPE_SIG_ATOMIC_T' => 1, + 'gt_TYPE_WCHAR_T' => 1, + 'gt_TYPE_WINT_T' => 1, + 'include' => 1, + 'm4_include' => 1, + 'm4_pattern_allow' => 1, + 'm4_pattern_forbid' => 1, + 'pds_AC_DOS_PATHS' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '1', + 1, + [ + '/usr/share/autoconf', + '/share/aclocal' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.ac' + ], + { + 'AC_CANONICAL_BUILD' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_INIT' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_LIB_HAVE_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS_FROM_LIBS' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_SUBST' => 1, + 'AC_SUBST_TRACE' => 1, + 'AH_OUTPUT' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_GNU_GETTEXT_REQUIRE_VERSION' => 1, + 'AM_GNU_GETTEXT_VERSION' => 1, + 'AM_ICONV' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_NLS' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_POT_TOOLS' => 1, + 'AM_PROG_AR' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_PROG_MOC' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'GTK_DOC_CHECK' => 1, + 'GUILE_FLAGS' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'LT_INIT' => 1, + 'LT_SUPPORTED_TAG' => 1, + '_AM_COND_ELSE' => 1, + '_AM_COND_ENDIF' => 1, + '_AM_COND_IF' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_LT_AC_TAGCONFIG' => 1, + '_m4_warn' => 1, + 'include' => 1, + 'm4_include' => 1, + 'm4_pattern_allow' => 1, + 'm4_pattern_forbid' => 1, + 'm4_sinclude' => 1, + 'sinclude' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '2', + 1, + [ + '/usr/share/autoconf', + '/share/aclocal' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + '/usr/share/autoconf/autoconf/trailer.m4', + 'configure.ac' + ], + { + 'AC_CANONICAL_BUILD' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_INIT' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_LIB_HAVE_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS_FROM_LIBS' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_SUBST' => 1, + 'AC_SUBST_TRACE' => 1, + 'AH_OUTPUT' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_GNU_GETTEXT_REQUIRE_VERSION' => 1, + 'AM_GNU_GETTEXT_VERSION' => 1, + 'AM_ICONV' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_NLS' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_POT_TOOLS' => 1, + 'AM_PROG_AR' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_PROG_MOC' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'GTK_DOC_CHECK' => 1, + 'GUILE_FLAGS' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'LT_INIT' => 1, + 'LT_SUPPORTED_TAG' => 1, + '_AM_COND_ELSE' => 1, + '_AM_COND_ENDIF' => 1, + '_AM_COND_IF' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_LT_AC_TAGCONFIG' => 1, + '_m4_warn' => 1, + 'include' => 1, + 'm4_include' => 1, + 'm4_pattern_allow' => 1, + 'm4_pattern_forbid' => 1, + 'm4_sinclude' => 1, + 'sinclude' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '3', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.ac' + ], + { + 'AC_CANONICAL_BUILD' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_INIT' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_LIB_HAVE_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS' => 1, + 'AC_LIB_LINKFLAGS_FROM_LIBS' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_SUBST' => 1, + 'AC_SUBST_TRACE' => 1, + 'AH_OUTPUT' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_GNU_GETTEXT_REQUIRE_VERSION' => 1, + 'AM_GNU_GETTEXT_VERSION' => 1, + 'AM_ICONV' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_NLS' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_POT_TOOLS' => 1, + 'AM_PROG_AR' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_PROG_MOC' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'GTK_DOC_CHECK' => 1, + 'GUILE_FLAGS' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'LT_INIT' => 1, + 'LT_SUPPORTED_TAG' => 1, + '_AM_COND_ELSE' => 1, + '_AM_COND_ENDIF' => 1, + '_AM_COND_IF' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_LT_AC_TAGCONFIG' => 1, + '_m4_warn' => 1, + 'include' => 1, + 'm4_include' => 1, + 'm4_pattern_allow' => 1, + 'm4_pattern_forbid' => 1, + 'm4_sinclude' => 1, + 'sinclude' => 1 + } + ], 'Autom4te::Request' ) + ); + diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/traces.0 b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.0 new file mode 100644 index 0000000000..5d03f0239e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.0 @@ -0,0 +1,7739 @@ +m4trace:/usr/share/aclocal/lt~obsolete.m4:37: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:39: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SHELL_INIT]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:43: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_PROG_LTMAIN]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:45: -1- AC_DEFUN([_LT_AC_TAGVAR]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:47: -1- AC_DEFUN([AC_LTDL_PREOPEN]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_SYS_COMPILER]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:49: -1- AC_DEFUN([_LT_AC_LOCK]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:50: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:51: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LTDL_OBJDIR]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:57: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PATH_MAGIC]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_GNU]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:60: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:61: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:66: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:67: -1- AC_DEFUN([LT_AC_PROG_EGREP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:68: -1- AC_DEFUN([LT_AC_PROG_SED]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:69: -1- AC_DEFUN([_LT_CC_BASENAME]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:70: -1- AC_DEFUN([_LT_COMPILER_BOILERPLATE]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:71: -1- AC_DEFUN([_LT_LINKER_BOILERPLATE]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:72: -1- AC_DEFUN([_AC_PROG_LIBTOOL]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:73: -1- AC_DEFUN([AC_LIBTOOL_SETUP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:74: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:75: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:76: -1- AC_DEFUN([_LT_AC_TAGCONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:77: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_CXX]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_F77]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:80: -1- AC_DEFUN([_LT_AC_LANG_GCJ]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:81: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:82: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:83: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:84: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:85: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:86: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:87: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:88: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:89: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:90: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:91: -1- AC_DEFUN([AC_LIBTOOL_CONFIG]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:92: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:93: -1- AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:94: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:95: -1- AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:96: -1- AC_DEFUN([_LT_PROG_ECHO_BACKSLASH]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_F77]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_FC]) +m4trace:/usr/share/aclocal/lt~obsolete.m4:99: -1- AC_DEFUN([_LT_PROG_CXX]) +m4trace:/usr/share/aclocal/pkg.m4:56: -1- 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 +]) +m4trace:/usr/share/aclocal/pkg.m4:90: -1- 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]) +m4trace:/usr/share/aclocal/pkg.m4:119: -1- 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 +]) +m4trace:/usr/share/aclocal/pkg.m4:137: -1- 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 $2]) + +_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( +[A pkg-config implementation 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 a pkg-config implementation, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:206: -1- AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:224: -1- AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) +m4trace:/usr/share/aclocal/pkg.m4:246: -1- AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) +m4trace:/usr/share/aclocal/pkg.m4:265: -1- AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +]) +m4trace:/usr/share/aclocal/pkg.m4:283: -1- AC_DEFUN([PKG_WITH_MODULES], [ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],[$3],[$4])], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +]) +m4trace:/usr/share/aclocal/pkg.m4:320: -1- AC_DEFUN([PKG_HAVE_WITH_MODULES], [ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +]) +m4trace:/usr/share/aclocal/pkg.m4:335: -1- AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], [ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +]) +m4trace:/usr/share/aclocal-1.18/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.18' +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.18.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) +m4trace:/usr/share/aclocal-1.18/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.18.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +m4trace:/usr/share/aclocal-1.18/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) +m4trace:/usr/share/aclocal-1.18/cond-if.m4:23: -1- AC_DEFUN([AM_COND_IF], [m4_ifndef([_AM_COND_VALUE_$1], + [m4_fatal([$0: no such condition "$1"])])dnl +_AM_COND_IF([$1])dnl +if test -z "$$1_TRUE"; then : + m4_n([$2])[]dnl +m4_ifval([$3], +[_AM_COND_ELSE([$1])dnl +else + $3 +])dnl +_AM_COND_ENDIF([$1])dnl +fi[]dnl +]) +m4trace:/usr/share/aclocal-1.18/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) +m4trace:/usr/share/aclocal-1.18/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) +m4trace:/usr/share/aclocal-1.18/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) +m4trace:/usr/share/aclocal-1.18/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +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 +]) +m4trace:/usr/share/aclocal-1.18/depout.m4:11: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +]) +m4trace:/usr/share/aclocal-1.18/depout.m4:64: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) +m4trace:/usr/share/aclocal-1.18/dmalloc.m4:12: -1- AC_DEFUN([AM_WITH_DMALLOC], [AC_MSG_CHECKING([if malloc debugging is wanted]) +AC_ARG_WITH([dmalloc], +[AS_HELP_STRING([--with-dmalloc], + [use dmalloc, as in http://www.dmalloc.com])], +[if test "$withval" = yes; then + AC_MSG_RESULT([yes]) + AC_DEFINE([WITH_DMALLOC], [1], + [Define if using the dmalloc debugging malloc package]) + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + AC_MSG_RESULT([no]) +fi], [AC_MSG_RESULT([no])]) +]) +m4trace:/usr/share/aclocal-1.18/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], + [_AM_PROG_TAR([ustar])])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + +AC_REQUIRE([_AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +AC_REQUIRE([_AM_PROG_RM_F]) +AC_REQUIRE([_AM_PROG_XARGS_N]) + +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) +m4trace:/usr/share/aclocal-1.18/init.m4:167: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) +m4trace:/usr/share/aclocal-1.18/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) +m4trace:/usr/share/aclocal-1.18/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) +m4trace:/usr/share/aclocal-1.18/make.m4:13: -1- AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +m4trace:/usr/share/aclocal-1.18/make.m4:42: -1- m4_pattern_allow([^am__quote$]) +m4trace:/usr/share/aclocal-1.18/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) +m4trace:/usr/share/aclocal-1.18/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) +m4trace:/usr/share/aclocal-1.18/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) +m4trace:/usr/share/aclocal-1.18/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) +m4trace:/usr/share/aclocal-1.18/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +m4trace:/usr/share/aclocal-1.18/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +m4trace:/usr/share/aclocal-1.18/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) +m4trace:/usr/share/aclocal-1.18/prog-cc-c-o.m4:50: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) +m4trace:/usr/share/aclocal-1.18/rmf.m4:12: -1- AC_DEFUN([_AM_PROG_RM_F], [am__rm_f_notfound= +AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) +AC_SUBST(am__rm_f_notfound) +]) +m4trace:/usr/share/aclocal-1.18/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) +m4trace:/usr/share/aclocal-1.18/sanity.m4:11: -1- AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl +AC_CACHE_CHECK([whether sleep supports fractional seconds], + am_cv_sleep_fractional_seconds, [dnl +AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], + [am_cv_sleep_fractional_seconds=no]) +])]) +m4trace:/usr/share/aclocal-1.18/sanity.m4:28: -1- AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl +AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) +AC_CACHE_CHECK([filesystem timestamp resolution], + am_cv_filesystem_timestamp_resolution, [dnl +# Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `[ls -t conftest.ts[12]]` && + { + test "$[]*" != "X conftest.ts1 conftest.ts2" || + test "$[]*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # 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_ECHO_UNQUOTED( + ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], + [AS_MESSAGE_LOG_FD]) + AC_MSG_FAILURE([ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment.]) +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$[]2" = conftest.ts3 && + test "$[]3" = conftest.ts2 && + test "$[]4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) +])]) +m4trace:/usr/share/aclocal-1.18/sanity.m4:161: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) +# This check should not be cached, as it may vary across builds of +# different projects. +AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[]*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$[]2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +AC_MSG_RESULT([$am_build_env_is_sane]) +if test "$am_build_env_is_sane" = no; then + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl + ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! +]) +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) +m4trace:/usr/share/aclocal-1.18/silent.m4:11: -1- AC_DEFUN([_AM_SILENT_RULES], [AM_DEFAULT_VERBOSITY=1 +AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +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]) +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 +dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls +dnl to AM_SILENT_RULES to change the default value. +AC_CONFIG_COMMANDS_PRE([dnl +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +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 +])dnl +]) +m4trace:/usr/share/aclocal-1.18/silent.m4:69: -1- AC_DEFUN([AM_SILENT_RULES], [AC_REQUIRE([_AM_SILENT_RULES]) +AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])m4_newline +dnl We intentionally force a newline after the assignment, since a) nothing +dnl good can come of more text following, and b) that was the behavior +dnl before 1.17. See https://bugs.gnu.org/72267. +]) +m4trace:/usr/share/aclocal-1.18/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) +m4trace:/usr/share/aclocal-1.18/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) +m4trace:/usr/share/aclocal-1.18/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) +m4trace:/usr/share/aclocal-1.18/tar.m4:23: -1- AC_DEFUN([_AM_PROG_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}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test x$am_uid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) + elif test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test x$gm_gid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) + elif test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) +m4trace:/usr/share/aclocal-1.18/xargsn.m4:12: -1- AC_DEFUN([_AM_PROG_XARGS_N], [AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl +AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) +AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl + am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' +])dnl +AC_SUBST(am__xargs_n) +]) +m4trace:m4/00gnulib.m4:24: -1- AC_DEFUN([gl_COMPILER_CLANG], [ +dnl AC_REQUIRE([AC_PROG_CC]) + AC_CACHE_CHECK([whether the compiler is clang], + [gl_cv_compiler_clang], + [dnl Use _AC_COMPILE_IFELSE instead of AC_EGREP_CPP, to avoid error + dnl "circular dependency of AC_LANG_COMPILER(C)" if AC_PROG_CC has + dnl not yet been invoked. + _AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #ifdef __clang__ + barfbarf + #endif + ]],[[]]) + ], + [gl_cv_compiler_clang=no], + [gl_cv_compiler_clang=yes]) + ]) +]) +m4trace:m4/00gnulib.m4:43: -1- AC_DEFUN([gl_COMPILER_PREPARE_CHECK_DECL], [ +dnl AC_REQUIRE([AC_PROG_CC]) +dnl AC_REQUIRE([gl_COMPILER_CLANG]) + AC_CACHE_CHECK([for compiler option needed when checking for declarations], + [gl_cv_compiler_check_decl_option], + [if test $gl_cv_compiler_clang = yes; then + dnl Test whether the compiler supports the option + dnl '-Werror=implicit-function-declaration'. + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + dnl Use _AC_COMPILE_IFELSE instead of AC_COMPILE_IFELSE, to avoid a + dnl warning "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". + _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])], + [gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration'], + [gl_cv_compiler_check_decl_option=none]) + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ]) + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi +]) +m4trace:m4/00gnulib.m4:85: -1- AC_DEFUN([gl_00GNULIB]) +m4trace:m4/acinclude.m4:38: -1- AC_DEFUN([CF_NETLIBS], [ +cf_test_netlibs=no +AC_MSG_CHECKING(for network libraries) +AC_CACHE_VAL(cf_cv_netlibs,[ +AC_MSG_RESULT(working...) +cf_cv_netlibs="" +cf_test_netlibs=yes +AC_CHECK_FUNCS(gethostname,,[ + CF_RECHECK_FUNC(gethostname,nsl,cf_cv_netlibs,[ + CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)])]) +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +AC_CHECK_LIB(inet,main,cf_cv_netlibs="-linet $cf_cv_netlibs") +# +if test "$ac_cv_func_lsocket" != no ; then +AC_CHECK_FUNCS(socket,,[ + CF_RECHECK_FUNC(socket,socket,cf_cv_netlibs,[ + CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)])]) +fi +# +AC_CHECK_FUNCS(gethostbyname,,[ + CF_RECHECK_FUNC(gethostbyname,nsl,cf_cv_netlibs)]) +]) +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&AC_FD_MSG +]) +m4trace:m4/acinclude.m4:78: -1- AC_DEFUN([CF_RECHECK_FUNC], [ +AC_CHECK_LIB($2,$1,[ + CF_UPPER(cf_tr_func,$1) + AC_DEFINE_UNQUOTED(HAVE_$cf_tr_func,1,[Define if you have function $1]) + ac_cv_func_$1=yes + $3="-l$2 [$]$3"],[ + ac_cv_func_$1=unknown + unset ac_cv_func_$1 2>/dev/null + $4], + [[$]$3]) +]) +m4trace:m4/acinclude.m4:92: -1- AC_DEFUN([CF_UPPER], [ +changequote(,)dnl +$1=`echo $2 | tr '[a-z]' '[A-Z]'` +changequote([,])dnl +]) +m4trace:m4/acinclude.m4:105: -1- AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC], [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 + # 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_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 +#include + ], [struct stat s; s.ST_MTIM_NSEC;], + [ac_cv_struct_st_mtim_nsec=$ac_val; break]) + done + CPPFLAGS="$ac_save_CPPFLAGS" + ]) + + if test $ac_cv_struct_st_mtim_nsec != no; then + AC_DEFINE_UNQUOTED([ST_MTIM_NSEC], [$ac_cv_struct_st_mtim_nsec], + [Define if struct stat contains a nanoseconds field]) + fi + +]) +m4trace:m4/alloca.m4:8: -1- AC_DEFUN([gl_FUNC_ALLOCA], [ + AC_REQUIRE([AC_FUNC_ALLOCA]) + if test $ac_cv_func_alloca_works = no; then + gl_PREREQ_ALLOCA + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [ + AC_EGREP_CPP([Need own alloca], [ +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no]) + ]) + if test $gl_cv_rpl_alloca = yes; then + dnl OK, alloca can be implemented through a compiler built-in. + AC_DEFINE([HAVE_ALLOCA], [1], + [Define to 1 if you have 'alloca' after including , + a header that may be supplied by this distribution.]) + GL_GENERATE_ALLOCA_H=true + else + dnl alloca exists as a library function, i.e. it is slow and probably + dnl a memory leak. Don't define HAVE_ALLOCA in this case. + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + AC_SUBST([HAVE_ALLOCA_H]) +]) +m4trace:m4/alloca.m4:49: -1- AC_DEFUN([gl_PREREQ_ALLOCA], [:]) +m4trace:m4/asm-underscore.m4:15: -1- AC_DEFUN([gl_ASM_SYMBOL_PREFIX], [ + AC_REQUIRE([AC_PROG_EGREP]) + dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because + dnl 1. It works only for GCC. + dnl 2. It is incorrectly defined on some platforms, in some GCC versions. + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK( + [whether C symbols are prefixed with underscore at the linker level], + [gl_cv_prog_as_underscore], + [cat > conftest.c </dev/null 2>&1 + if LC_ALL=C $EGREP '(^|[[^a-zA-Z0-9_]])_foo([[^a-zA-Z0-9_]]|$)' conftest.$gl_asmext >/dev/null; then + gl_cv_prog_as_underscore=yes + else + gl_cv_prog_as_underscore=no + fi + rm -f conftest* + ]) + if test $gl_cv_prog_as_underscore = yes; then + USER_LABEL_PREFIX=_ + else + USER_LABEL_PREFIX= + fi + AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX], + [Define to the prefix of C symbols at the assembler and linker level, + either an underscore or empty.]) + ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"' + AC_SUBST([ASM_SYMBOL_PREFIX]) +]) +m4trace:m4/asm-underscore.m4:58: -1- AC_DEFUN([gl_C_ASM], [ + AC_EGREP_CPP([MicrosoftCompiler], + [ +#ifdef _MSC_VER +MicrosoftCompiler +#endif + ], + [dnl Microsoft's 'cl' and 'clang-cl' produce an .asm file, whereas 'clang' + dnl produces a .s file. Need to distinguish 'clang' and 'clang-cl'. + rm -f conftest* + echo 'int dummy;' > conftest.c + AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c) >/dev/null 2>&1 + if test -f conftest.o; then + gl_asmext='s' + gl_c_asm_opt='-S' + else + gl_asmext='asm' + gl_c_asm_opt='-c -Fa' + fi + rm -f conftest* + ], + [gl_asmext='s' + gl_c_asm_opt='-S' + ]) +]) +m4trace:m4/codeset.m4:9: -1- AC_DEFUN([AM_LANGINFO_CODESET], [ + AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[char* cs = nl_langinfo(CODESET); return !cs;]])], + [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 and nl_langinfo(CODESET).]) + fi +]) +m4trace:m4/dospaths.m4:20: -1- 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])]) + + AS_IF([test x"$ac_cv_dos_paths" = xyes], + [ AC_DEFINE_UNQUOTED([HAVE_DOS_PATHS], 1, + [Define if the system uses DOS-style pathnames.])]) +]) +m4trace:m4/eaccess.m4:7: -1- AC_DEFUN([gl_FUNC_EACCESS], [ + AC_CHECK_FUNC([eaccess], , + [AC_DEFINE([eaccess], [access], + [Define as 'access' if you don't have the eaccess() function.])]) +]) +m4trace:m4/extensions.m4:212: -1- AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], [ + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + + dnl On OpenBSD 6.8 with GCC, the include files contain a couple of + dnl definitions that are only activated with an explicit -D_ISOC11_SOURCE. + dnl That's because this version of GCC (4.2.1) supports the option + dnl '-std=gnu99' but not the option '-std=gnu11'. + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + openbsd*) + AC_DEFINE([_ISOC11_SOURCE], [1], + [Define to enable the declarations of ISO C 11 types and functions.]) + ;; + esac +]) +m4trace:m4/extern-inline.m4:8: -1- AC_DEFUN([gl_EXTERN_INLINE], [ + AH_VERBATIM([extern_inline], +[/* Please see the Gnulib manual for how to use these macros. + + Suppress extern inline with HP-UX cc, as it appears to be broken; see + . + + Suppress extern inline with Sun C in standards-conformance mode, as it + mishandles inline functions that call each other. E.g., for 'inline void f + (void) { } inline void g (void) { f (); }', c99 incorrectly complains + 'reference to static identifier "f" in extern inline function'. + This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. + + Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) + on configurations that mistakenly use 'static inline' to implement + functions or macros in standard C headers like . For example, + if isdigit is mistakenly implemented via a static inline function, + a program containing an extern inline function that calls isdigit + may not work since the C standard prohibits extern inline functions + from calling static functions. This bug is known to occur on: + + OS X 10.8 and earlier; see: + http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html + + DragonFly; see + http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log + + FreeBSD; see: + http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00104.html + + OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and + for clang but remains for g++; see . + Assume DragonFly and FreeBSD will be similar. */ +#if (((defined __APPLE__ && defined __MACH__) \ + || defined __DragonFly__ || defined __FreeBSD__) \ + && (defined __header_inline \ + ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ + && ! defined __clang__) \ + : ((! defined _DONT_USE_CTYPE_INLINE_ \ + && (defined __GNUC__ || defined __cplusplus)) \ + || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ + && defined __GNUC__ && ! defined __cplusplus)))) +# define _GL_EXTERN_INLINE_STDHEADER_BUG +#endif +#if ((__GNUC__ \ + ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + : (199901L <= __STDC_VERSION__ \ + && !defined __HP_cc \ + && !(defined __SUNPRO_C && __STDC__))) \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# define _GL_INLINE inline +# define _GL_EXTERN_INLINE extern inline +# define _GL_EXTERN_INLINE_IN_USE +#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ + /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ +# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) +# else +# define _GL_INLINE extern inline +# endif +# define _GL_EXTERN_INLINE extern +# define _GL_EXTERN_INLINE_IN_USE +#else +# define _GL_INLINE static _GL_UNUSED +# define _GL_EXTERN_INLINE static _GL_UNUSED +#endif + +/* In GCC, suppress bogus "no previous prototype for 'FOO'" + and "no previous declaration for 'FOO'" diagnostics, + when FOO is an inline function in the header; see + and + . */ +#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) +# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ +# define _GL_INLINE_HEADER_CONST_PRAGMA +# else +# define _GL_INLINE_HEADER_CONST_PRAGMA \ + _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# endif +# define _GL_INLINE_HEADER_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ + _GL_INLINE_HEADER_CONST_PRAGMA +# define _GL_INLINE_HEADER_END \ + _Pragma ("GCC diagnostic pop") +#else +# define _GL_INLINE_HEADER_BEGIN +# define _GL_INLINE_HEADER_END +#endif]) +]) +m4trace:m4/fcntl-o.m4:12: -1- AC_DEFUN([gl_FCNTL_O_FLAGS], [ + dnl Persuade glibc to define O_NOATIME and O_NOFOLLOW. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + + AC_CHECK_HEADERS_ONCE([unistd.h]) + AC_CHECK_FUNCS_ONCE([symlink]) + AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #if HAVE_UNISTD_H + # include + #else /* on Windows with MSVC */ + # include + # include + # defined sleep(n) _sleep ((n) * 1000) + #endif + #include + #ifndef O_NOATIME + #define O_NOATIME 0 + #endif + #ifndef O_NOFOLLOW + #define O_NOFOLLOW 0 + #endif + static int const constants[] = + { + O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, + O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY + }; + ]], + [[ + int result = !constants; + #if HAVE_SYMLINK + { + static char const sym[] = "conftest.sym"; + if (symlink ("/dev/null", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + if (unlink (sym) != 0 || symlink (".", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_RDONLY | O_NOFOLLOW); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + unlink (sym); + } + #endif + { + static char const file[] = "confdefs.h"; + int fd = open (file, O_RDONLY | O_NOATIME); + if (fd < 0) + result |= 8; + else + { + struct stat st0; + if (fstat (fd, &st0) != 0) + result |= 16; + else + { + char c; + sleep (1); + if (read (fd, &c, 1) != 1) + result |= 24; + else + { + if (close (fd) != 0) + result |= 32; + else + { + struct stat st1; + if (stat (file, &st1) != 0) + result |= 40; + else + if (st0.st_atime != st1.st_atime) + result |= 64; + } + } + } + } + } + return result;]])], + [gl_cv_header_working_fcntl_h=yes], + [case $? in #( + 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( + 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( + 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( + *) gl_cv_header_working_fcntl_h='no';; + esac], + [gl_cv_header_working_fcntl_h=cross-compiling])]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOATIME* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val], + [Define to 1 if O_NOATIME works.]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val], + [Define to 1 if O_NOFOLLOW works.]) +]) +m4trace:m4/findprog-in.m4:7: -1- AC_DEFUN([gl_FINDPROG_IN], [ + dnl Prerequisites of lib/findprog-in.c. + AC_REQUIRE([gl_FUNC_EACCESS]) +]) +m4trace:m4/getloadavg.m4:17: -1- AC_DEFUN([gl_GETLOADAVG], [AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + +# Persuade glibc to declare getloadavg(). +AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +AC_CHECK_FUNC([getloadavg], [], + [gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + AC_CHECK_LIB([elf], [elf_begin], [LIBS="-lelf $LIBS"]) + AC_CHECK_LIB([kvm], [kvm_open], [LIBS="-lkvm $LIBS"]) + # Check for the 4.4BSD definition of getloadavg. + AC_CHECK_LIB([util], [getloadavg], + [LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes]) + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + AC_CHECK_LIB([getloadavg], [getloadavg], + [LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes], + [LIBS=$gl_getloadavg_LIBS]) + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + AC_CHECK_LIB([kstat], [kstat_open]) + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + AC_CHECK_LIB([perfstat], [perfstat_cpu_total]) + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([sys/dg_sys_info.h], + [gl_func_getloadavg_done=yes + AC_DEFINE([DGUX], [1], [Define to 1 for DGUX with .]) + AC_CHECK_LIB([dgc], [dg_sys_info])]) + fi + fi]) + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + +AC_SUBST([GETLOADAVG_LIBS])dnl + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +AC_CHECK_HEADERS([sys/loadavg.h]) +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +AC_CHECK_DECL([getloadavg], [], [HAVE_DECL_GETLOADAVG=0], + [[#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include ]]) +]) +m4trace:m4/getloadavg.m4:109: -1- AC_DEFUN([gl_PREREQ_GETLOADAVG], [ +# Figure out what our getloadavg.c needs. + +AC_CHECK_HEADERS_ONCE([sys/param.h unistd.h]) + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + AC_CHECK_FUNCS([pstat_getdynamic], [gl_func_getloadavg_done=yes]) +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + AC_DEFINE([SVR4], [1], [Define to 1 on System V Release 4.]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([inq_stats/cpustats.h], + [gl_func_getloadavg_done=yes + AC_DEFINE([UMAX], [1], [Define to 1 for Encore UMAX.]) + AC_DEFINE([UMAX4_3], [1], + [Define to 1 for Encore UMAX 4.3 that has + instead of .])]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([sys/cpustats.h], + [gl_func_getloadavg_done=yes; AC_DEFINE([UMAX])]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADERS([mach/mach.h]) +fi + +AC_CHECK_HEADERS([nlist.h], +[AC_CHECK_MEMBERS([struct nlist.n_un.n_name], + [], [], + [#include ]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif]])], + [AC_DEFINE([N_NAME_POINTER], [1], + [Define to 1 if the nlist n_name member is a pointer])]) +])dnl +]) +m4trace:m4/getloadavg.m4:167: -1- AC_DEFUN_ONCE([gl_STDLIB_H], [ + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use, and which is not + dnl guaranteed by C89. + gl_WARN_ON_USE_PREPARE([[#include +#if HAVE_SYS_LOADAVG_H +/* OpenIndiana has a bug: must be included before + . */ +# include +# include +#endif +#if HAVE_RANDOM_H +# include +#endif + ]], [getloadavg]) +]) +m4trace:m4/getloadavg.m4:191: -1- AC_DEFUN([gl_STDLIB_MODULE_INDICATOR], [ + dnl Ensure to expand the default settings once only. + gl_STDLIB_H_REQUIRE_DEFAULTS + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) +m4trace:m4/getloadavg.m4:203: -1- AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS], [ + m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS], [ + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG]) + ]) + m4_require(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS]) + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) +]) +m4trace:m4/getloadavg.m4:212: -1- AC_DEFUN([gl_STDLIB_H_DEFAULTS], [ + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) +]) +m4trace:m4/gettext.m4:57: -1- AC_DEFUN([AM_GNU_GETTEXT], [ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse(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], + 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, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { 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: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + 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], + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + 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 +' + 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_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + ]], + [[ +bindtextdomain ("", ""); +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 { 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 + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_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_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + ]], + [[ +bindtextdomain ("", ""); +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 { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ]])], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { 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 + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $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. + CATOBJEXT=.gmo + 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], + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { 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], + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE([HAVE_DCGETTEXT], [1], + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST([BUILD_INCLUDED_LIBINTL]) + AC_SUBST([USE_INCLUDED_LIBINTL]) + AC_SUBST([CATOBJEXT]) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST([DATADIRNAME]) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST([INSTOBJEXT]) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST([GENCAT]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST([INTLOBJS]) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST([INTLLIBS]) + + dnl Make all documented variables known to autoconf. + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + AC_SUBST([POSUB]) +]) +m4trace:m4/gettext.m4:394: -1- AC_DEFUN([AM_GNU_GETTEXT_NEED], [ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) +m4trace:m4/gettext.m4:401: -1- AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) +m4trace:m4/glibc2.m4:11: -1- AC_DEFUN([gt_GLIBC2], [ + AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer], + [ac_cv_gnu_library_2], + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) && !defined __UCLIBC__ + Lucky GNU user + #endif +#endif + ], + [ac_cv_gnu_library_2=yes], + [ac_cv_gnu_library_2=no]) + ] + ) + AC_SUBST([GLIBC2]) + GLIBC2="$ac_cv_gnu_library_2" + +]) +m4trace:m4/glibc21.m4:11: -1- AC_DEFUN([gl_GLIBC21], [ + AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc], + [ac_cv_gnu_library_2_1], + [AC_EGREP_CPP([Lucky], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif +#ifdef __UCLIBC__ + Lucky user +#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" + +]) +m4trace:m4/gnulib-common.m4:11: -1- AC_DEFUN([gl_COMMON], [ + dnl Use AC_REQUIRE here, so that the code is expanded once only. + AC_REQUIRE([gl_00GNULIB]) + AC_REQUIRE([gl_COMMON_BODY]) + AC_REQUIRE([gl_ZZGNULIB]) +]) +m4trace:m4/gnulib-common.m4:17: -1- AC_DEFUN([gl_COMMON_BODY], [ + AH_VERBATIM([_GL_GNUC_PREREQ], +[/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ +#if defined __GNUC__ && defined __GNUC_MINOR__ +# define _GL_GNUC_PREREQ(major, minor) \ + ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) +#else +# define _GL_GNUC_PREREQ(major, minor) 0 +#endif +]) + AH_VERBATIM([_Noreturn], +[/* The _Noreturn keyword of C11. */ +#ifndef _Noreturn +# if (defined __cplusplus \ + && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ + || (defined _MSC_VER && 1900 <= _MSC_VER)) \ + && 0) + /* [[noreturn]] is not practically usable, because with it the syntax + extern _Noreturn void func (...); + would not be valid; such a declaration would only be valid with 'extern' + and '_Noreturn' swapped, or without the 'extern' keyword. However, some + AIX system header files and several gnulib header files use precisely + this syntax with 'extern'. */ +# define _Noreturn [[noreturn]] +# elif ((!defined __cplusplus || defined __clang__) \ + && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ + || (!defined __STRICT_ANSI__ \ + && (_GL_GNUC_PREREQ (4, 7) \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))))) + /* _Noreturn works as-is. */ +# elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C +# define _Noreturn __attribute__ ((__noreturn__)) +# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn +# endif +#endif +]) + AH_VERBATIM([isoc99_inline], +[/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif]) + AH_VERBATIM([attribute], +[/* Attributes. */ +#if (defined __has_attribute \ + && (!defined __clang_minor__ \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) +# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) +#else +# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr +# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) +# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) +# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_diagnose_if 0 +# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) +# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) +# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) +# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) +# ifdef _ICC +# define _GL_ATTR_may_alias 0 +# else +# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) +# endif +# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) +# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) +# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) +# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) +# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) +#endif + +#ifdef __has_c_attribute +# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \ + && _GL_GNUC_PREREQ (4, 6)) +# pragma GCC diagnostic ignored "-Wpedantic" +# endif +# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) +#else +# define _GL_HAS_C_ATTRIBUTE(attr) 0 +#endif + +]dnl There is no _GL_ATTRIBUTE_ALIGNED; use stdalign's _Alignas instead. +[ +/* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function + is the size of the returned memory block. + _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied + by the Nth argument of the function is the size of the returned memory block. + */ +/* Applies to: function, pointer to function, function types. */ +#if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +#else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +#endif + +/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the + function and report an error if it cannot do so. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +#else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +#endif + +/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show + in stack traces when debugging. The compiler should omit the function from + stack traces. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +#else +# define _GL_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via 'free'; it can be used only after declaring 'free'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib's or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following 'case' or + 'default' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a 'switch' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with '__'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type '[[un]signed] char'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don't use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + +]dnl There is no _GL_ATTRIBUTE_VISIBILITY; see m4/visibility.m4 instead. +[ +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif +]) + AH_VERBATIM([async_safe], +[/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked 'volatile'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable 'signal_occurred' is not declared 'volatile'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE +]) + AH_VERBATIM([micro_optimizations], +[/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) +]) + dnl Hint which direction to take regarding cross-compilation guesses: + dnl When a user installs a program on a platform they are not intimately + dnl familiar with, --enable-cross-guesses=conservative is the appropriate + dnl choice. It implements the "If we don't know, assume the worst" principle. + dnl However, when an operating system developer (on a platform which is not + dnl yet known to gnulib) builds packages for their platform, they want to + dnl expose, not hide, possible platform bugs; in this case, + dnl --enable-cross-guesses=risky is the appropriate choice. + dnl Sets the variables + dnl gl_cross_guess_normal (to be used when 'yes' is good and 'no' is bad), + dnl gl_cross_guess_inverted (to be used when 'no' is good and 'yes' is bad). + AC_ARG_ENABLE([cross-guesses], + [AS_HELP_STRING([--enable-cross-guesses={conservative|risky}], + [specify policy for cross-compilation guesses])], + [if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + AC_MSG_WARN([invalid argument supplied to --enable-cross-guesses]) + enableval=conservative + fi + gl_cross_guesses="$enableval"], + [gl_cross_guesses=conservative]) + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + dnl Preparation for running test programs: + dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not + dnl to /dev/tty, so they can be redirected to log files. Such diagnostics + dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N. + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ +]) +m4trace:m4/gnulib-common.m4:523: -1- AC_DEFUN([gl_MODULE_INDICATOR_INIT_VARIABLE], [ + GL_MODULE_INDICATOR_PREFIX[]_[$1]=m4_if([$2], , [0], [$2]) + AC_SUBST(GL_MODULE_INDICATOR_PREFIX[]_[$1]) +]) +m4trace:m4/gnulib-common.m4:538: -1- AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], [ + gl_MODULE_INDICATOR_SET_VARIABLE_AUX( + [GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], + [gl_MODULE_INDICATOR_CONDITION]) +]) +m4trace:m4/gnulib-common.m4:551: -1- AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX], [ + m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1], + [ + dnl Simplify the expression VALUE || 1 to 1. + $1=1 + ], + [gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1], + [gl_MODULE_INDICATOR_CONDITION])]) +]) +m4trace:m4/gnulib-common.m4:565: -1- AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR], [ + dnl Simplify the expression 1 || CONDITION to 1. + if test "$[]$1" != 1; then + dnl Simplify the expression 0 || CONDITION to CONDITION. + if test "$[]$1" = 0; then + $1=$2 + else + $1="($[]$1 || $2)" + fi + fi +]) +m4trace:m4/gnulib-common.m4:590: -1- AC_DEFUN([gl_MODULE_INDICATOR], [ + AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), + [gl_MODULE_INDICATOR_CONDITION], + [Define to a C preprocessor expression that evaluates to 1 or 0, + depending whether the gnulib module $1 shall be considered present.]) +]) +m4trace:m4/gnulib-common.m4:613: -1- AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [ + AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1], + [Define to 1 when the gnulib module $1 should be tested.]) +]) +m4trace:m4/gnulib-common.m4:625: -1- AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK], [ + dnl Override gl_WARN_ON_USE_PREPARE. + dnl But hide this definition from 'aclocal'. + AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], []) +]) +m4trace:m4/gnulib-common.m4:636: -1- AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS], [ + dnl Override gl_MODULE_INDICATOR_FOR_TESTS. + AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], []) +]) +m4trace:m4/gnulib-common.m4:644: -1- AC_DEFUN([gl_FEATURES_H], [ + AC_CHECK_HEADERS_ONCE([features.h]) + if test $ac_cv_header_features_h = yes; then + HAVE_FEATURES_H=1 + else + HAVE_FEATURES_H=0 + fi + AC_SUBST([HAVE_FEATURES_H]) +]) +m4trace:m4/gnulib-common.m4:658: -1- AC_DEFUN([gl_PROG_CC_C99], [ + dnl Just use AC_PROG_CC_C99. + dnl When AC_PROG_CC_C99 and AC_PROG_CC_STDC are used together, the substituted + dnl value of CC will contain the C99 enabling options twice. But this is only + dnl a cosmetic problem. + dnl With Autoconf >= 2.70, use AC_PROG_CC since it implies AC_PROG_CC_C99; + dnl this avoids a "warning: The macro `AC_PROG_CC_C99' is obsolete." + m4_version_prereq([2.70], + [AC_REQUIRE([AC_PROG_CC])], + [AC_REQUIRE([AC_PROG_CC_C99])]) +]) +m4trace:m4/gnulib-common.m4:675: -1- AC_DEFUN([gl_PROG_AR_RANLIB], [ + dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler + dnl as "cc", and GCC as "gcc". They have different object file formats and + dnl library formats. In particular, the GNU binutils programs ar and ranlib + dnl produce libraries that work only with gcc, not with cc. + AC_REQUIRE([AC_PROG_CC]) + dnl The '' hides this use from 'aclocal'. + AC_BEFORE([$0], [A][M_PROG_AR]) + AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], + [ + AC_EGREP_CPP([Amsterdam], + [ +#ifdef __ACK__ +Amsterdam +#endif + ], + [gl_cv_c_amsterdam_compiler=yes], + [gl_cv_c_amsterdam_compiler=no]) + ]) + + dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not + dnl building with __ACK__. + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST + dnl ARFLAGS variable (it is filed into Makefile.in directly by automake + dnl script on-demand, if not specified by ./configure of course). + dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above + dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block + dnl because AM_PROG_AR is written so it could re-set AR variable even for + dnl __ACK__. It may seem like its easier to avoid calling the macro here, + dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good + dnl default value and automake should usually know them). + dnl + dnl The '' hides this use from 'aclocal'. + m4_ifdef([A][M_PROG_AR], [A][M_PROG_AR], [:]) + fi + + dnl In case the code above has not helped with setting AR/ARFLAGS, use + dnl Automake-documented default values for AR and ARFLAGS, but prefer + dnl ${host}-ar over ar (useful for cross-compiling). + AC_CHECK_TOOL([AR], [ar], [ar]) + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + AC_SUBST([AR]) + AC_SUBST([ARFLAGS]) + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + dnl Use the ranlib program if it is available. + AC_PROG_RANLIB + fi + fi + AC_SUBST([RANLIB]) +]) +m4trace:m4/gnulib-common.m4:795: -1- AC_DEFUN([gl_BIGENDIAN], [ + AC_C_BIGENDIAN +]) +m4trace:m4/gnulib-common.m4:809: -1- AC_DEFUN([gl_SILENT], [ + exec GL_TMP_FD>&AS_MESSAGE_FD AS_MESSAGE_FD>/dev/null + $1 + exec AS_MESSAGE_FD>&GL_TMP_FD GL_TMP_FD>&- +]) +m4trace:m4/gnulib-common.m4:821: -1- AC_DEFUN([gl_CACHE_VAL_SILENT], [ + gl_SILENT([ + AC_CACHE_VAL([$1], [$2]) + ]) +]) +m4trace:m4/gnulib-common.m4:835: -1- AC_DEFUN([gl_CONDITIONAL], [ + pushdef([AC_CONFIG_COMMANDS_PRE], [:])dnl + AM_CONDITIONAL([$1], [$2]) + popdef([AC_CONFIG_COMMANDS_PRE])dnl + if test -z "${[$1]_TRUE}" && test -z "${[$1]_FALSE}"; then + [$1]_TRUE='#' + [$1]_FALSE='#' + fi +]) +m4trace:m4/gnulib-common.m4:851: -1- AC_DEFUN([gl_CC_ALLOW_WARNINGS], [ + AC_REQUIRE([AC_PROG_CC]) + AC_CACHE_CHECK([for C compiler option to allow warnings], + [gl_cv_cc_wallow], + [rm -f conftest* + echo 'int dummy;' > conftest.c + AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err]) >/dev/null + AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err]) >/dev/null + dnl Test the number of error output lines, because AIX xlc accepts the + dnl option '-Wno-error', just to produce a warning + dnl "Option -Wno-error was incorrectly specified. The option will be ignored." + dnl afterwards. + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ]) + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + AC_SUBST([GL_CFLAG_ALLOW_WARNINGS]) +]) +m4trace:m4/gnulib-common.m4:881: -1- AC_DEFUN([gl_CXX_ALLOW_WARNINGS], [ + dnl Requires AC_PROG_CXX or gl_PROG_ANSI_CXX. + if test -n "$CXX" && test "$CXX" != no; then + AC_CACHE_CHECK([for C++ compiler option to allow warnings], + [gl_cv_cxx_wallow], + [rm -f conftest* + echo 'int dummy;' > conftest.cc + AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>conftest1.err]) >/dev/null + AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -Wno-error -c conftest.cc 2>conftest2.err]) >/dev/null + dnl Test the number of error output lines, because AIX xlC accepts the + dnl option '-Wno-error', just to produce a warning + dnl "Option -Wno-error was incorrectly specified. The option will be ignored." + dnl afterwards. + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cxx_wallow='-Wno-error' + else + gl_cv_cxx_wallow=none + fi + rm -f conftest* + ]) + case "$gl_cv_cxx_wallow" in + none) GL_CXXFLAG_ALLOW_WARNINGS='' ;; + *) GL_CXXFLAG_ALLOW_WARNINGS="$gl_cv_cxx_wallow" ;; + esac + else + GL_CXXFLAG_ALLOW_WARNINGS='' + fi + AC_SUBST([GL_CXXFLAG_ALLOW_WARNINGS]) +]) +m4trace:m4/gnulib-common.m4:915: -1- AC_DEFUN([gl_CC_GNULIB_WARNINGS], [ + AC_REQUIRE([gl_CC_ALLOW_WARNINGS]) + dnl Assume that the compiler supports -Wno-* options only if it also supports + dnl -Wno-error. + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + dnl Enable these warning options: + dnl + dnl GCC clang + dnl -Wno-cast-qual >= 3 >= 3.9 + dnl -Wno-conversion >= 3 >= 3.9 + dnl -Wno-float-conversion >= 4.9 >= 3.9 + dnl -Wno-float-equal >= 3 >= 3.9 + dnl -Wimplicit-fallthrough >= 7 >= 3.9 + dnl -Wno-pedantic >= 4.8 >= 3.9 + dnl -Wno-sign-compare >= 3 >= 3.9 + dnl -Wno-sign-conversion >= 4.3 >= 3.9 + dnl -Wno-type-limits >= 4.3 >= 3.9 + dnl -Wno-undef >= 3 >= 3.9 + dnl -Wno-unsuffixed-float-constants >= 4.5 + dnl -Wno-unused-function >= 3 >= 3.9 + dnl -Wno-unused-parameter >= 3 >= 3.9 + dnl + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if AC_TRY_EVAL([gl_command]); then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + AC_SUBST([GL_CFLAG_GNULIB_WARNINGS]) +]) +m4trace:m4/gnulib-common.m4:985: -1- AC_DEFUN([gl_CONDITIONAL_HEADER], [ + m4_pushdef([gl_header_name], AS_TR_SH(m4_toupper($1))) + m4_pushdef([gl_generate_var], [GL_GENERATE_]AS_TR_SH(m4_toupper($1))) + m4_pushdef([gl_generate_cond], [GL_GENERATE_]AS_TR_SH(m4_toupper($1))) + case "$gl_generate_var" in + false) gl_header_name='' ;; + true) + dnl It is OK to use a .h file in lib/ from within tests/, but not vice + dnl versa. + if test -z "$gl_header_name"; then + gl_header_name="${gl_source_base_prefix}$1" + fi + ;; + *) echo "*** gl_generate_var is not set correctly" 1>&2; exit 1 ;; + esac + AC_SUBST(gl_header_name) + gl_CONDITIONAL(gl_generate_cond, [$gl_generate_var]) + m4_popdef([gl_generate_cond]) + m4_popdef([gl_generate_var]) + m4_popdef([gl_header_name]) +]) +m4trace:m4/gnulib-common.m4:1017: -1- AC_DEFUN([GL_MDA_DEFINES], [ +AC_REQUIRE([_GL_MDA_DEFINES]) +[$gl_mda_defines] +]) +m4trace:m4/gnulib-common.m4:1021: -1- AC_DEFUN([_GL_MDA_DEFINES], [gl_mda_defines=' +#if defined _WIN32 && !defined __CYGWIN__ +#define access _access +#define chdir _chdir +#define chmod _chmod +#define close _close +#define creat _creat +#define dup _dup +#define dup2 _dup2 +#define ecvt _ecvt +#define execl _execl +#define execle _execle +#define execlp _execlp +#define execv _execv +#define execve _execve +#define execvp _execvp +#define execvpe _execvpe +#define fcloseall _fcloseall +#define fcvt _fcvt +#define fdopen _fdopen +#define fileno _fileno +#define gcvt _gcvt +#define getcwd _getcwd +#define getpid _getpid +#define getw _getw +#define isatty _isatty +#define j0 _j0 +#define j1 _j1 +#define jn _jn +#define lfind _lfind +#define lsearch _lsearch +#define lseek _lseek +#define memccpy _memccpy +#define mkdir _mkdir +#define mktemp _mktemp +#define open _open +#define putenv _putenv +#define putw _putw +#define read _read +#define rmdir _rmdir +#define strdup _strdup +#define swab _swab +#define tempnam _tempnam +#define tzset _tzset +#define umask _umask +#define unlink _unlink +#define utime _utime +#define wcsdup _wcsdup +#define write _write +#define y0 _y0 +#define y1 _y1 +#define yn _yn +#endif +' +]) +m4trace:m4/gnulib-comp.m4:34: -1- AC_DEFUN([gl_EARLY], [ + m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace + m4_pattern_allow([^gl_ES$])dnl a valid locale name + m4_pattern_allow([^gl_LIBOBJS$])dnl a variable + m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable + + # Pre-early section. + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_REQUIRE([gl_PROG_AR_RANLIB]) + + # Code from module alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + AC_REQUIRE([AC_SYS_LARGEFILE]) + AC_REQUIRE([gl_YEAR2038_EARLY]) + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: +]) +m4trace:m4/gnulib-comp.m4:67: -1- AC_DEFUN([gl_INIT], [ + AC_CONFIG_LIBOBJ_DIR([lib]) + AM_CONDITIONAL([GL_COND_LIBTOOL], [false]) + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS])) + m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES])) + m4_pushdef([gl_LIBSOURCES_LIST], []) + m4_pushdef([gl_LIBSOURCES_DIR], []) + m4_pushdef([GL_MACRO_PREFIX], [gl]) + m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL]) + gl_COMMON + gl_source_base='lib' + gl_source_base_prefix= + gl_FUNC_ALLOCA + gl_CONDITIONAL_HEADER([alloca.h]) + AC_PROG_MKDIR_P + gl_FINDPROG_IN + gl_STDLIB_H + gl_STDLIB_H_REQUIRE_DEFAULTS + AC_REQUIRE([AC_CANONICAL_HOST]) + gl_GETLOADAVG + gl_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) + AM_COND_IF([GL_COND_OBJ_GETLOADAVG], [ + gl_PREREQ_GETLOADAVG + ]) + gl_STDLIB_MODULE_INDICATOR([getloadavg]) + AC_REQUIRE([gl_HOST_CPU_C_ABI]) + AC_REQUIRE([gl_LARGEFILE]) + # 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 + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif], + [make_cv_sys_gnu_glob=yes], + [make_cv_sys_gnu_glob=no])]) + # Tell automake about this, so it can build the right .c files. + AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + AC_SUBST([USE_SYSTEM_GLOB]) + # Check for DOS-style pathnames. + pds_AC_DOS_PATHS + gl_STDBOOL_H + gl_CONDITIONAL_HEADER([stdbool.h]) + AC_PROG_MKDIR_P + # End of code from modules + m4_ifval(gl_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || + for gl_file in ]gl_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])dnl + m4_if(m4_sysval, [0], [], + [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) + ]) + m4_popdef([GL_MODULE_INDICATOR_PREFIX]) + m4_popdef([GL_MACRO_PREFIX]) + m4_popdef([gl_LIBSOURCES_DIR]) + m4_popdef([gl_LIBSOURCES_LIST]) + m4_popdef([AC_LIBSOURCES]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + AC_CONFIG_COMMANDS_PRE([ + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. +changequote(,)dnl + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' +changequote([, ])dnl + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) + AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) + AC_SUBST([gl_LIBOBJDEPS], [$gl_libobjdeps]) + ]) + gltests_libdeps= + gltests_ltlibdeps= + m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS])) + m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES])) + m4_pushdef([gltests_LIBSOURCES_LIST], []) + m4_pushdef([gltests_LIBSOURCES_DIR], []) + m4_pushdef([GL_MACRO_PREFIX], [gltests]) + m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL]) + gl_COMMON + gl_source_base='tests' + gl_source_base_prefix= +changequote(,)dnl + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS +changequote([, ])dnl + AC_SUBST([gltests_WITNESS]) + gl_module_indicator_condition=$gltests_WITNESS + m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition]) + m4_popdef([gl_MODULE_INDICATOR_CONDITION]) + m4_ifval(gltests_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ || + for gl_file in ]gltests_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])dnl + m4_if(m4_sysval, [0], [], + [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) + ]) + m4_popdef([GL_MODULE_INDICATOR_PREFIX]) + m4_popdef([GL_MACRO_PREFIX]) + m4_popdef([gltests_LIBSOURCES_DIR]) + m4_popdef([gltests_LIBSOURCES_LIST]) + m4_popdef([AC_LIBSOURCES]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + AC_CONFIG_COMMANDS_PRE([ + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. +changequote(,)dnl + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' +changequote([, ])dnl + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) + AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) + AC_SUBST([gltests_LIBOBJDEPS], [$gltests_libobjdeps]) + ]) + AC_REQUIRE([gl_CC_GNULIB_WARNINGS]) + LIBGNU_LIBDEPS="$gl_libdeps" + AC_SUBST([LIBGNU_LIBDEPS]) + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + AC_SUBST([LIBGNU_LTLIBDEPS]) +]) +m4trace:m4/gnulib-comp.m4:242: -1- AC_DEFUN([gl_LIBOBJ], [ + AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl + gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext" +]) +m4trace:m4/gnulib-comp.m4:249: -1- AC_DEFUN([gl_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)]) +]) +m4trace:m4/gnulib-comp.m4:258: -1- AC_DEFUN([gl_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([gl_LIBSOURCES_DIR], [lib]) + m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) +m4trace:m4/gnulib-comp.m4:269: -1- AC_DEFUN([gltests_LIBOBJ], [ + AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl + gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext" +]) +m4trace:m4/gnulib-comp.m4:276: -1- AC_DEFUN([gltests_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)]) +]) +m4trace:m4/gnulib-comp.m4:285: -1- AC_DEFUN([gltests_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([gltests_LIBSOURCES_DIR], [tests]) + m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) +m4trace:m4/gnulib-comp.m4:296: -1- AC_DEFUN([gl_FILE_LIST], [ + doc/fdl.texi + lib/alloca.c + lib/alloca.in.h + lib/concat-filename.c + lib/concat-filename.h + lib/filename.h + lib/findprog-in.c + lib/findprog.h + lib/fnmatch.c + lib/fnmatch.in.h + lib/getloadavg.c + lib/glob.c + lib/glob.in.h + lib/intprops.h + lib/stdbool.in.h + lib/warn-on-use.h + m4/00gnulib.m4 + m4/acinclude.m4 + m4/alloca.m4 + m4/asm-underscore.m4 + m4/dospaths.m4 + m4/eaccess.m4 + m4/extensions.m4 + m4/findprog-in.m4 + m4/getloadavg.m4 + m4/gnulib-common.m4 + m4/host-cpu-c-abi.m4 + m4/largefile.m4 + m4/stdbool.m4 + m4/warn-on-use.m4 + m4/year2038.m4 + m4/zzgnulib.m4 +]) +m4trace:m4/host-cpu-c-abi.m4:50: -1- AC_DEFUN([gl_HOST_CPU_C_ABI], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], + [case "$host_cpu" in + +changequote(,)dnl + i[34567]86 ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=x86_64-x32], + [gl_cv_host_cpu_c_abi=x86_64])], + [gl_cv_host_cpu_c_abi=i386]) + ;; + +changequote(,)dnl + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __aarch64__ + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=arm64-ilp32], + [gl_cv_host_cpu_c_abi=arm64])], + [# Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ]) + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __LP64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=hppa64], + [gl_cv_host_cpu_c_abi=hppa]) + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=ia64-ilp32], + [gl_cv_host_cpu_c_abi=ia64]) + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mips64], + [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mipsn32], + [gl_cv_host_cpu_c_abi=mips])]) + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [# On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=powerpc64-elfv2], + [gl_cv_host_cpu_c_abi=powerpc64]) + ], + [gl_cv_host_cpu_c_abi=powerpc]) + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + ]])], + [cpu=riscv64], + [cpu=riscv32]) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [main_abi=lp64], + [main_abi=ilp32]) + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + ]])], + [float_abi=d], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + ]])], + [float_abi=f], + [float_abi='']) + ]) + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=s390x], + [gl_cv_host_cpu_c_abi=s390]) + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=sparc64], + [gl_cv_host_cpu_c_abi=sparc]) + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ]) + + dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + AC_SUBST([HOST_CPU]) + AC_SUBST([HOST_CPU_C_ABI]) + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h < +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_func_iconv=yes]) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_lib_iconv=yes] + [am_cv_func_iconv=yes]) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ + dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, + dnl Solaris 10. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + ]], + [[int result = 0; + /* 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 ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* 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 ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#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 ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#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)) + result |= 16; + return result; +]])], + [am_cv_func_iconv_works=yes], , + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + test "$am_cv_func_iconv_works" = no || break + done + 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]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST([LIBICONV]) + AC_SUBST([LTLIBICONV]) +]) +m4trace:m4/iconv.m4:233: -1- AC_DEFUN_ONCE([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_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + ]], + [[]])], + [am_cv_proto_iconv_arg1=""], + [am_cv_proto_iconv_arg1="const"]) + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([ + $am_cv_proto_iconv]) + AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + dnl Also substitute ICONV_CONST in the gnulib generated . + m4_ifdef([gl_ICONV_H_DEFAULTS], + [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + if test -n "$am_cv_proto_iconv_arg1"; then + ICONV_CONST="const" + fi + ]) + fi +]) +m4trace:m4/intdiv0.m4:9: -1- 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, + [ + gt_cv_int_divbyzero_sigfpe= +changequote(,)dnl + case "$host_os" in + macos* | darwin[6-9]* | darwin[1-9][0-9]*) + # On Mac OS X 10.2 or newer, just assume the same as when cross- + # compiling. If we were to perform the real test, 1 Crash Report + # dialog window would pop up. + case "$host_cpu" in + i[34567]86 | x86_64) + gt_cv_int_divbyzero_sigfpe="guessing yes" ;; + esac + ;; + esac +changequote([,])dnl + if test -z "$gt_cv_int_divbyzero_sigfpe"; then + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#include + +static void +sigfpe_handler (int sig) +{ + /* 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 (2); +} +]])], + [gt_cv_int_divbyzero_sigfpe=yes], + [gt_cv_int_divbyzero_sigfpe=no], + [ + # Guess based on the CPU. +changequote(,)dnl + case "$host_cpu" in + alpha* | i[34567]86 | x86_64 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac +changequote([,])dnl + ]) + fi + ]) + 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.]) +]) +m4trace:m4/intl.m4:25: -1- AC_DEFUN([AM_INTL_SUBDIR], [ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([gt_GLIBC2])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([gl_VISIBILITY])dnl + AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl + AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl + AC_REQUIRE([gt_TYPE_WCHAR_T])dnl + AC_REQUIRE([gt_TYPE_WINT_T])dnl + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gt_PRINTF_POSIX]) + AC_REQUIRE([gl_GLIBC21])dnl + AC_REQUIRE([gl_XSIZE])dnl + AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl + AC_REQUIRE([gt_INTL_MACOSX])dnl + AC_REQUIRE([gl_EXTERN_INLINE])dnl + AC_REQUIRE([gt_GL_ATTRIBUTE])dnl + + dnl Support for automake's --enable-silent-rules. + case "$enable_silent_rules" in + yes) INTL_DEFAULT_VERBOSITY=0;; + no) INTL_DEFAULT_VERBOSITY=1;; + *) INTL_DEFAULT_VERBOSITY=1;; + esac + AC_SUBST([INTL_DEFAULT_VERBOSITY]) + + 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([features.h stddef.h stdlib.h string.h]) + AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ + snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) + + 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). + AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include ]) + + 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). + AC_CHECK_DECLS([getc_unlocked], , , [#include ]) + + 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_newlocale" = yes; then + HAVE_NEWLOCALE=1 + else + HAVE_NEWLOCALE=0 + fi + AC_SUBST([HAVE_NEWLOCALE]) + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + AC_SUBST([HAVE_WPRINTF]) + + AM_LANGINFO_CODESET + gt_LC_MESSAGES + + dnl Compilation on mingw and Cygwin needs special Makefile rules, because + dnl 1. when we install a shared library, we must arrange to export + dnl auxiliary pointer variables for every exported variable, + dnl 2. when we install a shared library and a static library simultaneously, + dnl the include file specifies __declspec(dllimport) and therefore we + dnl must arrange to define the auxiliary pointer variables for the + dnl exported variables _also_ in the static library. + if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac + else + is_woe32dll=no + fi + WOE32DLL=$is_woe32dll + AC_SUBST([WOE32DLL]) + + dnl On mingw and Cygwin, we can activate special Makefile rules which add + dnl version information to the shared libraries and executables. + case "$host_os" in + mingw* | cygwin*) is_woe32=yes ;; + *) is_woe32=no ;; + esac + WOE32=$is_woe32 + AC_SUBST([WOE32]) + if test $WOE32 = yes; then + dnl Check for a program that compiles Windows resource files. + AC_CHECK_TOOL([WINDRES], [windres]) + fi + + dnl Determine whether when creating a library, "-lc" should be passed to + dnl libtool or not. On many platforms, it is required for the libtool option + dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool + dnl in the *.la files - makes it impossible to create multithreaded programs, + dnl because libtool also reorders the -lc to come before the -pthread, and + dnl this disables pthread_create() . + case "$host_os" in + hpux*) LTLIBC="" ;; + *) LTLIBC="-lc" ;; + esac + AC_SUBST([LTLIBC]) + + dnl Rename some macros and functions used for locking. + AH_BOTTOM([ +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init_func libintl_lock_init_func +#define glthread_lock_lock_func libintl_lock_lock_func +#define glthread_lock_unlock_func libintl_lock_unlock_func +#define glthread_lock_destroy_func libintl_lock_destroy_func +#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded +#define glthread_rwlock_init_func libintl_rwlock_init_func +#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded +#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func +#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded +#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func +#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded +#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func +#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded +#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func +#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded +#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func +#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded +#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func +#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded +#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func +#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded +#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func +#define glthread_once_func libintl_once_func +#define glthread_once_singlethreaded libintl_once_singlethreaded +#define glthread_once_multithreaded libintl_once_multithreaded +]) +]) +m4trace:m4/intl.m4:211: -1- AC_DEFUN([gt_INTL_SUBDIR_CORE], [ + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + AC_REQUIRE([gl_LOCK])dnl + + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]], + [[]])], + [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], + [Define to 1 if the compiler understands __builtin_expect.])]) + + AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ + stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ + argz_stringify argz_next __fsetlocking]) + + 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). + AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include ]) + + AM_ICONV + + 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-2.7 for %define api.pure. + 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;; + 2.[7-9]* | [3-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 +]) +m4trace:m4/intl.m4:276: -1- AC_DEFUN([gt_GL_ATTRIBUTE], [ + m4_ifndef([gl_[]COMMON], + AH_VERBATIM([gt_gl_attribute], +[/* Define as a marker that can be attached to declarations that might not + be used. This helps to reduce warnings, such as from + GCC -Wunused-parameter. */ +#ifndef _GL_UNUSED +# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_UNUSED +# endif +#endif + +/* The __pure__ attribute was added in gcc 2.96. */ +#ifndef _GL_ATTRIBUTE_PURE +# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE /* empty */ +# endif +#endif +]))]) +m4trace:m4/intlmacosx.m4:18: -1- AC_DEFUN([gt_INTL_MACOSX], [ + dnl Check for API introduced in Mac OS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + [gt_cv_func_CFPreferencesCopyAppValue], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[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 Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in Mac OS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[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 Mac OS 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]) +]) +m4trace:m4/intmax.m4:11: -1- AC_DEFUN([gt_TYPE_INTMAX_T], [ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif + ]], + [[intmax_t x = -1; + return !x;]])], + [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 or .]) + fi +]) +m4trace:m4/inttypes-pri.m4:14: -1- AC_DEFUN([gt_INTTYPES_PRI], [ + AC_CHECK_HEADERS([inttypes.h]) + if test $ac_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + [gt_cv_inttypes_pri_broken], + [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#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 exists and defines unusable PRI* macros.]) + PRI_MACROS_BROKEN=1 + else + PRI_MACROS_BROKEN=0 + fi + AC_SUBST([PRI_MACROS_BROKEN]) +]) +m4trace:m4/inttypes_h.m4:12: -1- AC_DEFUN([gl_AC_HEADER_INTTYPES_H], [ + AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_inttypes_h=yes], + [gl_cv_header_inttypes_h=no])]) + if test $gl_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1], + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) +m4trace:m4/largefile.m4:13: -1- AC_DEFUN([gl_SET_LARGEFILE_SOURCE], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_FUNC_FSEEKO + case "$host_os" in + hpux*) + AC_DEFINE([_LARGEFILE_SOURCE], [1], + [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).]) + ;; + esac +]) +m4trace:m4/largefile.m4:83: -1- AC_DEFUN([AC_SYS_LARGEFILE], [AC_ARG_ENABLE(largefile, + [ --disable-largefile omit support for large files]) +AS_IF([test "$enable_largefile" != no], + [AC_CACHE_CHECK([for special C compiler options needed for large files], + ac_cv_sys_largefile_CC, + [ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) + AC_COMPILE_IFELSE([], [break]) + CC="$CC -n32" + AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi]) + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, + ac_cv_sys_file_offset_bits, + [Number of bits in a file offset, on hosts where this is settable.], + [_AC_SYS_LARGEFILE_TEST_INCLUDES]) + AS_CASE([$ac_cv_sys_file_offset_bits], + [unknown], + [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1], + [ac_cv_sys_large_files], + [Define for large files, on AIX-style hosts.], + [_AC_SYS_LARGEFILE_TEST_INCLUDES])], + [64], + [gl_YEAR2038_BODY([])])]) +]) +m4trace:m4/largefile.m4:126: -1- AC_DEFUN([gl_LARGEFILE], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + mingw*) + dnl Native Windows. + dnl mingw64 defines off_t to a 64-bit type already, if + dnl _FILE_OFFSET_BITS=64, which is ensured by AC_SYS_LARGEFILE. + AC_CACHE_CHECK([for 64-bit off_t], [gl_cv_type_off_t_64], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + ]], + [[]])], + [gl_cv_type_off_t_64=yes], [gl_cv_type_off_t_64=no]) + ]) + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + dnl Some mingw versions define, if _FILE_OFFSET_BITS=64, 'struct stat' + dnl to 'struct _stat32i64' or 'struct _stat64' (depending on + dnl _USE_32BIT_TIME_T), which has a 32-bit st_size member. + AC_CACHE_CHECK([for 64-bit st_size], [gl_cv_member_st_size_64], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + ]], + [[]])], + [gl_cv_member_st_size_64=yes], [gl_cv_member_st_size_64=no]) + ]) + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + dnl Nothing to do on gnulib's side. + dnl A 64-bit off_t is + dnl - already the default on Mac OS X, FreeBSD, NetBSD, OpenBSD, IRIX, + dnl OSF/1, Cygwin, + dnl - enabled by _FILE_OFFSET_BITS=64 (ensured by AC_SYS_LARGEFILE) on + dnl glibc, HP-UX, Solaris, + dnl - enabled by _LARGE_FILES=1 (ensured by AC_SYS_LARGEFILE) on AIX, + dnl - impossible to achieve on Minix 3.1.8. + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac +]) +m4trace:m4/lcmessage.m4:22: -1- AC_DEFUN([gt_LC_MESSAGES], [ + AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[return LC_MESSAGES]])], + [gt_cv_val_LC_MESSAGES=yes], + [gt_cv_val_LC_MESSAGES=no])]) + if test $gt_cv_val_LC_MESSAGES = yes; then + AC_DEFINE([HAVE_LC_MESSAGES], [1], + [Define if your file defines LC_MESSAGES.]) + fi +]) +m4trace:m4/lib-ld.m4:12: -1- AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 /dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL([acl_cv_path_LD], +[if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 = 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], [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + 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], + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) +m4trace:m4/lib-link.m4:161: -1- AC_DEFUN([AC_LIB_FROMPACKAGE], [ + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) + popdef([PACKUP]) + popdef([PACK]) +]) +m4trace:m4/lib-link.m4:181: -1- AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[m4_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],[m4_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_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 + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + 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= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + 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 + 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 + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$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 + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$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 "$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" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$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 $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. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + 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* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$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:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi + popdef([P_A_C_K]) + popdef([PACKLIBS]) + popdef([PACKUP]) + popdef([PACK]) + popdef([NAME]) +]) +m4trace:m4/lib-link.m4:684: -1- AC_DEFUN([AC_LIB_APPENDTOVAR], [ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) +m4trace:m4/lib-link.m4:708: -1- 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]) +]) +m4trace:m4/lib-prefix.m4:12: -1- AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])]) +m4trace:m4/lib-prefix.m4:22: -1- 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 + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) +m4trace:m4/lib-prefix.m4:122: -1- AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) +m4trace:m4/lib-prefix.m4:145: -1- AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) +m4trace:m4/lib-prefix.m4:162: -1- 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 . + 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" +]) +m4trace:m4/lock.m4:9: -1- AC_DEFUN([gl_LOCK], [ + AC_REQUIRE([gl_THREADLIB]) + if test "$gl_threads_api" = posix; then + # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + AC_CHECK_TYPE([pthread_rwlock_t], + [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1], + [Define if the POSIX multithreading library has read/write locks.])], + [], + [#include ]) + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM( + [[#include ]], + [[ +#if __FreeBSD__ == 4 +error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \ + && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070) +error "No, in Mac OS X < 10.7 recursive mutexes actually don't work." +#else +int x = (int)PTHREAD_MUTEX_RECURSIVE; +return !x; +#endif + ]])], + [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1], + [Define if the defines PTHREAD_MUTEX_RECURSIVE.])]) + fi + gl_PREREQ_LOCK +]) +m4trace:m4/lock.m4:42: -1- AC_DEFUN([gl_PREREQ_LOCK], [:]) +m4trace:m4/longlong.m4:17: -1- AC_DEFUN([AC_TYPE_LONG_LONG_INT], [ + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], + [ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. + dnl If cross compiling, assume the bug is not important, since + dnl nobody cross compiles for this platform as far as we know. + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif]], + [[long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0;]])], + [], + [ac_cv_type_long_long_int=no], + [:]) + fi + fi]) + if test $ac_cv_type_long_long_int = yes; then + AC_DEFINE([HAVE_LONG_LONG_INT], [1], + [Define to 1 if the system has the type 'long long int'.]) + fi +]) +m4trace:m4/longlong.m4:67: -1- AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], [ + AC_CACHE_CHECK([for unsigned long long int], + [ac_cv_type_unsigned_long_long_int], + [ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [], + [ac_cv_type_unsigned_long_long_int=no]) + fi]) + if test $ac_cv_type_unsigned_long_long_int = yes; then + AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], + [Define to 1 if the system has the type 'unsigned long long int'.]) + fi +]) +m4trace:m4/longlong.m4:89: -1- AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], [ + AC_LANG_PROGRAM( + [[/* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63;]], + [[/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull));]]) +]) +m4trace:m4/nls.m4:23: -1- AC_DEFUN([AM_NLS], [ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE([nls], + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) +]) +m4trace:m4/po.m4:23: -1- AC_DEFUN([AM_PO_SUBDIRS], [ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_SED])dnl + 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.19]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]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]) + + 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 >&]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 >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + 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 Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # 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" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment 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 assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # 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%}" + ]) +]) +m4trace:m4/po.m4:220: -1- AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + tab=`printf '\t'` + if grep -l '@TCLCATALOGS@' "$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/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /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' -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" <> "$ac_file.tmp" < +#include +/* 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 __BEOS__ || 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 +]) +m4trace:m4/progtest.m4:25: -1- AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL([ac_cv_path_$1], +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$][$1]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST([$1])dnl +]) +m4trace:m4/sig_atomic_t.m4:7: -1- AC_DEFUN([gt_TYPE_SIG_ATOMIC_T], [ + AC_CHECK_TYPES([sig_atomic_t], , + [AC_DEFINE([sig_atomic_t], [int], + [Define as an integer type suitable for memory locations that can be + accessed atomically even in the presence of asynchronous signals.])], + [#include ]) +]) +m4trace:m4/size_max.m4:9: -1- AC_DEFUN([gl_SIZE_MAX], [ + AC_CHECK_HEADERS([stdint.h]) + dnl First test whether the system already has SIZE_MAX. + AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ + gl_cv_size_max= + AC_EGREP_CPP([Found it], [ +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif +], [gl_cv_size_max=yes]) + if test -z "$gl_cv_size_max"; then + dnl Define it ourselves. Here we assume that the type 'size_t' is not wider + dnl than the type 'unsigned long'. Try hard to find a definition that can + dnl be used in a preprocessor #if, i.e. doesn't contain a cast. + AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], + [#include +#include ], [size_t_bits_minus_1=]) + AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], + [#include ], [fits_in_uint=]) + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + 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_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + extern size_t foo; + extern unsigned long foo; + ]], + [[]])], + [fits_in_uint=0]) + fi + dnl We cannot use 'expr' to simplify this expression, because 'expr' + dnl works only with 'long' integers in the host environment, while we + dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + dnl Shouldn't happen, but who knows... + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + ]) + if test "$gl_cv_size_max" != yes; then + AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], + [Define as the maximum value of type 'size_t', if the system doesn't define it.]) + fi + dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after + dnl . Remember that the #undef in AH_VERBATIM gets replaced with + dnl #define by AC_DEFINE_UNQUOTED. + AH_VERBATIM([SIZE_MAX], +[/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#ifndef SIZE_MAX +# undef SIZE_MAX +#endif]) +]) +m4trace:m4/stdbool.m4:12: -1- AC_DEFUN([gl_STDBOOL_H], [ + AC_REQUIRE([AC_CHECK_HEADER_STDBOOL]) + AC_REQUIRE([AC_CANONICAL_HOST]) + + dnl On some platforms, does not exist or does not conform to C99. + dnl On Solaris 10 with CC=cc CXX=CC, exists but is not usable + dnl in C++ mode (and no exists). In this case, we use our + dnl replacement, also in C mode (for binary compatibility between C and C++). + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + AC_SUBST([HAVE__BOOL]) +]) +m4trace:m4/stdint_h.m4:12: -1- AC_DEFUN([gl_AC_HEADER_STDINT_H], [ + AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_stdint_h=yes], + [gl_cv_header_stdint_h=no])]) + if test $gl_cv_header_stdint_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1], + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) +m4trace:m4/threadlib.m4:29: -1- AC_DEFUN([gl_THREADLIB_EARLY], [ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) +]) +m4trace:m4/threadlib.m4:36: -1- AC_DEFUN([gl_THREADLIB_EARLY_BODY], [ + dnl Ordering constraints: This macro modifies CPPFLAGS in a way that + dnl influences the result of the autoconf tests that test for *_unlocked + dnl declarations, on AIX 5 at least. Therefore it must come early. + AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl + AC_BEFORE([$0], [gl_ARGP])dnl + + AC_REQUIRE([AC_CANONICAL_HOST]) + dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + dnl Check for multithreading. + m4_ifdef([gl_THREADLIB_DEFAULT_NO], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) + AC_ARG_ENABLE([threads], +AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ +AC_HELP_STRING([--disable-threads], [build without multithread safety])]), + [gl_use_threads=$enableval], + [if test -n "$gl_use_threads_default"; then + gl_use_threads="$gl_use_threads_default" + else +changequote(,)dnl + case "$host_os" in + dnl Disable multithreading by default on OSF/1, because it interferes + dnl with fork()/exec(): When msgexec is linked with -lpthread, its + dnl child process gets an endless segmentation fault inside execvp(). + dnl Disable multithreading by default on Cygwin 1.5.x, because it has + dnl bugs that lead to endless loops or crashes. See + dnl . + osf*) gl_use_threads=no ;; + cygwin*) + case `uname -r` in + 1.[0-5].*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + ;; + *) gl_use_threads=yes ;; + esac +changequote([,])dnl + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using : + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks . cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_LINK_IFELSE test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + fi +]) +m4trace:m4/threadlib.m4:107: -1- AC_DEFUN([gl_THREADLIB_BODY], [ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + dnl Check whether the compiler and linker support weak declarations. + AC_CACHE_CHECK([whether imported symbols can be declared weak], + [gl_cv_have_weak], + [gl_cv_have_weak=no + dnl First, test whether the compiler accepts it syntactically. + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[extern void xyzzy (); +#pragma weak xyzzy]], + [[xyzzy();]])], + [gl_cv_have_weak=maybe]) + if test $gl_cv_have_weak = maybe; then + dnl Second, test whether it actually works. On Cygwin 1.7.2, with + dnl gcc 4.3, symbols declared weak always evaluate to the address 0. + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#pragma weak fputs +int main () +{ + return (fputs == NULL); +}]])], + [gl_cv_have_weak=yes], + [gl_cv_have_weak=no], + [dnl When cross-compiling, assume that only ELF platforms support + dnl weak symbols. + AC_EGREP_CPP([Extensible Linking Format], + [#ifdef __ELF__ + Extensible Linking Format + #endif + ], + [gl_cv_have_weak="guessing yes"], + [gl_cv_have_weak="guessing no"]) + ]) + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. + AC_CHECK_HEADER([pthread.h], + [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + # + # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 + # needs -pthread for some reason. See: + # http://lists.gnu.org/archive/html/bug-gnulib/2014-09/msg00023.html + save_LIBS=$LIBS + for gl_pthread in '' '-pthread'; do + LIBS="$LIBS $gl_pthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + pthread_mutex_t m; + pthread_mutexattr_t ma; + ]], + [[pthread_mutex_lock (&m); + pthread_mutexattr_init (&ma);]])], + [gl_have_pthread=yes + LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread + LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread]) + LIBS=$save_LIBS + test -n "$gl_have_pthread" && break + done + + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + AC_CHECK_LIB([pthread], [pthread_kill], + [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + case "$host_os" in + solaris* | hpux*) + AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], + [Define if the pthread_in_use() detection is hard.]) + esac + ]) + elif test -z "$gl_have_pthread"; then + # Some library is needed. Try libpthread and libc_r. + AC_CHECK_LIB([pthread], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread]) + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + AC_CHECK_LIB([c_r], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r]) + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + AC_DEFINE([USE_POSIX_THREADS], [1], + [Define if the POSIX multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], + [Define if references to the POSIX multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[thr_self();]])], + [gl_have_solaristhread=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_SOLARIS_THREADS], [1], + [Define if the old Solaris multithreading library can be used.]) + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1], + [Define if references to the old Solaris multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_LINKFLAGS([pth]) + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS $LIBPTH" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include ]], [[pth_self();]])], + [gl_have_pth=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_PTH_THREADS], [1], + [Define if the GNU Pth multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_PTH_THREADS_WEAK], [1], + [Define if references to the GNU Pth multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + case "$gl_use_threads" in + yes | windows | win32) # The 'win32' is for backward compatibility. + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=windows + AC_DEFINE([USE_WINDOWS_THREADS], [1], + [Define if the native Windows multithreading API can be used.]) + fi + ;; + esac + fi + fi + AC_MSG_CHECKING([for multithread API to use]) + AC_MSG_RESULT([$gl_threads_api]) + AC_SUBST([LIBTHREAD]) + AC_SUBST([LTLIBTHREAD]) + AC_SUBST([LIBMULTITHREAD]) + AC_SUBST([LTLIBMULTITHREAD]) +]) +m4trace:m4/threadlib.m4:318: -1- AC_DEFUN([gl_THREADLIB], [ + AC_REQUIRE([gl_THREADLIB_EARLY]) + AC_REQUIRE([gl_THREADLIB_BODY]) +]) +m4trace:m4/threadlib.m4:331: -1- AC_DEFUN([gl_DISABLE_THREADS], [ + m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no]) +]) +m4trace:m4/uintmax_t.m4:14: -1- AC_DEFUN([gl_AC_TYPE_UINTMAX_T], [ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + test $ac_cv_type_unsigned_long_long_int = 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 and don't define.]) + else + AC_DEFINE([HAVE_UINTMAX_T], [1], + [Define if you have the 'uintmax_t' type in or .]) + fi +]) +m4trace:m4/visibility.m4:23: -1- AC_DEFUN([gl_VISIBILITY], [ + AC_REQUIRE([AC_PROG_CC]) + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + dnl First, check whether -Werror can be added to the command line, or + dnl whether it leads to an error because of some other option that the + dnl user has put into $CC $CFLAGS $CPPFLAGS. + AC_MSG_CHECKING([whether the -Werror option is usable]) + AC_CACHE_VAL([gl_cv_cc_vis_werror], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[]], [[]])], + [gl_cv_cc_vis_werror=yes], + [gl_cv_cc_vis_werror=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_vis_werror]) + dnl Now check whether visibility declarations are supported. + AC_MSG_CHECKING([for simple visibility declarations]) + AC_CACHE_VAL([gl_cv_cc_visibility], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + dnl We use the option -Werror and a function dummyfunc, because on some + dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning + dnl "visibility attribute not supported in this configuration; ignored" + dnl at the first function definition in every compilation unit, and we + dnl don't want to use the option in this case. + if test $gl_cv_cc_vis_werror = yes; then + CFLAGS="$CFLAGS -Werror" + fi + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {} + ]], + [[]])], + [gl_cv_cc_visibility=yes], + [gl_cv_cc_visibility=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_visibility]) + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + AC_SUBST([CFLAG_VISIBILITY]) + AC_SUBST([HAVE_VISIBILITY]) + AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], + [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) +]) +m4trace:m4/warn-on-use.m4:26: -1- AC_DEFUN([gl_WARN_ON_USE_PREPARE], [ + m4_ifdef([gl_POSIXCHECK], + [m4_foreach_w([gl_decl], [$2], + [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])), + [Define to 1 if ]m4_defn([gl_decl])[ is declared even after + undefining macros.])])dnl + for gl_func in m4_flatten([$2]); do + AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl + dnl As a workaround to implicit built-in function declarations in + dnl clang (e.g. strndup), reference ac_compile_for_check_decl instead + dnl of ac_compile. If, for whatever reason, the override of AC_PROG_CC + dnl in zzgnulib.m4 is inactive, use the original ac_compile. + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + AC_CACHE_CHECK([whether $gl_func is declared without a macro], + [gl_Symbol], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1], +[[#undef $gl_func + (void) $gl_func;]])], + [AS_VAR_SET([gl_Symbol], [yes])], [AS_VAR_SET([gl_Symbol], [no])])]) + ac_compile="$ac_save_ac_compile" + AS_VAR_IF([gl_Symbol], [yes], + [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1]) + dnl Shortcut for an AC_CHECK_DECL invocation that may come later: + dnl If the raw declaration exists with the given includes, then + dnl AC_CHECK_DECL with its many includes would see it as well. + dnl So, set a cache variable to allow skipping any later + dnl AC_CHECK_DECL invocation for $gl_func. + eval "ac_cv_have_decl_$gl_func=yes" + ]) + AS_VAR_POPDEF([gl_Symbol])dnl + done + ]) +]) +m4trace:m4/wchar_t.m4:11: -1- AC_DEFUN([gt_TYPE_WCHAR_T], [ + AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + 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 +]) +m4trace:m4/wint_t.m4:11: -1- AC_DEFUN([gt_TYPE_WINT_T], [ + AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include + 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 +]) +m4trace:m4/xsize.m4:7: -1- AC_DEFUN([gl_XSIZE], [ + dnl Prerequisites of lib/xsize.h. + AC_REQUIRE([gl_SIZE_MAX]) + AC_CHECK_HEADERS([stdint.h]) +]) +m4trace:m4/year2038.m4:10: -1- AC_DEFUN([gl_YEAR2038_EARLY], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + mingw*) + AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1], + [For 64-bit time_t on 32-bit mingw.]) + ;; + esac +]) +m4trace:m4/year2038.m4:23: -1- AC_DEFUN([gl_YEAR2038_TEST_INCLUDES], [[ + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; +]]) +m4trace:m4/year2038.m4:36: -1- AC_DEFUN([gl_YEAR2038_BODY], [ + AC_ARG_ENABLE([year2038], + [ --disable-year2038 omit support for timestamps past the year 2038]) + AS_IF([test "$enable_year2038" != no], + [ + dnl On many systems, time_t is already a 64-bit type. + dnl On those systems where time_t is still 32-bit, it requires kernel + dnl and libc support to make it 64-bit. For glibc 2.34 and later on Linux, + dnl defining _TIME_BITS=64 and _FILE_OFFSET_BITS=64 is needed on x86 and ARM. + dnl + dnl On native Windows, the system include files define types __time32_t + dnl and __time64_t. By default, time_t is an alias of + dnl - __time32_t on 32-bit mingw, + dnl - __time64_t on 64-bit mingw and on MSVC (since MSVC 8). + dnl But when compiling with -D__MINGW_USE_VC2005_COMPAT, time_t is an + dnl alias of __time64_t. + dnl And when compiling with -D_USE_32BIT_TIME_T, time_t is an alias of + dnl __time32_t. + AC_CACHE_CHECK([for time_t past the year 2038], [gl_cv_type_time_t_y2038], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([gl_YEAR2038_TEST_INCLUDES])], + [gl_cv_type_time_t_y2038=yes], [gl_cv_type_time_t_y2038=no]) + ]) + if test "$gl_cv_type_time_t_y2038" = no; then + AC_CACHE_CHECK([for 64-bit time_t with _TIME_BITS=64], + [gl_cv_type_time_t_bits_macro], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([[#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + ]gl_YEAR2038_TEST_INCLUDES])], + [gl_cv_type_time_t_bits_macro=yes], + [gl_cv_type_time_t_bits_macro=no]) + ]) + if test "$gl_cv_type_time_t_bits_macro" = yes; then + AC_DEFINE([_TIME_BITS], [64], + [Number of bits in a timestamp, on hosts where this is settable.]) + dnl AC_SYS_LARGFILE also defines this; it's OK if we do too. + AC_DEFINE([_FILE_OFFSET_BITS], [64], + [Number of bits in a file offset, on hosts where this is settable.]) + gl_cv_type_time_t_y2038=yes + fi + fi + if test $gl_cv_type_time_t_y2038 = no; then + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _USE_32BIT_TIME_T + int ok; + #else + error fail + #endif + ]])], + [AC_MSG_FAILURE( + [The 'time_t' type stops working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags.])], + [# If not cross-compiling and $1 says we should check, + # and 'touch' works with a large timestamp, then evidently wider time_t + # is desired and supported, so fail and ask the builder to fix the + # problem. Otherwise, just warn the builder. + m4_ifval([$1], + [if test $cross_compiling = no \ + && TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null; then + case `TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null` in + *'Feb 7 2106'* | *'Feb 7 17:10'*) + AC_MSG_FAILURE( + [The 'time_t' type stops working after January 2038, + and your system appears to support a wider 'time_t'. + Try configuring with 'CC="${CC} -m64"'. + To build with a 32-bit time_t anyway (not recommended), + configure with '--disable-year2038'.]);; + esac + rm -f conftest.time + fi]) + if test "$gl_warned_about_y2038" != yes; then + AC_MSG_WARN( + [The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC="${CC} -m64"' perhaps?]) + gl_warned_about_y2038=yes + fi + ]) + fi]) +]) +m4trace:m4/year2038.m4:121: -1- AC_DEFUN([gl_YEAR2038], [ + gl_YEAR2038_BODY([require-year2038-safe]) +]) +m4trace:m4/zzgnulib.m4:23: -1- AC_DEFUN([gl_ZZGNULIB]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:19: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:35: -1- AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:35: -1- AM_SET_CURRENT_AUTOMAKE_VERSION +m4trace:configure.ac:35: -1- AM_AUTOMAKE_VERSION([1.18.1]) +m4trace:configure.ac:35: -1- _AM_AUTOCONF_VERSION([2.73]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:35: -1- _AM_SET_OPTIONS([1.16.1 foreign -Werror -Wall]) +m4trace:configure.ac:35: -1- _AM_SET_OPTION([1.16.1]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([1.16.1]) +m4trace:configure.ac:35: -1- _AM_SET_OPTION([foreign]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([foreign]) +m4trace:configure.ac:35: -1- _AM_SET_OPTION([-Werror]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([-Werror]) +m4trace:configure.ac:35: -1- _AM_SET_OPTION([-Wall]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([-Wall]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([no-define]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AM_SANITY_CHECK +m4trace:configure.ac:35: -1- _AM_FILESYSTEM_TIMESTAMP_RESOLUTION +m4trace:configure.ac:35: -1- _AM_SLEEP_FRACTIONAL_SECONDS +m4trace:configure.ac:35: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +m4trace:configure.ac:35: -1- AM_MISSING_HAS_RUN +m4trace:configure.ac:35: -1- AM_AUX_DIR_EXPAND +m4trace:configure.ac:35: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:35: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:35: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:35: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:35: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:35: -1- AM_PROG_INSTALL_SH +m4trace:configure.ac:35: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:35: -1- AM_PROG_INSTALL_STRIP +m4trace:configure.ac:35: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:35: -1- AM_SET_LEADING_DOT +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:35: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], + [_AM_PROG_TAR([ustar])])])]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([tar-ustar]) +m4trace:configure.ac:35: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], + [_AM_PROG_TAR([ustar])])]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([tar-pax]) +m4trace:configure.ac:35: -1- _AM_IF_OPTION([tar-v7], [_AM_PROG_TAR([v7])], [_AM_PROG_TAR([ustar])]) +m4trace:configure.ac:35: -2- _AM_MANGLE_OPTION([tar-v7]) +m4trace:configure.ac:35: -1- _AM_PROG_TAR([ustar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:35: -1- AM_RUN_LOG([$_am_tar --version]) +m4trace:configure.ac:35: -1- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) +m4trace:configure.ac:35: -1- AM_RUN_LOG([$am__untar +#if HAVE_SYS_LOADAVG_H +/* OpenIndiana has a bug: must be included before + . */ +# include +# include +#endif +#if HAVE_RANDOM_H +# include +#endif + ]], [getloadavg]) +m4trace:configure.ac:43: -1- gl_STDLIB_H_REQUIRE_DEFAULTS +m4trace:configure.ac:43: -1- gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GNULIB_GETLOADAVG$]) +m4trace:configure.ac:43: -1- gl_GETLOADAVG +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBKSTAT$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBPERFSTAT$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^DGUX$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBDGC$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GETLOADAVG_LIBS$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_SYS_LOADAVG_H$]) +m4trace:configure.ac:43: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:43: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:43: -1- gl_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_TRUE$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- AM_COND_IF([GL_COND_OBJ_GETLOADAVG], [ + gl_PREREQ_GETLOADAVG + ]) +m4trace:configure.ac:43: -1- gl_PREREQ_GETLOADAVG +m4trace:configure.ac:43: -1- AC_DEFUN([_AC_Header_sys_param_h], [m4_divert_text([INIT_PREPARE], + [AS_VAR_APPEND([ac_header_]]_AC_LANG_ABBREV[[_list], + [" sys/param.h ]AS_TR_SH([sys/param.h]) AS_TR_CPP([HAVE_sys/param.h])["])])_AC_HEADERS_EXPANSION(_AC_LANG_ABBREV)]) +m4trace:configure.ac:43: -1- AC_DEFUN([_AC_Header_unistd_h], [m4_divert_text([INIT_PREPARE], + [AS_VAR_APPEND([ac_header_]]_AC_LANG_ABBREV[[_list], + [" unistd.h ]AS_TR_SH([unistd.h]) AS_TR_CPP([HAVE_unistd.h])["])])_AC_HEADERS_EXPANSION(_AC_LANG_ABBREV)]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_PSTAT_GETDYNAMIC$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^SVR4$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX4_3$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_MACH_MACH_H$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_NLIST_H$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_STRUCT_NLIST_N_UN_N_NAME$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^N_NAME_POINTER$]) +m4trace:configure.ac:43: -1- gl_STDLIB_MODULE_INDICATOR([getloadavg]) +m4trace:configure.ac:43: -1- gl_STDLIB_H_REQUIRE_DEFAULTS +m4trace:configure.ac:43: -1- gl_MODULE_INDICATOR_SET_VARIABLE([getloadavg]) +m4trace:configure.ac:43: -1- gl_MODULE_INDICATOR_SET_VARIABLE_AUX([GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]m4_translit([[getloadavg]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], [gl_MODULE_INDICATOR_CONDITION]) +m4trace:configure.ac:43: -1- gl_MODULE_INDICATOR_FOR_TESTS([getloadavg]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GNULIB_TEST_GETLOADAVG$]) +m4trace:configure.ac:43: -1- gl_HOST_CPU_C_ABI +m4trace:configure.ac:43: -1- gl_C_ASM +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU_C_ABI$]) +m4trace:configure.ac:43: -1- gl_LARGEFILE +m4trace:configure.ac:43: -1- AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_TRUE$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB$]) +m4trace:configure.ac:43: -1- pds_AC_DOS_PATHS +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:43: -1- gl_STDBOOL_H +m4trace:configure.ac:43: -1- AC_CHECK_HEADER_STDBOOL +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- gl_CONDITIONAL_HEADER([stdbool.h]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STDBOOL_H$]) +m4trace:configure.ac:43: -1- gl_CONDITIONAL([GL_GENERATE_STDBOOL_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_TRUE$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- gl_COMMON +m4trace:configure.ac:43: -1- m4_pattern_allow([^gltests_WITNESS$]) +m4trace:configure.ac:43: -1- gl_CC_GNULIB_WARNINGS +m4trace:configure.ac:43: -1- gl_CC_ALLOW_WARNINGS +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_ALLOW_WARNINGS$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_GNULIB_WARNINGS$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LIBDEPS$]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LTLIBDEPS$]) +m4trace:configure.ac:46: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^PERL$]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$]) +m4trace:configure.ac:57: -1- AM_GNU_GETTEXT_VERSION([0.19.4]) +m4trace:configure.ac:58: -1- AM_GNU_GETTEXT([external]) +m4trace:configure.ac:58: -1- AM_GNU_GETTEXT_NEED([]) +m4trace:configure.ac:58: -1- AM_PO_SUBDIRS +m4trace:configure.ac:58: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:58: -1- AM_NLS +m4trace:configure.ac:58: -1- m4_pattern_allow([^USE_NLS$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$]) +m4trace:configure.ac:58: -1- AM_PATH_PROG_WITH_TEST([MSGFMT], [msgfmt], [$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)], [:]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT_015$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT_015$]) +m4trace:configure.ac:58: -1- AM_PATH_PROG_WITH_TEST([XGETTEXT], [xgettext], [$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)], [:]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_015$]) +m4trace:configure.ac:58: -1- AM_PATH_PROG_WITH_TEST([MSGMERGE], [msgmerge], [$ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1], [:]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGMERGE$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$]) +m4trace:configure.ac:58: -1- AC_LIB_PREPARE_PREFIX +m4trace:configure.ac:58: -1- AC_LIB_RPATH +m4trace:configure.ac:58: -1- AC_LIB_PROG_LD +m4trace:configure.ac:58: -1- AC_LIB_PROG_LD_GNU +m4trace:configure.ac:58: -1- AM_ICONV_LINKFLAGS_BODY +m4trace:configure.ac:58: -1- AC_LIB_LINKFLAGS_BODY([iconv]) +m4trace:configure.ac:58: -1- AC_LIB_PREPARE_MULTILIB +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- gt_INTL_MACOSX +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) +m4trace:configure.ac:58: -1- AM_ICONV_LINK +m4trace:configure.ac:58: -1- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_ICONV$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBICONV$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBICONV$]) +m4trace:configure.ac:58: -1- AC_LIB_LINKFLAGS_BODY([intl]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^ENABLE_NLS$]) +m4trace:configure.ac:58: -1- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) +m4trace:configure.ac:58: -1- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_GETTEXT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_DCGETTEXT$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTLLIBS$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBINTL$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBINTL$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^POSUB$]) +m4trace:configure.ac:65: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LOCALE_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_UNISTD_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LIMITS_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_FCNTL_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STRING_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_MEMORY_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_RESOURCE_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIMEB_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIME_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_SELECT_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_FILE_H$]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SPAWN_H$]) +m4trace:configure.ac:71: -1- AM_PROG_CC_C_O +m4trace:configure.ac:72: -1- m4_pattern_allow([^const$]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^uid_t$]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^gid_t$]) +m4trace:configure.ac:74: -1- m4_pattern_allow([^pid_t$]) +m4trace:configure.ac:75: -1- m4_pattern_allow([^off_t$]) +m4trace:configure.ac:76: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:77: -1- m4_pattern_allow([^ssize_t$]) +m4trace:configure.ac:78: -1- AC_TYPE_LONG_LONG_INT +m4trace:configure.ac:78: -1- AC_TYPE_UNSIGNED_LONG_LONG_INT +m4trace:configure.ac:78: -1- _AC_TYPE_LONG_LONG_SNIPPET +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_INTMAX_T$]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^intmax_t$]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^HAVE_UINTMAX_T$]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^uintmax_t$]) +m4trace:configure.ac:82: -1- gt_TYPE_SIG_ATOMIC_T +m4trace:configure.ac:82: -1- m4_pattern_allow([^HAVE_SIG_ATOMIC_T$]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^sig_atomic_t$]) +m4trace:configure.ac:86: -1- AC_STRUCT_ST_MTIM_NSEC +m4trace:configure.ac:86: -1- _m4_warn([obsolete], [The macro 'AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:2903: AC_TRY_COMPILE is expanded from... +lib/m4sugar/m4sh.m4:689: _AS_IF_ELSE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:2305: AC_CACHE_VAL is expanded from... +./lib/autoconf/general.m4:2326: AC_CACHE_CHECK is expanded from... +m4/acinclude.m4:105: AC_STRUCT_ST_MTIM_NSEC is expanded from... +configure.ac:86: the top level]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^ST_MTIM_NSEC$]) +m4trace:configure.ac:99: -1- m4_pattern_allow([^FILE_TIMESTAMP_HI_RES$]) +m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_CLOCK_GETTIME$]) +m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_GETTIMEOFDAY$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRTOLL$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRDUP$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRNDUP$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STPCPY$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMRCHR$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMPCPY$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_UMASK$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKSTEMP$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKTEMP$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_FDOPEN$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP2$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETCWD$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_REALPATH$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGSETMASK$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGACTION$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETGROUPS$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEUID$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEGID$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETLINEBUF$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREUID$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREGID$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKFIFO$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETRLIMIT$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETRLIMIT$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETVBUF$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PIPE$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRERROR$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRSIGNAL$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_LSTAT$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_READLINK$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ATEXIT$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ISATTY$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_TTYNAME$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PSELECT$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWN$]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWNATTR_SETSIGMASK$]) +m4trace:configure.ac:142: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:142: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:142: -1- m4_pattern_allow([^HAVE_DECL_BSD_SIGNAL$]) +m4trace:configure.ac:145: -1- AC_DEFUN([_AC_Header_vfork_h], [m4_divert_text([INIT_PREPARE], + [AS_VAR_APPEND([ac_header_]]_AC_LANG_ABBREV[[_list], + [" vfork.h ]AS_TR_SH([vfork.h]) AS_TR_CPP([HAVE_vfork.h])["])])_AC_HEADERS_EXPANSION(_AC_LANG_ABBREV)]) +m4trace:configure.ac:145: -1- AC_DEFUN([_AC_Func_fork], [m4_divert_text([INIT_PREPARE], + [AS_VAR_APPEND([ac_func_]]_AC_LANG_ABBREV[[_list], + [" fork ]AS_TR_CPP([HAVE_fork])["])])_AC_FUNCS_EXPANSION(_AC_LANG_ABBREV)]) +m4trace:configure.ac:145: -1- AC_DEFUN([_AC_Func_vfork], [m4_divert_text([INIT_PREPARE], + [AS_VAR_APPEND([ac_func_]]_AC_LANG_ABBREV[[_list], + [" vfork ]AS_TR_CPP([HAVE_vfork])["])])_AC_FUNCS_EXPANSION(_AC_LANG_ABBREV)]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_VFORK$]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^vfork$]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_FORK$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCASECMP$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCASECMP$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCMPI$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCMPI$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRICMP$]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNICMP$]) +m4trace:configure.ac:153: -1- m4_pattern_allow([^HAVE_STRCOLL$]) +m4trace:configure.ac:154: -1- m4_pattern_allow([^CLOSEDIR_VOID$]) +m4trace:configure.ac:157: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_TYPE$]) +m4trace:configure.ac:165: -1- PKG_PROG_PKG_CONFIG +m4trace:configure.ac:165: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:167: -1- PKG_CHECK_EXISTS([guile-$v], [guile_version=$v; have_guile=yes; break], []) +m4trace:configure.ac:167: -1- PKG_CHECK_MODULES([GUILE], [guile-$guile_version]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_CFLAGS$]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_LIBS$]) +m4trace:configure.ac:167: -1- PKG_CHECK_EXISTS([guile-$guile_version], [pkg_cv_[]GUILE_CFLAGS=`$PKG_CONFIG --[]cflags "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) +m4trace:configure.ac:167: -1- PKG_CHECK_EXISTS([guile-$guile_version], [pkg_cv_[]GUILE_LIBS=`$PKG_CONFIG --[]libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) +m4trace:configure.ac:167: -1- _PKG_SHORT_ERRORS_SUPPORTED +m4trace:configure.ac:167: -1- m4_pattern_allow([^HAVE_GUILE$]) +m4trace:configure.ac:210: -1- AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_TRUE$]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_FALSE$]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL__SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:212: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL___SYS_SIGLIST$]) +m4trace:configure.ac:223: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAITPID$]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAIT3$]) +m4trace:configure.ac:247: -1- m4_pattern_allow([^HAVE_UNION_WAIT$]) +m4trace:configure.ac:254: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:260: -1- m4_pattern_allow([^REMOTE$]) +m4trace:configure.ac:262: -1- CF_NETLIBS +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTNAME$]) +m4trace:configure.ac:262: -1- CF_RECHECK_FUNC([gethostname], [nsl], [cf_cv_netlibs], [ + CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)]) +m4trace:configure.ac:262: -1- CF_UPPER([cf_tr_func], [gethostname]) +m4trace:configure.ac:262: -1- CF_RECHECK_FUNC([gethostname], [socket], [cf_cv_netlibs]) +m4trace:configure.ac:262: -1- CF_UPPER([cf_tr_func], [gethostname]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_SOCKET$]) +m4trace:configure.ac:262: -1- CF_RECHECK_FUNC([socket], [socket], [cf_cv_netlibs], [ + CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)]) +m4trace:configure.ac:262: -1- CF_UPPER([cf_tr_func], [socket]) +m4trace:configure.ac:262: -1- CF_RECHECK_FUNC([socket], [bsd], [cf_cv_netlibs]) +m4trace:configure.ac:262: -1- CF_UPPER([cf_tr_func], [socket]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$]) +m4trace:configure.ac:262: -1- CF_RECHECK_FUNC([gethostbyname], [nsl], [cf_cv_netlibs]) +m4trace:configure.ac:262: -1- CF_UPPER([cf_tr_func], [gethostbyname]) +m4trace:configure.ac:262: -1- _m4_warn([obsolete], [The macro 'AC_FD_MSG' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:401: AC_FD_MSG is expanded from... +m4/acinclude.m4:38: CF_NETLIBS is expanded from... +lib/m4sugar/m4sh.m4:594: AS_CASE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:1603: AC_ARG_WITH is expanded from... +configure.ac:262: the top level]) +m4trace:configure.ac:281: -1- AM_CONDITIONAL([USE_CUSTOMS], [test "$use_customs" = true]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_TRUE$]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_FALSE$]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:285: -1- m4_pattern_allow([^HAVE_CASE_INSENSITIVE_FS$]) +m4trace:configure.ac:305: -1- m4_pattern_allow([^HAVE_SA_RESTART$]) +m4trace:configure.ac:318: -1- m4_pattern_allow([^MAKE_JOBSERVER$]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLOPEN$]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLSYM$]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_UNDECLARED_BUILTIN_c], [_AC_UNDECLARED_BUILTIN]) +m4trace:configure.ac:325: -1- AC_DEFUN([_AC_FUTURE_DARWIN_c], [_AC_FUTURE_DARWIN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLERROR$]) +m4trace:configure.ac:341: -1- m4_pattern_allow([^MAKE_LOAD$]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:371: -1- m4_pattern_allow([^MAKE_SYMLINKS$]) +m4trace:configure.ac:403: -1- m4_pattern_allow([^USE_POSIX_SPAWN$]) +m4trace:configure.ac:415: -1- m4_pattern_allow([^SCCS_GET$]) +m4trace:configure.ac:419: -1- m4_pattern_allow([^SCCS_GET_MINUS_G$]) +m4trace:configure.ac:437: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:439: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:442: -1- AM_CONDITIONAL([WINDOWSENV], [false]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AM_CONDITIONAL([WINDOWSENV], [true]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWS32$]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:452: -1- m4_pattern_allow([^PATH_SEPARATOR_CHAR$]) +m4trace:configure.ac:455: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:460: -1- m4_pattern_allow([^MK_CONFIGURE$]) +m4trace:configure.ac:469: -1- m4_pattern_allow([^MAINT_MAKEFILE$]) +m4trace:configure.ac:472: -1- AM_WITH_DMALLOC +m4trace:configure.ac:472: -1- m4_pattern_allow([^WITH_DMALLOC$]) +m4trace:configure.ac:532: -1- AM_CONDITIONAL([KNOWN_PREFIX], [test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_TRUE$]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_FALSE$]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) +m4trace:configure.ac:547: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS +m4trace:configure.ac:547: -1- AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/traces.1 b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.1 new file mode 100644 index 0000000000..b993291c6f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.1 @@ -0,0 +1,2193 @@ +m4trace:aclocal.m4:1064: -1- AC_SUBST([am__quote]) +m4trace:aclocal.m4:1064: -1- AC_SUBST_TRACE([am__quote]) +m4trace:aclocal.m4:1064: -1- m4_pattern_allow([^am__quote$]) +m4trace:aclocal.m4:1720: -1- m4_include([m4/00gnulib.m4]) +m4trace:aclocal.m4:1721: -1- m4_include([m4/acinclude.m4]) +m4trace:aclocal.m4:1722: -1- m4_include([m4/alloca.m4]) +m4trace:aclocal.m4:1723: -1- m4_include([m4/asm-underscore.m4]) +m4trace:aclocal.m4:1724: -1- m4_include([m4/dospaths.m4]) +m4trace:aclocal.m4:1725: -1- m4_include([m4/eaccess.m4]) +m4trace:aclocal.m4:1726: -1- m4_include([m4/extensions.m4]) +m4trace:aclocal.m4:1727: -1- m4_include([m4/findprog-in.m4]) +m4trace:aclocal.m4:1728: -1- m4_include([m4/getloadavg.m4]) +m4trace:aclocal.m4:1729: -1- m4_include([m4/gettext.m4]) +m4trace:aclocal.m4:1730: -1- m4_include([m4/gnulib-common.m4]) +m4trace:aclocal.m4:1731: -1- m4_include([m4/gnulib-comp.m4]) +m4trace:aclocal.m4:1732: -1- m4_include([m4/host-cpu-c-abi.m4]) +m4trace:aclocal.m4:1733: -1- m4_include([m4/iconv.m4]) +m4trace:aclocal.m4:1734: -1- m4_include([m4/intlmacosx.m4]) +m4trace:aclocal.m4:1735: -1- m4_include([m4/largefile.m4]) +m4trace:aclocal.m4:1736: -1- m4_include([m4/lib-ld.m4]) +m4trace:aclocal.m4:1737: -1- m4_include([m4/lib-link.m4]) +m4trace:aclocal.m4:1738: -1- m4_include([m4/lib-prefix.m4]) +m4trace:aclocal.m4:1739: -1- m4_include([m4/longlong.m4]) +m4trace:aclocal.m4:1740: -1- m4_include([m4/nls.m4]) +m4trace:aclocal.m4:1741: -1- m4_include([m4/po.m4]) +m4trace:aclocal.m4:1742: -1- m4_include([m4/progtest.m4]) +m4trace:aclocal.m4:1743: -1- m4_include([m4/sig_atomic_t.m4]) +m4trace:aclocal.m4:1744: -1- m4_include([m4/stdbool.m4]) +m4trace:aclocal.m4:1745: -1- m4_include([m4/warn-on-use.m4]) +m4trace:aclocal.m4:1746: -1- m4_include([m4/year2038.m4]) +m4trace:aclocal.m4:1747: -1- m4_include([m4/zzgnulib.m4]) +m4trace:configure.ac:19: -1- AC_INIT([GNU Make], [4.4], [bug-make@gnu.org]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:19: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:19: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:19: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:19: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([runstatedir], ['${localstatedir}/run']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([runstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:19: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:19: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:19: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:19: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:19: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:19: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:24: -1- AC_CONFIG_AUX_DIR([build-aux]) +m4trace:configure.ac:26: -1- AC_CONFIG_HEADERS([src/config.h]) +m4trace:configure.ac:28: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:35: -1- AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:35: -1- AM_AUTOMAKE_VERSION([1.18.1]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_DATA]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__isrc]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:35: -1- AC_SUBST([CYGPATH_W]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CYGPATH_W]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:35: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ +@%:@undef PACKAGE]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([VERSION], [/* Version number of package */ +@%:@undef VERSION]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([missing]) +m4trace:configure.ac:35: -1- AC_SUBST([ACLOCAL]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ACLOCAL]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOCONF]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOCONF]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOMAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOMAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOHEADER]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOHEADER]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:35: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MAKEINFO]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:35: -1- AC_SUBST([install_sh]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([install_sh]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:35: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([MKDIR_P]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:35: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([mkdir_p]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:35: -1- AC_SUBST([AWK]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AWK]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:35: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([SET_MAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__leading_dot]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__leading_dot]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:35: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMTAR]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__tar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__tar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__untar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__untar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:35: -1- AC_SUBST([CTAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CTAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CTAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([ETAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ETAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ETAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([CSCOPE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CSCOPE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CSCOPE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__rm_f_notfound$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__xargs_n]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__xargs_n]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__xargs_n$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX, Interix, z/OS. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable extensions on Cosmopolitan Libc. */ +#ifndef _COSMO_SOURCE +# undef _COSMO_SOURCE +#endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers\' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif +]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDIO_H]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:38: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:38: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:38: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DEPDIR]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__include]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__include]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__nodep]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__nodep$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_INTTYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDINT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRINGS_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if all of the C89 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ +@%:@undef STDC_HEADERS]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_WCHAR_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_MINIX_CONFIG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MINIX_CONFIG_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_ALL_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_COSMO_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_COSMO_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_DARWIN_C_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_DARWIN_C_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_GNU_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_HPUX_ALT_XOPEN_SOCKET_API]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_HPUX_ALT_XOPEN_SOCKET_API$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_NETBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_NETBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_OPENBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_OPENBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_ATTRIBS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_BFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_BFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_DFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_DFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_FUNCS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_FUNCS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_TYPES_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_TYPES_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_LIB_EXT2__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_LIB_EXT2__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_MATH_SPEC_FUNCS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_MATH_SPEC_FUNCS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_TANDEM_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_MINIX$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__EXTENSIONS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_XOPEN_SOURCE$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:39: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:39: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:42: -1- m4_pattern_forbid([^gl_[A-Z]]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_ES$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:42: -1- AC_CANONICAL_HOST +m4trace:configure.ac:42: -1- AC_CANONICAL_BUILD +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.sub]) +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.guess]) +m4trace:configure.ac:42: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:42: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_ISOC11_SOURCE$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_ISOC11_SOURCE], [/* Define to enable the declarations of ISO C 11 types and functions. */ +@%:@undef _ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([ARFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([ARFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^ARFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_LARGE_FILES$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ +@%:@undef _LARGE_FILES]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_TIME_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_TIME_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_TIME_BITS], [/* Number of bits in a timestamp, on hosts where this is settable. */ +@%:@undef _TIME_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([__MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^__MINGW_USE_VC2005_COMPAT$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([__MINGW_USE_VC2005_COMPAT], [/* For 64-bit time_t on 32-bit mingw. */ +@%:@undef __MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:43: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_LIBTOOL], [false]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_GL_GNUC_PREREQ], [/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ +#if defined __GNUC__ && defined __GNUC_MINOR__ +# define _GL_GNUC_PREREQ(major, minor) \\ + ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) +#else +# define _GL_GNUC_PREREQ(major, minor) 0 +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_Noreturn], [/* The _Noreturn keyword of C11. */ +#ifndef _Noreturn +# if (defined __cplusplus \\ + && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \\ + || (defined _MSC_VER && 1900 <= _MSC_VER)) \\ + && 0) + /* [[noreturn]] is not practically usable, because with it the syntax + extern _Noreturn void func (...); + would not be valid; such a declaration would only be valid with \'extern\' + and \'_Noreturn\' swapped, or without the \'extern\' keyword. However, some + AIX system header files and several gnulib header files use precisely + this syntax with \'extern\'. */ +# define _Noreturn [[noreturn]] +# elif ((!defined __cplusplus || defined __clang__) \\ + && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \\ + || (!defined __STRICT_ANSI__ \\ + && (_GL_GNUC_PREREQ (4, 7) \\ + || (defined __apple_build_version__ \\ + ? 6000000 <= __apple_build_version__ \\ + : 3 < __clang_major__ + (5 <= __clang_minor__)))))) + /* _Noreturn works as-is. */ +# elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C +# define _Noreturn __attribute__ ((__noreturn__)) +# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn +# endif +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([isoc99_inline], [/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of \'extern inline\' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif]) +m4trace:configure.ac:43: -1- AH_OUTPUT([attribute], [/* Attributes. */ +#if (defined __has_attribute \\ + && (!defined __clang_minor__ \\ + || (defined __apple_build_version__ \\ + ? 6000000 <= __apple_build_version__ \\ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) +# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) +#else +# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr +# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) +# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) +# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_diagnose_if 0 +# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) +# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) +# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) +# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) +# ifdef _ICC +# define _GL_ATTR_may_alias 0 +# else +# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) +# endif +# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) +# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) +# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) +# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) +# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) +#endif + +#ifdef __has_c_attribute +# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \\ + && _GL_GNUC_PREREQ (4, 6)) +# pragma GCC diagnostic ignored "-Wpedantic" +# endif +# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) +#else +# define _GL_HAS_C_ATTRIBUTE(attr) 0 +#endif + + +/* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function + is the size of the returned memory block. + _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied + by the Nth argument of the function is the size of the returned memory block. + */ +/* Applies to: function, pointer to function, function types. */ +#if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +#else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +#endif + +/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the + function and report an error if it cannot do so. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +#else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +#endif + +/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show + in stack traces when debugging. The compiler should omit the function from + stack traces. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +#else +# define _GL_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires \'cold\' not \'__cold__\'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via \'free\'; it can be used only after declaring \'free\'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib\'s or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with \'-fwhole-program\'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following \'case\' or + \'default\' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a \'switch\' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with \'__\'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC\'s syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type \'[[un]signed] char\'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function\'s return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don\'t use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + + +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the \'__attribute__ ((__unused__)) ;\' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([async_safe], [/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked \'volatile\'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable \'signal_occurred\' is not declared \'volatile\'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([micro_optimizations], [/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker\'s Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) +]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if works. */ +@%:@undef HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\', as a function or macro. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^C_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \'alloca.c\'. */ +@%:@undef C_ALLOCA]) +m4trace:configure.ac:43: -1- AH_OUTPUT([STACK_DIRECTION], [/* 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 runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STACK_DIRECTION$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\' after including , a header that + may be supplied by this distribution. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([eaccess]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^eaccess$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([eaccess], [/* Define as \'access\' if you don\'t have the eaccess() function. */ +@%:@undef eaccess]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GNULIB_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBKSTAT], [/* Define to 1 if you have the \'kstat\' library (-lkstat). */ +@%:@undef HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBKSTAT$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBPERFSTAT], [/* Define to 1 if you have the \'perfstat\' library (-lperfstat). */ +@%:@undef HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBPERFSTAT$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([DGUX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^DGUX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([DGUX], [/* Define to 1 for DGUX with . */ +@%:@undef DGUX]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBDGC], [/* Define to 1 if you have the \'dgc\' library (-ldgc). */ +@%:@undef HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBDGC$]) +m4trace:configure.ac:43: -1- AC_SUBST([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GETLOADAVG_LIBS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_LOADAVG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_SYS_LOADAVG_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- _AM_COND_IF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_PSTAT_GETDYNAMIC], [/* Define to 1 if you have the \'pstat_getdynamic\' function. */ +@%:@undef HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_PSTAT_GETDYNAMIC$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^SVR4$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([SVR4], [/* Define to 1 on System V Release 4. */ +@%:@undef SVR4]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX], [/* Define to 1 for Encore UMAX. */ +@%:@undef UMAX]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX4_3]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX4_3$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX4_3], [/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +@%:@undef UMAX4_3]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_MACH_MACH_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_MACH_MACH_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_NLIST_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_NLIST_H$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_STRUCT_NLIST_N_UN_N_NAME$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_STRUCT_NLIST_N_UN_N_NAME], [/* Define to 1 if \'n_un.n_name\' is a member of \'struct nlist\'. */ +@%:@undef HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([N_NAME_POINTER]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^N_NAME_POINTER$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([N_NAME_POINTER], [/* Define to 1 if the nlist n_name member is a pointer */ +@%:@undef N_NAME_POINTER]) +m4trace:configure.ac:43: -1- _AM_COND_ENDIF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GNULIB_TEST_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([GNULIB_TEST_GETLOADAVG], [/* Define to 1 when the gnulib module getloadavg should be tested. */ +@%:@undef GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU$]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU_C_ABI$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([00001], [/* CPU and C ABI indicator */ +#ifndef __i386__ +#undef __i386__ +#endif +#ifndef __x86_64_x32__ +#undef __x86_64_x32__ +#endif +#ifndef __x86_64__ +#undef __x86_64__ +#endif +#ifndef __alpha__ +#undef __alpha__ +#endif +#ifndef __arm__ +#undef __arm__ +#endif +#ifndef __armhf__ +#undef __armhf__ +#endif +#ifndef __arm64_ilp32__ +#undef __arm64_ilp32__ +#endif +#ifndef __arm64__ +#undef __arm64__ +#endif +#ifndef __hppa__ +#undef __hppa__ +#endif +#ifndef __hppa64__ +#undef __hppa64__ +#endif +#ifndef __ia64_ilp32__ +#undef __ia64_ilp32__ +#endif +#ifndef __ia64__ +#undef __ia64__ +#endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif +#ifndef __m68k__ +#undef __m68k__ +#endif +#ifndef __mips__ +#undef __mips__ +#endif +#ifndef __mipsn32__ +#undef __mipsn32__ +#endif +#ifndef __mips64__ +#undef __mips64__ +#endif +#ifndef __powerpc__ +#undef __powerpc__ +#endif +#ifndef __powerpc64__ +#undef __powerpc64__ +#endif +#ifndef __powerpc64_elfv2__ +#undef __powerpc64_elfv2__ +#endif +#ifndef __riscv32__ +#undef __riscv32__ +#endif +#ifndef __riscv64__ +#undef __riscv64__ +#endif +#ifndef __riscv32_ilp32__ +#undef __riscv32_ilp32__ +#endif +#ifndef __riscv32_ilp32f__ +#undef __riscv32_ilp32f__ +#endif +#ifndef __riscv32_ilp32d__ +#undef __riscv32_ilp32d__ +#endif +#ifndef __riscv64_ilp32__ +#undef __riscv64_ilp32__ +#endif +#ifndef __riscv64_ilp32f__ +#undef __riscv64_ilp32f__ +#endif +#ifndef __riscv64_ilp32d__ +#undef __riscv64_ilp32d__ +#endif +#ifndef __riscv64_lp64__ +#undef __riscv64_lp64__ +#endif +#ifndef __riscv64_lp64f__ +#undef __riscv64_lp64f__ +#endif +#ifndef __riscv64_lp64d__ +#undef __riscv64_lp64d__ +#endif +#ifndef __s390__ +#undef __s390__ +#endif +#ifndef __s390x__ +#undef __s390x__ +#endif +#ifndef __sh__ +#undef __sh__ +#endif +#ifndef __sparc__ +#undef __sparc__ +#endif +#ifndef __sparc64__ +#undef __sparc64__ +#endif +]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define if the system uses DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type \'_Bool\'. */ +@%:@undef HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AC_SUBST([STDBOOL_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([STDBOOL_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STDBOOL_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([gltests_WITNESS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([gltests_WITNESS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^gltests_WITNESS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_ALLOW_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_GNULIB_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LIBDEPS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LTLIBDEPS$]) +m4trace:configure.ac:46: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:46: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:46: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:48: -1- AC_SUBST([AR]) +m4trace:configure.ac:48: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:50: -1- AC_SUBST([PERL]) +m4trace:configure.ac:50: -1- AC_SUBST_TRACE([PERL]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^PERL$]) +m4trace:configure.ac:53: -1- AC_CANONICAL_HOST +m4trace:configure.ac:54: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$]) +m4trace:configure.ac:54: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */ +@%:@undef AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:57: -1- AM_GNU_GETTEXT_VERSION([0.19.4]) +m4trace:configure.ac:58: -1- AM_GNU_GETTEXT([external]) +m4trace:configure.ac:58: -1- AC_SUBST([SED]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([SED]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:58: -1- AM_NLS +m4trace:configure.ac:58: -1- AC_SUBST([USE_NLS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([USE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^USE_NLS$]) +m4trace:configure.ac:58: -1- AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GETTEXT_MACRO_VERSION]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGMERGE]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGMERGE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGMERGE$]) +m4trace:configure.ac:58: -1- AC_SUBST([localedir]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$]) +m4trace:configure.ac:58: -1- AC_REQUIRE_AUX_FILE([config.rpath]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFPREFERENCESCOPYAPPVALUE], [/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +@%:@undef HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFLOCALECOPYCURRENT], [/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +@%:@undef HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_ICONV$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function and it works. */ +@%:@undef HAVE_ICONV]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBICONV$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBICONV$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^ENABLE_NLS$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native + language is requested. */ +@%:@undef ENABLE_NLS]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_GETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ +@%:@undef HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_DCGETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +@%:@undef HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTLLIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTLLIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTLLIBS$]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([POSUB]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([POSUB]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^POSUB$]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_DIRENT_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_NDIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_DIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. */ +@%:@undef HAVE_NDIR_H]) +m4trace:configure.ac:65: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) +m4trace:configure.ac:65: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$]) +m4trace:configure.ac:65: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the \'S_IS*\' macros in do not work properly. */ +@%:@undef STAT_MACROS_BROKEN]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LOCALE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_UNISTD_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LIMITS_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_FCNTL_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRING_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STRING_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_MEMORY_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_RESOURCE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIMEB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIME_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_SELECT_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_FILE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SPAWN_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SPAWN_H$]) +m4trace:configure.ac:71: -1- AM_PROG_CC_C_O +m4trace:configure.ac:72: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.ac:72: -1- m4_pattern_allow([^const$]) +m4trace:configure.ac:72: -1- AH_OUTPUT([const], [/* Define to empty if \'const\' does not conform to ANSI C. */ +@%:@undef const]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^uid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([uid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef uid_t]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^gid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([gid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef gid_t]) +m4trace:configure.ac:74: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.ac:74: -1- m4_pattern_allow([^pid_t$]) +m4trace:configure.ac:74: -1- AH_OUTPUT([pid_t], [/* Define as a signed integer type capable of holding a process identifier. */ +@%:@undef pid_t]) +m4trace:configure.ac:75: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.ac:75: -1- m4_pattern_allow([^off_t$]) +m4trace:configure.ac:75: -1- AH_OUTPUT([off_t], [/* Define to \'long int\' if does not define. */ +@%:@undef off_t]) +m4trace:configure.ac:76: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:76: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:76: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:77: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.ac:77: -1- m4_pattern_allow([^ssize_t$]) +m4trace:configure.ac:77: -1- AH_OUTPUT([ssize_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef ssize_t]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG_INT], [/* Define to 1 if the system has the type \'unsigned long long int\'. */ +@%:@undef HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_LONG_LONG_INT], [/* Define to 1 if the system has the type \'long long int\'. */ +@%:@undef HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_INTMAX_T$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_INTMAX_T], [/* Define to 1 if the system has the type \'intmax_t\'. */ +@%:@undef HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^intmax_t$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([intmax_t], [/* Define to the widest signed integer type if and do + not define. */ +@%:@undef intmax_t]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^HAVE_UINTMAX_T$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define to 1 if the system has the type \'uintmax_t\'. */ +@%:@undef HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^uintmax_t$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([uintmax_t], [/* Define to the widest unsigned integer type if and + do not define. */ +@%:@undef uintmax_t]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^HAVE_SIG_ATOMIC_T$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([HAVE_SIG_ATOMIC_T], [/* Define to 1 if the system has the type \'sig_atomic_t\'. */ +@%:@undef HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^sig_atomic_t$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([sig_atomic_t], [/* Define as an integer type suitable for memory locations that can be + accessed atomically even in the presence of asynchronous signals. */ +@%:@undef sig_atomic_t]) +m4trace:configure.ac:86: -1- _m4_warn([obsolete], [The macro 'AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:2903: AC_TRY_COMPILE is expanded from... +lib/m4sugar/m4sh.m4:689: _AS_IF_ELSE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:2305: AC_CACHE_VAL is expanded from... +./lib/autoconf/general.m4:2326: AC_CACHE_CHECK is expanded from... +m4/acinclude.m4:105: AC_STRUCT_ST_MTIM_NSEC is expanded from... +configure.ac:86: the top level]) +m4trace:configure.ac:86: -1- AC_DEFINE_TRACE_LITERAL([ST_MTIM_NSEC]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^ST_MTIM_NSEC$]) +m4trace:configure.ac:86: -1- AH_OUTPUT([ST_MTIM_NSEC], [/* Define if struct stat contains a nanoseconds field */ +@%:@undef ST_MTIM_NSEC]) +m4trace:configure.ac:99: -1- AC_DEFINE_TRACE_LITERAL([FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:99: -1- m4_pattern_allow([^FILE_TIMESTAMP_HI_RES$]) +m4trace:configure.ac:99: -1- AH_OUTPUT([FILE_TIMESTAMP_HI_RES], [/* Use high resolution file timestamps if nonzero. */ +@%:@undef FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:102: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_CLOCK_GETTIME$]) +m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_CLOCK_GETTIME], [/* Define to 1 if you have the clock_gettime function. */ +@%:@undef HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:127: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_GETTIMEOFDAY$]) +m4trace:configure.ac:127: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have a standard gettimeofday function */ +@%:@undef HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the \'strtoll\' function. */ +@%:@undef HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRTOLL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \'strdup\' function. */ +@%:@undef HAVE_STRDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRNDUP], [/* Define to 1 if you have the \'strndup\' function. */ +@%:@undef HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRNDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \'stpcpy\' function. */ +@%:@undef HAVE_STPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMRCHR], [/* Define to 1 if you have the \'memrchr\' function. */ +@%:@undef HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMRCHR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \'mempcpy\' function. */ +@%:@undef HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_UMASK], [/* Define to 1 if you have the \'umask\' function. */ +@%:@undef HAVE_UMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_UMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKSTEMP], [/* Define to 1 if you have the \'mkstemp\' function. */ +@%:@undef HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKSTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKTEMP], [/* Define to 1 if you have the \'mktemp\' function. */ +@%:@undef HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_FDOPEN], [/* Define to 1 if you have the \'fdopen\' function. */ +@%:@undef HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_FDOPEN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP], [/* Define to 1 if you have the \'dup\' function. */ +@%:@undef HAVE_DUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the \'dup2\' function. */ +@%:@undef HAVE_DUP2]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP2]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP2$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \'getcwd\' function. */ +@%:@undef HAVE_GETCWD]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETCWD]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETCWD$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_REALPATH], [/* Define to 1 if you have the \'realpath\' function. */ +@%:@undef HAVE_REALPATH]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_REALPATH]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_REALPATH$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGSETMASK], [/* Define to 1 if you have the \'sigsetmask\' function. */ +@%:@undef HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGSETMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGACTION], [/* Define to 1 if you have the \'sigaction\' function. */ +@%:@undef HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGACTION$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the \'getgroups\' function. */ +@%:@undef HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETGROUPS$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEUID], [/* Define to 1 if you have the \'seteuid\' function. */ +@%:@undef HAVE_SETEUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEGID], [/* Define to 1 if you have the \'setegid\' function. */ +@%:@undef HAVE_SETEGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the \'setlinebuf\' function. */ +@%:@undef HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETLINEBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREUID], [/* Define to 1 if you have the \'setreuid\' function. */ +@%:@undef HAVE_SETREUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREGID], [/* Define to 1 if you have the \'setregid\' function. */ +@%:@undef HAVE_SETREGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKFIFO], [/* Define to 1 if you have the \'mkfifo\' function. */ +@%:@undef HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKFIFO$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the \'getrlimit\' function. */ +@%:@undef HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETRLIMIT], [/* Define to 1 if you have the \'setrlimit\' function. */ +@%:@undef HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the \'setvbuf\' function. */ +@%:@undef HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETVBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PIPE], [/* Define to 1 if you have the \'pipe\' function. */ +@%:@undef HAVE_PIPE]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PIPE]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PIPE$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the \'strerror\' function. */ +@%:@undef HAVE_STRERROR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRERROR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRERROR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRSIGNAL], [/* Define to 1 if you have the \'strsignal\' function. */ +@%:@undef HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRSIGNAL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the \'lstat\' function. */ +@%:@undef HAVE_LSTAT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_LSTAT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the \'readlink\' function. */ +@%:@undef HAVE_READLINK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_READLINK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_READLINK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ATEXIT], [/* Define to 1 if you have the \'atexit\' function. */ +@%:@undef HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ATEXIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ISATTY], [/* Define to 1 if you have the \'isatty\' function. */ +@%:@undef HAVE_ISATTY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISATTY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ISATTY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the \'ttyname\' function. */ +@%:@undef HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_TTYNAME$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PSELECT], [/* Define to 1 if you have the \'pselect\' function. */ +@%:@undef HAVE_PSELECT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSELECT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PSELECT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWN], [/* Define to 1 if you have the \'posix_spawn\' function. */ +@%:@undef HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWNATTR_SETSIGMASK], [/* Define to 1 if you have the \'posix_spawnattr_setsigmask\' function. */ +@%:@undef HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWNATTR_SETSIGMASK$]) +m4trace:configure.ac:142: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:142: -1- m4_pattern_allow([^HAVE_DECL_BSD_SIGNAL$]) +m4trace:configure.ac:142: -1- AH_OUTPUT([HAVE_DECL_BSD_SIGNAL], [/* Define to 1 if you have the declaration of \'bsd_signal\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_VFORK_H]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the \'fork\' function. */ +@%:@undef HAVE_FORK]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the \'vfork\' function. */ +@%:@undef HAVE_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_VFORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if \'vfork\' works. */ +@%:@undef HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([vfork]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^vfork$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([vfork], [/* Define as \'fork\' if \'vfork\' does not work. */ +@%:@undef vfork]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_FORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if \'fork\' works. */ +@%:@undef HAVE_WORKING_FORK]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \'strcasecmp\' function. */ +@%:@undef HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCASECMP], [/* Define to 1 if you have the \'strncasecmp\' function. */ +@%:@undef HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCMPI], [/* Define to 1 if you have the \'strcmpi\' function. */ +@%:@undef HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCMPI], [/* Define to 1 if you have the \'strncmpi\' function. */ +@%:@undef HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRICMP], [/* Define to 1 if you have the \'stricmp\' function. */ +@%:@undef HAVE_STRICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRICMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNICMP], [/* Define to 1 if you have the \'strnicmp\' function. */ +@%:@undef HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNICMP$]) +m4trace:configure.ac:153: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) +m4trace:configure.ac:153: -1- m4_pattern_allow([^HAVE_STRCOLL$]) +m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the \'strcoll\' function and it is properly defined. + */ +@%:@undef HAVE_STRCOLL]) +m4trace:configure.ac:154: -1- AC_DEFINE_TRACE_LITERAL([CLOSEDIR_VOID]) +m4trace:configure.ac:154: -1- m4_pattern_allow([^CLOSEDIR_VOID$]) +m4trace:configure.ac:154: -1- AH_OUTPUT([CLOSEDIR_VOID], [/* Define to 1 if the \'closedir\' function returns void instead of int. */ +@%:@undef CLOSEDIR_VOID]) +m4trace:configure.ac:157: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:157: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_TYPE$]) +m4trace:configure.ac:157: -1- AH_OUTPUT([HAVE_STRUCT_DIRENT_D_TYPE], [/* Define to 1 if \'d_type\' is a member of \'struct dirent\'. */ +@%:@undef HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:165: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_CFLAGS$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_LIBS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_LIBS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_LIBS$]) +m4trace:configure.ac:167: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GUILE]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^HAVE_GUILE$]) +m4trace:configure.ac:167: -1- AH_OUTPUT([HAVE_GUILE], [/* Embed GNU Guile support */ +@%:@undef HAVE_GUILE]) +m4trace:configure.ac:210: -1- AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_TRUE$]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_FALSE$]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL__SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL__SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'_sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL___SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL___SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'__sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:223: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the \'waitpid\' function. */ +@%:@undef HAVE_WAITPID]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAITPID]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAITPID$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAIT3], [/* Define to 1 if you have the \'wait3\' function. */ +@%:@undef HAVE_WAIT3]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAIT3$]) +m4trace:configure.ac:247: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNION_WAIT]) +m4trace:configure.ac:247: -1- m4_pattern_allow([^HAVE_UNION_WAIT$]) +m4trace:configure.ac:247: -1- AH_OUTPUT([HAVE_UNION_WAIT], [/* Define to 1 if you have the \'union wait\' type in . */ +@%:@undef HAVE_UNION_WAIT]) +m4trace:configure.ac:254: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:254: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:254: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define to 1 if your system requires backslashes or drive specs in + pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:260: -1- AC_SUBST([REMOTE]) +m4trace:configure.ac:260: -1- AC_SUBST_TRACE([REMOTE]) +m4trace:configure.ac:260: -1- m4_pattern_allow([^REMOTE$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the \'gethostname\' function. */ +@%:@undef HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTNAME$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the \'socket\' function. */ +@%:@undef HAVE_SOCKET]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKET]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_SOCKET$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the \'gethostbyname\' function. */ +@%:@undef HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$]) +m4trace:configure.ac:262: -1- _m4_warn([obsolete], [The macro 'AC_FD_MSG' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:401: AC_FD_MSG is expanded from... +m4/acinclude.m4:38: CF_NETLIBS is expanded from... +lib/m4sugar/m4sh.m4:594: AS_CASE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:1603: AC_ARG_WITH is expanded from... +configure.ac:262: the top level]) +m4trace:configure.ac:281: -1- AM_CONDITIONAL([USE_CUSTOMS], [test "$use_customs" = true]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_TRUE$]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_FALSE$]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:284: -1- AH_OUTPUT([HAVE_CASE_INSENSITIVE_FS], [/* Use case insensitive file names */ +@%:@undef HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- m4_pattern_allow([^HAVE_CASE_INSENSITIVE_FS$]) +m4trace:configure.ac:305: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SA_RESTART]) +m4trace:configure.ac:305: -1- m4_pattern_allow([^HAVE_SA_RESTART$]) +m4trace:configure.ac:305: -1- AH_OUTPUT([HAVE_SA_RESTART], [/* Define to 1 if defines the SA_RESTART constant. */ +@%:@undef HAVE_SA_RESTART]) +m4trace:configure.ac:318: -1- AC_DEFINE_TRACE_LITERAL([MAKE_JOBSERVER]) +m4trace:configure.ac:318: -1- m4_pattern_allow([^MAKE_JOBSERVER$]) +m4trace:configure.ac:318: -1- AH_OUTPUT([MAKE_JOBSERVER], [/* Define to 1 to enable job server support in GNU make. */ +@%:@undef MAKE_JOBSERVER]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLOPEN$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLOPEN], [/* Define to 1 if you have the declaration of \'dlopen\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLSYM$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLSYM], [/* Define to 1 if you have the declaration of \'dlsym\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLERROR]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLERROR$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLERROR], [/* Define to 1 if you have the declaration of \'dlerror\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_DLERROR]) +m4trace:configure.ac:341: -1- AC_DEFINE_TRACE_LITERAL([MAKE_LOAD]) +m4trace:configure.ac:341: -1- m4_pattern_allow([^MAKE_LOAD$]) +m4trace:configure.ac:341: -1- AH_OUTPUT([MAKE_LOAD], [/* Define to 1 to enable \'load\' support in GNU make. */ +@%:@undef MAKE_LOAD]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-Wl,--export-dynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-rdynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:371: -1- AC_DEFINE_TRACE_LITERAL([MAKE_SYMLINKS]) +m4trace:configure.ac:371: -1- m4_pattern_allow([^MAKE_SYMLINKS$]) +m4trace:configure.ac:371: -1- AH_OUTPUT([MAKE_SYMLINKS], [/* Define to 1 to enable symbolic link timestamp checking. */ +@%:@undef MAKE_SYMLINKS]) +m4trace:configure.ac:403: -1- AC_DEFINE_TRACE_LITERAL([USE_POSIX_SPAWN]) +m4trace:configure.ac:403: -1- m4_pattern_allow([^USE_POSIX_SPAWN$]) +m4trace:configure.ac:403: -1- AH_OUTPUT([USE_POSIX_SPAWN], [/* Define to 1 to use posix_spawn(). */ +@%:@undef USE_POSIX_SPAWN]) +m4trace:configure.ac:415: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET]) +m4trace:configure.ac:415: -1- m4_pattern_allow([^SCCS_GET$]) +m4trace:configure.ac:415: -1- AH_OUTPUT([SCCS_GET], [/* Define to the name of the SCCS \'get\' command. */ +@%:@undef SCCS_GET]) +m4trace:configure.ac:419: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET_MINUS_G]) +m4trace:configure.ac:419: -1- m4_pattern_allow([^SCCS_GET_MINUS_G$]) +m4trace:configure.ac:419: -1- AH_OUTPUT([SCCS_GET_MINUS_G], [/* Define to 1 if the SCCS \'get\' command understands the \'-G\' option. */ +@%:@undef SCCS_GET_MINUS_G]) +m4trace:configure.ac:437: -1- AC_DEFINE_TRACE_LITERAL([MAKE_HOST]) +m4trace:configure.ac:437: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:437: -1- AH_OUTPUT([MAKE_HOST], [/* Build host information. */ +@%:@undef MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST([MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST_TRACE([MAKE_HOST]) +m4trace:configure.ac:439: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:442: -1- AM_CONDITIONAL([WINDOWSENV], [false]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AM_CONDITIONAL([WINDOWSENV], [true]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([WINDOWS32]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWS32$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([WINDOWS32], [/* Build for the WINDOWS32 API. */ +@%:@undef WINDOWS32]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Support DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:452: -1- AC_DEFINE_TRACE_LITERAL([PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:452: -1- m4_pattern_allow([^PATH_SEPARATOR_CHAR$]) +m4trace:configure.ac:452: -1- AH_OUTPUT([PATH_SEPARATOR_CHAR], [/* Define to the character that separates directories in PATH. */ +@%:@undef PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:455: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:455: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:455: -1- AH_OUTPUT([HAVE_DECL_GETLOADAVG], [/* Define to 1 if you have the declaration of \'getloadavg\'. */ +@%:@undef HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:460: -1- AC_DEFINE_TRACE_LITERAL([MK_CONFIGURE]) +m4trace:configure.ac:460: -1- m4_pattern_allow([^MK_CONFIGURE$]) +m4trace:configure.ac:460: -1- AH_OUTPUT([MK_CONFIGURE], [/* Define to 1 if config.h is generated by running the configure script. */ +@%:@undef MK_CONFIGURE]) +m4trace:configure.ac:469: -1- m4_pattern_allow([^MAINT_MAKEFILE$]) +m4trace:configure.ac:472: -1- AC_DEFINE_TRACE_LITERAL([WITH_DMALLOC]) +m4trace:configure.ac:472: -1- m4_pattern_allow([^WITH_DMALLOC$]) +m4trace:configure.ac:472: -1- AH_OUTPUT([WITH_DMALLOC], [/* Define if using the dmalloc debugging malloc package */ +@%:@undef WITH_DMALLOC]) +m4trace:configure.ac:532: -1- AM_CONDITIONAL([KNOWN_PREFIX], [test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_TRUE$]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_FALSE$]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:537: -1- AC_CONFIG_FILES([build.cfg tests/config-flags.pm \ + Makefile lib/Makefile doc/Makefile po/Makefile.in]) +m4trace:configure.ac:543: -1- AC_CONFIG_LINKS([build.sh:build.sh]) +m4trace:configure.ac:547: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJDEPS], [$gl_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJDEPS], [$gltests_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([MKDIR_P]) diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/traces.2 b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.2 new file mode 100644 index 0000000000..b993291c6f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.2 @@ -0,0 +1,2193 @@ +m4trace:aclocal.m4:1064: -1- AC_SUBST([am__quote]) +m4trace:aclocal.m4:1064: -1- AC_SUBST_TRACE([am__quote]) +m4trace:aclocal.m4:1064: -1- m4_pattern_allow([^am__quote$]) +m4trace:aclocal.m4:1720: -1- m4_include([m4/00gnulib.m4]) +m4trace:aclocal.m4:1721: -1- m4_include([m4/acinclude.m4]) +m4trace:aclocal.m4:1722: -1- m4_include([m4/alloca.m4]) +m4trace:aclocal.m4:1723: -1- m4_include([m4/asm-underscore.m4]) +m4trace:aclocal.m4:1724: -1- m4_include([m4/dospaths.m4]) +m4trace:aclocal.m4:1725: -1- m4_include([m4/eaccess.m4]) +m4trace:aclocal.m4:1726: -1- m4_include([m4/extensions.m4]) +m4trace:aclocal.m4:1727: -1- m4_include([m4/findprog-in.m4]) +m4trace:aclocal.m4:1728: -1- m4_include([m4/getloadavg.m4]) +m4trace:aclocal.m4:1729: -1- m4_include([m4/gettext.m4]) +m4trace:aclocal.m4:1730: -1- m4_include([m4/gnulib-common.m4]) +m4trace:aclocal.m4:1731: -1- m4_include([m4/gnulib-comp.m4]) +m4trace:aclocal.m4:1732: -1- m4_include([m4/host-cpu-c-abi.m4]) +m4trace:aclocal.m4:1733: -1- m4_include([m4/iconv.m4]) +m4trace:aclocal.m4:1734: -1- m4_include([m4/intlmacosx.m4]) +m4trace:aclocal.m4:1735: -1- m4_include([m4/largefile.m4]) +m4trace:aclocal.m4:1736: -1- m4_include([m4/lib-ld.m4]) +m4trace:aclocal.m4:1737: -1- m4_include([m4/lib-link.m4]) +m4trace:aclocal.m4:1738: -1- m4_include([m4/lib-prefix.m4]) +m4trace:aclocal.m4:1739: -1- m4_include([m4/longlong.m4]) +m4trace:aclocal.m4:1740: -1- m4_include([m4/nls.m4]) +m4trace:aclocal.m4:1741: -1- m4_include([m4/po.m4]) +m4trace:aclocal.m4:1742: -1- m4_include([m4/progtest.m4]) +m4trace:aclocal.m4:1743: -1- m4_include([m4/sig_atomic_t.m4]) +m4trace:aclocal.m4:1744: -1- m4_include([m4/stdbool.m4]) +m4trace:aclocal.m4:1745: -1- m4_include([m4/warn-on-use.m4]) +m4trace:aclocal.m4:1746: -1- m4_include([m4/year2038.m4]) +m4trace:aclocal.m4:1747: -1- m4_include([m4/zzgnulib.m4]) +m4trace:configure.ac:19: -1- AC_INIT([GNU Make], [4.4], [bug-make@gnu.org]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:19: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:19: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:19: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:19: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([runstatedir], ['${localstatedir}/run']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([runstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:19: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:19: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:19: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:19: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:19: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:19: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:24: -1- AC_CONFIG_AUX_DIR([build-aux]) +m4trace:configure.ac:26: -1- AC_CONFIG_HEADERS([src/config.h]) +m4trace:configure.ac:28: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:35: -1- AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:35: -1- AM_AUTOMAKE_VERSION([1.18.1]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_DATA]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__isrc]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:35: -1- AC_SUBST([CYGPATH_W]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CYGPATH_W]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:35: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ +@%:@undef PACKAGE]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([VERSION], [/* Version number of package */ +@%:@undef VERSION]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([missing]) +m4trace:configure.ac:35: -1- AC_SUBST([ACLOCAL]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ACLOCAL]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOCONF]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOCONF]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOMAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOMAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOHEADER]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOHEADER]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:35: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MAKEINFO]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:35: -1- AC_SUBST([install_sh]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([install_sh]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:35: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([MKDIR_P]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:35: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([mkdir_p]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:35: -1- AC_SUBST([AWK]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AWK]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:35: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([SET_MAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__leading_dot]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__leading_dot]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:35: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMTAR]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__tar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__tar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__untar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__untar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:35: -1- AC_SUBST([CTAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CTAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CTAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([ETAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ETAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ETAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([CSCOPE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CSCOPE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CSCOPE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__rm_f_notfound$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__xargs_n]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__xargs_n]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__xargs_n$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX, Interix, z/OS. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable extensions on Cosmopolitan Libc. */ +#ifndef _COSMO_SOURCE +# undef _COSMO_SOURCE +#endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers\' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif +]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDIO_H]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:38: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:38: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:38: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DEPDIR]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__include]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__include]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__nodep]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__nodep$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_INTTYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDINT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRINGS_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if all of the C89 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ +@%:@undef STDC_HEADERS]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_WCHAR_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_MINIX_CONFIG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MINIX_CONFIG_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_ALL_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_COSMO_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_COSMO_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_DARWIN_C_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_DARWIN_C_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_GNU_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_HPUX_ALT_XOPEN_SOCKET_API]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_HPUX_ALT_XOPEN_SOCKET_API$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_NETBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_NETBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_OPENBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_OPENBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_ATTRIBS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_BFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_BFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_DFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_DFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_FUNCS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_FUNCS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_TYPES_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_TYPES_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_LIB_EXT2__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_LIB_EXT2__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_MATH_SPEC_FUNCS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_MATH_SPEC_FUNCS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_TANDEM_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_MINIX$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__EXTENSIONS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_XOPEN_SOURCE$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:39: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:39: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:42: -1- m4_pattern_forbid([^gl_[A-Z]]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_ES$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:42: -1- AC_CANONICAL_HOST +m4trace:configure.ac:42: -1- AC_CANONICAL_BUILD +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.sub]) +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.guess]) +m4trace:configure.ac:42: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:42: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_ISOC11_SOURCE$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_ISOC11_SOURCE], [/* Define to enable the declarations of ISO C 11 types and functions. */ +@%:@undef _ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([ARFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([ARFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^ARFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_LARGE_FILES$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ +@%:@undef _LARGE_FILES]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_TIME_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_TIME_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_TIME_BITS], [/* Number of bits in a timestamp, on hosts where this is settable. */ +@%:@undef _TIME_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([__MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^__MINGW_USE_VC2005_COMPAT$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([__MINGW_USE_VC2005_COMPAT], [/* For 64-bit time_t on 32-bit mingw. */ +@%:@undef __MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:43: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_LIBTOOL], [false]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_GL_GNUC_PREREQ], [/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ +#if defined __GNUC__ && defined __GNUC_MINOR__ +# define _GL_GNUC_PREREQ(major, minor) \\ + ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) +#else +# define _GL_GNUC_PREREQ(major, minor) 0 +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_Noreturn], [/* The _Noreturn keyword of C11. */ +#ifndef _Noreturn +# if (defined __cplusplus \\ + && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \\ + || (defined _MSC_VER && 1900 <= _MSC_VER)) \\ + && 0) + /* [[noreturn]] is not practically usable, because with it the syntax + extern _Noreturn void func (...); + would not be valid; such a declaration would only be valid with \'extern\' + and \'_Noreturn\' swapped, or without the \'extern\' keyword. However, some + AIX system header files and several gnulib header files use precisely + this syntax with \'extern\'. */ +# define _Noreturn [[noreturn]] +# elif ((!defined __cplusplus || defined __clang__) \\ + && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \\ + || (!defined __STRICT_ANSI__ \\ + && (_GL_GNUC_PREREQ (4, 7) \\ + || (defined __apple_build_version__ \\ + ? 6000000 <= __apple_build_version__ \\ + : 3 < __clang_major__ + (5 <= __clang_minor__)))))) + /* _Noreturn works as-is. */ +# elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C +# define _Noreturn __attribute__ ((__noreturn__)) +# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn +# endif +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([isoc99_inline], [/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of \'extern inline\' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif]) +m4trace:configure.ac:43: -1- AH_OUTPUT([attribute], [/* Attributes. */ +#if (defined __has_attribute \\ + && (!defined __clang_minor__ \\ + || (defined __apple_build_version__ \\ + ? 6000000 <= __apple_build_version__ \\ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) +# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) +#else +# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr +# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) +# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) +# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_diagnose_if 0 +# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) +# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) +# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) +# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) +# ifdef _ICC +# define _GL_ATTR_may_alias 0 +# else +# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) +# endif +# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) +# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) +# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) +# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) +# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) +#endif + +#ifdef __has_c_attribute +# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \\ + && _GL_GNUC_PREREQ (4, 6)) +# pragma GCC diagnostic ignored "-Wpedantic" +# endif +# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) +#else +# define _GL_HAS_C_ATTRIBUTE(attr) 0 +#endif + + +/* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function + is the size of the returned memory block. + _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied + by the Nth argument of the function is the size of the returned memory block. + */ +/* Applies to: function, pointer to function, function types. */ +#if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +#else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +#endif + +/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the + function and report an error if it cannot do so. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +#else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +#endif + +/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show + in stack traces when debugging. The compiler should omit the function from + stack traces. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +#else +# define _GL_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires \'cold\' not \'__cold__\'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via \'free\'; it can be used only after declaring \'free\'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib\'s or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with \'-fwhole-program\'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following \'case\' or + \'default\' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a \'switch\' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with \'__\'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC\'s syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type \'[[un]signed] char\'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function\'s return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don\'t use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + + +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the \'__attribute__ ((__unused__)) ;\' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([async_safe], [/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked \'volatile\'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable \'signal_occurred\' is not declared \'volatile\'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([micro_optimizations], [/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker\'s Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) +]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if works. */ +@%:@undef HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\', as a function or macro. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^C_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \'alloca.c\'. */ +@%:@undef C_ALLOCA]) +m4trace:configure.ac:43: -1- AH_OUTPUT([STACK_DIRECTION], [/* 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 runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STACK_DIRECTION$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\' after including , a header that + may be supplied by this distribution. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([eaccess]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^eaccess$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([eaccess], [/* Define as \'access\' if you don\'t have the eaccess() function. */ +@%:@undef eaccess]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GNULIB_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBKSTAT], [/* Define to 1 if you have the \'kstat\' library (-lkstat). */ +@%:@undef HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBKSTAT$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBPERFSTAT], [/* Define to 1 if you have the \'perfstat\' library (-lperfstat). */ +@%:@undef HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBPERFSTAT$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([DGUX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^DGUX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([DGUX], [/* Define to 1 for DGUX with . */ +@%:@undef DGUX]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBDGC], [/* Define to 1 if you have the \'dgc\' library (-ldgc). */ +@%:@undef HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBDGC$]) +m4trace:configure.ac:43: -1- AC_SUBST([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GETLOADAVG_LIBS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_LOADAVG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_SYS_LOADAVG_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- _AM_COND_IF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_PSTAT_GETDYNAMIC], [/* Define to 1 if you have the \'pstat_getdynamic\' function. */ +@%:@undef HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_PSTAT_GETDYNAMIC$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^SVR4$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([SVR4], [/* Define to 1 on System V Release 4. */ +@%:@undef SVR4]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX], [/* Define to 1 for Encore UMAX. */ +@%:@undef UMAX]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX4_3]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX4_3$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX4_3], [/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +@%:@undef UMAX4_3]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_MACH_MACH_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_MACH_MACH_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_NLIST_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_NLIST_H$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_STRUCT_NLIST_N_UN_N_NAME$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_STRUCT_NLIST_N_UN_N_NAME], [/* Define to 1 if \'n_un.n_name\' is a member of \'struct nlist\'. */ +@%:@undef HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([N_NAME_POINTER]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^N_NAME_POINTER$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([N_NAME_POINTER], [/* Define to 1 if the nlist n_name member is a pointer */ +@%:@undef N_NAME_POINTER]) +m4trace:configure.ac:43: -1- _AM_COND_ENDIF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GNULIB_TEST_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([GNULIB_TEST_GETLOADAVG], [/* Define to 1 when the gnulib module getloadavg should be tested. */ +@%:@undef GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU$]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU_C_ABI$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([00001], [/* CPU and C ABI indicator */ +#ifndef __i386__ +#undef __i386__ +#endif +#ifndef __x86_64_x32__ +#undef __x86_64_x32__ +#endif +#ifndef __x86_64__ +#undef __x86_64__ +#endif +#ifndef __alpha__ +#undef __alpha__ +#endif +#ifndef __arm__ +#undef __arm__ +#endif +#ifndef __armhf__ +#undef __armhf__ +#endif +#ifndef __arm64_ilp32__ +#undef __arm64_ilp32__ +#endif +#ifndef __arm64__ +#undef __arm64__ +#endif +#ifndef __hppa__ +#undef __hppa__ +#endif +#ifndef __hppa64__ +#undef __hppa64__ +#endif +#ifndef __ia64_ilp32__ +#undef __ia64_ilp32__ +#endif +#ifndef __ia64__ +#undef __ia64__ +#endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif +#ifndef __m68k__ +#undef __m68k__ +#endif +#ifndef __mips__ +#undef __mips__ +#endif +#ifndef __mipsn32__ +#undef __mipsn32__ +#endif +#ifndef __mips64__ +#undef __mips64__ +#endif +#ifndef __powerpc__ +#undef __powerpc__ +#endif +#ifndef __powerpc64__ +#undef __powerpc64__ +#endif +#ifndef __powerpc64_elfv2__ +#undef __powerpc64_elfv2__ +#endif +#ifndef __riscv32__ +#undef __riscv32__ +#endif +#ifndef __riscv64__ +#undef __riscv64__ +#endif +#ifndef __riscv32_ilp32__ +#undef __riscv32_ilp32__ +#endif +#ifndef __riscv32_ilp32f__ +#undef __riscv32_ilp32f__ +#endif +#ifndef __riscv32_ilp32d__ +#undef __riscv32_ilp32d__ +#endif +#ifndef __riscv64_ilp32__ +#undef __riscv64_ilp32__ +#endif +#ifndef __riscv64_ilp32f__ +#undef __riscv64_ilp32f__ +#endif +#ifndef __riscv64_ilp32d__ +#undef __riscv64_ilp32d__ +#endif +#ifndef __riscv64_lp64__ +#undef __riscv64_lp64__ +#endif +#ifndef __riscv64_lp64f__ +#undef __riscv64_lp64f__ +#endif +#ifndef __riscv64_lp64d__ +#undef __riscv64_lp64d__ +#endif +#ifndef __s390__ +#undef __s390__ +#endif +#ifndef __s390x__ +#undef __s390x__ +#endif +#ifndef __sh__ +#undef __sh__ +#endif +#ifndef __sparc__ +#undef __sparc__ +#endif +#ifndef __sparc64__ +#undef __sparc64__ +#endif +]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define if the system uses DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type \'_Bool\'. */ +@%:@undef HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AC_SUBST([STDBOOL_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([STDBOOL_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STDBOOL_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([gltests_WITNESS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([gltests_WITNESS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^gltests_WITNESS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_ALLOW_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_GNULIB_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LIBDEPS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LTLIBDEPS$]) +m4trace:configure.ac:46: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:46: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:46: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:48: -1- AC_SUBST([AR]) +m4trace:configure.ac:48: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:50: -1- AC_SUBST([PERL]) +m4trace:configure.ac:50: -1- AC_SUBST_TRACE([PERL]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^PERL$]) +m4trace:configure.ac:53: -1- AC_CANONICAL_HOST +m4trace:configure.ac:54: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$]) +m4trace:configure.ac:54: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */ +@%:@undef AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:57: -1- AM_GNU_GETTEXT_VERSION([0.19.4]) +m4trace:configure.ac:58: -1- AM_GNU_GETTEXT([external]) +m4trace:configure.ac:58: -1- AC_SUBST([SED]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([SED]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:58: -1- AM_NLS +m4trace:configure.ac:58: -1- AC_SUBST([USE_NLS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([USE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^USE_NLS$]) +m4trace:configure.ac:58: -1- AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GETTEXT_MACRO_VERSION]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGMERGE]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGMERGE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGMERGE$]) +m4trace:configure.ac:58: -1- AC_SUBST([localedir]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$]) +m4trace:configure.ac:58: -1- AC_REQUIRE_AUX_FILE([config.rpath]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFPREFERENCESCOPYAPPVALUE], [/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +@%:@undef HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFLOCALECOPYCURRENT], [/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +@%:@undef HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_ICONV$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function and it works. */ +@%:@undef HAVE_ICONV]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBICONV$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBICONV$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^ENABLE_NLS$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native + language is requested. */ +@%:@undef ENABLE_NLS]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_GETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ +@%:@undef HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_DCGETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +@%:@undef HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTLLIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTLLIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTLLIBS$]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([POSUB]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([POSUB]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^POSUB$]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_DIRENT_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_NDIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_DIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. */ +@%:@undef HAVE_NDIR_H]) +m4trace:configure.ac:65: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) +m4trace:configure.ac:65: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$]) +m4trace:configure.ac:65: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the \'S_IS*\' macros in do not work properly. */ +@%:@undef STAT_MACROS_BROKEN]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LOCALE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_UNISTD_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LIMITS_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_FCNTL_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRING_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STRING_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_MEMORY_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_RESOURCE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIMEB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIME_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_SELECT_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_FILE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SPAWN_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SPAWN_H$]) +m4trace:configure.ac:71: -1- AM_PROG_CC_C_O +m4trace:configure.ac:72: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.ac:72: -1- m4_pattern_allow([^const$]) +m4trace:configure.ac:72: -1- AH_OUTPUT([const], [/* Define to empty if \'const\' does not conform to ANSI C. */ +@%:@undef const]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^uid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([uid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef uid_t]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^gid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([gid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef gid_t]) +m4trace:configure.ac:74: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.ac:74: -1- m4_pattern_allow([^pid_t$]) +m4trace:configure.ac:74: -1- AH_OUTPUT([pid_t], [/* Define as a signed integer type capable of holding a process identifier. */ +@%:@undef pid_t]) +m4trace:configure.ac:75: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.ac:75: -1- m4_pattern_allow([^off_t$]) +m4trace:configure.ac:75: -1- AH_OUTPUT([off_t], [/* Define to \'long int\' if does not define. */ +@%:@undef off_t]) +m4trace:configure.ac:76: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:76: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:76: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:77: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.ac:77: -1- m4_pattern_allow([^ssize_t$]) +m4trace:configure.ac:77: -1- AH_OUTPUT([ssize_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef ssize_t]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG_INT], [/* Define to 1 if the system has the type \'unsigned long long int\'. */ +@%:@undef HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_LONG_LONG_INT], [/* Define to 1 if the system has the type \'long long int\'. */ +@%:@undef HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_INTMAX_T$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_INTMAX_T], [/* Define to 1 if the system has the type \'intmax_t\'. */ +@%:@undef HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^intmax_t$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([intmax_t], [/* Define to the widest signed integer type if and do + not define. */ +@%:@undef intmax_t]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^HAVE_UINTMAX_T$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define to 1 if the system has the type \'uintmax_t\'. */ +@%:@undef HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^uintmax_t$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([uintmax_t], [/* Define to the widest unsigned integer type if and + do not define. */ +@%:@undef uintmax_t]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^HAVE_SIG_ATOMIC_T$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([HAVE_SIG_ATOMIC_T], [/* Define to 1 if the system has the type \'sig_atomic_t\'. */ +@%:@undef HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^sig_atomic_t$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([sig_atomic_t], [/* Define as an integer type suitable for memory locations that can be + accessed atomically even in the presence of asynchronous signals. */ +@%:@undef sig_atomic_t]) +m4trace:configure.ac:86: -1- _m4_warn([obsolete], [The macro 'AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:2903: AC_TRY_COMPILE is expanded from... +lib/m4sugar/m4sh.m4:689: _AS_IF_ELSE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:2305: AC_CACHE_VAL is expanded from... +./lib/autoconf/general.m4:2326: AC_CACHE_CHECK is expanded from... +m4/acinclude.m4:105: AC_STRUCT_ST_MTIM_NSEC is expanded from... +configure.ac:86: the top level]) +m4trace:configure.ac:86: -1- AC_DEFINE_TRACE_LITERAL([ST_MTIM_NSEC]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^ST_MTIM_NSEC$]) +m4trace:configure.ac:86: -1- AH_OUTPUT([ST_MTIM_NSEC], [/* Define if struct stat contains a nanoseconds field */ +@%:@undef ST_MTIM_NSEC]) +m4trace:configure.ac:99: -1- AC_DEFINE_TRACE_LITERAL([FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:99: -1- m4_pattern_allow([^FILE_TIMESTAMP_HI_RES$]) +m4trace:configure.ac:99: -1- AH_OUTPUT([FILE_TIMESTAMP_HI_RES], [/* Use high resolution file timestamps if nonzero. */ +@%:@undef FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:102: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_CLOCK_GETTIME$]) +m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_CLOCK_GETTIME], [/* Define to 1 if you have the clock_gettime function. */ +@%:@undef HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:127: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_GETTIMEOFDAY$]) +m4trace:configure.ac:127: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have a standard gettimeofday function */ +@%:@undef HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the \'strtoll\' function. */ +@%:@undef HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRTOLL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \'strdup\' function. */ +@%:@undef HAVE_STRDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRNDUP], [/* Define to 1 if you have the \'strndup\' function. */ +@%:@undef HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRNDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \'stpcpy\' function. */ +@%:@undef HAVE_STPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMRCHR], [/* Define to 1 if you have the \'memrchr\' function. */ +@%:@undef HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMRCHR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \'mempcpy\' function. */ +@%:@undef HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_UMASK], [/* Define to 1 if you have the \'umask\' function. */ +@%:@undef HAVE_UMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_UMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKSTEMP], [/* Define to 1 if you have the \'mkstemp\' function. */ +@%:@undef HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKSTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKTEMP], [/* Define to 1 if you have the \'mktemp\' function. */ +@%:@undef HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_FDOPEN], [/* Define to 1 if you have the \'fdopen\' function. */ +@%:@undef HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_FDOPEN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP], [/* Define to 1 if you have the \'dup\' function. */ +@%:@undef HAVE_DUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the \'dup2\' function. */ +@%:@undef HAVE_DUP2]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP2]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP2$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \'getcwd\' function. */ +@%:@undef HAVE_GETCWD]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETCWD]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETCWD$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_REALPATH], [/* Define to 1 if you have the \'realpath\' function. */ +@%:@undef HAVE_REALPATH]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_REALPATH]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_REALPATH$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGSETMASK], [/* Define to 1 if you have the \'sigsetmask\' function. */ +@%:@undef HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGSETMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGACTION], [/* Define to 1 if you have the \'sigaction\' function. */ +@%:@undef HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGACTION$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the \'getgroups\' function. */ +@%:@undef HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETGROUPS$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEUID], [/* Define to 1 if you have the \'seteuid\' function. */ +@%:@undef HAVE_SETEUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEGID], [/* Define to 1 if you have the \'setegid\' function. */ +@%:@undef HAVE_SETEGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the \'setlinebuf\' function. */ +@%:@undef HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETLINEBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREUID], [/* Define to 1 if you have the \'setreuid\' function. */ +@%:@undef HAVE_SETREUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREGID], [/* Define to 1 if you have the \'setregid\' function. */ +@%:@undef HAVE_SETREGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKFIFO], [/* Define to 1 if you have the \'mkfifo\' function. */ +@%:@undef HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKFIFO$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the \'getrlimit\' function. */ +@%:@undef HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETRLIMIT], [/* Define to 1 if you have the \'setrlimit\' function. */ +@%:@undef HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the \'setvbuf\' function. */ +@%:@undef HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETVBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PIPE], [/* Define to 1 if you have the \'pipe\' function. */ +@%:@undef HAVE_PIPE]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PIPE]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PIPE$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the \'strerror\' function. */ +@%:@undef HAVE_STRERROR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRERROR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRERROR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRSIGNAL], [/* Define to 1 if you have the \'strsignal\' function. */ +@%:@undef HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRSIGNAL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the \'lstat\' function. */ +@%:@undef HAVE_LSTAT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_LSTAT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the \'readlink\' function. */ +@%:@undef HAVE_READLINK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_READLINK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_READLINK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ATEXIT], [/* Define to 1 if you have the \'atexit\' function. */ +@%:@undef HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ATEXIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ISATTY], [/* Define to 1 if you have the \'isatty\' function. */ +@%:@undef HAVE_ISATTY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISATTY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ISATTY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the \'ttyname\' function. */ +@%:@undef HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_TTYNAME$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PSELECT], [/* Define to 1 if you have the \'pselect\' function. */ +@%:@undef HAVE_PSELECT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSELECT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PSELECT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWN], [/* Define to 1 if you have the \'posix_spawn\' function. */ +@%:@undef HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWNATTR_SETSIGMASK], [/* Define to 1 if you have the \'posix_spawnattr_setsigmask\' function. */ +@%:@undef HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWNATTR_SETSIGMASK$]) +m4trace:configure.ac:142: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:142: -1- m4_pattern_allow([^HAVE_DECL_BSD_SIGNAL$]) +m4trace:configure.ac:142: -1- AH_OUTPUT([HAVE_DECL_BSD_SIGNAL], [/* Define to 1 if you have the declaration of \'bsd_signal\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_VFORK_H]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the \'fork\' function. */ +@%:@undef HAVE_FORK]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the \'vfork\' function. */ +@%:@undef HAVE_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_VFORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if \'vfork\' works. */ +@%:@undef HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([vfork]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^vfork$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([vfork], [/* Define as \'fork\' if \'vfork\' does not work. */ +@%:@undef vfork]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_FORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if \'fork\' works. */ +@%:@undef HAVE_WORKING_FORK]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \'strcasecmp\' function. */ +@%:@undef HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCASECMP], [/* Define to 1 if you have the \'strncasecmp\' function. */ +@%:@undef HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCMPI], [/* Define to 1 if you have the \'strcmpi\' function. */ +@%:@undef HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCMPI], [/* Define to 1 if you have the \'strncmpi\' function. */ +@%:@undef HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRICMP], [/* Define to 1 if you have the \'stricmp\' function. */ +@%:@undef HAVE_STRICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRICMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNICMP], [/* Define to 1 if you have the \'strnicmp\' function. */ +@%:@undef HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNICMP$]) +m4trace:configure.ac:153: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) +m4trace:configure.ac:153: -1- m4_pattern_allow([^HAVE_STRCOLL$]) +m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the \'strcoll\' function and it is properly defined. + */ +@%:@undef HAVE_STRCOLL]) +m4trace:configure.ac:154: -1- AC_DEFINE_TRACE_LITERAL([CLOSEDIR_VOID]) +m4trace:configure.ac:154: -1- m4_pattern_allow([^CLOSEDIR_VOID$]) +m4trace:configure.ac:154: -1- AH_OUTPUT([CLOSEDIR_VOID], [/* Define to 1 if the \'closedir\' function returns void instead of int. */ +@%:@undef CLOSEDIR_VOID]) +m4trace:configure.ac:157: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:157: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_TYPE$]) +m4trace:configure.ac:157: -1- AH_OUTPUT([HAVE_STRUCT_DIRENT_D_TYPE], [/* Define to 1 if \'d_type\' is a member of \'struct dirent\'. */ +@%:@undef HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:165: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_CFLAGS$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_LIBS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_LIBS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_LIBS$]) +m4trace:configure.ac:167: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GUILE]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^HAVE_GUILE$]) +m4trace:configure.ac:167: -1- AH_OUTPUT([HAVE_GUILE], [/* Embed GNU Guile support */ +@%:@undef HAVE_GUILE]) +m4trace:configure.ac:210: -1- AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_TRUE$]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_FALSE$]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL__SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL__SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'_sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL___SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL___SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'__sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:223: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the \'waitpid\' function. */ +@%:@undef HAVE_WAITPID]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAITPID]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAITPID$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAIT3], [/* Define to 1 if you have the \'wait3\' function. */ +@%:@undef HAVE_WAIT3]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAIT3$]) +m4trace:configure.ac:247: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNION_WAIT]) +m4trace:configure.ac:247: -1- m4_pattern_allow([^HAVE_UNION_WAIT$]) +m4trace:configure.ac:247: -1- AH_OUTPUT([HAVE_UNION_WAIT], [/* Define to 1 if you have the \'union wait\' type in . */ +@%:@undef HAVE_UNION_WAIT]) +m4trace:configure.ac:254: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:254: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:254: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define to 1 if your system requires backslashes or drive specs in + pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:260: -1- AC_SUBST([REMOTE]) +m4trace:configure.ac:260: -1- AC_SUBST_TRACE([REMOTE]) +m4trace:configure.ac:260: -1- m4_pattern_allow([^REMOTE$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the \'gethostname\' function. */ +@%:@undef HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTNAME$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the \'socket\' function. */ +@%:@undef HAVE_SOCKET]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKET]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_SOCKET$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the \'gethostbyname\' function. */ +@%:@undef HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$]) +m4trace:configure.ac:262: -1- _m4_warn([obsolete], [The macro 'AC_FD_MSG' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:401: AC_FD_MSG is expanded from... +m4/acinclude.m4:38: CF_NETLIBS is expanded from... +lib/m4sugar/m4sh.m4:594: AS_CASE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:1603: AC_ARG_WITH is expanded from... +configure.ac:262: the top level]) +m4trace:configure.ac:281: -1- AM_CONDITIONAL([USE_CUSTOMS], [test "$use_customs" = true]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_TRUE$]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_FALSE$]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:284: -1- AH_OUTPUT([HAVE_CASE_INSENSITIVE_FS], [/* Use case insensitive file names */ +@%:@undef HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- m4_pattern_allow([^HAVE_CASE_INSENSITIVE_FS$]) +m4trace:configure.ac:305: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SA_RESTART]) +m4trace:configure.ac:305: -1- m4_pattern_allow([^HAVE_SA_RESTART$]) +m4trace:configure.ac:305: -1- AH_OUTPUT([HAVE_SA_RESTART], [/* Define to 1 if defines the SA_RESTART constant. */ +@%:@undef HAVE_SA_RESTART]) +m4trace:configure.ac:318: -1- AC_DEFINE_TRACE_LITERAL([MAKE_JOBSERVER]) +m4trace:configure.ac:318: -1- m4_pattern_allow([^MAKE_JOBSERVER$]) +m4trace:configure.ac:318: -1- AH_OUTPUT([MAKE_JOBSERVER], [/* Define to 1 to enable job server support in GNU make. */ +@%:@undef MAKE_JOBSERVER]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLOPEN$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLOPEN], [/* Define to 1 if you have the declaration of \'dlopen\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLSYM$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLSYM], [/* Define to 1 if you have the declaration of \'dlsym\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLERROR]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLERROR$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLERROR], [/* Define to 1 if you have the declaration of \'dlerror\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_DLERROR]) +m4trace:configure.ac:341: -1- AC_DEFINE_TRACE_LITERAL([MAKE_LOAD]) +m4trace:configure.ac:341: -1- m4_pattern_allow([^MAKE_LOAD$]) +m4trace:configure.ac:341: -1- AH_OUTPUT([MAKE_LOAD], [/* Define to 1 to enable \'load\' support in GNU make. */ +@%:@undef MAKE_LOAD]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-Wl,--export-dynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-rdynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:371: -1- AC_DEFINE_TRACE_LITERAL([MAKE_SYMLINKS]) +m4trace:configure.ac:371: -1- m4_pattern_allow([^MAKE_SYMLINKS$]) +m4trace:configure.ac:371: -1- AH_OUTPUT([MAKE_SYMLINKS], [/* Define to 1 to enable symbolic link timestamp checking. */ +@%:@undef MAKE_SYMLINKS]) +m4trace:configure.ac:403: -1- AC_DEFINE_TRACE_LITERAL([USE_POSIX_SPAWN]) +m4trace:configure.ac:403: -1- m4_pattern_allow([^USE_POSIX_SPAWN$]) +m4trace:configure.ac:403: -1- AH_OUTPUT([USE_POSIX_SPAWN], [/* Define to 1 to use posix_spawn(). */ +@%:@undef USE_POSIX_SPAWN]) +m4trace:configure.ac:415: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET]) +m4trace:configure.ac:415: -1- m4_pattern_allow([^SCCS_GET$]) +m4trace:configure.ac:415: -1- AH_OUTPUT([SCCS_GET], [/* Define to the name of the SCCS \'get\' command. */ +@%:@undef SCCS_GET]) +m4trace:configure.ac:419: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET_MINUS_G]) +m4trace:configure.ac:419: -1- m4_pattern_allow([^SCCS_GET_MINUS_G$]) +m4trace:configure.ac:419: -1- AH_OUTPUT([SCCS_GET_MINUS_G], [/* Define to 1 if the SCCS \'get\' command understands the \'-G\' option. */ +@%:@undef SCCS_GET_MINUS_G]) +m4trace:configure.ac:437: -1- AC_DEFINE_TRACE_LITERAL([MAKE_HOST]) +m4trace:configure.ac:437: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:437: -1- AH_OUTPUT([MAKE_HOST], [/* Build host information. */ +@%:@undef MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST([MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST_TRACE([MAKE_HOST]) +m4trace:configure.ac:439: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:442: -1- AM_CONDITIONAL([WINDOWSENV], [false]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AM_CONDITIONAL([WINDOWSENV], [true]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([WINDOWS32]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWS32$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([WINDOWS32], [/* Build for the WINDOWS32 API. */ +@%:@undef WINDOWS32]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Support DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:452: -1- AC_DEFINE_TRACE_LITERAL([PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:452: -1- m4_pattern_allow([^PATH_SEPARATOR_CHAR$]) +m4trace:configure.ac:452: -1- AH_OUTPUT([PATH_SEPARATOR_CHAR], [/* Define to the character that separates directories in PATH. */ +@%:@undef PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:455: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:455: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:455: -1- AH_OUTPUT([HAVE_DECL_GETLOADAVG], [/* Define to 1 if you have the declaration of \'getloadavg\'. */ +@%:@undef HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:460: -1- AC_DEFINE_TRACE_LITERAL([MK_CONFIGURE]) +m4trace:configure.ac:460: -1- m4_pattern_allow([^MK_CONFIGURE$]) +m4trace:configure.ac:460: -1- AH_OUTPUT([MK_CONFIGURE], [/* Define to 1 if config.h is generated by running the configure script. */ +@%:@undef MK_CONFIGURE]) +m4trace:configure.ac:469: -1- m4_pattern_allow([^MAINT_MAKEFILE$]) +m4trace:configure.ac:472: -1- AC_DEFINE_TRACE_LITERAL([WITH_DMALLOC]) +m4trace:configure.ac:472: -1- m4_pattern_allow([^WITH_DMALLOC$]) +m4trace:configure.ac:472: -1- AH_OUTPUT([WITH_DMALLOC], [/* Define if using the dmalloc debugging malloc package */ +@%:@undef WITH_DMALLOC]) +m4trace:configure.ac:532: -1- AM_CONDITIONAL([KNOWN_PREFIX], [test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_TRUE$]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_FALSE$]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:537: -1- AC_CONFIG_FILES([build.cfg tests/config-flags.pm \ + Makefile lib/Makefile doc/Makefile po/Makefile.in]) +m4trace:configure.ac:543: -1- AC_CONFIG_LINKS([build.sh:build.sh]) +m4trace:configure.ac:547: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJDEPS], [$gl_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJDEPS], [$gltests_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([MKDIR_P]) diff --git a/local/recipes/dev/gnu-make/source/autom4te.cache/traces.3 b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.3 new file mode 100644 index 0000000000..b993291c6f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/autom4te.cache/traces.3 @@ -0,0 +1,2193 @@ +m4trace:aclocal.m4:1064: -1- AC_SUBST([am__quote]) +m4trace:aclocal.m4:1064: -1- AC_SUBST_TRACE([am__quote]) +m4trace:aclocal.m4:1064: -1- m4_pattern_allow([^am__quote$]) +m4trace:aclocal.m4:1720: -1- m4_include([m4/00gnulib.m4]) +m4trace:aclocal.m4:1721: -1- m4_include([m4/acinclude.m4]) +m4trace:aclocal.m4:1722: -1- m4_include([m4/alloca.m4]) +m4trace:aclocal.m4:1723: -1- m4_include([m4/asm-underscore.m4]) +m4trace:aclocal.m4:1724: -1- m4_include([m4/dospaths.m4]) +m4trace:aclocal.m4:1725: -1- m4_include([m4/eaccess.m4]) +m4trace:aclocal.m4:1726: -1- m4_include([m4/extensions.m4]) +m4trace:aclocal.m4:1727: -1- m4_include([m4/findprog-in.m4]) +m4trace:aclocal.m4:1728: -1- m4_include([m4/getloadavg.m4]) +m4trace:aclocal.m4:1729: -1- m4_include([m4/gettext.m4]) +m4trace:aclocal.m4:1730: -1- m4_include([m4/gnulib-common.m4]) +m4trace:aclocal.m4:1731: -1- m4_include([m4/gnulib-comp.m4]) +m4trace:aclocal.m4:1732: -1- m4_include([m4/host-cpu-c-abi.m4]) +m4trace:aclocal.m4:1733: -1- m4_include([m4/iconv.m4]) +m4trace:aclocal.m4:1734: -1- m4_include([m4/intlmacosx.m4]) +m4trace:aclocal.m4:1735: -1- m4_include([m4/largefile.m4]) +m4trace:aclocal.m4:1736: -1- m4_include([m4/lib-ld.m4]) +m4trace:aclocal.m4:1737: -1- m4_include([m4/lib-link.m4]) +m4trace:aclocal.m4:1738: -1- m4_include([m4/lib-prefix.m4]) +m4trace:aclocal.m4:1739: -1- m4_include([m4/longlong.m4]) +m4trace:aclocal.m4:1740: -1- m4_include([m4/nls.m4]) +m4trace:aclocal.m4:1741: -1- m4_include([m4/po.m4]) +m4trace:aclocal.m4:1742: -1- m4_include([m4/progtest.m4]) +m4trace:aclocal.m4:1743: -1- m4_include([m4/sig_atomic_t.m4]) +m4trace:aclocal.m4:1744: -1- m4_include([m4/stdbool.m4]) +m4trace:aclocal.m4:1745: -1- m4_include([m4/warn-on-use.m4]) +m4trace:aclocal.m4:1746: -1- m4_include([m4/year2038.m4]) +m4trace:aclocal.m4:1747: -1- m4_include([m4/zzgnulib.m4]) +m4trace:configure.ac:19: -1- AC_INIT([GNU Make], [4.4], [bug-make@gnu.org]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:19: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:19: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:19: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:19: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:19: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:19: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([runstatedir], ['${localstatedir}/run']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([runstatedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:19: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:19: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:19: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:19: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:19: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:19: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:19: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:19: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:19: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:19: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:19: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:19: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:19: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:24: -1- AC_CONFIG_AUX_DIR([build-aux]) +m4trace:configure.ac:26: -1- AC_CONFIG_HEADERS([src/config.h]) +m4trace:configure.ac:28: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:35: -1- AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:35: -1- AM_AUTOMAKE_VERSION([1.18.1]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_DATA]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__isrc]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:35: -1- AC_SUBST([CYGPATH_W]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CYGPATH_W]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:35: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ +@%:@undef PACKAGE]) +m4trace:configure.ac:35: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:35: -1- AH_OUTPUT([VERSION], [/* Version number of package */ +@%:@undef VERSION]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([missing]) +m4trace:configure.ac:35: -1- AC_SUBST([ACLOCAL]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ACLOCAL]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOCONF]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOCONF]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOMAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOMAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AUTOHEADER]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AUTOHEADER]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:35: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MAKEINFO]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:35: -1- AC_SUBST([install_sh]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([install_sh]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:35: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:35: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:35: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:35: -1- AC_SUBST([MKDIR_P]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:35: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([mkdir_p]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:35: -1- AC_SUBST([AWK]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AWK]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:35: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([SET_MAKE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__leading_dot]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__leading_dot]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:35: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMTAR]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__tar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__tar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__untar]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__untar]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:35: -1- AC_SUBST([CTAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CTAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CTAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([ETAGS]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ETAGS]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^ETAGS$]) +m4trace:configure.ac:35: -1- AC_SUBST([CSCOPE]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CSCOPE]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^CSCOPE$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:35: -1- AC_SUBST([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:35: -1- AC_SUBST([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__rm_f_notfound]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__rm_f_notfound$]) +m4trace:configure.ac:35: -1- AC_SUBST([am__xargs_n]) +m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__xargs_n]) +m4trace:configure.ac:35: -1- m4_pattern_allow([^am__xargs_n$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX, Interix, z/OS. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable extensions on Cosmopolitan Libc. */ +#ifndef _COSMO_SOURCE +# undef _COSMO_SOURCE +#endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers\' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif +]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDIO_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDIO_H]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([CC]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:38: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:38: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:38: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:38: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([DEPDIR]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__include]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__include]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:38: -1- AC_SUBST([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__nodep]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__nodep$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__nodep]) +m4trace:configure.ac:38: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:38: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_INTTYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDINT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRINGS_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:38: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if all of the C89 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ +@%:@undef STDC_HEADERS]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_WCHAR_H]) +m4trace:configure.ac:38: -1- AH_OUTPUT([HAVE_MINIX_CONFIG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MINIX_CONFIG_H]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_ALL_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_COSMO_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_COSMO_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_DARWIN_C_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_DARWIN_C_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_GNU_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_HPUX_ALT_XOPEN_SOCKET_API]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_HPUX_ALT_XOPEN_SOCKET_API$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_NETBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_NETBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_OPENBSD_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_OPENBSD_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_PTHREAD_SEMANTICS]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_PTHREAD_SEMANTICS$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_ATTRIBS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_BFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_BFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_DFP_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_DFP_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_FUNCS_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_FUNCS_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_IEC_60559_TYPES_EXT__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_IEC_60559_TYPES_EXT__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_LIB_EXT2__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_LIB_EXT2__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__STDC_WANT_MATH_SPEC_FUNCS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__STDC_WANT_MATH_SPEC_FUNCS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_TANDEM_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_TANDEM_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_MINIX]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_MINIX$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_1_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_POSIX_1_SOURCE$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^__EXTENSIONS__$]) +m4trace:configure.ac:38: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^_XOPEN_SOURCE$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:39: -1- AC_SUBST([CC]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:39: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:39: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:39: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:42: -1- m4_pattern_forbid([^gl_[A-Z]]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_ES$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:42: -1- AC_CANONICAL_HOST +m4trace:configure.ac:42: -1- AC_CANONICAL_BUILD +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.sub]) +m4trace:configure.ac:42: -1- AC_REQUIRE_AUX_FILE([config.guess]) +m4trace:configure.ac:42: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([build_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([build_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:42: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_cpu], [$[1]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_cpu]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_vendor], [$[2]]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_vendor]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:42: -1- AC_SUBST([host_os]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([host_os]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_ISOC11_SOURCE$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_ISOC11_SOURCE], [/* Define to enable the declarations of ISO C 11 types and functions. */ +@%:@undef _ISOC11_SOURCE]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([CPP]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([AR]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:42: -1- AC_SUBST([ARFLAGS]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([ARFLAGS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^ARFLAGS$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:42: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_LARGE_FILES$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ +@%:@undef _LARGE_FILES]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_TIME_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_TIME_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_TIME_BITS], [/* Number of bits in a timestamp, on hosts where this is settable. */ +@%:@undef _TIME_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ +@%:@undef _FILE_OFFSET_BITS]) +m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([__MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:42: -1- m4_pattern_allow([^__MINGW_USE_VC2005_COMPAT$]) +m4trace:configure.ac:42: -1- AH_OUTPUT([__MINGW_USE_VC2005_COMPAT], [/* For 64-bit time_t on 32-bit mingw. */ +@%:@undef __MINGW_USE_VC2005_COMPAT]) +m4trace:configure.ac:43: -1- AC_CONFIG_LIBOBJ_DIR([lib]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_LIBTOOL], [false]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_LIBTOOL_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_LIBTOOL_FALSE]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_GL_GNUC_PREREQ], [/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ +#if defined __GNUC__ && defined __GNUC_MINOR__ +# define _GL_GNUC_PREREQ(major, minor) \\ + ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) +#else +# define _GL_GNUC_PREREQ(major, minor) 0 +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([_Noreturn], [/* The _Noreturn keyword of C11. */ +#ifndef _Noreturn +# if (defined __cplusplus \\ + && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \\ + || (defined _MSC_VER && 1900 <= _MSC_VER)) \\ + && 0) + /* [[noreturn]] is not practically usable, because with it the syntax + extern _Noreturn void func (...); + would not be valid; such a declaration would only be valid with \'extern\' + and \'_Noreturn\' swapped, or without the \'extern\' keyword. However, some + AIX system header files and several gnulib header files use precisely + this syntax with \'extern\'. */ +# define _Noreturn [[noreturn]] +# elif ((!defined __cplusplus || defined __clang__) \\ + && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \\ + || (!defined __STRICT_ANSI__ \\ + && (_GL_GNUC_PREREQ (4, 7) \\ + || (defined __apple_build_version__ \\ + ? 6000000 <= __apple_build_version__ \\ + : 3 < __clang_major__ + (5 <= __clang_minor__)))))) + /* _Noreturn works as-is. */ +# elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C +# define _Noreturn __attribute__ ((__noreturn__)) +# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn +# endif +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([isoc99_inline], [/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of \'extern inline\' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif]) +m4trace:configure.ac:43: -1- AH_OUTPUT([attribute], [/* Attributes. */ +#if (defined __has_attribute \\ + && (!defined __clang_minor__ \\ + || (defined __apple_build_version__ \\ + ? 6000000 <= __apple_build_version__ \\ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) +# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) +#else +# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr +# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) +# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) +# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_diagnose_if 0 +# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) +# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) +# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) +# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) +# ifdef _ICC +# define _GL_ATTR_may_alias 0 +# else +# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) +# endif +# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) +# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) +# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) +# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) +# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) +#endif + +#ifdef __has_c_attribute +# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \\ + && _GL_GNUC_PREREQ (4, 6)) +# pragma GCC diagnostic ignored "-Wpedantic" +# endif +# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) +#else +# define _GL_HAS_C_ATTRIBUTE(attr) 0 +#endif + + +/* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function + is the size of the returned memory block. + _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied + by the Nth argument of the function is the size of the returned memory block. + */ +/* Applies to: function, pointer to function, function types. */ +#if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +#else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +#endif + +/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the + function and report an error if it cannot do so. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +#else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +#endif + +/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show + in stack traces when debugging. The compiler should omit the function from + stack traces. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +#else +# define _GL_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires \'cold\' not \'__cold__\'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via \'free\'; it can be used only after declaring \'free\'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib\'s or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with \'-fwhole-program\'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following \'case\' or + \'default\' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a \'switch\' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with \'__\'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC\'s syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type \'[[un]signed] char\'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function\'s return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don\'t use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + + +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the \'__attribute__ ((__unused__)) ;\' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([async_safe], [/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked \'volatile\'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable \'signal_occurred\' is not declared \'volatile\'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE +]) +m4trace:configure.ac:43: -1- AH_OUTPUT([micro_optimizations], [/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker\'s Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) +]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if works. */ +@%:@undef HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\', as a function or macro. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^C_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using \'alloca.c\'. */ +@%:@undef C_ALLOCA]) +m4trace:configure.ac:43: -1- AH_OUTPUT([STACK_DIRECTION], [/* 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 runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STACK_DIRECTION$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have \'alloca\' after including , a header that + may be supplied by this distribution. */ +@%:@undef HAVE_ALLOCA]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_ALLOCA_H$]) +m4trace:configure.ac:43: -1- AC_SUBST([ALLOCA_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([ALLOCA_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^ALLOCA_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_ALLOCA_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_ALLOCA_H_FALSE]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([eaccess]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^eaccess$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([eaccess], [/* Define as \'access\' if you don\'t have the eaccess() function. */ +@%:@undef eaccess]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GNULIB_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GNULIB_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBKSTAT], [/* Define to 1 if you have the \'kstat\' library (-lkstat). */ +@%:@undef HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBKSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBKSTAT$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBPERFSTAT], [/* Define to 1 if you have the \'perfstat\' library (-lperfstat). */ +@%:@undef HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPERFSTAT]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBPERFSTAT$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([DGUX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^DGUX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([DGUX], [/* Define to 1 for DGUX with . */ +@%:@undef DGUX]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBDGC], [/* Define to 1 if you have the \'dgc\' library (-ldgc). */ +@%:@undef HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBDGC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBDGC$]) +m4trace:configure.ac:43: -1- AC_SUBST([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GETLOADAVG_LIBS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GETLOADAVG_LIBS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_LOADAVG_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_LOADAVG_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_SYS_LOADAVG_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_COND_OBJ_GETLOADAVG_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_COND_OBJ_GETLOADAVG_FALSE]) +m4trace:configure.ac:43: -1- _AM_COND_IF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_PSTAT_GETDYNAMIC], [/* Define to 1 if you have the \'pstat_getdynamic\' function. */ +@%:@undef HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSTAT_GETDYNAMIC]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_PSTAT_GETDYNAMIC$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([SVR4]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^SVR4$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([SVR4], [/* Define to 1 on System V Release 4. */ +@%:@undef SVR4]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX], [/* Define to 1 for Encore UMAX. */ +@%:@undef UMAX]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX4_3]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX4_3$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([UMAX4_3], [/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +@%:@undef UMAX4_3]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([UMAX]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^UMAX$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_MACH_MACH_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MACH_MACH_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_MACH_MACH_H$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_NLIST_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NLIST_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_NLIST_H$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_STRUCT_NLIST_N_UN_N_NAME$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_STRUCT_NLIST_N_UN_N_NAME], [/* Define to 1 if \'n_un.n_name\' is a member of \'struct nlist\'. */ +@%:@undef HAVE_STRUCT_NLIST_N_UN_N_NAME]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([N_NAME_POINTER]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^N_NAME_POINTER$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([N_NAME_POINTER], [/* Define to 1 if the nlist n_name member is a pointer */ +@%:@undef N_NAME_POINTER]) +m4trace:configure.ac:43: -1- _AM_COND_ENDIF([GL_COND_OBJ_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GNULIB_TEST_GETLOADAVG$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([GNULIB_TEST_GETLOADAVG], [/* Define to 1 when the gnulib module getloadavg should be tested. */ +@%:@undef GNULIB_TEST_GETLOADAVG]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU$]) +m4trace:configure.ac:43: -1- AC_SUBST([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HOST_CPU_C_ABI]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HOST_CPU_C_ABI$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([00001], [/* CPU and C ABI indicator */ +#ifndef __i386__ +#undef __i386__ +#endif +#ifndef __x86_64_x32__ +#undef __x86_64_x32__ +#endif +#ifndef __x86_64__ +#undef __x86_64__ +#endif +#ifndef __alpha__ +#undef __alpha__ +#endif +#ifndef __arm__ +#undef __arm__ +#endif +#ifndef __armhf__ +#undef __armhf__ +#endif +#ifndef __arm64_ilp32__ +#undef __arm64_ilp32__ +#endif +#ifndef __arm64__ +#undef __arm64__ +#endif +#ifndef __hppa__ +#undef __hppa__ +#endif +#ifndef __hppa64__ +#undef __hppa64__ +#endif +#ifndef __ia64_ilp32__ +#undef __ia64_ilp32__ +#endif +#ifndef __ia64__ +#undef __ia64__ +#endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif +#ifndef __m68k__ +#undef __m68k__ +#endif +#ifndef __mips__ +#undef __mips__ +#endif +#ifndef __mipsn32__ +#undef __mipsn32__ +#endif +#ifndef __mips64__ +#undef __mips64__ +#endif +#ifndef __powerpc__ +#undef __powerpc__ +#endif +#ifndef __powerpc64__ +#undef __powerpc64__ +#endif +#ifndef __powerpc64_elfv2__ +#undef __powerpc64_elfv2__ +#endif +#ifndef __riscv32__ +#undef __riscv32__ +#endif +#ifndef __riscv64__ +#undef __riscv64__ +#endif +#ifndef __riscv32_ilp32__ +#undef __riscv32_ilp32__ +#endif +#ifndef __riscv32_ilp32f__ +#undef __riscv32_ilp32f__ +#endif +#ifndef __riscv32_ilp32d__ +#undef __riscv32_ilp32d__ +#endif +#ifndef __riscv64_ilp32__ +#undef __riscv64_ilp32__ +#endif +#ifndef __riscv64_ilp32f__ +#undef __riscv64_ilp32f__ +#endif +#ifndef __riscv64_ilp32d__ +#undef __riscv64_ilp32d__ +#endif +#ifndef __riscv64_lp64__ +#undef __riscv64_lp64__ +#endif +#ifndef __riscv64_lp64f__ +#undef __riscv64_lp64f__ +#endif +#ifndef __riscv64_lp64d__ +#undef __riscv64_lp64d__ +#endif +#ifndef __s390__ +#undef __s390__ +#endif +#ifndef __s390x__ +#undef __s390x__ +#endif +#ifndef __sh__ +#undef __sh__ +#endif +#ifndef __sparc__ +#undef __sparc__ +#endif +#ifndef __sparc64__ +#undef __sparc64__ +#endif +]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([USE_SYSTEM_GLOB_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([USE_SYSTEM_GLOB]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^USE_SYSTEM_GLOB$]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define if the system uses DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type \'_Bool\'. */ +@%:@undef HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST([HAVE__BOOL]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([HAVE__BOOL]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:43: -1- AC_SUBST([STDBOOL_H]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([STDBOOL_H]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^STDBOOL_H$]) +m4trace:configure.ac:43: -1- AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [$gl_generate_var]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_TRUE$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_GENERATE_STDBOOL_H_FALSE$]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_TRUE]) +m4trace:configure.ac:43: -1- _AM_SUBST_NOTMAKE([GL_GENERATE_STDBOOL_H_FALSE]) +m4trace:configure.ac:43: -1- AC_SUBST([gltests_WITNESS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([gltests_WITNESS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^gltests_WITNESS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_ALLOW_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_ALLOW_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([GL_CFLAG_GNULIB_WARNINGS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^GL_CFLAG_GNULIB_WARNINGS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LIBDEPS$]) +m4trace:configure.ac:43: -1- AC_SUBST([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- AC_SUBST_TRACE([LIBGNU_LTLIBDEPS]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^LIBGNU_LTLIBDEPS$]) +m4trace:configure.ac:46: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:46: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:46: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:47: -1- AC_SUBST([CPP]) +m4trace:configure.ac:47: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:47: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:48: -1- AC_SUBST([AR]) +m4trace:configure.ac:48: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:48: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:50: -1- AC_SUBST([PERL]) +m4trace:configure.ac:50: -1- AC_SUBST_TRACE([PERL]) +m4trace:configure.ac:50: -1- m4_pattern_allow([^PERL$]) +m4trace:configure.ac:53: -1- AC_CANONICAL_HOST +m4trace:configure.ac:54: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^WORDS_BIGENDIAN$]) +m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:54: -1- m4_pattern_allow([^AC_APPLE_UNIVERSAL_BUILD$]) +m4trace:configure.ac:54: -1- AH_OUTPUT([AC_APPLE_UNIVERSAL_BUILD], [/* Define if building universal (internal helper macro) */ +@%:@undef AC_APPLE_UNIVERSAL_BUILD]) +m4trace:configure.ac:57: -1- AM_GNU_GETTEXT_VERSION([0.19.4]) +m4trace:configure.ac:58: -1- AM_GNU_GETTEXT([external]) +m4trace:configure.ac:58: -1- AC_SUBST([SED]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([SED]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:58: -1- AM_NLS +m4trace:configure.ac:58: -1- AC_SUBST([USE_NLS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([USE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^USE_NLS$]) +m4trace:configure.ac:58: -1- AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GETTEXT_MACRO_VERSION]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GETTEXT_MACRO_VERSION$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([GMSGFMT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([GMSGFMT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^GMSGFMT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_015]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_015]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_015$]) +m4trace:configure.ac:58: -1- AC_SUBST([MSGMERGE]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([MSGMERGE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^MSGMERGE$]) +m4trace:configure.ac:58: -1- AC_SUBST([localedir]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:58: -1- AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([XGETTEXT_EXTRA_OPTIONS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^XGETTEXT_EXTRA_OPTIONS$]) +m4trace:configure.ac:58: -1- AC_REQUIRE_AUX_FILE([config.rpath]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFPREFERENCESCOPYAPPVALUE$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFPREFERENCESCOPYAPPVALUE], [/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +@%:@undef HAVE_CFPREFERENCESCOPYAPPVALUE]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_CFLOCALECOPYCURRENT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_CFLOCALECOPYCURRENT], [/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +@%:@undef HAVE_CFLOCALECOPYCURRENT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTL_MACOSX_LIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTL_MACOSX_LIBS$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_ICONV$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function and it works. */ +@%:@undef HAVE_ICONV]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBICONV$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBICONV]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBICONV]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBICONV$]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^ENABLE_NLS$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native + language is requested. */ +@%:@undef ENABLE_NLS]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_GETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ +@%:@undef HAVE_GETTEXT]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_DCGETTEXT$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +@%:@undef HAVE_DCGETTEXT]) +m4trace:configure.ac:58: -1- AC_SUBST([INTLLIBS]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([INTLLIBS]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^INTLLIBS$]) +m4trace:configure.ac:58: -1- AC_SUBST([LIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([LTLIBINTL]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([LTLIBINTL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^LTLIBINTL$]) +m4trace:configure.ac:58: -1- AC_SUBST([POSUB]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([POSUB]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^POSUB$]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_DIRENT_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_DIRENT_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_NDIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_SYS_DIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. + */ +@%:@undef HAVE_SYS_DIR_H]) +m4trace:configure.ac:64: -1- AH_OUTPUT([HAVE_NDIR_H], [/* Define to 1 if you have the header file, and it defines \'DIR\'. */ +@%:@undef HAVE_NDIR_H]) +m4trace:configure.ac:65: -1- AC_DEFINE_TRACE_LITERAL([STAT_MACROS_BROKEN]) +m4trace:configure.ac:65: -1- m4_pattern_allow([^STAT_MACROS_BROKEN$]) +m4trace:configure.ac:65: -1- AH_OUTPUT([STAT_MACROS_BROKEN], [/* Define to 1 if the \'S_IS*\' macros in do not work properly. */ +@%:@undef STAT_MACROS_BROKEN]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STDLIB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LOCALE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LOCALE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNISTD_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_UNISTD_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_LIMITS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIMITS_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_LIMITS_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FCNTL_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_FCNTL_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRING_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_STRING_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMORY_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_MEMORY_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_PARAM_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_PARAM_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_RESOURCE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_RESOURCE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIMEB_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIMEB_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_TIME_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_TIME_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_SELECT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_SELECT_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_SELECT_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SYS_FILE_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_FILE_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SYS_FILE_H$]) +m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_SPAWN_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SPAWN_H]) +m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_SPAWN_H$]) +m4trace:configure.ac:71: -1- AM_PROG_CC_C_O +m4trace:configure.ac:72: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.ac:72: -1- m4_pattern_allow([^const$]) +m4trace:configure.ac:72: -1- AH_OUTPUT([const], [/* Define to empty if \'const\' does not conform to ANSI C. */ +@%:@undef const]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^uid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([uid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef uid_t]) +m4trace:configure.ac:73: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.ac:73: -1- m4_pattern_allow([^gid_t$]) +m4trace:configure.ac:73: -1- AH_OUTPUT([gid_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef gid_t]) +m4trace:configure.ac:74: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.ac:74: -1- m4_pattern_allow([^pid_t$]) +m4trace:configure.ac:74: -1- AH_OUTPUT([pid_t], [/* Define as a signed integer type capable of holding a process identifier. */ +@%:@undef pid_t]) +m4trace:configure.ac:75: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.ac:75: -1- m4_pattern_allow([^off_t$]) +m4trace:configure.ac:75: -1- AH_OUTPUT([off_t], [/* Define to \'long int\' if does not define. */ +@%:@undef off_t]) +m4trace:configure.ac:76: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:76: -1- m4_pattern_allow([^size_t$]) +m4trace:configure.ac:76: -1- AH_OUTPUT([size_t], [/* Define as \'unsigned int\' if doesn\'t define. */ +@%:@undef size_t]) +m4trace:configure.ac:77: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.ac:77: -1- m4_pattern_allow([^ssize_t$]) +m4trace:configure.ac:77: -1- AH_OUTPUT([ssize_t], [/* Define as \'int\' if doesn\'t define. */ +@%:@undef ssize_t]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_UNSIGNED_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_UNSIGNED_LONG_LONG_INT], [/* Define to 1 if the system has the type \'unsigned long long int\'. */ +@%:@undef HAVE_UNSIGNED_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_LONG_LONG_INT$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_LONG_LONG_INT], [/* Define to 1 if the system has the type \'long long int\'. */ +@%:@undef HAVE_LONG_LONG_INT]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_INTMAX_T$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_INTMAX_T], [/* Define to 1 if the system has the type \'intmax_t\'. */ +@%:@undef HAVE_INTMAX_T]) +m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([intmax_t]) +m4trace:configure.ac:78: -1- m4_pattern_allow([^intmax_t$]) +m4trace:configure.ac:78: -1- AH_OUTPUT([intmax_t], [/* Define to the widest signed integer type if and do + not define. */ +@%:@undef intmax_t]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^HAVE_UINTMAX_T$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([HAVE_UINTMAX_T], [/* Define to 1 if the system has the type \'uintmax_t\'. */ +@%:@undef HAVE_UINTMAX_T]) +m4trace:configure.ac:79: -1- AC_DEFINE_TRACE_LITERAL([uintmax_t]) +m4trace:configure.ac:79: -1- m4_pattern_allow([^uintmax_t$]) +m4trace:configure.ac:79: -1- AH_OUTPUT([uintmax_t], [/* Define to the widest unsigned integer type if and + do not define. */ +@%:@undef uintmax_t]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^HAVE_SIG_ATOMIC_T$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([HAVE_SIG_ATOMIC_T], [/* Define to 1 if the system has the type \'sig_atomic_t\'. */ +@%:@undef HAVE_SIG_ATOMIC_T]) +m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([sig_atomic_t]) +m4trace:configure.ac:82: -1- m4_pattern_allow([^sig_atomic_t$]) +m4trace:configure.ac:82: -1- AH_OUTPUT([sig_atomic_t], [/* Define as an integer type suitable for memory locations that can be + accessed atomically even in the presence of asynchronous signals. */ +@%:@undef sig_atomic_t]) +m4trace:configure.ac:86: -1- _m4_warn([obsolete], [The macro 'AC_TRY_COMPILE' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:2903: AC_TRY_COMPILE is expanded from... +lib/m4sugar/m4sh.m4:689: _AS_IF_ELSE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:2305: AC_CACHE_VAL is expanded from... +./lib/autoconf/general.m4:2326: AC_CACHE_CHECK is expanded from... +m4/acinclude.m4:105: AC_STRUCT_ST_MTIM_NSEC is expanded from... +configure.ac:86: the top level]) +m4trace:configure.ac:86: -1- AC_DEFINE_TRACE_LITERAL([ST_MTIM_NSEC]) +m4trace:configure.ac:86: -1- m4_pattern_allow([^ST_MTIM_NSEC$]) +m4trace:configure.ac:86: -1- AH_OUTPUT([ST_MTIM_NSEC], [/* Define if struct stat contains a nanoseconds field */ +@%:@undef ST_MTIM_NSEC]) +m4trace:configure.ac:99: -1- AC_DEFINE_TRACE_LITERAL([FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:99: -1- m4_pattern_allow([^FILE_TIMESTAMP_HI_RES$]) +m4trace:configure.ac:99: -1- AH_OUTPUT([FILE_TIMESTAMP_HI_RES], [/* Use high resolution file timestamps if nonzero. */ +@%:@undef FILE_TIMESTAMP_HI_RES]) +m4trace:configure.ac:102: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_CLOCK_GETTIME$]) +m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_CLOCK_GETTIME], [/* Define to 1 if you have the clock_gettime function. */ +@%:@undef HAVE_CLOCK_GETTIME]) +m4trace:configure.ac:127: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_GETTIMEOFDAY$]) +m4trace:configure.ac:127: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have a standard gettimeofday function */ +@%:@undef HAVE_GETTIMEOFDAY]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRTOLL], [/* Define to 1 if you have the \'strtoll\' function. */ +@%:@undef HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRTOLL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRTOLL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRDUP], [/* Define to 1 if you have the \'strdup\' function. */ +@%:@undef HAVE_STRDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRNDUP], [/* Define to 1 if you have the \'strndup\' function. */ +@%:@undef HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNDUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRNDUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STPCPY], [/* Define to 1 if you have the \'stpcpy\' function. */ +@%:@undef HAVE_STPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMRCHR], [/* Define to 1 if you have the \'memrchr\' function. */ +@%:@undef HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMRCHR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMRCHR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MEMPCPY], [/* Define to 1 if you have the \'mempcpy\' function. */ +@%:@undef HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MEMPCPY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MEMPCPY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_UMASK], [/* Define to 1 if you have the \'umask\' function. */ +@%:@undef HAVE_UMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_UMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKSTEMP], [/* Define to 1 if you have the \'mkstemp\' function. */ +@%:@undef HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKSTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKSTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKTEMP], [/* Define to 1 if you have the \'mktemp\' function. */ +@%:@undef HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKTEMP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKTEMP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_FDOPEN], [/* Define to 1 if you have the \'fdopen\' function. */ +@%:@undef HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_FDOPEN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_FDOPEN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP], [/* Define to 1 if you have the \'dup\' function. */ +@%:@undef HAVE_DUP]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the \'dup2\' function. */ +@%:@undef HAVE_DUP2]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DUP2]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_DUP2$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the \'getcwd\' function. */ +@%:@undef HAVE_GETCWD]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETCWD]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETCWD$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_REALPATH], [/* Define to 1 if you have the \'realpath\' function. */ +@%:@undef HAVE_REALPATH]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_REALPATH]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_REALPATH$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGSETMASK], [/* Define to 1 if you have the \'sigsetmask\' function. */ +@%:@undef HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGSETMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGSETMASK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SIGACTION], [/* Define to 1 if you have the \'sigaction\' function. */ +@%:@undef HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGACTION]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SIGACTION$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETGROUPS], [/* Define to 1 if you have the \'getgroups\' function. */ +@%:@undef HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETGROUPS]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETGROUPS$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEUID], [/* Define to 1 if you have the \'seteuid\' function. */ +@%:@undef HAVE_SETEUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETEGID], [/* Define to 1 if you have the \'setegid\' function. */ +@%:@undef HAVE_SETEGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETEGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETEGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETLINEBUF], [/* Define to 1 if you have the \'setlinebuf\' function. */ +@%:@undef HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETLINEBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETLINEBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREUID], [/* Define to 1 if you have the \'setreuid\' function. */ +@%:@undef HAVE_SETREUID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREUID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREUID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETREGID], [/* Define to 1 if you have the \'setregid\' function. */ +@%:@undef HAVE_SETREGID]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETREGID]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETREGID$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_MKFIFO], [/* Define to 1 if you have the \'mkfifo\' function. */ +@%:@undef HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MKFIFO]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_MKFIFO$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the \'getrlimit\' function. */ +@%:@undef HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_GETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETRLIMIT], [/* Define to 1 if you have the \'setrlimit\' function. */ +@%:@undef HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETRLIMIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETRLIMIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_SETVBUF], [/* Define to 1 if you have the \'setvbuf\' function. */ +@%:@undef HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SETVBUF]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_SETVBUF$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PIPE], [/* Define to 1 if you have the \'pipe\' function. */ +@%:@undef HAVE_PIPE]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PIPE]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PIPE$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the \'strerror\' function. */ +@%:@undef HAVE_STRERROR]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRERROR]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRERROR$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_STRSIGNAL], [/* Define to 1 if you have the \'strsignal\' function. */ +@%:@undef HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_STRSIGNAL$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_LSTAT], [/* Define to 1 if you have the \'lstat\' function. */ +@%:@undef HAVE_LSTAT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LSTAT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_LSTAT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the \'readlink\' function. */ +@%:@undef HAVE_READLINK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_READLINK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_READLINK$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ATEXIT], [/* Define to 1 if you have the \'atexit\' function. */ +@%:@undef HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ATEXIT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ATEXIT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_ISATTY], [/* Define to 1 if you have the \'isatty\' function. */ +@%:@undef HAVE_ISATTY]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ISATTY]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_ISATTY$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_TTYNAME], [/* Define to 1 if you have the \'ttyname\' function. */ +@%:@undef HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TTYNAME]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_TTYNAME$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_PSELECT], [/* Define to 1 if you have the \'pselect\' function. */ +@%:@undef HAVE_PSELECT]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PSELECT]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_PSELECT$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWN], [/* Define to 1 if you have the \'posix_spawn\' function. */ +@%:@undef HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWN]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWN$]) +m4trace:configure.ac:132: -1- AH_OUTPUT([HAVE_POSIX_SPAWNATTR_SETSIGMASK], [/* Define to 1 if you have the \'posix_spawnattr_setsigmask\' function. */ +@%:@undef HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SPAWNATTR_SETSIGMASK]) +m4trace:configure.ac:132: -1- m4_pattern_allow([^HAVE_POSIX_SPAWNATTR_SETSIGMASK$]) +m4trace:configure.ac:142: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:142: -1- m4_pattern_allow([^HAVE_DECL_BSD_SIGNAL$]) +m4trace:configure.ac:142: -1- AH_OUTPUT([HAVE_DECL_BSD_SIGNAL], [/* Define to 1 if you have the declaration of \'bsd_signal\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_BSD_SIGNAL]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_VFORK_H]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_FORK], [/* Define to 1 if you have the \'fork\' function. */ +@%:@undef HAVE_FORK]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_VFORK], [/* Define to 1 if you have the \'vfork\' function. */ +@%:@undef HAVE_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_VFORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_VFORK], [/* Define to 1 if \'vfork\' works. */ +@%:@undef HAVE_WORKING_VFORK]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([vfork]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^vfork$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([vfork], [/* Define as \'fork\' if \'vfork\' does not work. */ +@%:@undef vfork]) +m4trace:configure.ac:145: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WORKING_FORK]) +m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_WORKING_FORK$]) +m4trace:configure.ac:145: -1- AH_OUTPUT([HAVE_WORKING_FORK], [/* Define to 1 if \'fork\' works. */ +@%:@undef HAVE_WORKING_FORK]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCASECMP], [/* Define to 1 if you have the \'strcasecmp\' function. */ +@%:@undef HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCASECMP], [/* Define to 1 if you have the \'strncasecmp\' function. */ +@%:@undef HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCASECMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCASECMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRCMPI], [/* Define to 1 if you have the \'strcmpi\' function. */ +@%:@undef HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNCMPI], [/* Define to 1 if you have the \'strncmpi\' function. */ +@%:@undef HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNCMPI]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNCMPI$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRICMP], [/* Define to 1 if you have the \'stricmp\' function. */ +@%:@undef HAVE_STRICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRICMP$]) +m4trace:configure.ac:150: -1- AH_OUTPUT([HAVE_STRNICMP], [/* Define to 1 if you have the \'strnicmp\' function. */ +@%:@undef HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRNICMP]) +m4trace:configure.ac:150: -1- m4_pattern_allow([^HAVE_STRNICMP$]) +m4trace:configure.ac:153: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) +m4trace:configure.ac:153: -1- m4_pattern_allow([^HAVE_STRCOLL$]) +m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the \'strcoll\' function and it is properly defined. + */ +@%:@undef HAVE_STRCOLL]) +m4trace:configure.ac:154: -1- AC_DEFINE_TRACE_LITERAL([CLOSEDIR_VOID]) +m4trace:configure.ac:154: -1- m4_pattern_allow([^CLOSEDIR_VOID$]) +m4trace:configure.ac:154: -1- AH_OUTPUT([CLOSEDIR_VOID], [/* Define to 1 if the \'closedir\' function returns void instead of int. */ +@%:@undef CLOSEDIR_VOID]) +m4trace:configure.ac:157: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:157: -1- m4_pattern_allow([^HAVE_STRUCT_DIRENT_D_TYPE$]) +m4trace:configure.ac:157: -1- AH_OUTPUT([HAVE_STRUCT_DIRENT_D_TYPE], [/* Define to 1 if \'d_type\' is a member of \'struct dirent\'. */ +@%:@undef HAVE_STRUCT_DIRENT_D_TYPE]) +m4trace:configure.ac:165: -1- m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_PATH]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_PATH$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG_LIBDIR]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG_LIBDIR$]) +m4trace:configure.ac:165: -1- AC_SUBST([PKG_CONFIG]) +m4trace:configure.ac:165: -1- AC_SUBST_TRACE([PKG_CONFIG]) +m4trace:configure.ac:165: -1- m4_pattern_allow([^PKG_CONFIG$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_CFLAGS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_CFLAGS$]) +m4trace:configure.ac:167: -1- AC_SUBST([GUILE_LIBS]) +m4trace:configure.ac:167: -1- AC_SUBST_TRACE([GUILE_LIBS]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^GUILE_LIBS$]) +m4trace:configure.ac:167: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GUILE]) +m4trace:configure.ac:167: -1- m4_pattern_allow([^HAVE_GUILE$]) +m4trace:configure.ac:167: -1- AH_OUTPUT([HAVE_GUILE], [/* Embed GNU Guile support */ +@%:@undef HAVE_GUILE]) +m4trace:configure.ac:210: -1- AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_TRUE$]) +m4trace:configure.ac:210: -1- AC_SUBST([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- AC_SUBST_TRACE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:210: -1- m4_pattern_allow([^HAVE_GUILE_FALSE$]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_TRUE]) +m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([HAVE_GUILE_FALSE]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL_SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL__SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL__SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'_sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL__SYS_SIGLIST]) +m4trace:configure.ac:212: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:212: -1- m4_pattern_allow([^HAVE_DECL___SYS_SIGLIST$]) +m4trace:configure.ac:212: -1- AH_OUTPUT([HAVE_DECL___SYS_SIGLIST], [/* Define to 1 if you have the declaration of \'__sys_siglist\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL___SYS_SIGLIST]) +m4trace:configure.ac:223: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) +m4trace:configure.ac:223: -1- m4_pattern_allow([^HAVE_SYS_WAIT_H$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the \'waitpid\' function. */ +@%:@undef HAVE_WAITPID]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAITPID]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAITPID$]) +m4trace:configure.ac:224: -1- AH_OUTPUT([HAVE_WAIT3], [/* Define to 1 if you have the \'wait3\' function. */ +@%:@undef HAVE_WAIT3]) +m4trace:configure.ac:224: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WAIT3]) +m4trace:configure.ac:224: -1- m4_pattern_allow([^HAVE_WAIT3$]) +m4trace:configure.ac:247: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNION_WAIT]) +m4trace:configure.ac:247: -1- m4_pattern_allow([^HAVE_UNION_WAIT$]) +m4trace:configure.ac:247: -1- AH_OUTPUT([HAVE_UNION_WAIT], [/* Define to 1 if you have the \'union wait\' type in . */ +@%:@undef HAVE_UNION_WAIT]) +m4trace:configure.ac:254: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:254: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:254: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Define to 1 if your system requires backslashes or drive specs in + pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:260: -1- AC_SUBST([REMOTE]) +m4trace:configure.ac:260: -1- AC_SUBST_TRACE([REMOTE]) +m4trace:configure.ac:260: -1- m4_pattern_allow([^REMOTE$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the \'gethostname\' function. */ +@%:@undef HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTNAME$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_SOCKET], [/* Define to 1 if you have the \'socket\' function. */ +@%:@undef HAVE_SOCKET]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKET]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_SOCKET$]) +m4trace:configure.ac:262: -1- AH_OUTPUT([HAVE_GETHOSTBYNAME], [/* Define to 1 if you have the \'gethostbyname\' function. */ +@%:@undef HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETHOSTBYNAME]) +m4trace:configure.ac:262: -1- m4_pattern_allow([^HAVE_GETHOSTBYNAME$]) +m4trace:configure.ac:262: -1- _m4_warn([obsolete], [The macro 'AC_FD_MSG' is obsolete. +You should run autoupdate.], [./lib/autoconf/general.m4:401: AC_FD_MSG is expanded from... +m4/acinclude.m4:38: CF_NETLIBS is expanded from... +lib/m4sugar/m4sh.m4:594: AS_CASE is expanded from... +lib/m4sugar/m4sh.m4:696: AS_IF is expanded from... +./lib/autoconf/general.m4:1603: AC_ARG_WITH is expanded from... +configure.ac:262: the top level]) +m4trace:configure.ac:281: -1- AM_CONDITIONAL([USE_CUSTOMS], [test "$use_customs" = true]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_TRUE$]) +m4trace:configure.ac:281: -1- AC_SUBST([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- AC_SUBST_TRACE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:281: -1- m4_pattern_allow([^USE_CUSTOMS_FALSE$]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_TRUE]) +m4trace:configure.ac:281: -1- _AM_SUBST_NOTMAKE([USE_CUSTOMS_FALSE]) +m4trace:configure.ac:284: -1- AH_OUTPUT([HAVE_CASE_INSENSITIVE_FS], [/* Use case insensitive file names */ +@%:@undef HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CASE_INSENSITIVE_FS]) +m4trace:configure.ac:285: -1- m4_pattern_allow([^HAVE_CASE_INSENSITIVE_FS$]) +m4trace:configure.ac:305: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SA_RESTART]) +m4trace:configure.ac:305: -1- m4_pattern_allow([^HAVE_SA_RESTART$]) +m4trace:configure.ac:305: -1- AH_OUTPUT([HAVE_SA_RESTART], [/* Define to 1 if defines the SA_RESTART constant. */ +@%:@undef HAVE_SA_RESTART]) +m4trace:configure.ac:318: -1- AC_DEFINE_TRACE_LITERAL([MAKE_JOBSERVER]) +m4trace:configure.ac:318: -1- m4_pattern_allow([^MAKE_JOBSERVER$]) +m4trace:configure.ac:318: -1- AH_OUTPUT([MAKE_JOBSERVER], [/* Define to 1 to enable job server support in GNU make. */ +@%:@undef MAKE_JOBSERVER]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLOPEN$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLOPEN], [/* Define to 1 if you have the declaration of \'dlopen\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLOPEN]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLSYM$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLSYM], [/* Define to 1 if you have the declaration of \'dlsym\', and to 0 if you don\'t. + */ +@%:@undef HAVE_DECL_DLSYM]) +m4trace:configure.ac:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_DLERROR]) +m4trace:configure.ac:325: -1- m4_pattern_allow([^HAVE_DECL_DLERROR$]) +m4trace:configure.ac:325: -1- AH_OUTPUT([HAVE_DECL_DLERROR], [/* Define to 1 if you have the declaration of \'dlerror\', and to 0 if you + don\'t. */ +@%:@undef HAVE_DECL_DLERROR]) +m4trace:configure.ac:341: -1- AC_DEFINE_TRACE_LITERAL([MAKE_LOAD]) +m4trace:configure.ac:341: -1- m4_pattern_allow([^MAKE_LOAD$]) +m4trace:configure.ac:341: -1- AH_OUTPUT([MAKE_LOAD], [/* Define to 1 to enable \'load\' support in GNU make. */ +@%:@undef MAKE_LOAD]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-Wl,--export-dynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:351: -1- AC_SUBST([AM_LDFLAGS], [-rdynamic]) +m4trace:configure.ac:351: -1- AC_SUBST_TRACE([AM_LDFLAGS]) +m4trace:configure.ac:351: -1- m4_pattern_allow([^AM_LDFLAGS$]) +m4trace:configure.ac:371: -1- AC_DEFINE_TRACE_LITERAL([MAKE_SYMLINKS]) +m4trace:configure.ac:371: -1- m4_pattern_allow([^MAKE_SYMLINKS$]) +m4trace:configure.ac:371: -1- AH_OUTPUT([MAKE_SYMLINKS], [/* Define to 1 to enable symbolic link timestamp checking. */ +@%:@undef MAKE_SYMLINKS]) +m4trace:configure.ac:403: -1- AC_DEFINE_TRACE_LITERAL([USE_POSIX_SPAWN]) +m4trace:configure.ac:403: -1- m4_pattern_allow([^USE_POSIX_SPAWN$]) +m4trace:configure.ac:403: -1- AH_OUTPUT([USE_POSIX_SPAWN], [/* Define to 1 to use posix_spawn(). */ +@%:@undef USE_POSIX_SPAWN]) +m4trace:configure.ac:415: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET]) +m4trace:configure.ac:415: -1- m4_pattern_allow([^SCCS_GET$]) +m4trace:configure.ac:415: -1- AH_OUTPUT([SCCS_GET], [/* Define to the name of the SCCS \'get\' command. */ +@%:@undef SCCS_GET]) +m4trace:configure.ac:419: -1- AC_DEFINE_TRACE_LITERAL([SCCS_GET_MINUS_G]) +m4trace:configure.ac:419: -1- m4_pattern_allow([^SCCS_GET_MINUS_G$]) +m4trace:configure.ac:419: -1- AH_OUTPUT([SCCS_GET_MINUS_G], [/* Define to 1 if the SCCS \'get\' command understands the \'-G\' option. */ +@%:@undef SCCS_GET_MINUS_G]) +m4trace:configure.ac:437: -1- AC_DEFINE_TRACE_LITERAL([MAKE_HOST]) +m4trace:configure.ac:437: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:437: -1- AH_OUTPUT([MAKE_HOST], [/* Build host information. */ +@%:@undef MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST([MAKE_HOST]) +m4trace:configure.ac:439: -1- AC_SUBST_TRACE([MAKE_HOST]) +m4trace:configure.ac:439: -1- m4_pattern_allow([^MAKE_HOST$]) +m4trace:configure.ac:442: -1- AM_CONDITIONAL([WINDOWSENV], [false]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:442: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:442: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:442: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AM_CONDITIONAL([WINDOWSENV], [true]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_TRUE$]) +m4trace:configure.ac:444: -1- AC_SUBST([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_SUBST_TRACE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWSENV_FALSE$]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_TRUE]) +m4trace:configure.ac:444: -1- _AM_SUBST_NOTMAKE([WINDOWSENV_FALSE]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([WINDOWS32]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^WINDOWS32$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([WINDOWS32], [/* Build for the WINDOWS32 API. */ +@%:@undef WINDOWS32]) +m4trace:configure.ac:444: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DOS_PATHS]) +m4trace:configure.ac:444: -1- m4_pattern_allow([^HAVE_DOS_PATHS$]) +m4trace:configure.ac:444: -1- AH_OUTPUT([HAVE_DOS_PATHS], [/* Support DOS-style pathnames. */ +@%:@undef HAVE_DOS_PATHS]) +m4trace:configure.ac:452: -1- AC_DEFINE_TRACE_LITERAL([PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:452: -1- m4_pattern_allow([^PATH_SEPARATOR_CHAR$]) +m4trace:configure.ac:452: -1- AH_OUTPUT([PATH_SEPARATOR_CHAR], [/* Define to the character that separates directories in PATH. */ +@%:@undef PATH_SEPARATOR_CHAR]) +m4trace:configure.ac:455: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:455: -1- m4_pattern_allow([^HAVE_DECL_GETLOADAVG$]) +m4trace:configure.ac:455: -1- AH_OUTPUT([HAVE_DECL_GETLOADAVG], [/* Define to 1 if you have the declaration of \'getloadavg\'. */ +@%:@undef HAVE_DECL_GETLOADAVG]) +m4trace:configure.ac:460: -1- AC_DEFINE_TRACE_LITERAL([MK_CONFIGURE]) +m4trace:configure.ac:460: -1- m4_pattern_allow([^MK_CONFIGURE$]) +m4trace:configure.ac:460: -1- AH_OUTPUT([MK_CONFIGURE], [/* Define to 1 if config.h is generated by running the configure script. */ +@%:@undef MK_CONFIGURE]) +m4trace:configure.ac:469: -1- m4_pattern_allow([^MAINT_MAKEFILE$]) +m4trace:configure.ac:472: -1- AC_DEFINE_TRACE_LITERAL([WITH_DMALLOC]) +m4trace:configure.ac:472: -1- m4_pattern_allow([^WITH_DMALLOC$]) +m4trace:configure.ac:472: -1- AH_OUTPUT([WITH_DMALLOC], [/* Define if using the dmalloc debugging malloc package */ +@%:@undef WITH_DMALLOC]) +m4trace:configure.ac:532: -1- AM_CONDITIONAL([KNOWN_PREFIX], [test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_TRUE$]) +m4trace:configure.ac:532: -1- AC_SUBST([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- AC_SUBST_TRACE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:532: -1- m4_pattern_allow([^KNOWN_PREFIX_FALSE$]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_TRUE]) +m4trace:configure.ac:532: -1- _AM_SUBST_NOTMAKE([KNOWN_PREFIX_FALSE]) +m4trace:configure.ac:537: -1- AC_CONFIG_FILES([build.cfg tests/config-flags.pm \ + Makefile lib/Makefile doc/Makefile po/Makefile.in]) +m4trace:configure.ac:543: -1- AC_CONFIG_LINKS([build.sh:build.sh]) +m4trace:configure.ac:547: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:547: -1- AC_SUBST([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:547: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gl_LIBOBJDEPS], [$gl_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gl_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gl_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LTLIBOBJS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LTLIBOBJS$]) +m4trace:configure.ac:547: -1- AC_SUBST([gltests_LIBOBJDEPS], [$gltests_libobjdeps]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([gltests_LIBOBJDEPS]) +m4trace:configure.ac:547: -1- m4_pattern_allow([^gltests_LIBOBJDEPS$]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([abs_top_builddir]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.ac:547: -1- AC_SUBST_TRACE([MKDIR_P]) diff --git a/local/recipes/dev/gnu-make/source/build-aux/compile b/local/recipes/dev/gnu-make/source/build-aux/compile new file mode 100755 index 0000000000..02ff093c33 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/compile @@ -0,0 +1,364 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2025-06-18.21; # UTC + +# Copyright (C) 1999-2025 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +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 unneeded_conversions +# 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) UNNEEDED_CONVERSIONS, 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*) + if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then + # MSYS2 environment. + file_conv=cygwin + else + # Original MinGW environment. + file_conv=mingw + fi + ;; + MSYS*) + # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell. + file_conv=cygwin + ;; + CYGWIN*) + # Cygwin environment. + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + # This is the optimization mentioned above: + # If UNNEEDED_CONVERSIONS contains $file_conv, don't convert. + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -w "$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 + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + 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 | *.lo | *.[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 + 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 +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'. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: . +EOF + exit $? + ;; + -v | --v*) + echo "compile (GNU Automake) $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + clang-cl | *[/\\]clang-cl | clang-cl.exe | *[/\\]clang-cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # 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 + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +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 +# 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 +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/config.guess b/local/recipes/dev/gnu-make/source/build-aux/config.guess new file mode 100755 index 0000000000..a9d01fde46 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/config.guess @@ -0,0 +1,1818 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2025 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2025-07-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 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. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# 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 Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system '$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2025 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# Just in case it came from the environment. +GUESS= + +# 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 +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { 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" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c17 c99 c89 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +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/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi + ;; +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 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 + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case $UNAME_VERSION in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + GUESS=mips-dec-osf1 + ;; + alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case $ALPHA_CPU_TYPE in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; + Amiga*:UNIX_System_V:4.0:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + GUESS=hppa1.1-hitachi-hiuxmpp + ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + case `/usr/bin/arch -k` in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like '4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case `/bin/arch` in + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + int + main () + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *: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 + else + IBM_ARCH=powerpc + fi + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if test -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 ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + 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); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; + 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/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + 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/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + GUESS=hppa64-unknown-linux-$LIBC + ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac + fi + GUESS=$CPU-pc-linux-$LIBCABI + ;; + xtensa*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + GUESS=i386-sequent-sysv4 + ;; + 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, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; + i*86:OS/2:*:*) + # If we were able to find 'uname', then EMX Unix compatibility + # is probably installed. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + 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. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + GUESS=m68k-diab-dnix + ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /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; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; + SX-4:SUPER-UX:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if test "$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 + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + x86_64:[Ii]ronclad:*:*|i?86:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-pc-ironclad-mlibc + ;; + *:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad-mlibc + ;; +esac + +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +int +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%Y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/config.guess~ b/local/recipes/dev/gnu-make/source/build-aux/config.guess~ new file mode 100755 index 0000000000..48a684601b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/config.guess~ @@ -0,0 +1,1815 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2024 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-07-27' + +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# 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 Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system '$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2024 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# Just in case it came from the environment. +GUESS= + +# 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 +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { 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" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c17 c99 c89 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +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/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi + ;; +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 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 + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case $UNAME_VERSION in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + GUESS=mips-dec-osf1 + ;; + alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case $ALPHA_CPU_TYPE in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; + Amiga*:UNIX_System_V:4.0:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + GUESS=hppa1.1-hitachi-hiuxmpp + ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + case `/usr/bin/arch -k` in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like '4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case `/bin/arch` in + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + int + main () + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *: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 + else + IBM_ARCH=powerpc + fi + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if test -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 ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + 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); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; + 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/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + 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/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + GUESS=hppa64-unknown-linux-$LIBC + ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac + fi + GUESS=$CPU-pc-linux-$LIBCABI + ;; + xtensa*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + GUESS=i386-sequent-sysv4 + ;; + 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, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; + i*86:OS/2:*:*) + # If we were able to find 'uname', then EMX Unix compatibility + # is probably installed. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + 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. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + GUESS=m68k-diab-dnix + ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /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; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; + SX-4:SUPER-UX:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if test "$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 + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; +esac + +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +int +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/config.rpath b/local/recipes/dev/gnu-make/source/build-aux/config.rpath new file mode 100755 index 0000000000..b625621fac --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/config.rpath @@ -0,0 +1,684 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2014 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# 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 +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# 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 MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +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 _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 + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + ecc*) + wl='-Wl,' + ;; + icc* | ifort*) + wl='-Wl,' + ;; + lf95*) + wl='-Wl,' + ;; + nagfor*) + wl='-Wl,-Wl,,' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + xl* | bgxl* | bgf* | mpixl*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + wl= + ;; + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + newsos6) + ;; + *nto* | *qnx*) + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + wl='-Qoption ld ' + ;; + *) + wl='-Wl,' + ;; + esac + ;; + sunos4*) + wl='-Qoption ld ' + ;; + 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 _LT_LINKER_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + 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++. + if test "$GCC" != yes; then + 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 + ;; +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 + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + 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' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + haiku*) + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + 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 + : + else + 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 + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + 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. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # 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].*|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 + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + bsdi[45]*) + ;; + 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 + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then + : + else + ld_shlibs=no + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd2.[01]*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + 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 + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + 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_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + *nto* | *qnx*) + ;; + openbsd*) + 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 + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + 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' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# 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' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + case "$host_cpu" in + powerpc*) + library_names_spec='$libname$shrext' ;; + m68k) + library_names_spec='$libname.a' ;; + esac + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + 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' + ;; + freebsd[23].*) + library_names_spec='$libname$shrext$versuffix' + ;; + freebsd* | dragonfly*) + library_names_spec='$libname$shrext' + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + haiku*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + 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= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu | kopensolaris*-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*) + 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' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + 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' + ;; + tpf*) + 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"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. +# +# 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 Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2025 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + cloudabi*-eabi* \ + | kfreebsd*-gnu* \ + | knetbsd*-gnu* \ + | kopensolaris*-gnu* \ + | ironclad-* \ + | linux-* \ + | managarm-* \ + | netbsd*-eabi* \ + | netbsd*-gnu* \ + | nto-qnx* \ + | os2-emx* \ + | rtmk-nova* \ + | storm-chaos* \ + | uclinux-gnu* \ + | uclinux-uclibc* \ + | windows-* ) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + case $field1-$field2 in + # Shorthands that happen to contain a single dash + convex-c[12] | convex-c3[248]) + basic_machine=$field2-convex + basic_os= + ;; + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Do not treat sunos as a manufacturer + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + # Manufacturers + 3100* \ + | 32* \ + | 3300* \ + | 3600* \ + | 7300* \ + | acorn \ + | altos* \ + | apollo \ + | apple \ + | atari \ + | att* \ + | axis \ + | be \ + | bull \ + | cbm \ + | ccur \ + | cisco \ + | commodore \ + | convergent* \ + | convex* \ + | cray \ + | crds \ + | dec* \ + | delta* \ + | dg \ + | digital \ + | dolphin \ + | encore* \ + | gould \ + | harris \ + | highlevel \ + | hitachi* \ + | hp \ + | ibm* \ + | intergraph \ + | isi* \ + | knuth \ + | masscomp \ + | microblaze* \ + | mips* \ + | motorola* \ + | ncr* \ + | news \ + | next \ + | ns \ + | oki \ + | omron* \ + | pc533* \ + | rebel \ + | rom68k \ + | rombug \ + | semi \ + | sequent* \ + | sgi* \ + | siemens \ + | sim \ + | sni \ + | sony* \ + | stratus \ + | sun \ + | sun[234]* \ + | tektronix \ + | tti* \ + | ultra \ + | unicom* \ + | wec \ + | winbond \ + | wrs) + basic_machine=$field1-$field2 + basic_os= + ;; + tock* | zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300) + cpu=m68k + vendor=motorola + ;; + # This used to be dpx2*, but that gets the RS6000-based + # DPX/20 and the x86-based DPX/2-100 wrong. See + # https://oldskool.silicium.org/stations/bull_dpx20.htm + # https://www.feb-patrimoine.com/english/bull_dpx2.htm + # https://www.feb-patrimoine.com/english/unix_and_bull.htm + dpx2 | dpx2[23]00 | dpx2[23]xx) + cpu=m68k + vendor=bull + ;; + dpx2100 | dpx21xx) + cpu=i386 + vendor=bull + ;; + dpx20) + cpu=rs6000 + vendor=bull + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x"$basic_os" != x +then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +obj= +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + saved_IFS=$IFS + IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- | linux-ohos*- ) + ;; + uclinux-uclibc*- | uclinux-gnu*- ) + ;; + ironclad-mlibc*-) + ;; + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 + ;; + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) + ;; + rtmk-nova-) + ;; + *-eabi*- | *-gnueabi*-) + ;; + ios*-simulator- | tvos*-simulator- | watchos*-simulator- ) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) + # Blank kernel with real OS is always fine. + ;; + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 + exit 1 + ;; +esac + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos* | *-solaris*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%Y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/config.sub~ b/local/recipes/dev/gnu-make/source/build-aux/config.sub~ new file mode 100755 index 0000000000..4aaae46f6f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/config.sub~ @@ -0,0 +1,2354 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2024 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale + +timestamp='2024-05-27' + +# 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. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# 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 Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2024 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + cloudabi*-eabi* \ + | kfreebsd*-gnu* \ + | knetbsd*-gnu* \ + | kopensolaris*-gnu* \ + | linux-* \ + | managarm-* \ + | netbsd*-eabi* \ + | netbsd*-gnu* \ + | nto-qnx* \ + | os2-emx* \ + | rtmk-nova* \ + | storm-chaos* \ + | uclinux-gnu* \ + | uclinux-uclibc* \ + | windows-* ) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + case $field1-$field2 in + # Shorthands that happen to contain a single dash + convex-c[12] | convex-c3[248]) + basic_machine=$field2-convex + basic_os= + ;; + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Do not treat sunos as a manufacturer + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + # Manufacturers + 3100* \ + | 32* \ + | 3300* \ + | 3600* \ + | 7300* \ + | acorn \ + | altos* \ + | apollo \ + | apple \ + | atari \ + | att* \ + | axis \ + | be \ + | bull \ + | cbm \ + | ccur \ + | cisco \ + | commodore \ + | convergent* \ + | convex* \ + | cray \ + | crds \ + | dec* \ + | delta* \ + | dg \ + | digital \ + | dolphin \ + | encore* \ + | gould \ + | harris \ + | highlevel \ + | hitachi* \ + | hp \ + | ibm* \ + | intergraph \ + | isi* \ + | knuth \ + | masscomp \ + | microblaze* \ + | mips* \ + | motorola* \ + | ncr* \ + | news \ + | next \ + | ns \ + | oki \ + | omron* \ + | pc533* \ + | rebel \ + | rom68k \ + | rombug \ + | semi \ + | sequent* \ + | siemens \ + | sgi* \ + | siemens \ + | sim \ + | sni \ + | sony* \ + | stratus \ + | sun \ + | sun[234]* \ + | tektronix \ + | tti* \ + | ultra \ + | unicom* \ + | wec \ + | winbond \ + | wrs) + basic_machine=$field1-$field2 + basic_os= + ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300) + cpu=m68k + vendor=motorola + ;; + # This used to be dpx2*, but that gets the RS6000-based + # DPX/20 and the x86-based DPX/2-100 wrong. See + # https://oldskool.silicium.org/stations/bull_dpx20.htm + # https://www.feb-patrimoine.com/english/bull_dpx2.htm + # https://www.feb-patrimoine.com/english/unix_and_bull.htm + dpx2 | dpx2[23]00 | dpx2[23]xx) + cpu=m68k + vendor=bull + ;; + dpx2100 | dpx21xx) + cpu=i386 + vendor=bull + ;; + dpx20) + cpu=rs6000 + vendor=bull + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x"$basic_os" != x +then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +obj= +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + saved_IFS=$IFS + IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- | linux-ohos*- ) + ;; + uclinux-uclibc*- | uclinux-gnu*- ) + ;; + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 + ;; + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) + ;; + rtmk-nova-) + ;; + *-eabi*- | *-gnueabi*-) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) + # Blank kernel with real OS is always fine. + ;; + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 + exit 1 + ;; +esac + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos* | *-solaris*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/depcomp b/local/recipes/dev/gnu-make/source/build-aux/depcomp new file mode 100755 index 0000000000..9f6725b9e0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/depcomp @@ -0,0 +1,792 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2025-06-18.21; # UTC + +# Copyright (C) 1999-2025 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# 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 Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + 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 outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +GNU Automake home page: . +General help using GNU software: . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp (GNU Automake) $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +alpha=${upper}${lower} + +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 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interference from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +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 information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsolete pre-3.x GCC compilers. +## but also to in-use compilers like IBM xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # 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. +## 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. +## 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. 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. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # 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 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # 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 + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + 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 + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + 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 \'. + # 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" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # 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. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +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 -ne 0; then + 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" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + 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. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # 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. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # 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" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + 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" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/install-sh b/local/recipes/dev/gnu-make/source/build-aux/install-sh new file mode 100755 index 0000000000..1d8d966964 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/install-sh @@ -0,0 +1,541 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2025-06-18.21; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. + -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: ." + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -p) cpprog="$cpprog -p";; + + -s) stripcmd=$stripprog;; + + -S) backupsuffix="$2" + shift;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + 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. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibility with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/mdate-sh b/local/recipes/dev/gnu-make/source/build-aux/mdate-sh new file mode 100755 index 0000000000..22396e4067 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/mdate-sh @@ -0,0 +1,227 @@ +#!/bin/sh +# Get modification time of a file or directory, or value of +# $SOURCE_DATE_EPOCH, and pretty-print it, formatted like 1 January 2000. + +scriptversion=2025-06-25.21; # UTC + +# Copyright (C) 1995-2025 Free Software Foundation, Inc. +# written by Ulrich Drepper , June 1995 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +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 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: mdate-sh [--help] [--version] FILE + +Pretty-print the modification day of FILE, in the format: +1 January 1970 + +Report bugs to . +GNU Automake home page: . +General help using GNU software: . +EOF + exit $? + ;; + -v | --v*) + echo "mdate-sh (GNU Automake) $scriptversion" + exit $? + ;; +esac + +# Warn if more than one file given. +if test $# -ne 1; then + echo "$0: warning: multiple files given, using first: $*" >&2 +fi + +error () +{ + echo "$0: $1" >&2 + exit 1 +} + +# set $month ("January") and $nummonth (1) given arg MON ("Jan"). +mon_to_month () +{ + case $1 in + Jan) month=January; nummonth=1;; + Feb) month=February; nummonth=2;; + Mar) month=March; nummonth=3;; + Apr) month=April; nummonth=4;; + May) month=May; nummonth=5;; + Jun) month=June; nummonth=6;; + Jul) month=July; nummonth=7;; + Aug) month=August; nummonth=8;; + Sep) month=September; nummonth=9;; + Oct) month=October; nummonth=10;; + Nov) month=November; nummonth=11;; + Dec) month=December; nummonth=12;; + esac +} + +# Prevent date giving response in another language. +LANG=C +export LANG +LC_ALL=C +export LC_ALL +LC_TIME=C +export LC_TIME + +# Use UTC to get reproducible result. +TZ=UTC0 +export TZ + +# +# GNU ls changes its time format in response to the TIME_STYLE +# variable. Since we cannot assume 'unset' works, revert this +# variable to its documented default. +if test "${TIME_STYLE+set}" = set; then + TIME_STYLE=posix-long-iso + export TIME_STYLE +fi + +save_arg1=$1 + +# Find out how to get the extended ls output of a file or directory. +if ls -L /dev/null 1>/dev/null 2>&1; then + ls_command='ls -L -l -d' +else + ls_command='ls -l -d' +fi +# Avoid user/group names that might have spaces, when possible. +if ls -n /dev/null 1>/dev/null 2>&1; then + ls_command="$ls_command -n" +fi + +# A 'ls -l' line looks as follows on OS/2. +# drwxrwx--- 0 Aug 11 2001 foo +# This differs from Unix, which adds ownership information. +# drwxrwx--- 2 root root 4096 Aug 11 2001 foo +# +# To find the date, we split the line on spaces and iterate on words +# until we find a month. This cannot work with files whose owner is a +# user named "Jan", or "Feb", etc. However, it's unlikely that '/' +# will be owned by a user whose name is a month. So we first look at +# the extended ls output of the root directory to decide how many +# words should be skipped to get the date. + +# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. +set x`$ls_command /` + +# Find which argument is the month. +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;" + mon_to_month $1 +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\""` + +# Remove all preceding arguments +eval $command + +# Because of the dummy argument above, month is in $2. +# +# On a POSIX system, we should have +# $# = 5 +# $1 = file size +# $2 = month +# $3 = day +# $4 = year or time +# $5 = filename +# +# On Darwin 7.7.0 and 7.6.0, we have +# $# = 4 +# $1 = day +# $2 = month +# $3 = year or time +# $4 = filename + +# Get the month. +mon_to_month $2 + +case $3 in + ???*) day=$1;; + *) day=$3; shift;; +esac + +# Here we have to deal with the problem that the ls output gives either +# the time of day or the year. +case $3 in + *:*) set `date`; eval year=\$$# + case $2 in + Jan) nummonthtod=1;; + Feb) nummonthtod=2;; + Mar) nummonthtod=3;; + Apr) nummonthtod=4;; + May) nummonthtod=5;; + Jun) nummonthtod=6;; + Jul) nummonthtod=7;; + Aug) nummonthtod=8;; + Sep) nummonthtod=9;; + Oct) nummonthtod=10;; + Nov) nummonthtod=11;; + Dec) nummonthtod=12;; + esac + # For the first six months of the year the time notation can also + # be used for files modified in the last year. + if (expr $nummonth \> $nummonthtod) >/dev/null; + then + year=`expr $year - 1` + fi;; + *) year=$3;; +esac + +# The result. +echo $day $month $year + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/missing b/local/recipes/dev/gnu-make/source/build-aux/missing new file mode 100755 index 0000000000..5e450bab3c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/missing @@ -0,0 +1,236 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU and other programs. + +scriptversion=2025-06-18.21; # UTC + +# shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells + +# Copyright (C) 1996-2025 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 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, 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, see . + +# 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. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: +aclocal autoconf autogen autoheader autom4te automake autoreconf +bison flex help2man lex makeinfo perl yacc + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing (GNU Automake) $scriptversion" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake|autoreconf) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + *) + : + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + autoheader_deps="'acconfig.h'" + automake_deps="'Makefile.am'" + aclocal_deps="'acinclude.m4'" + case $normalized_program in + aclocal*) + echo "You should only need it if you modified $aclocal_deps or" + echo "$configure_deps." + ;; + autoconf*) + echo "You should only need it if you modified $configure_deps." + ;; + autogen*) + echo "You should only need it if you modified a '.def' or '.tpl' file." + echo "You may want to install the GNU AutoGen package:" + echo "<$gnu_software_URL/autogen/>" + ;; + autoheader*) + echo "You should only need it if you modified $autoheader_deps or" + echo "$configure_deps." + ;; + automake*) + echo "You should only need it if you modified $automake_deps or" + echo "$configure_deps." + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + ;; + autoreconf*) + echo "You should only need it if you modified $aclocal_deps or" + echo "$automake_deps or $autoheader_deps or $automake_deps or" + echo "$configure_deps." + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + perl*) + echo "You should only need it to run GNU Autoconf, GNU Automake, " + echo " assorted other tools, or if you modified a Perl source file." + echo "You may want to install the Perl 5 language interpreter:" + echo "<$perl_URL>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac + program_details "$normalized_program" +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%Y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/dev/gnu-make/source/build-aux/texinfo.tex b/local/recipes/dev/gnu-make/source/build-aux/texinfo.tex new file mode 100644 index 0000000000..3907525cf5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build-aux/texinfo.tex @@ -0,0 +1,12233 @@ +% texinfo.tex -- TeX macros to handle Texinfo files. +% +% Load plain if necessary, i.e., if running under initex. +\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi +% +\def\texinfoversion{2025-06-18.21} +% +% Copyright 1985, 1986, 1988, 1990-2025 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 +% published by the Free Software Foundation, either version 3 of the +% License, or (at your option) any later version. +% +% This texinfo.tex file is distributed in the hope that it will be +% useful, but WITHOUT ANY WARRANTY; without even the implied warranty +% of MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 . +% +% 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 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: +% https://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or +% https://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or +% https://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. +% +% Send bug reports to bug-texinfo@gnu.org. Please include a +% complete document in each bug report with which we can reproduce the +% problem. Patches are, of course, greatly appreciated. +% +% To process a Texinfo manual with TeX, it's most reliable to use the +% texi2dvi shell script that comes with the distribution. For a simple +% manual foo.texi, however, you can get away with this: +% tex foo.texi +% texindex foo.?? +% tex foo.texi +% tex foo.texi +% dvips foo.dvi -o # or whatever; this makes foo.ps. +% The extra TeX runs get the cross-reference information correct. +% Sometimes one run after texindex suffices, and sometimes you need more +% than two; texi2dvi does it as many times as necessary. +% +% It is possible to adapt texinfo.tex for other languages, to some +% extent. You can get the existing language-specific files from the +% full Texinfo distribution. +% +% The GNU Texinfo home page is https://www.gnu.org/software/texinfo. + + +\message{Loading texinfo [version \texinfoversion]:} + +% LaTeX's \typeout. This ensures that the messages it is used for +% are identical in format to the corresponding ones from latex/pdflatex. +\def\typeout{\immediate\write17}% + +\chardef\other=12 + +% We never want plain's \outer definition of \+ in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + +% Save some plain tex macros whose names we will redefine. +\let\ptexb=\b +\let\ptexbullet=\bullet +\let\ptexc=\c +\let\ptexcomma=\, +\let\ptexdot=\. +\let\ptexdots=\dots +\let\ptexend=\end +\let\ptexequiv=\equiv +\let\ptexexclam=\! +\let\ptexfootnote=\footnote +\let\ptexgtr=> +\let\ptexhat=^ +\let\ptexi=\i +\let\ptexindent=\indent +\let\ptexinsert=\insert +\let\ptexlbrace=\{ +\let\ptexless=< +\let\ptexnewwrite\newwrite +\let\ptexnoindent=\noindent +\let\ptexplus=+ +\let\ptexraggedright=\raggedright +\let\ptexrbrace=\} +\let\ptexslash=\/ +\let\ptexsp=\sp +\let\ptexstar=\* +\let\ptexsup=\sup +\let\ptext=\t +\let\ptextop=\top +{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% Use TeX 3.0's \inputlineno to get the line number, for better error +% messages, but if we're using an old version of TeX, don't do anything. +% +\ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Pre-3.0. +\else + \def\linenumber{l.\the\inputlineno:\space} +\fi + +% 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\putwordInfo\undefined \gdef\putwordInfo{Info}\fi +\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi +\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi +\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi +\ifx\putwordof\undefined \gdef\putwordof{of}\fi +\ifx\putwordon\undefined \gdef\putwordon{on}\fi +\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi +\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi +\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi +\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi +\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi +\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi +\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi +% +\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi +\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi +\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi +\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi +\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi +\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi +\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi +\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi +\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi +\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi +\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi +\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi +% +\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi +\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi +\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi +\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + +% Give the space character the catcode for a space. +\def\spaceisspace{\catcode`\ =10\relax} + +% Used to ignore an active newline that may appear immediately after +% a macro name. +{\catcode13=\active \gdef\ignoreactivenewline{\let^^M\empty}} + +\chardef\dashChar = `\- +\chardef\slashChar = `\/ +\chardef\underChar = `\_ + +% Ignore a token. +% +\def\gobble#1{} + +% The following is used inside several \edef's. +\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} + +% Hyphenation fixes. +\hyphenation{ + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps + data-base data-bases eshell fall-ing half-way long-est man-u-script + man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings + stand-alone strong-est time-stamp time-stamps which-ever white-space + wide-spread wrap-around +} + +% Sometimes it is convenient to have everything in the transcript file +% and nothing on the terminal. We don't just call \tracingall here, +% since that produces some useless output on the terminal. We also make +% some effort to order the tracing commands to reduce output in the log +% file; cf. trace.sty in LaTeX. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\def\loggingall{% + \tracingstats2 + \tracingpages1 + \tracinglostchars2 % 2 gives us more in etex + \tracingparagraphs1 + \tracingoutput1 + \tracingmacros2 + \tracingrestores1 + \showboxbreadth\maxdimen \showboxdepth\maxdimen + \ifx\eTeXversion\thisisundefined\else % etex gives us more logging + \tracingscantokens1 + \tracingifs1 + \tracinggroups1 + \tracingnesting2 + \tracingassigns1 + \fi + \tracingcommands3 % 3 gives us more in etex + \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. +% +\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} +\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} +\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\fi} + +% Output routine +% + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt } + +% Output a mark which sets \thischapter, \thissection and \thiscolor. +% We dump everything together because we only have one kind of mark. +% This works because we only use \botmark / \topmark, not \firstmark. +% +% A mark contains a subexpression of the \ifcase ... \fi construct. +% \get*marks macros below extract the needed part using \ifcase. +% +% Another complication is to let the user choose whether \thischapter +% (\thissection) refers to the chapter (section) in effect at the top +% of a page, or that at the bottom of a page. + +% \domark is called twice inside \chapmacro, to add one +% mark before the section break, and one after. +% In the second call \prevchapterdefs is the same as \currentchapterdefs, +% and \prevsectiondefs is the same as \currentsectiondefs. +% Then if the page is not broken at the mark, some of the previous +% section appears on the page, and we can get the name of this section +% from \firstmark for @everyheadingmarks top. +% @everyheadingmarks bottom uses \botmark. +% +% See page 260 of The TeXbook. +\def\domark{% + \toks0=\expandafter{\currentchapterdefs}% + \toks2=\expandafter{\currentsectiondefs}% + \toks4=\expandafter{\prevchapterdefs}% + \toks6=\expandafter{\prevsectiondefs}% + \toks8=\expandafter{\currentcolordefs}% + \mark{% + \the\toks0 \the\toks2 % 0: marks for @everyheadingmarks top + \noexpand\or \the\toks4 \the\toks6 % 1: for @everyheadingmarks bottom + \noexpand\else \the\toks8 % 2: color marks + }% +} + +% \gettopheadingmarks, \getbottomheadingmarks, +% \getcolormarks - extract needed part of mark. +% +% \topmark doesn't work for the very first chapter (after the title +% page or the contents), so we use \firstmark there -- this gets us +% the mark with the chapter defs, unless the user sneaks in, e.g., +% @setcolor (or @url etc.) between @contents and the very first @chapter. +\def\gettopheadingmarks{% + \ifcase0\the\savedtopmark\fi + \ifx\thischapter\empty \ifcase0\firstmark\fi \fi +} +\def\getbottomheadingmarks{\ifcase1\botmark\fi} +\def\getcolormarks{\ifcase2\the\savedtopmark\fi} + +% Avoid "undefined control sequence" errors. +\def\currentchapterdefs{} +\def\currentsectiondefs{} +\def\prevchapterdefs{} +\def\prevsectiondefs{} +\def\currentcolordefs{} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\txipagewidth \newdimen\txipageheight + +% Main output routine. +% +\chardef\PAGE = 255 +\newtoks\defaultoutput +\defaultoutput = {\savetopmark\onepageout{\pagecontents\PAGE}} +\output=\expandafter{\the\defaultoutput} + +\newbox\headlinebox +\newbox\footlinebox + +% When outputting the double column layout for indices, an output routine +% is run several times, hiding the original value of \topmark. Hence, save +% \topmark at the beginning. +% +\newtoks\savedtopmark +\newif\iftopmarksaved +\topmarksavedtrue +\def\savetopmark{% + \iftopmarksaved\else + \global\savedtopmark=\expandafter{\topmark}% + \global\topmarksavedtrue + \fi +} + +% \onepageout takes a vbox as an argument. +% \shipout a vbox for a single page, adding an optional header, footer +% and footnote. This also causes index entries for this page to be written +% to the auxiliary files. +% +\def\onepageout#1{% + \hoffset=\normaloffset + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + \checkchapterpage + % + % Make the heading and footing. \makeheadline and \makefootline + % use the contents of \headline and \footline. + \def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}% + \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + \global\setbox\footlinebox = \vbox{\commonheadfootline \makefootline}% + % + {% + % Set context for writing to auxiliary files like index files. + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \atdummies % don't expand commands in the output. + \turnoffactive + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingyyy.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 24pt + \unvbox\footlinebox + \fi + % + }% + }% + \global\topmarksavedfalse + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} + +\newinsert\margin \dimen\margin=\maxdimen + +% Main part of page, including any footnotes +\def\pagebody#1{\vbox to\txipageheight{\boxmaxdepth=\maxdepth #1}} +{\catcode`\@ =11 +\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi +% marginal hacks, juha@viisa.uucp (Juha Takala) +\ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi +\dimen@=\dp#1\relax \unvbox#1\relax +\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi +\ifr@ggedbottom \kern-\dimen@ \vfil \fi} +} + +% Check if we are on the first page of a chapter. Used for printing headings. +\newif\ifchapterpage +\def\checkchapterpage{% + % Get the chapter that was current at the end of the last page + \ifcase1\the\savedtopmark\fi + \let\prevchaptername\thischaptername + % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \let\curchaptername\thischaptername + % + \ifx\curchaptername\prevchaptername + \chapterpagefalse + \else + \chapterpagetrue + \fi +} + +% Argument parsing + +% Parse an argument, then pass it to #1. The argument is the rest of +% the input line (except we remove a trailing comment). #1 should be a +% macro which expects an ordinary undelimited TeX argument. +% For example, \def\foo{\parsearg\fooxxx}. +% +\def\parsearg{\parseargusing{}} +\def\parseargusing#1#2{% + \def\argtorun{#2}% + \begingroup + \obeylines + \spaceisspace + #1% + \parseargline\empty% Insert the \empty token, see \finishparsearg below. +} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + \argremovecomment #1\comment\ArgTerm% + }% +} + +% First remove any @comment, then any @c comment. Pass the result on to +% \argremovespace. +\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argremovespace#1$ $\ArgTerm} +% \argremovec might leave us with trailing space, though; e.g., +% @end itemize @c foo +% Note that the argument cannot contain the TeX $, as its catcode is +% changed to \other when Texinfo source is read. +\def\argremovespace#1 $#2\ArgTerm{\finishparsearg#1$\ArgTerm} + +% If a _delimited_ argument is enclosed in braces, they get stripped; so +% to get _exactly_ the rest of the line, we had to prevent such situation. +% We prepended an \empty token at the very beginning and we expand it +% just before passing the control to \next. +% (But first, we have to remove the remaining $ or two.) +\def\finishparsearg#1$#2\ArgTerm{\expandafter\argtorun\expandafter{#1}} + + +% \parseargdef - define a command taking an argument on the line +% +% \parseargdef\foo{...} +% is roughly equivalent to +% \def\foo{\parsearg\Xfoo} +% \def\Xfoo#1{...} +\def\parseargdef#1{% + \expandafter \doparseargdef \csname\string#1\endcsname #1% +} +\def\doparseargdef#1#2{% + \def#2{\parsearg#1}% + \def#1##1% +} + +% Several utility definitions with active space: +{ + \obeyspaces + \gdef\obeyedspace{ } + + % Make each space character in the input produce a normal interword + % space in the output. Don't allow a line break at this space, as this + % is used only in environments like @example, where each line of input + % should produce a line of output anyway. + % + \gdef\sepspaces{\obeyspaces\let =\tie} + + % If an index command is used in an @example environment, any spaces + % therein should become regular spaces in the raw index file, not the + % expansion of \tie (\leavevmode \penalty \@M \ ). + \gdef\unsepspaces{\let =\space} +} + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +% Define the framework for environments in texinfo.tex. It's used like this: +% +% \envdef\foo{...} +% \def\Efoo{...} +% +% It's the responsibility of \envdef to insert \begingroup before the +% actual body; @end closes the group after calling \Efoo. \envdef also +% defines \thisenv, so the current environment is known; @end checks +% whether the environment name matches. The \checkenv macro can also be +% used to check whether the current environment is the one expected. +% +% Non-false conditionals (@iftex, @ifset) don't fit into this, so they +% are not treated as environments; they don't open a group. (The +% implementation of @end takes care not to call \endgroup in this +% special case.) + + +% At run-time, environments start with this: +\def\startenvironment#1{\begingroup\def\thisenv{#1}} +% initialize +\let\thisenv\empty + +% ... but they get defined via ``\envdef\foo{...}'': +\long\def\envdef#1#2{\def#1{\startenvironment#1#2}} +\long\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} + +% Check whether we're in the right environment: +\def\checkenv#1{% + \def\temp{#1}% + \ifx\thisenv\temp + \else + \badenverr + \fi +} + +% Environment mismatch, #1 expected: +\def\badenverr{% + \errhelp = \EMsimple + \errmessage{This command can appear only \inenvironment\temp, + not \inenvironment\thisenv}% +} +\def\inenvironment#1{% + \ifx#1\empty + outside of any environment% + \else + in environment \expandafter\string#1% + \fi +} + + +% @end foo calls \checkenv and executes the definition of \Efoo. +\parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else + % The general wording of \badenverr may not be ideal. + \expandafter\checkenv\csname#1\endcsname + \csname E#1\endcsname + \endgroup + \fi +} + +\newhelp\EMsimple{Press RETURN to continue.} + + +% Be sure we're in horizontal mode when doing a tie, since we make space +% equivalent to this in @example-like environments. Otherwise, a space +% at the beginning of a line will start with \penalty -- and +% since \penalty is valid in vertical mode, we'd end up putting the +% penalty on the vertical list instead of in the new paragraph. +{\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } +} + +% @: forces normal size whitespace following. +\def\:{\spacefactor=1000 } + +% @* forces a line break. +\def\*{\unskip\hfil\break\hbox{}\ignorespaces} + +% @/ allows a line break. +\let\/=\allowbreak + +% @- allows explicit insertion of hyphenation points +\def\-{\discretionary{\normaldash}{}{}}% + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=\endofsentencespacefactor\space} + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=\endofsentencespacefactor\space} + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=\endofsentencespacefactor\space} + +% @w prevents a word break. Without the \leavevmode, @w at the +% beginning of a paragraph, when TeX is still in vertical mode, would +% produce a whole line of output instead of starting the paragraph. +\def\w#1{\leavevmode\hbox{#1}} + +% @group ... @end group forces ... to be all on one page, by enclosing +% it in a TeX vbox. We use \vtop instead of \vbox to construct the box +% to keep its height that of a normal line. According to the rules for +% \topskip (p.114 of the TeXbook), the glue inserted is +% max (\topskip - \ht (first item), 0). If that height is large, +% therefore, no glue is inserted, and the space between the headline and +% the text is small, which looks bad. +% +% Another complication is that the group might be very large. This can +% cause the glue on the previous page to be unduly stretched, because it +% does not have much material. In this case, it's better to add an +% explicit \vfill so that the extra space is at the bottom. The +% threshold for doing this is if the group is more than \vfilllimit +% percent of a page (\vfilllimit can be changed inside of @tex). +% +\newbox\groupbox +\def\vfilllimit{0.7} +% +\envdef\group{% + \ifnum\catcode`\^^M=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + \startsavinginserts + % + \setbox\groupbox = \vtop\bgroup + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment +} +% +% The \vtop produces a box with normal height and large depth; thus, TeX puts +% \baselineskip glue before it, and (when the next line of text is done) +% \lineskip glue after it. Thus, space below is not quite equal to space +% above. But it's pretty close. +\def\Egroup{% + % To get correct interline space between the last line of the group + % and the first line afterwards, we have to propagate \prevdepth. + \endgraf % Not \par, as it may have been set to \lisppar. + \global\dimen1 = \prevdepth + \egroup % End the \vtop. + \addgroupbox + \prevdepth = \dimen1 + \checkinserts +} + +\def\addgroupbox{ + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \txipageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\txipageheight + \page + \fi + \fi + \box\groupbox +} + +% +% TeX puts in an \escapechar (i.e., `@') at the beginning of the help +% message, so this ends up printing `@group can only ...'. +% +\newhelp\groupinvalidhelp{% +group can only be used in environments such as @example,^^J% +where each line of input produces a line of output.} + +% @need space-in-mils +% forces a page break if there is not space-in-mils remaining. + +\newdimen\mil \mil=0.001in + +\parseargdef\need{% + % Ensure vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % If the @need value is less than one line space, it's useless. + \dimen0 = #1\mil + \dimen2 = \ht\strutbox + \advance\dimen2 by \dp\strutbox + \ifdim\dimen0 > \dimen2 + % This is similar to the 'needspace' module in LaTeX. + % The first penalty allows a break if the end of the page is + % not too far away. Following penalties and skips are discarded. + % Otherwise, require at least \dimen0 of vertical space. + % + % (We used to use a \vtop to reserve space, but this had spacing issues + % when followed by a section heading, as it was not a "discardable item". + % This also has the benefit of providing glue before the page break if + % there isn't enough space.) + \vskip0pt plus \dimen0 + \penalty-100 + \vskip0pt plus -\dimen0 + \vskip \dimen0 + \penalty9999 + \vskip -\dimen0 + \penalty0\relax % this hides the above glue from \safewhatsit and \dobreak + \fi +} + +% @br forces paragraph break (and is undocumented). + +\let\br = \par + +% @page forces the start of a new page. +% +\def\page{\par\vfill\supereject} + +% @exdent text.... +% outputs text on separate line in roman font, starting at standard page margin + +% This records the amount of indent in the innermost environment. +% That's how much \exdent should take out. +\newskip\exdentamount + +% This defn is used inside fill environments such as @defun. +\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} + +% This defn is used inside nofill environments such as @example. +\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + +% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current +% paragraph. For more general purposes, use the \margin insertion +% class. WHICH is `l' or `r'. Not documented, written for gawk manual. +% +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} +% +\def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% +}} +\def\inleftmargin{\doinmargin l} +\def\inrightmargin{\doinmargin r} +% +% @inmargin{TEXT [, RIGHT-TEXT]} +% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; +% else use TEXT for both). +% +\def\inmargin#1{\parseinmargin #1,,\finish} +\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp +} + +% @include FILE -- \input text of FILE. +% +\def\include{\parseargusing\filenamecatcodes\includezzz} +\def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% + \makevalueexpandable % we want to expand any @value in FILE. + \turnoffactive % and allow special characters in the expansion + \indexnofonts % Allow `@@' and other weird things in file names. + \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 + % definitions, etc. + \expandafter + }\temp + \popthisfilestack +} +\def\filenamecatcodes{% + \catcode`\\=\other + \catcode`~=\other + \catcode`^=\other + \catcode`_=\other + \catcode`|=\other + \catcode`<=\other + \catcode`>=\other + \catcode`+=\other + \catcode`-=\other + \catcode`\`=\other + \catcode`\'=\other +} + +\def\pushthisfilestack{% + \expandafter\pushthisfilestackX\popthisfilestack\StackTerm +} +\def\pushthisfilestackX{% + \expandafter\pushthisfilestackY\thisfile\StackTerm +} +\def\pushthisfilestackY #1\StackTerm #2\StackTerm {% + \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% +} + +\def\popthisfilestack{\errthisfilestackempty} +\def\errthisfilestackempty{\errmessage{Internal error: + the stack of filenames is empty.}} +% +\def\thisfile{} + +% @center line +% outputs that line, centered. +% +\parseargdef\center{% + \ifhmode + \let\centersub\centerH + \else + \let\centersub\centerV + \fi + \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 +}} +% +\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}% +} + +% @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\c{\begingroup \catcode`\^^M=\active% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% +\cxxx} +{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}} +% +\let\comment\c + +% @paragraphindent NCHARS +% We'll use ems for NCHARS, close enough. +% NCHARS can also be the word `asis' or `none'. +% We cannot feasibly implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\parseargdef\paragraphindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent +} + +% @exampleindent NCHARS +% We'll use ems for NCHARS like @paragraphindent. +% It seems @exampleindent asis isn't necessary, but +% I preserve it to make it similar to @paragraphindent. +\parseargdef\exampleindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi +} + +% @firstparagraphindent WORD +% If WORD is `none', then suppress indentation of the first paragraph +% after a section heading. If WORD is `insert', then do indent at such +% paragraphs. +% +% The paragraph indentation is suppressed or not by calling +% \suppressfirstparagraphindent, which the sectioning commands do. +% We switch the definition of this back and forth according to WORD. +% By default, we suppress indentation. +% +\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} +\def\insertword{insert} +% +\parseargdef\firstparagraphindent{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi +} + +% Here is how we actually suppress indentation. Redefine \everypar to +% \kern backwards by \parindent, and then reset itself to empty. +% +% We also make \indent itself not actually do anything until the next +% paragraph. +% +\gdef\dosuppressfirstparagraphindent{% + \gdef\indent {\restorefirstparagraphindent \indent}% + \gdef\noindent{\restorefirstparagraphindent \noindent}% + \global\everypar = {\kern -\parindent \restorefirstparagraphindent}% +} +% +\gdef\restorefirstparagraphindent{% + \global\let\indent = \ptexindent + \global\let\noindent = \ptexnoindent + \global\everypar = {}% +} + +% leave vertical mode without cancelling any first paragraph indent +\gdef\imageindent{% + \toks0=\everypar + \everypar={}% + \ptexnoindent + \global\everypar=\toks0 +} + + +% @refill is a no-op. +\let\refill=\relax + +% @setfilename INFO-FILENAME - ignored +\let\setfilename=\comment + +% @bye. +\outer\def\bye{% + \chappager\pagelabels + % possibly set in \printindex + \ifx\byeerror\relax\else\errmessage{\byeerror}\fi + \tracingstats=1\ptexend} + +% set in \donoderef below, but we need to define this here so that +% conditionals balance inside the large \ifpdf ... \fi blocks below. +\newif\ifnodeseen +\nodeseenfalse + +\message{pdf,} +% adobe `portable' document format +\newcount\tempnum +\newcount\lnkcount +\newtoks\filename +\newcount\filenamelength +\newcount\pgn +\newtoks\toksA +\newtoks\toksB +\newtoks\toksC +\newtoks\toksD +\newbox\boxA +\newbox\boxB +\newcount\countA +\newif\ifpdf +\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 being undefined. +\ifx\pdfoutput\thisisundefined +\else + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi +\fi + +\newif\ifxetex +\ifx\XeTeXrevision\thisisundefined\else + \xetextrue +\fi + +\newif\ifluatex +\ifx\luatexversion\thisisundefined\else + \luatextrue + \ifnum\luatexversion>84 + \pdftrue + \fi +\fi + +\newif\ifpdforxetex +\ifpdf + \pdforxetextrue +\fi +\ifxetex + \pdforxetextrue +\fi + + + +% Whether to use non-ASCII bytes in internal link targets. Presently this +% is almost always on. +\newif\iftxiuseunicodedestname +\txiuseunicodedestnametrue + +% +% For LuaTeX +% + +\ifluatex + % Use Unicode destination names + \txiuseunicodedestnametrue + % Escape PDF strings with converting UTF-16 from UTF-8 + \begingroup + \catcode`\%=12 + \directlua{ + function UTF16oct(str) + tex.sprint(string.char(0x5c) .. '376' .. string.char(0x5c) .. '377') + for c in string.utfvalues(str) do + if c < 0x10000 then + tex.sprint( + string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o', + math.floor(c / 256), math.floor(c % 256))) + else + c = c - 0x10000 + local c_hi = c / 1024 + 0xd800 + local c_lo = c % 1024 + 0xdc00 + tex.sprint( + string.format(string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o' .. + string.char(0x5c) .. string.char(0x25) .. '03o', + math.floor(c_hi / 256), math.floor(c_hi % 256), + math.floor(c_lo / 256), math.floor(c_lo % 256))) + end + end + end + } + \endgroup + \def\pdfescapestrutfsixteen#1{\directlua{UTF16oct('\luaescapestring{#1}')}} + % Escape PDF strings without converting + \begingroup + \directlua{ + function PDFescstr(str) + for c in string.bytes(str) do + if c <= 0x20 or c >= 0x80 or c == 0x28 or c == 0x29 or c == 0x5c then + tex.sprint(-2, + string.format(string.char(0x5c) .. string.char(0x25) .. '03o', + c)) + else + tex.sprint(-2, string.char(c)) + end + end + end + } + % The -2 in the arguments here gives all the input to TeX catcode 12 + % (other) or 10 (space), preventing undefined control sequence errors. See + % https://lists.gnu.org/archive/html/bug-texinfo/2019-08/msg00031.html + % + \endgroup + \def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}} + \ifpdf + % For LuaTeX >= 0.85 + \def\pdfdest{\pdfextension dest} + \let\pdfoutput\outputmode + \def\pdfliteral{\pdfextension literal} + \def\pdfcatalog{\pdfextension catalog} + \def\pdftexversion{\numexpr\pdffeedback version\relax} + \let\pdfximage\saveimageresource + \let\pdfrefximage\useimageresource + \let\pdflastximage\lastsavedimageresourceindex + \def\pdfendlink{\pdfextension endlink\relax} + \def\pdfoutline{\pdfextension outline} + \def\pdfstartlink{\pdfextension startlink} + \def\pdffontattr{\pdfextension fontattr} + \def\pdfobj{\pdfextension obj} + \def\pdflastobj{\numexpr\pdffeedback lastobj\relax} + \let\pdfpagewidth\pagewidth + \let\pdfpageheight\pageheight + \edef\pdfhorigin{\pdfvariable horigin} + \edef\pdfvorigin{\pdfvariable vorigin} + \fi +\fi + + +% Output page labels information. +% See PDF reference v.1.7 p.594, section 8.3.1. +% Page label ranges must be increasing. +\ifpdf +\def\pagelabels{% + \def\title{0 << /P (T-) /S /D >>}% + % + % support @contents at very end of document + \ifnum\contentsendcount=\pagecount + \ifnum\arabiccount<\romancount + \pdfcatalog{/PageLabels << /Nums + [\title + \the\arabiccount << /S /D >> + \the\romancount << /S /r >> + ] >> }\relax + \fi + % no contents in document + \else\ifnum\contentsendcount=0 + \pdfcatalog{/PageLabels << /Nums + [\title + \the\arabiccount << /S /D >> + ] >> }\relax + \else + \pdfcatalog{/PageLabels << /Nums + [\title + \the\romancount << /S /r >> + \the\contentsendcount << /S /D >> + ] >> }\relax + \fi\fi +} +\else + \let\pagelabels\relax +\fi + +\newcount\pagecount \pagecount=0 +\newcount\romancount \romancount=0 +\newcount\arabiccount \arabiccount=0 +\newcount\contentsendcount \contentsendcount=0 + +\ifpdf + \let\ptxadvancepageno\advancepageno + \def\advancepageno{% + \ptxadvancepageno\global\advance\pagecount by 1 + } +\fi + + +% PDF uses PostScript string constants for the names of xref targets, +% for display in the outlines, and in other places. Thus, we have to +% double any backslashes. Otherwise, a name like "\node" will be +% interpreted as a newline (\n), followed by o, d, e. Not good. +% +% 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. + \xdef#1{#1}% + \else + % The expandable \pdfescapestring primitive escapes parentheses, + % backslashes, and other special chars. + \xdef#1{\pdfescapestring{#1}}% + \fi +} +\def\txiescapepdfutfsixteen#1{% + \ifx\pdfescapestrutfsixteen\thisisundefined + % No UTF-16 converting macro available. + \txiescapepdf{#1}% + \else + \xdef#1{\pdfescapestrutfsixteen{#1}}% + \fi +} + +\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images +with PDF output, and none of those formats could be found. (.eps cannot +be supported due to the design of the PDF format; use regular TeX (DVI +output) for that.)} + +% definitions for pdftex or luatex with pdf output +\ifpdf + % Strings in PDF outlines can either be ASCII, or encoded in UTF-16BE + % with BOM. Unfortunately there is no simple way with pdftex to output + % UTF-16, so we have to do some quite convoluted expansion games if we + % find the string contains a non-ASCII codepoint if we want these to + % display correctly. We generated the UTF-16 sequences in + % \DeclareUnicodeCharacter and we access them here. + % + \def\defpdfoutlinetextunicode#1{% + \def\pdfoutlinetext{#1}% + % + % Make UTF-8 sequences expand to UTF-16 definitions. + \passthroughcharsfalse \utfbytespdftrue + \utfviiidefinedwarningfalse + % + % Completely expand, eliminating any control sequences such as \code, + % leaving only possibly \utfbytes. + \let\utfbytes\relax + \pdfaccentliterals + \xdef\pdfoutlinetextchecked{#1}% + \checkutfbytes + }% + % Check if \utfbytes occurs in expansion. + \def\checkutfbytes{% + \expandafter\checkutfbytesz\pdfoutlinetextchecked\utfbytes\finish + }% + \def\checkutfbytesz#1\utfbytes#2\finish{% + \def\after{#2}% + \ifx\after\empty + % No further action needed. Output ASCII string as-is, as converting + % to UTF-16 is somewhat slow (and uses more space). + \global\let\pdfoutlinetext\pdfoutlinetextchecked + \else + \passthroughcharstrue % pass UTF-8 sequences unaltered + \xdef\pdfoutlinetext{\pdfoutlinetext}% + \expandafter\expandutfsixteen\expandafter{\pdfoutlinetext}\pdfoutlinetext + \fi + }% + % + \catcode2=1 % begin-group character + \catcode3=2 % end-group character + % + % argument should be pure UTF-8 with no control sequences. convert to + % UTF-16BE by inserting null bytes before bytes < 128 and expanding + % UTF-8 multibyte sequences to saved UTF-16BE sequences. + \def\expandutfsixteen#1#2{% + \bgroup \asciitounicode + \passthroughcharsfalse + \let\utfbytes\asis + % + % for Byte Order Mark (BOM) + \catcode"FE=12 + \catcode"FF=12 + % + % we want to treat { and } in #1 as any other ASCII bytes. however, + % we need grouping characters for \scantokens and definitions/assignments, + % so define alternative grouping characters using control characters + % that are unlikely to occur. + % this does not affect 0x02 or 0x03 bytes arising from expansion as + % these are tokens with different catcodes. + \catcode"02=1 % begin-group character + \catcode"03=2 % end-group character + % + \expandafter\xdef\expandafter#2\scantokens{% + ^^02^^fe^^ff#1^^03}% + % NB we need \scantokens to provide both the open and close group tokens + % for \xdef otherwise there is an e-TeX error "File ended while + % scanning definition of..." + % NB \scantokens is a e-TeX command which is assumed to be provided by + % pdfTeX. + % + \egroup + }% + % + \catcode2=12 \catcode3=12 % defaults + % + % Color support + % + % rg sets the color for filling (usual text, etc.); + % RG sets the color for stroking (thin rules, e.g., normal _'s). + \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} + % + % PDF outline support + % + \pdfcatalog{/PageMode /UseOutlines} + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\dopdfimage#1#2#3{% + \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % 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.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{JPG}% + \fi + \else \gdef\pdfimgext{jpeg}% + \fi + \else \gdef\pdfimgext{jpg}% + \fi + \else \gdef\pdfimgext{png}% + \fi + \else \gdef\pdfimgext{PDF}% + \fi + \else \gdef\pdfimgext{pdf}% + \fi + \closein 1 + \endgroup + % + % without \immediate, ancient pdftex seg faults when the same image is + % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) + \ifnum\pdftexversion < 14 + \immediate\pdfimage + \else + \immediate\pdfximage + \fi + \ifdim \wd0 >0pt width \pdfimagewidth \fi + \ifdim \wd2 >0pt height \pdfimageheight \fi + \ifnum\pdftexversion<13 + #1.\pdfimgext + \else + {#1.\pdfimgext}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + % + \def\setpdfdestname#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \makevalueexpandable + \turnoffactive + \iftxiuseunicodedestname + \ifx \declaredencoding \latone + % Pass through Latin-1 characters. + % LuaTeX with byte wise I/O converts Latin-1 characters to Unicode. + \else + \ifx \declaredencoding \utfeight + % Pass through Unicode characters. + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \fi + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \def\pdfdestname{#1}% + \txiescapepdf\pdfdestname + }} + % + \def\setpdfoutlinetext#1{{% + \indexnofonts + \makevalueexpandable + \turnoffactive + \ifx \declaredencoding \latone + % The PDF format can use an extended form of Latin-1 in bookmark + % strings. See Appendix D of the PDF Reference, Sixth Edition, for + % the "PDFDocEncoding". + \passthroughcharstrue + % Pass through Latin-1 characters. + % LuaTeX: Convert to Unicode + % pdfTeX: Use Latin-1 as PDFDocEncoding + \def\pdfoutlinetext{#1}% + \else + \ifx \declaredencoding \utfeight + \ifluatex + % For LuaTeX with UTF-8. + % Pass through Unicode characters for title texts. + \passthroughcharstrue + \pdfaccentliterals + \xdef\pdfoutlinetext{#1}% + \else + % For pdfTeX with UTF-8. + \defpdfoutlinetextunicode{#1}% + \fi + \else + % For non-Latin-1 or non-UTF-8 encodings. + % Use ASCII approximations. + \passthroughcharsfalse + \def\pdfoutlinetext{#1}% + \fi + \fi + % LuaTeX: Convert to UTF-16 + % pdfTeX: Use Latin-1 as PDFDocEncoding + \txiescapepdfutfsixteen\pdfoutlinetext + }} + % + \def\pdfmkdest#1{% + \setpdfdestname{#1}% + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + } + % + % Adding outlines to PDF; macros for calculating structure of outlines + % come from Petr Olsak + \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% + \else \csname#1\endcsname \fi} + \def\advancenumber#1{\tempnum=\expnumber{#1}\relax + \advance\tempnum by 1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + % + % #1 is the section text, which is what will be displayed in the + % outline by the pdf viewer. #2 is the pdf expression for the number + % of subentries (or empty, for subsubsections). #3 is the node text, + % which might be empty if this toc entry had no corresponding node. + % #4 is the page number + % + \def\dopdfoutline#1#2#3#4{% + % Generate a link to the node text if that exists; else, use the + % page number. We could generate a destination for the section + % text in the case where a section has no node, but it doesn't + % seem worth the trouble, since most documents are normally structured. + \setpdfoutlinetext{#1} + \setpdfdestname{#3} + \ifx\pdfdestname\empty + \def\pdfdestname{#4}% + \fi + % + \pdfoutline goto name{\pdfdestname}#2{\pdfoutlinetext}% + } + % + \def\pdfmakeoutlines{% + \begingroup + % Read toc silently, to get counts of subentries for \pdfoutline. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% + \def\thischapnum{##2}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + \def\indexlastsec{chap\thischapnum}% + }% + \def\numsecentry##1##2##3##4{% + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \def\thissubsecnum{0}% + \def\indexlastsec{sec\thissecnum}% + }% + \def\numsubsecentry##1##2##3##4{% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% + \def\indexlastsec{subsec\thissecnum}% + }% + \def\numsubsubsecentry##1##2##3##4{% + \advancenumber{subsec\thissubsecnum}% + }% + \def\thischapnum{0}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + \let\indexlastsec\empty + % + % Index initials are subsidiary to whatever sectioning command just + % occurred, usually @appendix or @chapter but occasionally a lower level. + \def\idxinitialentry##1##2##3##4{% + \expandafter\advancenumber\expandafter{\indexlastsec}% + }% + % use \def rather than \let here because we redefine \chapentry et + % al. a second time, below. + \def\appentry{\numchapentry}% + \def\appsecentry{\numsecentry}% + \def\appsubsecentry{\numsubsecentry}% + \def\appsubsubsecentry{\numsubsubsecentry}% + \def\unnchapentry{\numchapentry}% + \def\unnsecentry{\numsecentry}% + \def\unnsubsecentry{\numsubsecentry}% + \def\unnsubsubsecentry{\numsubsubsecentry}% + % + \readdatafile{toc}% + % + % Read toc second time, this time actually producing the outlines. + % The `-' means take the \expnumber as the absolute number of + % subentries, which we calculated on our first read of the .toc above. + % + % We use the node names as the destinations. + % + % Currently we prefix the section name with the section number + % for chapter and appendix headings only in order to avoid too much + % horizontal space being required in the PDF viewer. + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##2 ##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\unnchapentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% count is always zero + \dopdfoutline{##1}{}{##3}{##4}}% + \def\idxinitialentry##1##2##3##4{% + \dopdfoutline{##1}{}{idx.##1.##2}{##4}}% + % + \ifnodeseen\else \dopdfoutlinecontents \fi % for @contents at beginning + \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\relax + \ifnodeseen \dopdfoutlinecontents \fi % for @contents at end + \endgroup + } + \def\dopdfoutlinecontents{% + \expandafter\dopdfoutline\expandafter{\putwordTOC}{}{txi.CONTENTS}{}% + } + {\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 + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \nextsp} + \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 + \let \startlink \pdfstartlink + \fi + \def\pdfmakeurl#1{% + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + }% + \def\endlink{\setcolor{\maincolor}\pdfendlink} + % + \def\pdflink#1{\pdflinkpage{#1}{#1}}% + \def\pdflinkpage#1#2{% + \startlink attr{/Border [0 0 0]} goto name{#1} + \setcolor{\linkcolor}#2\endlink} +\else + % non-pdf mode + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\setcolor = \gobble + \let\pdfsetcolor = \gobble + \let\pdfmakeoutlines = \relax +\fi + +% +% For XeTeX +% +\ifxetex + % + % XeTeX version check + % + \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99996}>-1 + % TeX Live 2016 contains XeTeX 0.99996 and xdvipdfmx 20160307. + % It can use the `dvipdfmx:config' special (from TeX Live SVN r40941). + % For avoiding PDF destination name replacement, we use this special + % instead of xdvipdfmx's command line option `-C 0x0010'. + \special{dvipdfmx:config C 0x0010} + % XeTeX 0.99995+ comes with xdvipdfmx 20160307+. + % It can handle Unicode destination names for PDF. + \txiuseunicodedestnametrue + \else + % XeTeX < 0.99996 (TeX Live < 2016) cannot use the + % `dvipdfmx:config' special. + % So for avoiding PDF destination name replacement, + % xdvipdfmx's command line option `-C 0x0010' is necessary. + % + % XeTeX < 0.99995 can not handle Unicode destination names for PDF + % because xdvipdfmx 20150315 has a UTF-16 conversion issue. + % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). + \txiuseunicodedestnamefalse + \fi + % + % Color support + \def\pdfsetcolor#1{\special{pdf:scolor [#1]}} + % + % PDF outline support + % + % Emulate pdfTeX primitive + \def\pdfdest name#1 xyz{% + \special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}% + } + % + \def\setpdfdestname#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \makevalueexpandable + \turnoffactive + \iftxiuseunicodedestname + % Pass through Unicode characters. + \else + % Use ASCII approximations in destination names. + \passthroughcharsfalse + \fi + \def\pdfdestname{#1}% + \txiescapepdf\pdfdestname + }} + % + \def\setpdfoutlinetext#1{{% + \turnoffactive + % Always use Unicode characters in title texts. + \def\pdfoutlinetext{#1}% + % For XeTeX, xdvipdfmx converts to UTF-16. + % So we do not convert. + \txiescapepdf\pdfoutlinetext + }} + % + \def\pdfmkdest#1{% + \setpdfdestname{#1}% + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + } + % + \def\dopdfoutline#1#2#3#4{% + \setpdfoutlinetext{#1} + \setpdfdestname{#3} + \ifx\pdfdestname\empty + \def\pdfdestname{#4}% + \fi + % + \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A + << /S /GoTo /D (\pdfdestname) >> >> }% + } + % + \def\pdfmakeoutlines{% + \begingroup + % For XeTeX, counts of subentries are not necessary. + % Therefore, we read toc only once. + % + % We use node names as destinations. + % + % Currently we prefix the section name with the section number + % for chapter and appendix headings only in order to avoid too much + % horizontal space being required in the PDF viewer. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##2 ##1}{1}{##3}{##4}% + \def\indexseclevel{2}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{2}{##3}{##4}% + \def\indexseclevel{3}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{3}{##3}{##4}% + \def\indexseclevel{4}}% + \def\numsubsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{4}{##3}{##4}% + \def\indexseclevel{5}}% + % + \def\idxinitialentry##1##2##3##4{% + \dopdfoutline{##1}{\indexseclevel}{idx.##1.##2}{##4}}% + % + \let\appentry\numchapentry% + \let\appsecentry\numsecentry% + \let\appsubsecentry\numsubsecentry% + \let\appsubsubsecentry\numsubsubsecentry% + \def\unnchapentry##1##2##3##4{% + \dopdfoutline{##1}{1}{##3}{##4}}% + \let\unnsecentry\numsecentry% + \let\unnsubsecentry\numsubsecentry% + \let\unnsubsubsecentry\numsubsubsecentry% + % + % For XeTeX, xdvipdfmx converts strings to UTF-16. + % Therefore, the encoding and the language may not be considered. + % + \indexnofonts + \pdfaccentliterals + \ifnodeseen\else \dopdfoutlinecontents \fi % for @contents at beginning + % + \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 + \xetexpreauxfile + \input \tocreadfilename\relax + \xetexpostauxfile + \ifnodeseen \dopdfoutlinecontents \fi % for @contents at end + \endgroup + } + \def\dopdfoutlinecontents{% + \expandafter\dopdfoutline\expandafter + {\putwordTOC}{1}{txi.CONTENTS}{txi.CONTENTS}% + } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] + + \special{pdf:docview << /PageMode /UseOutlines >> } + % ``\special{pdf:tounicode ...}'' is not necessary + % because xdvipdfmx converts strings from UTF-8 to UTF-16 without it. + % However, due to a UTF-16 conversion issue of xdvipdfmx 20150315, + % ``\special{pdf:dest ...}'' cannot handle non-ASCII strings. + % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753). + % + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \nextsp} + \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 + } + \def\pdfmakeurl#1{% + \special{pdf:bann << /Border [0 0 0] + /Subtype /Link /A << /S /URI /URI (#1) >> >>}% + } + \def\endlink{\setcolor{\maincolor}\special{pdf:eann}} + \def\pdflink#1{\pdflinkpage{#1}{#1}}% + \def\pdflinkpage#1#2{% + \special{pdf:bann << /Border [0 0 0] + /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}% + \setcolor{\linkcolor}#2\endlink} + % + % + % @image support + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\doxeteximage#1#2#3{% + \def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % XeTeX (and the PDF format) supports .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\xeteximgext=\empty + \begingroup + \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 + \errmessage{Could not find image file #1 for XeTeX}% + \else \gdef\xeteximgext{JPG}% + \fi + \else \gdef\xeteximgext{jpeg}% + \fi + \else \gdef\xeteximgext{jpg}% + \fi + \else \gdef\xeteximgext{png}% + \fi + \else \gdef\xeteximgext{PDF}% + \fi + \else \gdef\xeteximgext{pdf}% + \fi + \closein 1 + \endgroup + % + % Putting an \hbox around the image can prevent an over-long line + % after the image. + \hbox\bgroup + \def\xetexpdfext{pdf}% + \ifx\xeteximgext\xetexpdfext + \XeTeXpdffile "#1".\xeteximgext "" + \else + \def\xetexpdfext{PDF}% + \ifx\xeteximgext\xetexpdfext + \XeTeXpdffile "#1".\xeteximgext "" + \else + \XeTeXpicfile "#1".\xeteximgext "" + \fi + \fi + \ifdim \wd0 >0pt width \xeteximagewidth \fi + \ifdim \wd2 >0pt height \xeteximageheight \fi \relax + \egroup + } +\fi + +% common definitions and code for pdftex, luatex and xetex +\ifpdforxetex + % The dark red here is dark enough to print on paper as + % nearly black, but still distinguishable for online viewing. We use + % black by default, though. + \def\rgbDarkRed{0.50 0.09 0.12} + \def\rgbBlack{0 0 0} + % + % Set color, and create a mark which defines \thiscolor accordingly, + % so that \makeheadline knows which color to restore. + \def\curcolor{0 0 0}% + \def\setcolor#1{% + \ifx#1\curcolor\else + \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}% + \domark + \pdfsetcolor{#1}% + \xdef\curcolor{#1}% + \fi + } + % + \let\maincolor\rgbBlack + \pdfsetcolor{\maincolor} + \edef\thiscolor{\maincolor} + \def\currentcolordefs{} + % + \def\makefootline{% + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}% + } + % + \def\makeheadline{% + \vbox to 0pt{% + \vskip-22.5pt + \line{% + \vbox to8.5pt{}% + % Extract \thiscolor definition from the marks. + \getcolormarks + % Typeset the headline with \maincolor, then restore the color. + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% + }% + \vss + }% + \nointerlineskip + } + % + % by default, use black for everything. + \def\urlcolor{\rgbBlack} + \let\linkcolor\rgbBlack + % + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % + \leavevmode\setcolor{\urlcolor}% + \pdfmakeurl{#1}% + \endgroup} + % + % \pdfgettoks - Surround page numbers in #1 with @pdflink. #1 may + % be a simple number, or a list of numbers in the case of an index + % entry. + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\fi + +\ifpdforxetex + % for pdftex. + {\catcode`^^cc=13 + \gdef\pdfaccentliteralsutfviii{% + % For PDF outline only. Unicode combining accents follow the + % character they modify. Note we need at least the first byte + % of the UTF-8 sequences to have an active catcode to allow the + % definitions to do their magic. + \def\"##1{##1^^cc^^88}% U+0308 + \def\'##1{##1^^cc^^81}% U+0301 + \def\,##1{##1^^cc^^a7}% U+0327 + \def\=##1{##1^^cc^^85}% U+0305 + \def\^##1{##1^^cc^^82}% U+0302 + \def\`##1{##1^^cc^^80}% U+0300 + \def\~##1{##1^^cc^^83}% U+0303 + \def\dotaccent##1{##1^^cc^^87}% U+0307 + \def\H##1{##1^^cc^^8b}% U+030B + \def\ogonek##1{##1^^cc^^a8}% U+0328 + \def\ringaccent##1{##1^^cc^^8a}% U+030A + \def\u##1{##1^^cc^^8c}% U+0306 + \def\ubaraccent##1{##1^^cc^^b1}% U+0331 + \def\udotaccent##1{##1^^cc^^a3}% U+0323 + \def\v##1{##1^^cc^^8c}% U+030C + % this definition of @tieaccent will only work with exactly two characters + % in argument as we need to insert the combining character between them. + \def\tieaccent##1{\tieaccentz##1}% + \def\tieaccentz##1##2{##1^^cd^^a1##2} % U+0361 + }}% + % + % for xetex and luatex, which both support extended ^^^^ escapes and + % process the Unicode codepoint as a single token. + \gdef\pdfaccentliteralsnative{% + \def\"##1{##1^^^^0308}% + \def\'##1{##1^^^^0301}% + \def\,##1{##1^^^^0327}% + \def\=##1{##1^^^^0305}% + \def\^##1{##1^^^^0302}% + \def\`##1{##1^^^^0300}% + \def\~##1{##1^^^^0303}% + \def\dotaccent##1{##1^^^^0307}% + \def\H##1{##1^^^^030b}% + \def\ogonek##1{##1^^^^0328}% + \def\ringaccent##1{##1^^^^030a}% + \def\u##1{##1^^^^0306}% + \def\ubaraccent##1{##1^^^^0331}% + \def\udotaccent##1{##1^^^^0323}% + \def\v##1{##1^^^^030c}% + \def\tieaccent##1{\tieaccentz##1}% + \def\tieaccentz##1##2{##1^^^^0361##2} % U+0361 + }% + % + % use the appropriate definition + \ifluatex + \let\pdfaccentliterals\pdfaccentliteralsnative + \else + \ifxetex + \let\pdfaccentliterals\pdfaccentliteralsnative + \else + \let\pdfaccentliterals\pdfaccentliteralsutfviii + \fi + \fi +\fi + +% +\message{fonts,} + +% 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. +% +\def\lineskipfactor{.08333} +\def\strutheightpercent{.70833} +\def\strutdepthpercent {.29167} +% +% 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 + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% +} + +% PDF CMaps. See also LaTeX's t1.cmap. +% +% do nothing with this by default. +\expandafter\let\csname cmapOT1\endcsname\gobble +\expandafter\let\csname cmapOT1IT\endcsname\gobble +\expandafter\let\csname cmapOT1TT\endcsname\gobble + +% if we are producing pdf, and we have \pdffontattr, then define cmaps. +% (\pdffontattr was introduced many years ago, but people still run +% older pdftex's; it's easy to conditionalize, so we do.) +\ifpdf \ifx\pdffontattr\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 +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1-0) +%%Title: (TeX-OT1-0 TeX OT1 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1) +/Supplement 0 +>> def +/CMapName /TeX-OT1-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<23> <26> <0023> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +40 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1IT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1IT-0) +%%Title: (TeX-OT1IT-0 TeX OT1IT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1IT) +/Supplement 0 +>> def +/CMapName /TeX-OT1IT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<25> <26> <0025> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +42 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<23> <0023> +<24> <00A3> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1IT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1TT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1TT-0) +%%Title: (TeX-OT1TT-0 TeX OT1TT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1TT) +/Supplement 0 +>> def +/CMapName /TeX-OT1TT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +5 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<21> <26> <0021> +<28> <5F> <0028> +<61> <7E> <0061> +endbfrange +32 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <2191> +<0C> <2193> +<0D> <0027> +<0E> <00A1> +<0F> <00BF> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<20> <2423> +<27> <2019> +<60> <2018> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1TT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +\fi\fi +% +% This is what gets called when #5 of \setfont is empty. +\let\cmap\gobble +% +% (end of cmaps) + + +% 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 (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% + \ifx#2\ttshape\hyphenchar#1=-1 \fi + \ifx#2\ttbshape\hyphenchar#1=-1 \fi + \ifx#2\ttslshape\hyphenchar#1=-1 \fi +} + +% Use cm as the default font prefix. +% To specify the font prefix, you must define \fontprefix +% before you read in texinfo.tex. +\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\bfshape{b} +\def\bxshape{bx} +\def\ttshape{tt} +\def\ttbshape{tt} +\def\ttslshape{sltt} +\def\itshape{ti} +\def\itbshape{bxti} +\def\slshape{sl} +\def\slbshape{bxsl} +\def\sfshape{ss} +\def\sfbshape{ss} +\def\scshape{csc} +\def\scbshape{csc} + +% Definitions for a main text size of 11pt. (The default in Texinfo.) +% +\def\definetextfontsizexi{% +% Text fonts (11.2pt, magstep1). +\def\textnominalsize{11pt} +\edef\mainmagstep{\magstephalf} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1095} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstep1}{OT1} +\setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defsl\slshape{10}{\magstep1}{OT1} +\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} +\def\df{\let\ttfont=\deftt \let\bffont = \defbf +\let\ttslfont=\defttsl \let\slfont=\defsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for math mode superscripts (7pt). +\def\sevennominalsize{7pt} +\setfont\sevenrm\rmshape{7}{1000}{OT1} +\setfont\seventt\ttshape{10}{700}{OT1TT} +\setfont\sevenbf\bfshape{10}{700}{OT1} +\setfont\sevenit\itshape{7}{1000}{OT1IT} +\setfont\sevensl\slshape{10}{700}{OT1} +\setfont\sevensf\sfshape{10}{700}{OT1} +\setfont\sevensc\scshape{10}{700}{OT1} +\setfont\seventtsl\ttslshape{10}{700}{OT1TT} +\font\seveni=cmmi7 +\font\sevensy=cmsy7 +\def\sevenecsize{0700} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter (and unnumbered) fonts (17.28pt). +\def\chapnominalsize{17pt} +\setfont\chaprm\rmbshape{12}{\magstep2}{OT1} +\setfont\chapit\itbshape{10}{\magstep3}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep3}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} +\setfont\chapsf\sfbshape{17}{1000}{OT1} +\let\chapbf=\chaprm +\setfont\chapsc\scbshape{10}{\magstep3}{OT1} +\font\chapi=cmmi12 scaled \magstep2 +\font\chapsy=cmsy10 scaled \magstep3 +\def\chapecsize{1728} + +% Section fonts (14.4pt). +\def\secnominalsize{14pt} +\setfont\secrm\rmbshape{12}{\magstep1}{OT1} +\setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1} +\setfont\secit\itbshape{10}{\magstep2}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep2}{OT1} +\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\secsf\sfbshape{12}{\magstep1}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2}{OT1} +\font\seci=cmmi12 scaled \magstep1 +\font\secsy=cmsy10 scaled \magstep2 +\def\sececsize{1440} + +% Subsection fonts (13.15pt). +\def\ssecnominalsize{13pt} +\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} +\setfont\ssecit\itbshape{10}{1315}{OT1IT} +\setfont\ssecsl\slbshape{10}{1315}{OT1} +\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} +\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1315}{OT1} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 +\def\ssececsize{1200} + +% Reduced fonts for @acronym in text (10pt). +\def\reducednominalsize{10pt} +\setfont\reducedrm\rmshape{10}{1000}{OT1} +\setfont\reducedtt\ttshape{10}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{1000}{OT1} +\setfont\reducedit\itshape{10}{1000}{OT1IT} +\setfont\reducedsl\slshape{10}{1000}{OT1} +\setfont\reducedsf\sfshape{10}{1000}{OT1} +\setfont\reducedsc\scshape{10}{1000}{OT1} +\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} +\font\reducedi=cmmi10 +\font\reducedsy=cmsy10 +\def\reducedecsize{1000} + +\textleading = 13.2pt % line spacing for 11pt CM +\textfonts % reset the current fonts +\rm +} % end of 11pt text font size definitions, \definetextfontsizexi + + +% Definitions to make the main text be 10pt Computer Modern, with +% section, chapter, etc., sizes following suit. This is for the GNU +% Press printing of the Emacs 22 manual. Maybe other manuals in the +% future. Used with @smallbook, which sets the leading to 12pt. +% +\def\definetextfontsizex{% +% Text fonts (10pt). +\def\textnominalsize{10pt} +\edef\mainmagstep{1000} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1000} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstephalf}{OT1} +\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defsl\slshape{10}{\magstephalf}{OT1} +\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} +\def\df{\let\ttfont=\deftt \let\bffont = \defbf +\let\slfont=\defsl \let\ttslfont=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for math mode superscripts (7pt). +\def\sevennominalsize{7pt} +\setfont\sevenrm\rmshape{7}{1000}{OT1} +\setfont\seventt\ttshape{10}{700}{OT1TT} +\setfont\sevenbf\bfshape{10}{700}{OT1} +\setfont\sevenit\itshape{7}{1000}{OT1IT} +\setfont\sevensl\slshape{10}{700}{OT1} +\setfont\sevensf\sfshape{10}{700}{OT1} +\setfont\sevensc\scshape{10}{700}{OT1} +\setfont\seventtsl\ttslshape{10}{700}{OT1TT} +\font\seveni=cmmi7 +\font\sevensy=cmsy7 +\def\sevenecsize{0700} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter fonts (14.4pt). +\def\chapnominalsize{14pt} +\setfont\chaprm\rmbshape{12}{\magstep1}{OT1} +\setfont\chapit\itbshape{10}{\magstep2}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep2}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\chapsf\sfbshape{12}{\magstep1}{OT1} +\let\chapbf\chaprm +\setfont\chapsc\scbshape{10}{\magstep2}{OT1} +\font\chapi=cmmi12 scaled \magstep1 +\font\chapsy=cmsy10 scaled \magstep2 +\def\chapecsize{1440} + +% Section fonts (12pt). +\def\secnominalsize{12pt} +\setfont\secrm\rmbshape{12}{1000}{OT1} +\setfont\secit\itbshape{10}{\magstep1}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep1}{OT1} +\setfont\sectt\ttbshape{12}{1000}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} +\setfont\secsf\sfbshape{12}{1000}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep1}{OT1} +\font\seci=cmmi12 +\font\secsy=cmsy10 scaled \magstep1 +\def\sececsize{1200} + +% Subsection fonts (10pt). +\def\ssecnominalsize{10pt} +\setfont\ssecrm\rmbshape{10}{1000}{OT1} +\setfont\ssecit\itbshape{10}{1000}{OT1IT} +\setfont\ssecsl\slbshape{10}{1000}{OT1} +\setfont\ssectt\ttbshape{10}{1000}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} +\setfont\ssecsf\sfbshape{10}{1000}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1000}{OT1} +\font\sseci=cmmi10 +\font\ssecsy=cmsy10 +\def\ssececsize{1000} + +% Reduced fonts for @acronym in text (9pt). +\def\reducednominalsize{9pt} +\setfont\reducedrm\rmshape{9}{1000}{OT1} +\setfont\reducedtt\ttshape{9}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{900}{OT1} +\setfont\reducedit\itshape{9}{1000}{OT1IT} +\setfont\reducedsl\slshape{9}{1000}{OT1} +\setfont\reducedsf\sfshape{9}{1000}{OT1} +\setfont\reducedsc\scshape{10}{900}{OT1} +\setfont\reducedttsl\ttslshape{10}{900}{OT1TT} +\font\reducedi=cmmi9 +\font\reducedsy=cmsy9 +\def\reducedecsize{0900} + +\divide\parskip by 2 % reduce space between paragraphs +\textleading = 12pt % line spacing for 10pt CM +\textfonts % reset the current fonts +\rm +} % end of 10pt text font size definitions, \definetextfontsizex + +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000}{OT1} +\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 +\setfont\shortcontsl\slshape{12}{1000}{OT1} +\setfont\shortconttt\ttshape{12}{1000}{OT1TT} + + +% We provide the user-level command +% @fonttextsize 10 +% (or 11) to redefine the text font size. pt is assumed. +% +\def\xiword{11} +\def\xword{10} +\def\xwordpt{10pt} +% +\parseargdef\fonttextsize{% + \def\textsizearg{#1}% + %\wlog{doing @fonttextsize \textsizearg}% + % + % Set \globaldefs so that documents can use this inside @tex, since + % makeinfo 4.8 does not support it, but we need it nonetheless. + % + \begingroup \globaldefs=1 + \ifx\textsizearg\xword \definetextfontsizex + \else \ifx\textsizearg\xiword \definetextfontsizexi + \else + \errhelp=\EMsimple + \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} + \fi\fi + \endgroup +} + +% +% Change the current font style to #1, remembering it in \curfontstyle. +% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in +% italics, not bold italics. +% +\def\setfontstyle#1{% + \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. + \csname #1font\endcsname % change the current font +} + +\def\rm{\fam=0 \setfontstyle{rm}} +\def\it{\fam=\itfam \setfontstyle{it}} +\def\sl{\fam=\slfam \setfontstyle{sl}} +\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} +\def\tt{\fam=\ttfam \setfontstyle{tt}} + +% Texinfo sort of supports the sans serif font style, which plain TeX does not. +% So we set up a \sf. +\newfam\sffam +\def\sf{\fam=\sffam \setfontstyle{sf}} + +% We don't need math for this font style. +\def\ttsl{\setfontstyle{ttsl}} + + +% In order for the font changes to affect most math symbols and letters, +% we have to define the \textfont of the standard families. +% We don't bother to reset \scriptscriptfont; awaiting user need. +% +\def\resetmathfonts{% + \textfont0=\rmfont \textfont1=\ifont \textfont2=\syfont + \textfont\itfam=\itfont \textfont\slfam=\slfont \textfont\bffam=\bffont + \textfont\ttfam=\ttfont \textfont\sffam=\sffont + % + % Fonts for superscript. Note that the 7pt fonts are used regardless + % of the current font size. + \scriptfont0=\sevenrm \scriptfont1=\seveni \scriptfont2=\sevensy + \scriptfont\itfam=\sevenit \scriptfont\slfam=\sevensl + \scriptfont\bffam=\sevenbf \scriptfont\ttfam=\seventt + \scriptfont\sffam=\sevensf +} + + + +% \defineassignfonts{SIZE} - +% Define sequence \assignfontsSIZE, which switches between font sizes +% by redefining the meanings of \STYLEfont. (Just \STYLE additionally sets +% the current \fam for math mode.) +% +\def\defineassignfonts#1{% + \expandafter\edef\csname assignfonts#1\endcsname{% + \let\noexpand\rmfont\csname #1rm\endcsname + \let\noexpand\itfont\csname #1it\endcsname + \let\noexpand\slfont\csname #1sl\endcsname + \let\noexpand\bffont\csname #1bf\endcsname + \let\noexpand\ttfont\csname #1tt\endcsname + \let\noexpand\smallcaps\csname #1sc\endcsname + \let\noexpand\sffont \csname #1sf\endcsname + \let\noexpand\ifont \csname #1i\endcsname + \let\noexpand\syfont \csname #1sy\endcsname + \let\noexpand\ttslfont\csname #1ttsl\endcsname + } +} + +\def\assignfonts#1{% + \csname assignfonts#1\endcsname +} + +\newif\ifrmisbold + +% Select smaller font size with the current style. Used to change font size +% in, e.g., the LaTeX logo and acronyms. If we are using bold fonts for +% normal roman text, also use bold fonts for roman text in the smaller size. +\def\switchtolllsize{% + \expandafter\assignfonts\expandafter{\lllsize}% + \ifrmisbold + \let\rmfont\bffont + \fi + \csname\curfontstyle\endcsname +}% + +\def\switchtolsize{% + \expandafter\assignfonts\expandafter{\lsize}% + \ifrmisbold + \let\rmfont\bffont + \fi + \csname\curfontstyle\endcsname +}% + +% Define the font-changing commands (all called \...fonts). +% Each font-changing command also sets the names \lsize (one size lower) +% and \lllsize (three sizes lower). These relative commands are used +% in, e.g., the LaTeX logo and acronyms. +% +% Note: The fonts used for \ifont are for "math italics" (\itfont is for +% italics in regular text). \syfont is also used in math mode only. +% +\def\definefontsetatsize#1#2#3#4#5{% + \defineassignfonts{#1}% +\expandafter\def\csname #1fonts\endcsname{% + \def\curfontsize{#1}% + \def\lsize{#2}\def\lllsize{#3}% + \csname rmisbold#5\endcsname + \csname assignfonts#1\endcsname + \resetmathfonts + \setleading{#4}% +}} + +\definefontsetatsize{text} {reduced}{smaller}{\textleading}{false} +\definefontsetatsize{title} {chap} {subsec} {27pt} {true} +\definefontsetatsize{chap} {sec} {text} {19pt} {true} +\definefontsetatsize{sec} {subsec} {reduced}{17pt} {true} +\definefontsetatsize{ssec} {text} {small} {15pt} {true} +\definefontsetatsize{reduced}{small} {smaller}{10.5pt}{false} +\definefontsetatsize{small} {smaller}{smaller}{10.5pt}{false} +\definefontsetatsize{smaller}{smaller}{smaller}{9.5pt} {false} + +\def\titlefont#1{{\titlefonts\rm #1}} +\let\subsecfonts = \ssecfonts +\let\subsubsecfonts = \ssecfonts + +% Define these just so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + +% Set the fonts to use with the @small... environments. +\let\smallexamplefonts = \smallfonts + +% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample +% can fit this many characters: +% 8.5x11=86 smallbook=72 a4=90 a5=69 +% If we use \scriptfonts (8pt), then we can fit this many characters: +% 8.5x11=90+ smallbook=80 a4=90+ a5=77 +% For me, subjectively, the few extra characters that fit aren't worth +% the additional smallness of 8pt. So I'm making the default 9pt. +% +% By the way, for comparison, here's what fits with @example (10pt): +% 8.5x11=71 smallbook=60 a4=75 a5=58 +% --karl, 24jan03. + +% Set up the default fonts, so we can use them for creating boxes. +% +\definetextfontsizexi + + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. #1 is what to +% print if we are indeed using \tt; #2 is what to print otherwise. +\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} + +% Same as above, but check for italic font. Actually this also catches +% non-italic slanted fonts since it is impossible to distinguish them from +% italic fonts. But since this is only used by $ and it uses \sl anyway +% this is not a problem. +\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} + + +% Check if internal flag is clear, i.e. has not been @set. +\def\ifflagclear#1#2#3{% + \expandafter\ifx\csname SET#1\endcsname\relax + #2\else#3\fi +} + +{ +\catcode`\'=\active +\catcode`\`=\active + +\gdef\setcodequotes{\let`\codequoteleft \let'\codequoteright} +\gdef\setregularquotes{\let`\lq \let'\rq} +} +\setregularquotes + +% output for ' in @code +% in tt font hex 0D (undirected) or 27 (curly right quote) +% +\def\codequoteright{% + \ifusingtt + {\ifflagclear{txicodequoteundirected}% + {\ifflagclear{codequoteundirected}% + {'}% + {\char"0D }}% + {\char"0D }}% + {'}% +} + +% output for ` in @code +% in tt font hex 12 (grave accent) or 60 (curly left quote) +% \relax disables Spanish ligatures ?` and !` of \tt font. +% +\def\codequoteleft{% + \ifusingtt + {\ifflagclear{txicodequotebacktick}% + {\ifflagclear{codequotebacktick}% + {\relax`}% + {\char"12 }}% + {\char"12 }}% + {\relax`}% +} + +% 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 +} + +% Turn them on by default +\let\SETtxicodequoteundirected = t +\let\SETtxicodequotebacktick = t + + +% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. +\def\noligaturesquoteleft{\relax\lq} + +% Count depth in font-changes, for error checks +\newcount\fontdepth \fontdepth=0 + +% Font commands. + +% #1 is the font command (\sl or \it), #2 is the text to slant. +% If we are in a monospaced environment, however, 1) always use \ttsl, +% and 2) do not add an italic correction. +\def\dosmartslant#1#2{% + \ifusingtt + {{\ttsl #2}\let\next=\relax}% + {\def\next{{#1#2}\smartitaliccorrection}}% + \next +} +\def\smartslanted{\dosmartslant\sl} +\def\smartitalic{\dosmartslant\it} + +% Output an italic correction unless the following character is such as +% not to need one. +\def\smartitaliccorrection{\futurelet\next\smartitaliccorrectionx} +\def\smartitaliccorrectionx{% + \ifx\next,% + \else\ifx\next-% + \else\ifx\next.% + \else\ifx\next\.% + \else\ifx\next\comma% + \else\ptexslash + \fi\fi\fi\fi\fi + \aftersmartic +} + +% @cite unconditionally uses \sl with \smartitaliccorrection. +\def\cite#1{{\sl #1}\smartitaliccorrection} + +% By default, use ttsl font for @var when used in code context. +% To unconditionally use \sl for @var, @clear txicodevaristt. This +% gives consistency for parameter names whether they are in @def, +% @table @code or a regular paragraph. +\def\aftersmartic{} +\def\var#1{% + \let\saveaftersmartic = \aftersmartic + \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% + % The \null is to reset \spacefactor. + % + \ifflagclear{txicodevaristt}% + {\def\varnext{{{\sl #1}}\smartitaliccorrection}}% + {\def\varnext{\smartslanted{#1}}}% + \varnext +} + +\def\SETtxicodevaristt{}% @set txicodevaristt + +\let\i=\smartitalic +\let\slanted=\smartslanted +\let\dfn=\smartslanted +\let\emph=\smartitalic + +% @r for roman font, used for code comment +\def\r#1{{% + \usenormaldash % get --, --- ligatures even if in @code + \defcharsdefault % in case on def line + \rm #1}} +{\catcode`-=\active \gdef\usenormaldash{\let-\normaldash}} + +% @sc, undocumented @ii. +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @b, explicit bold. Also @strong. +\def\b#1{{\bf \defcharsdefault #1}} +\let\strong=\b + +% @sansserif, explicit sans. +\def\sansserif#1{{\sf #1}} + +\newif\iffrenchspacing +\frenchspacingfalse + +% Set sfcode to normal for the chars that usually have another value. +% Can't use plain's \frenchspacing because it uses the `\x notation, and +% sometimes \x has an active definition that messes things up. +% +\catcode`@=11 + \def\plainfrenchspacing{% + \iffrenchspacing\else + \frenchspacingtrue + \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m + \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m + \def\endofsentencespacefactor{1000}% for @. and friends + \fi + } + \def\plainnonfrenchspacing{% + \iffrenchspacing + \frenchspacingfalse + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + \fi + } +\catcode`@=\other +\def\endofsentencespacefactor{3000}% default + +% @frenchspacing on|off says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\let\frenchspacingsetting\plainnonfrenchspacing % used in output routine +\parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \let\frenchspacingsetting\plainfrenchspacing + \else\ifx\temp\offword \let\frenchspacingsetting\plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% + \fi\fi + \frenchspacingsetting +} + + +% @t, explicit typewriter. +\def\t#1{% + {\tt \defcharsdefault \plainfrenchspacing #1}% + \null +} + +% @samp. +\def\samp#1{{\setcodequotes\lq\tclose{#1}\rq\null}} + +% @indicateurl is \samp, that is, with quotes. +\let\indicateurl=\samp + +% @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. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + \plainfrenchspacing + #1% + }% + \null % reset spacefactor to 1000 +} + +% This is for LuaTeX: It is not sufficient to disable hyphenation at +% explicit dashes by setting `\hyphenchar` to -1. +\def\dashnobreak{% + \normaldash + \penalty 10000 } + +% We must turn on hyphenation at `-' and `_' in @code. +% Otherwise, it is too hard to avoid overfull hboxes +% in the Emacs manual, the Library manual, etc. +% We explicitly allow hyphenation at these characters +% using \discretionary. +% +% Hyphenation at - and hyphenation within words was turned off +% by default for the tt fonts using the \hyphenchar parameter of TeX. +{ + \catcode`\-=\active \catcode`\_=\active + \catcode`\'=\active \catcode`\`=\active + \global\let'=\rq \global\let`=\lq % default definitions + % + \global\def\code{\begingroup + \setcodequotes + \catcode\dashChar=\active \catcode\underChar=\active + \ifallowcodebreaks + \let-\codedash + \let_\codeunder + \else + \let-\dashnobreak + \let_\realunder + \fi + \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 -, or + % (c) we are at the start of the string. + % In both cases (b) and (c), \codedashnobreak should be set to \codedash. + % + % 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\codedashnobreak\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\codedashnobreak= \next + } +} +\def\normaldash{-} +% +\def\codex #1{\tclose{% + % Given -foo (with a single dash), we do not want to allow a break + % after the -. \codedashnobreak is set to the first character in + % @code. + \futurelet\codedashnobreak\relax + #1% +}\endgroup} + +\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.) + % will therefore expand the active definition of _, which is us + % (inside @code that is), therefore an endless loop. + \ifusingtt{\ifmmode + \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. + \else\normalunderscore \fi + \discretionary{}{}{}}% + {\_}% +} + +% An additional complication: the above will allow breaks after, e.g., +% 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 + +\def\keywordtrue{true} +\def\keywordfalse{false} + +\parseargdef\allowcodebreaks{% + \def\txiarg{#1}% + \ifx\txiarg\keywordtrue + \allowcodebreakstrue + \else\ifx\txiarg\keywordfalse + \allowcodebreaksfalse + \else + \errhelp = \EMsimple + \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% + \fi\fi +} + +% For @command, @env, @file, @option quotes seem unnecessary, +% so use \code rather than \samp. +\let\command=\code +\let\env=\code +\let\file=\code +\let\option=\code + +% @uref (abbreviation for `urlref') aka @url 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. + +% TeX-only option to allow changing PDF output to show only the second +% arg (if given), and not the url (which is then just the link target). +\newif\ifurefurlonlylink + +% The default \pretolerance setting stops the penalty inserted in +% \urefallowbreak being a discouragement to line breaking. Set it to +% a negative value for this paragraph only. Hopefully this does not +% conflict with redefinitions of \par done elsewhere. +\def\nopretolerance{% +\pretolerance=-1 +\def\par{\endgraf\pretolerance=100 \let\par\endgraf}% +} + +% The main macro is \urefbreak, which allows breaking at expected +% places within the url. +\def\urefbreak{\nopretolerance \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}% look for second arg + \ifdim\wd0 > 0pt + \ifpdf + % For pdfTeX and LuaTeX + \ifurefurlonlylink + % PDF plus option to not display url, show just arg + \unhbox0 + \else + % PDF, normally display both arg and url for consistency, + % visibility, if the pdf is eventually used to print, etc. + \unhbox0\ (\urefcode{#1})% + \fi + \else + \ifxetex + % For XeTeX + \ifurefurlonlylink + % PDF plus option to not display url, show just arg + \unhbox0 + \else + % PDF, normally display both arg and url for consistency, + % visibility, if the pdf is eventually used to print, etc. + \unhbox0\ (\urefcode{#1})% + \fi + \else + \unhbox0\ (\urefcode{#1})% DVI, always show arg and url + \fi + \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`\&=\active \catcode`\.=\active + \catcode`\#=\active \catcode`\?=\active + \catcode`\/=\active +} +{ + \urefcatcodes + % + \global\def\urefcode{\begingroup + \setcodequotes + \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} +} + +\def\urefcodeamp{\urefprebreak \&\urefpostbreak} +\def\urefcodedot{\urefprebreak .\urefpostbreak} +\def\urefcodehash{\urefprebreak \#\urefpostbreak} +\def\urefcodequest{\urefprebreak ?\urefpostbreak} +\def\urefcodeslash{\futurelet\next\urefcodeslashfinish} +{ + \catcode`\/=\active + \global\def\urefcodeslashfinish{% + \urefprebreak \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 \urefpostbreak \fi + } +} + +% 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{\urefallowbreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordafter + \def\urefprebreak{\nobreak}\def\urefpostbreak{\urefallowbreak} + \else + \errhelp = \EMsimple + \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\wordafter{after} +\def\wordbefore{before} +\def\wordnone{none} + +% Allow a ragged right output to aid breaking long URL's. There can +% be a break at the \allowbreak with no extra glue (if the existing stretch in +% the line is sufficient), a break at the \penalty with extra glue added +% at the end of the line, or no break at all here. +% Changing the value of the penalty and/or the amount of stretch affects how +% preferable one choice is over the other. +% Check test cases in doc/texinfo-tex-test.texi before making any changes. +\def\urefallowbreak{% + \penalty0\relax + \hskip 0pt plus 3 em\relax + \penalty1000\relax + \hskip 0pt plus -3 em\relax +} + +\urefbreakstyle after + +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + +% rms does not like angle brackets --karl, 17may97. +% So now @email is just like @uref, unless we are pdf. +% +%\def\email#1{\angleleft{\tt #1}\angleright} +\ifpdforxetex + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} +\else + \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 + +\def\kbd#1{% + \tclose{\kbdfont\setcodequotes#1}% +} + +% 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. +% +\def\key#1{{\setregularquotes \tt #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. +% +\def\dmn#1{\thinspace #1} + +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% +\def\acronym#1{\doacronym #1,,\finish} +\def\doacronym#1,#2,#3\finish{% + {\switchtolsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. +% +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a math (or tt) \. +% FYI, plain.tex uses \\ as a temporary control sequence (for no +% particular reason), but this is not advertised and we don't care. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \ifmmode\else % only go into math if not in math mode already + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + % have to provide another name for sup operator + \let\mathopsup=\sup + $\expandafter\finishmath\fi +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \catcode`' = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + \let' = \ptexquoteright + } +} + +% for @sub and @sup, if in math mode, just do a normal sub/superscript. +% If in text, use math to place as sub/superscript, but switch +% into text mode, with smaller fonts. This is a different font than the +% one used for real math sub/superscripts (8pt vs. 7pt), but let's not +% fix it (significant additions to font machinery) until someone notices. +% +\def\sub{\ifmmode \expandafter\sb \else \expandafter\finishsub\fi} +\def\finishsub#1{$\sb{\hbox{\switchtolllsize #1}}$}% +% +\def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} +\def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}% + +% provide this command from LaTeX as it is very common +\def\frac#1#2{{{#1}\over{#2}}} + +% @displaymath. +% \globaldefs is needed to recognize the end lines in \tex and +% \end tex. Set \thisenv as @end displaymath is seen before @end tex. +{\obeylines +\globaldefs=1 +\envdef\displaymath{% +\tex% +\def\thisenv{\displaymath}% +\begingroup\let\end\displaymathend% +$$% +} + +\def\displaymathend{$$\endgroup\end}% + +\def\Edisplaymath{% +\def\thisenv{\tex}% +\end tex +}} + + +% @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 @, as does @atchar{}. +\def\@{\char64 } +\let\atchar=\@ + +% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. +\def\lbracechar{{\ifusingtt{\char123}{\ensuremath\lbrace}}} +\def\rbracechar{{\ifusingtt{\char125}{\ensuremath\rbrace}}} +\let\{=\lbracechar +\let\}=\rbracechar + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. +\let\, = \ptexc +\let\dotaccent = \ptexdot +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \ptext +\let\ubaraccent = \ptexb +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) +% +\edef\TeX{\TeX \spacefactor=1000 } + +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). +% +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{% + \ifx\textnominalsize\xwordpt + % for 10pt running text, lllsize (8pt) is too small for the A in LaTeX. + % Revert to plain's \scriptsize, which is 7pt. + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + \ifx\curfontsize\smallword + % For footnotes and indices + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \switchtolllsize A% + \fi + \fi + }% + \vss + }}% + \kern-.15em + \TeX +} +\def\smallword{small} + +% Some math mode symbols. Define \ensuremath to switch into math mode +% unless we are already there. Expansion tricks may not be needed here, +% but safer, and can't hurt. +\def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi} +\def\ensuredmath#1{$\relax#1$} +% +\def\bullet{\ensuremath\ptexbullet} +\def\geq{\ensuremath\ge} +\def\leq{\ensuremath\le} +\def\minus{\ensuremath-} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em. So do +% whichever is larger. +% +\def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em + \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor +} + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, they should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} +\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\ttfont \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 \putworderror\kern-1.5pt} +% +\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{% + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} + +% @pounds{} is a sterling sign, which Knuth put in the CM italic font. +% +\def\pounds{{\ifusingtt{\ecfont\char"BF}{\it\$}}} + +% @euro{} comes from a separate font, depending on the current style. +% We use the free feym* fonts from the eurosym package by Henrik +% Theiling, which support regular, slanted, bold and bold slanted (and +% "outlined" (blackboard board, sort of) versions, which we don't need). +% It is available from http://www.ctan.org/tex-archive/fonts/eurosym. +% +% Although only regular is the truly official Euro symbol, we ignore +% that. The Euro is designed to be slightly taller than the regular +% font height. +% +% feymr - regular +% feymo - slanted +% feybr - bold +% feybo - bold slanted +% +% There is no good (free) typewriter version, to my knowledge. +% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. +% Hmm. +% +% Also doesn't work in math. Do we need to do math with euro symbols? +% Hope not. +% +% +\def\euro{{\eurofont e}} +\def\eurofont{% + % We set the font at each command, rather than predefining it in + % \textfonts and the other font-switching commands, so that + % installations which never need the symbol don't have to have the + % font installed. + % + % There is only one designed size (nominal 10pt), so we always scale + % that to the current nominal size. + % + % By the way, simply using "at 1em" works for cmr10 and the like, but + % does not work for cmbx10 and other extended/shrunken fonts. + % + \def\eurosize{\csname\curfontsize nominalsize\endcsname}% + % + \ifx\curfontstyle\bfstylename + % bold: + \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize + \else + % regular: + \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize + \fi + \thiseurofont +} + +% Glyphs from the EC fonts. We don't use \let for the aliases, because +% sometimes we redefine the original macro, and the alias should reflect +% the redefinition. +% +% Use LaTeX names for the Icelandic letters. +\def\DH{{\ecfont \char"D0}} % Eth +\def\dh{{\ecfont \char"F0}} % eth +\def\TH{{\ecfont \char"DE}} % Thorn +\def\th{{\ecfont \char"FE}} % thorn +% +\def\guillemetleft{{\ecfont \char"13}} +\def\guillemotleft{\guillemetleft} +\def\guillemetright{{\ecfont \char"14}} +\def\guillemotright{\guillemetright} +\def\guilsinglleft{{\ecfont \char"0E}} +\def\guilsinglright{{\ecfont \char"0F}} +\def\quotedblbase{{\ecfont \char"12}} +\def\quotesinglbase{{\ecfont \char"0D}} +% +\def\L{{\ecfont \char"8A}} % L with stroke +\def\l{{\ecfont \char"AA}} % l with stroke +% +% This positioning is not perfect (see the ogonek LaTeX package), but +% we have the precomposed glyphs for the most common cases. We put the +% tests to use those glyphs in the single \ogonek macro so we have fewer +% dummy definitions to worry about for index entries, etc. +% +% ogonek is also used with other letters in Lithuanian (IOU), but using +% the precomposed glyphs for those is not so easy since they aren't in +% the same EC font. +\def\ogonek#1{{% + \def\temp{#1}% + \ifx\temp\macrocharA\Aogonek + \else\ifx\temp\macrochara\aogonek + \else\ifx\temp\macrocharE\Eogonek + \else\ifx\temp\macrochare\eogonek + \else + \ecfont \setbox0=\hbox{#1}% + \ifdim\ht0=1ex\accent"0C #1% + \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% + \fi + \fi\fi\fi\fi + }% +} +\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} +\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} +\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} +\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} +% +% Use the European Computer Modern fonts (cm-super in outline format) +% for non-CM glyphs. That is ec* for regular text and tc* for the text +% companion symbols (LaTeX TS1 encoding). Both are part of the ec +% package and follow the same conventions. +% +\def\ecfont{\etcfont{e}} +\def\tcfont{\etcfont{t}} +% +\def\etcfont#1{% + % We can't distinguish serif/sans and italic/slanted, but this + % is used for crude hacks anyway (like adding French and German + % quotes to documents typeset with CM, where we lose kerning), so + % hopefully nobody will notice/care. + \edef\ecsize{\csname\curfontsize ecsize\endcsname}% + \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% + \ifusingtt + % typewriter: + {\font\thisecfont = #1ctt\ecsize \space at \nominalsize}% + % else + {\ifx\curfontstyle\bfstylename + \etcfontbold{#1}% + \else + \ifrmisbold + \etcfontbold{#1}% + \else + % regular: + \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space + at \nominalsize + \fi + \fi}% + \thisecfont +} + +\def\etcfontbold#1{% + % bold: + \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize +} + +% @registeredsymbol - R in a circle. The font for the R should really +% be smaller yet, but lllsize is the best we can do for now. +% Adapted from the plain.tex definition of \copyright. +% +\def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{\switchtolllsize R}% + \hfil\crcr\Orb}}% + }$% +} + +% @textdegree - the normal degrees sign. +% +\def\textdegree{% + \ifmmode ^\circ + \else {\tcfont \char 176}% + \fi} + +% Laurent Siebenmann reports \Orb undefined with: +% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 +% so we'll define it if necessary. +% +\ifx\Orb\thisisundefined +\def\Orb{\mathhexbox20D} +\fi + +% Quotes. +\chardef\quoteleft=`\` +\chardef\quoteright=`\' + +% only change font for tt for correct kerning and to avoid using +% \ecfont unless necessary. +\def\quotedblleft{% + \ifusingtt{{\ecfont\char"10}}{{\char"5C}}% +} + +\def\quotedblright{% + \ifusingtt{{\ecfont\char"11}}{{\char`\"}}% +} + + +\message{page headings,} + +\newskip\titlepagetopglue \titlepagetopglue = 1.5in +\newskip\titlepagebottomglue \titlepagebottomglue = 2pc + +% First the title page. Must do @settitle before @titlepage. +\newif\ifseenauthor +\newif\iffinishedtitlepage + +% @setcontentsaftertitlepage used to do an implicit @contents or +% @shortcontents after @end titlepage, but it is now obsolete. +\def\setcontentsaftertitlepage{% + \errmessage{@setcontentsaftertitlepage has been removed as a Texinfo + command; move your @contents command if you want the contents + after the title page.}}% +\def\setshortcontentsaftertitlepage{% + \errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo + command; move your @shortcontents and @contents commands if you + want the contents after the title page.}}% + +\parseargdef\shorttitlepage{% + {\headingsoff \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page}\pageone} + +\envdef\titlepage{% + % Open one extra group, as we want to close it in the middle of \Etitlepage. + \begingroup + \parindent=0pt \textfonts + \headingsoff + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \let\page = \oldpage + \page + \null + }% +} + +\def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \pageone + \endgroup + % +} + +\def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue +} + +% 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. \par should +% be specified before the end of the \vbox, since a vbox is a group. +% +\def\raggedtitlesettings{% + \rm + \hyphenpenalty=10000 + \parindent=0pt + \tolerance=5000 + \ptexraggedright +} + +% Macros to be used within @titlepage: + +\let\subtitlerm=\rmfont +\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} + +\parseargdef\title{% + \checkenv\titlepage + \vbox{\titlefonts \raggedtitlesettings #1\par}% + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt +} + +\parseargdef\subtitle{% + \checkenv\titlepage + {\subtitlefont \rightline{#1}}% +} + +% @author should come last, but may come many times. +% It can also be used inside @quotation. +% +\parseargdef\author{% + \def\temp{\quotation}% + \ifx\thisenv\temp + \def\quotationauthor{#1}% printed in \Equotation. + \else + \checkenv\titlepage + \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi + {\secfonts\rm \leftline{#1}}% + \fi +} + + +% Set up page headings and footings. + +\let\thispage=\folio + +\newtoks\evenheadline % headline on even pages +\newtoks\oddheadline % headline on odd pages +\newtoks\evenchapheadline% headline on even pages with a new chapter +\newtoks\oddchapheadline % headline on odd pages with a new chapter +\newtoks\evenfootline % footline on even pages +\newtoks\oddfootline % footline on odd pages + +% Now make \makeheadline and \makefootline in Plain TeX use those variables +\headline={{\textfonts\rm\frenchspacingsetting + \ifchapterpage + \ifodd\pageno\the\oddchapheadline\else\the\evenchapheadline\fi + \else + \ifodd\pageno\the\oddheadline\else\the\evenheadline\fi + \fi}} + +\footline={{\textfonts\rm\frenchspacingsetting + \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}% + \HEADINGShook} +\let\HEADINGShook=\relax + +% Commands to set those variables. +% For example, this is what @headings on does +% @evenheading @thistitle|@thispage|@thischapter +% @oddheading @thischapter|@thispage|@thistitle +% @evenfooting @thisfile|| +% @oddfooting ||@thisfile + + +\def\evenheading{\parsearg\evenheadingxxx} +\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} +\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% + \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}} + \global\evenchapheadline=\evenheadline} + +\def\oddheading{\parsearg\oddheadingxxx} +\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} +\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% + \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}% + \global\oddchapheadline=\oddheadline} + +\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} +\def\evenfootingyyy #1\|#2\|#3\|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddfooting{\parsearg\oddfootingxxx} +\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} +\def\oddfootingyyy #1\|#2\|#3\|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\txipageheight by -12pt + \global\advance\vsize by -12pt +} + +\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} + +% @evenheadingmarks top \thischapter <- chapter at the top of a page +% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page +% +% The same set of arguments for: +% +% @oddheadingmarks +% @evenfootingmarks +% @oddfootingmarks +% @everyheadingmarks +% @everyfootingmarks + +% These define \getoddheadingmarks, \getevenheadingmarks, +% \getoddfootingmarks, and \getevenfootingmarks, each to one of +% \gettopheadingmarks, \getbottomheadingmarks. +% +\def\evenheadingmarks{\headingmarks{even}{heading}} +\def\oddheadingmarks{\headingmarks{odd}{heading}} +\def\evenfootingmarks{\headingmarks{even}{footing}} +\def\oddfootingmarks{\headingmarks{odd}{footing}} +\parseargdef\everyheadingmarks{\headingmarks{even}{heading}{#1} + \headingmarks{odd}{heading}{#1} } +\parseargdef\everyfootingmarks{\headingmarks{even}{footing}{#1} + \headingmarks{odd}{footing}{#1} } +% #1 = even/odd, #2 = heading/footing, #3 = top/bottom. +\def\headingmarks#1#2#3 {% + \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname + \global\expandafter\let\csname get#1#2marks\endcsname \temp +} + +\everyheadingmarks bottom +\everyfootingmarks bottom + +% @headings double turns headings on for double-sided printing. +% @headings single turns headings on for single-sided printing. +% @headings off turns them off. +% @headings on same as @headings double, retained for compatibility. +% @headings after turns on double-sided headings after this page. +% @headings doubleafter turns on double-sided headings after this page. +% @headings singleafter turns on single-sided headings after this page. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. + +\parseargdef\headings{\csname HEADINGS#1\endcsname} + +\def\headingsoff{% non-global headings elimination + \evenheadline={\hfil}\evenfootline={\hfil}\evenchapheadline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}\oddchapheadline={\hfil}% +} + +\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting + +% Set the page number to 1. +\def\pageone{ + \global\pageno=1 + \global\arabiccount = \pagecount +} + +\let\contentsalignmacro = \chappager + +% \def\HEADINGSon{\HEADINGSdouble} % defined by \CHAPPAGon + +% For double-sided printing, put current file name in lower left corner, +% chapter name on inside top of right hand pages, document +% title on inside top of left hand pages, and page numbers on outside top +% edge of all pages. +\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdouble} +\let\HEADINGSdoubleafter=\HEADINGSafter +\def\HEADINGSdouble{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline={\line{\folio\hfil\thistitle}} +\global\oddchapheadline={\line{\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} + +% For single-sided printing, chapter title goes across top left of page, +% page number on top right. +\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsingle} +\def\HEADINGSsingle{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline={\line{\hfil\folio}} +\global\oddchapheadline={\line{\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% for @setchapternewpage off +\def\HEADINGSsinglechapoff{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenchapheadline=\evenheadline +\global\oddchapheadline=\oddheadline +\global\let\contentsalignmacro = \chappager +} + +% Subroutines used in generating headings +% 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\thisisundefined +\def\today{% + \number\day\space + \ifcase\month + \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr + \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug + \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec + \fi + \space\number\year} +\fi + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} +\def\settitle{\parsearg{\gdef\thistitle}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(x). + +% default indentation of table text +\newdimen\tableindent \tableindent=.8in +% default indentation of @itemize and @enumerate text +\newdimen\itemindent \itemindent=.3in +% margin between end of table item and start of table text. +\newdimen\itemmargin \itemmargin=.1in + +% used internally for \itemindent minus \itemmargin +\newdimen\itemmax + +% Note @table, @ftable, and @vtable define @item, @itemx, etc., with +% these defs. +% They also define \itemindex +% to index the item name in whatever manner is desired (perhaps none). + +\newif\ifitemxneedsnegativevskip + +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + +\def\internalBitem{\smallbreak \parsearg\itemzzz} +\def\internalBitemx{\itemxpar \parsearg\itemzzz} + +\def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemindicate{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil\relax + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % + \penalty 10001 + \endgroup + \itemxneedsnegativevskipfalse + \else + % The item text fits into the space. Start a paragraph, so that the + % following text (if any) will end up on the same line. + \noindent + % Do this with kerns and \unhbox so that if there is a footnote in + % the item text, it can migrate to the main vertical list and + % eventually be printed. + \nobreak\kern-\tableindent + \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 + \unhbox0 + \nobreak\kern\dimen0 + \endgroup + \itemxneedsnegativevskiptrue + \fi +} + +\def\item{\errmessage{@item while not in a list environment}} +\def\itemx{\errmessage{@itemx while not in a list environment}} + +% @table, @ftable, @vtable. +\envdef\table{% + \let\itemindex\gobble + \tablecheck{table}% +} +\envdef\ftable{% + \def\itemindex ##1{\doind {fn}{\code{##1}}}% + \tablecheck{ftable}% +} +\envdef\vtable{% + \def\itemindex ##1{\doind {vr}{\code{##1}}}% + \tablecheck{vtable}% +} +\def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next +} +\def\tablex#1{% + \def\itemindicate{#1}% + \parsearg\tabley +} +\def\tabley#1{% + {% + \makevalueexpandable + \edef\temp{\noexpand\tablez #1\space\space\space}% + \expandafter + }\temp \endtablez +} +\def\tablez #1 #2 #3 #4\endtablez{% + \aboveenvbreak + \ifnum 0#1>0 \advance \leftskip by #1\mil \fi + \ifnum 0#2>0 \tableindent=#2\mil \fi + \ifnum 0#3>0 \advance \rightskip by #3\mil \fi + \itemmax=\tableindent + \advance \itemmax by -\itemmargin + \advance \leftskip by \tableindent + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi + \let\item = \internalBitem + \let\itemx = \internalBitemx +} +\def\Etable{\endgraf\afterenvbreak} +\let\Eftable\Etable +\let\Evtable\Etable +\let\Eitemize\Etable +\let\Eenumerate\Etable + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\envdef\itemize{\parsearg\doitemize} + +\def\doitemize#1{% + \aboveenvbreak + \itemmax=\itemindent + \advance\itemmax by -\itemmargin + \advance\leftskip by \itemindent + \exdentamount=\itemindent + \parindent=0pt + \parskip=\smallskipamount + \ifdim\parskip=0pt \parskip=2pt \fi + % + % Try typesetting the item mark so that if the document erroneously says + % something like @itemize @samp (intending @table), there's an error + % right away at the @itemize. It's not the best error message in the + % world, but it's better than leaving it to the @item. This means if + % the user wants an empty mark, they have to say @w{} not just @w. + \def\itemcontents{#1}% + \setbox0 = \hbox{\itemcontents}% + % + % @itemize with no arg is equivalent to @itemize @bullet. + \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + % + \let\item=\itemizeitem +} + +% Definition of @item while inside @itemize and @enumerate. +% +\def\itemizeitem{% + \advance\itemno by 1 % for enumerations + {\let\par=\endgraf \smallbreak}% reasonable place to break + {% + % If the document has an @itemize directly after a section title, a + % \nobreak will be last on the list, and \sectionheading will have + % done a \vskip-\parskip. In that case, we don't want to zero + % parskip, or the item text will crash with the heading. On the + % other hand, when there is normal text preceding the item (as there + % usually is), we do want to zero parskip, or there would be too much + % space. In that case, we won't have a \nobreak before. At least + % that's the theory. + \ifnum\lastpenalty<10000 \parskip=0in \fi + \noindent + \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + % + \ifinner\else + \vadjust{\penalty 1200}% not good to break after first line of item. + \fi + % We can be in inner vertical mode in a footnote, although an + % @itemize looks awful there. + }% + \flushcr +} + +% \splitoff TOKENS\endmark defines \first to be the first token in +% TOKENS, and \rest to be the remainder. +% +\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + +% Allow an optional argument of an uppercase letter, lowercase letter, +% or number, to specify the first label in the enumerated list. No +% argument is the same as `1'. +% +\envparseargdef\enumerate{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi +} + +% An @enumerate whose labels are integers. The starting integer is +% given in \thearg. +% +\def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% +} + +% The starting (lowercase) letter is in \thearg. +\def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% +} + +% The starting (uppercase) letter is in \thearg. +\def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% +} + +% Call \doitemize, adding a period to the first argument and supplying the +% common last two arguments. Also subtract one from the initial value in +% \itemno, since @item increments \itemno. +% +\def\startenumeration#1{% + \advance\itemno by -1 + \doitemize{#1.}\flushcr +} + + +% @multitable macros + +% Macros used to set up halign preamble: +% +\let\endsetuptable\relax +\def\xendsetuptable{\endsetuptable} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} +\newif\ifsetpercent + +% #1 is the @columnfraction, usually a decimal number like .5, but might +% be just 1. We just use it, whatever it is. +% +\def\pickupwholefraction#1 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% + \setuptable +} + +\newcount\colcount +\def\setuptable#1{% + \def\firstarg{#1}% + \ifx\firstarg\xendsetuptable + \let\go = \relax + \else + \ifx\firstarg\xcolumnfractions + \global\setpercenttrue + \else + \ifsetpercent + \let\go\pickupwholefraction + \else + \global\advance\colcount by 1 + \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a + % separator; typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi + \fi + \ifx\go\pickupwholefraction + % Put the argument back for the \pickupwholefraction call, so + % we'll always have a period there to be parsed. + \def\go{\pickupwholefraction#1}% + \else + \let\go = \setuptable + \fi% + \fi + \go +} + +% @headitem starts a heading row, which we typeset in bold. Assignments +% have to be global since we are inside the implicit group of an +% alignment entry. \everycr below resets \everytab so we don't have to +% undo it ourselves. +\def\headitemfont{\b}% for people to use in the template row; not changeable +\def\headitem{% + \crcr % must appear first + \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings + \global\everytab={\bf}% can't use \headitemfont since the parsing differs + \the\everytab % for the first item +}% +% +% default for tables with no headings. +\let\headitemcrhook=\relax +% +\def\tab{\checkenv\multitable &\the\everytab}% + +\newtoks\everytab % insert after every tab. +% +\envdef\multitable{% + \vskip\parskip + \startsavinginserts + % + % @item within a multitable starts a normal row. + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% + % + \tolerance=9500 + \hbadness=9500 + \parskip=0pt + \parindent=6pt + \overfullrule=0pt + \global\colcount=0 + % + \everycr = {% + \noalign{% + \global\everytab={}% Reset from possible headitem. + \global\colcount=0 % Reset the column counter. + % + % Check for saved footnotes, etc.: + \checkinserts + % + % Perhaps a \nobreak, then reset: + \headitemcrhook + \global\let\headitemcrhook=\relax + }% + }% + % + \parsearg\domultitable +} +\def\domultitable#1{% + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup &% + \global\advance\colcount by 1 + \strut + \vtop{% + \advance\hsize by -1\leftskip + % Find the correct column width + \hsize=\expandafter\csname col\the\colcount\endcsname + % + \advance\rightskip by -1\rightskip % Zero leaving only any stretch + \ifnum\colcount=1 + \advance\hsize by\leftskip % Add indent of surrounding text + \else + % In order to keep entries from bumping into each other. + \leftskip=12pt + \ifsetpercent \else + % If a template has been used + \advance\hsize by \leftskip + \fi + \fi + \noindent\ignorespaces##\unskip\strut + }\cr +} +\def\Emultitable{% + \crcr + \egroup % end the \halign + \global\setpercentfalse +} + + +\message{conditionals,} + +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotlatex, @ifnotplaintext, +% @ifnotxml always succeed. They currently do nothing; we don't +% attempt to check whether the conditionals are properly nested. But we +% have to remember that they are conditionals, so that @end doesn't +% attempt to close an environment group. +% +\def\makecond#1{% + \expandafter\let\csname #1\endcsname = \relax + \expandafter\let\csname iscond.#1\endcsname = 1 +} +\makecond{iftex} +\makecond{ifnotdocbook} +\makecond{ifnothtml} +\makecond{ifnotinfo} +\makecond{ifnotlatex} +\makecond{ifnotplaintext} +\makecond{ifnotxml} + +% Ignore @ignore, @ifhtml, @ifinfo, and the like. +% +\def\direntry{\doignore{direntry}} +\def\documentdescription{\doignore{documentdescription}} +\def\docbook{\doignore{docbook}} +\def\html{\doignore{html}} +\def\ifdocbook{\doignore{ifdocbook}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifinfo{\doignore{ifinfo}} +\def\iflatex{\doignore{iflatex}} +\def\ifnottex{\doignore{ifnottex}} +\def\ifplaintext{\doignore{ifplaintext}} +\def\ifxml{\doignore{ifxml}} +\def\ignore{\doignore{ignore}} +\def\latex{\doignore{latex}} +\def\menu{\doignore{menu}} +\def\xml{\doignore{xml}} + +% Ignore text until a line `@end #1', keeping track of nested conditionals. +% +% A count to remember the depth of nesting. +\newcount\doignorecount + +\def\doignore#1{\begingroup + % Scan in ``verbatim'' mode: + \obeylines + \catcode`\@ = \other + \catcode`\{ = \other + \catcode`\} = \other + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \spaceisspace + % + % Count number of #1's that we've seen. + \doignorecount = 0 + % + % Swallow text until we reach the matching `@end #1'. + \dodoignore{#1}% +} + +{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. + \obeylines % + % + \gdef\dodoignore#1{% + % #1 contains the command name as a string, e.g., `ifinfo'. + % + % Define a command to find the next `@end #1'. + \long\def\doignoretext##1^^M@end #1{% + \doignoretextyyy##1^^M@#1\_STOP_}% + % + % And this command to find another #1 command, at the beginning of a + % line. (Otherwise, we would consider a line `@c @ifset', for + % example, to count as an @ifset for nesting.) + \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% + % + % And now expand that command. + \doignoretext ^^M% + }% +} + +\def\doignoreyyy#1{% + \def\temp{#1}% + \ifx\temp\empty % Nothing found. + \let\next\doignoretextzzz + \else % Found a nested condition, ... + \advance\doignorecount by 1 + \let\next\doignoretextyyy % ..., look for another. + % If we're here, #1 ends with ^^M\ifinfo (for example). + \fi + \next #1% the token \_STOP_ is present just after this macro. +} + +% We have to swallow the remaining "\_STOP_". +% +\def\doignoretextzzz#1{% + \ifnum\doignorecount = 0 % We have just found the outermost @end. + \let\next\enddoignore + \else % Still inside a nested condition. + \advance\doignorecount by -1 + \let\next\doignoretext % Look for the next @end. + \fi + \next +} + +% Finish off ignored text. +{ \obeylines% + % Ignore anything after the last `@end #1'; this matters in verbatim + % environments, where otherwise the newline after an ignored conditional + % would result in a blank line in the output. + \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% +} + + +% @set VAR sets the variable VAR to an empty value. +% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. +% +% Since we want to separate VAR from REST-OF-LINE (which might be +% empty), we can't just use \parsearg; we have to insert a space of our +% own to delimit the rest of the line, and then take it out again if we +% didn't need it. +% We rely on the fact that \parsearg sets \catcode`\ =10. +% +\parseargdef\set{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + {% + \makevalueexpandable + \def\temp{#2}% + \edef\next{\gdef\makecsname{SET#1}}% + \ifx\temp\empty + \next{}% + \else + \setzzz#2\endsetzzz + \fi + }% +} +% Remove the trailing space \setxxx inserted. +\def\setzzz#1 \endsetzzz{\next{#1}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\parseargdef\clear{% + {% + \makevalueexpandable + \global\expandafter\let\csname SET#1\endcsname=\relax + }% +} + +% @value{foo} gets the text saved in variable foo. +\def\value{\begingroup\makevalueexpandable\valuexxx} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} +{ + \catcode`\-=\active \catcode`\_=\active + % + \gdef\makevalueexpandable{% + \let\value = \expandablevalue + % We don't want these characters active, ... + \catcode`\-=\other \catcode`\_=\other + % ..., 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-\normaldash \let_\normalunderscore + } +} + +\def\expandablevalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {[No value for ``#1'']}% + \message{Variable `#1', used in @value, is not set.}% + \else + \csname SET#1\endcsname + \fi +} + +% Like \expandablevalue, but completely expandable (the \message in the +% definition above operates at the execution level of TeX). Used when +% writing to auxiliary files, due to the expansion that \write does. +% If flag is undefined, pass through an unexpanded @value command: maybe it +% will be set by the time it is read back in. +% +% NB flag names containing - or _ may not work here. +\def\dummyvalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \string\value{#1}% + \else + \csname SET#1\endcsname + \fi +} + +% Used for @value's in index entries to form the sort key: expand the @value +% if possible, otherwise sort late. +\def\indexnofontsvalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + ZZZZZZZ% + \else + \csname SET#1\endcsname + \fi +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +% 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}}} +\def\doifset#1#2{% + {% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname SET#2\endcsname\relax + #1% If not set, redefine \next. + \fi + \expandafter + }\next +} +\def\ifsetfail{\doignore{ifset}} + +% @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 +% above code: if the variable is not set, do nothing, if it is set, +% then redefine \next to \ifclearfail. +% +\makecond{ifclear} +\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 + +% @defininfoenclose. +\let\definfoenclose=\comment + + +\message{indexing,} +% Index generation facilities + +% Define \newwrite to be identical to plain tex's \newwrite +% except not \outer, so it can be used within macros and \if's. +\edef\newwrite{\makecsname{ptexnewwrite}} + +% \newindex {IX} defines an index named IX. +% It automatically defines \IXindex such that +% \IXindex ...rest of line... puts an entry in the index IX. +% It also defines \IXindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is IX. +% +\def\newindex#1{% + \expandafter\chardef\csname#1indfile\endcsname=0 + \expandafter\xdef\csname#1index\endcsname{% % Define @#1index + \noexpand\doindex{#1}} +} + +% @defindex foo == \newindex{foo} +% +\def\defindex{\parsearg\newindex} + +% Define @defcodeindex, like @defindex except put all entries in @code. +% +\def\defcodeindex{\parsearg\newcodeindex} +% +\def\newcodeindex#1{% + \expandafter\chardef\csname#1indfile\endcsname=0 + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% +} + +% The default indices: +\newindex{cp}% concepts, +\newcodeindex{fn}% functions, +\newcodeindex{vr}% variables, +\newcodeindex{tp}% types, +\newcodeindex{ky}% keys +\newcodeindex{pg}% and programs. + + +% @synindex foo bar makes index foo feed into index bar. +% Do this instead of @defindex foo if you don't want it as a separate index. +% +% @syncodeindex foo bar similar, but put all entries made for index foo +% inside @code. +% +\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} +\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + +% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), +% #3 the target index (bar). +\def\dosynindex#1#2#3{% + \requireopenindexfile{#3}% + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% +} + +% Define \doindex, the driver for all index macros. +% Argument #1 is generated by the calling \fooindex macro, +% and it is the two-letter name of the index. + +\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} +\def\doindexxxx #1{\doind{\indexname}{#1}} + +% like the previous two, but they put @code around the argument. +\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} +\def\docodeindexxxx #1{\docind{\indexname}{#1}} + + +% \definedummyword defines \#1 as \string\#1\space, thus effectively +% preventing its expansion. This is used only for control words, +% not control letters, because the \space would be incorrect for +% control characters, but is needed to separate the control word +% from whatever follows. +% +% These can be used both for control words that take an argument and +% those that do not. If it is followed by {arg} in the input, then +% that will dutifully get written to the index (or wherever). +% +% For control letters, we have \definedummyletter, which omits the +% space. +% +\def\definedummyword #1{\def#1{\string#1\space}}% +\def\definedummyletter#1{\def#1{\string#1}}% + +% Used for the aux, toc and index files to prevent expansion of Texinfo +% commands. Most of the commands are controlled through the +% \ifdummies conditional. +% +\def\atdummies{% + \dummiestrue + % + \definedummyletter\@% + \definedummyletter\ % + \definedummyletter\{% + \definedummyletter\}% + \definedummyletter\&% + % + \definedummyletter\_% + \definedummyletter\-% + % + \definedummyword\subentry + % + % We want to disable all macros so that they are not expanded by \write. + \let\commondummyword\definedummyword + \macrolist + \let\value\dummyvalue + % + \turnoffactive +} + +\newif\ifdummies +\newif\ifindexnofonts + +\def\commondummyletter#1{% + \expandafter\let\csname\string#1:impl\endcsname#1% + \edef#1{% + \noexpand\ifindexnofonts + % empty expansion + \noexpand\else + \noexpand\ifdummies\string#1% + \noexpand\else + \noexpand\jumptwofi % dispose of the \fi + \expandafter\noexpand\csname\string#1:impl\endcsname + \noexpand\fi + \noexpand\fi}% +} + +\def\commondummyaccent#1{% + \expandafter\let\csname\string#1:impl\endcsname#1% + \edef#1{% + \noexpand\ifindexnofonts + \noexpand\expandafter % dispose of \else ... \fi + \noexpand\asis + \noexpand\else + \noexpand\ifdummies\string#1% + \noexpand\else + \noexpand\jumptwofi % dispose of the \fi + \expandafter\noexpand\csname\string#1:impl\endcsname + \noexpand\fi + \noexpand\fi}% +} + +% Like \commondummyaccent but add a \space at the end of the dummy expansion +% #2 is the expansion used for \indexnofonts. #2 is always followed by +% \asis to remove a pair of following braces. +\def\commondummyword#1#2{% + \expandafter\let\csname\string#1:impl\endcsname#1% + \expandafter\def\csname\string#1:ixnf\endcsname{#2\asis}% + \edef#1{% + \noexpand\ifindexnofonts + \noexpand\expandafter % dispose of \else ... \fi + \expandafter\noexpand\csname\string#1:ixnf\endcsname + \noexpand\else + \noexpand\ifdummies\string#1\space + \noexpand\else + \noexpand\jumptwofi % dispose of the \fi \fi + \expandafter\noexpand\csname\string#1:impl\endcsname + \noexpand\fi + \noexpand\fi}% +} +\def\jumptwofi#1\fi\fi{\fi\fi#1} + +% For \atdummies and \indexnofonts. \atdummies sets +% \dummiestrue and \indexnofonts sets \indexnofontstrue. +\def\definedummies{ + % @-sign is always an escape character when reading auxiliary files + \escapechar = `\@ + % + \commondummyletter\!% + \commondummyaccent\"% + \commondummyaccent\'% + \commondummyletter\*% + \commondummyaccent\,% + \commondummyletter\.% + \commondummyletter\/% + \commondummyletter\:% + \commondummyaccent\=% + \commondummyletter\?% + \commondummyaccent\^% + \commondummyaccent\`% + \commondummyaccent\~% + % + % Control letters and accents. + \commondummyword\u {}% + \commondummyword\v {}% + \commondummyword\H {}% + \commondummyword\dotaccent {}% + \commondummyword\ogonek {}% + \commondummyword\ringaccent {}% + \commondummyword\tieaccent {}% + \commondummyword\ubaraccent {}% + \commondummyword\udotaccent {}% + \commondummyword\dotless {}% + % + % Texinfo font commands. + \commondummyword\b {}% + \commondummyword\i {}% + \commondummyword\r {}% + \commondummyword\sansserif {}% + \commondummyword\sc {}% + \commondummyword\slanted {}% + \commondummyword\t {}% + % + % Commands that take arguments. + \commondummyword\abbr {}% + \commondummyword\acronym {}% + \commondummyword\anchor {}% + \commondummyword\cite {}% + \commondummyword\code {}% + \commondummyword\command {}% + \commondummyword\dfn {}% + \commondummyword\dmn {}% + \commondummyword\email {}% + \commondummyword\emph {}% + \commondummyword\env {}% + \commondummyword\file {}% + \commondummyword\image {}% + \commondummyword\indicateurl{}% + \commondummyword\inforef {}% + \commondummyword\kbd {}% + \commondummyword\key {}% + \commondummyword\link {}% + \commondummyword\math {}% + \commondummyword\option {}% + \commondummyword\pxref {}% + \commondummyword\ref {}% + \commondummyword\samp {}% + \commondummyword\strong {}% + \commondummyword\tie {}% + \commondummyword\U {}% + \commondummyword\uref {}% + \commondummyword\url {}% + \commondummyword\var {}% + \commondummyword\verb {}% + \commondummyword\w {}% + \commondummyword\xref {}% + % + \commondummyword\AA {AA}% + \commondummyword\AE {AE}% + \commondummyword\DH {DZZ}% + \commondummyword\L {L}% + \commondummyword\O {O}% + \commondummyword\OE {OE}% + \commondummyword\TH {TH}% + \commondummyword\aa {aa}% + \commondummyword\ae {ae}% + \commondummyword\dh {dzz}% + \commondummyword\exclamdown {!}% + \commondummyword\l {l}% + \commondummyword\o {o}% + \commondummyword\oe {oe}% + \commondummyword\ordf {a}% + \commondummyword\ordm {o}% + \commondummyword\questiondown {?}% + \commondummyword\ss {ss}% + \commondummyword\th {th}% + % + \commondummyword\LaTeX {LaTeX}% + \commondummyword\TeX {TeX}% + % + % Assorted special characters. + \commondummyword\ampchar {\normalamp}% + \commondummyword\atchar {\@}% + \commondummyword\arrow {->}% + \commondummyword\backslashchar {\realbackslash}% + \commondummyword\bullet {bullet}% + \commondummyword\comma {,}% + \commondummyword\copyright {copyright}% + \commondummyword\dots {...}% + \commondummyword\enddots {...}% + \commondummyword\entrybreak {}% + \commondummyword\equiv {===}% + \commondummyword\error {error}% + \commondummyword\euro {euro}% + \commondummyword\expansion {==>}% + \commondummyword\geq {>=}% + \commondummyword\guillemetleft {<<}% + \commondummyword\guillemetright {>>}% + \commondummyword\guilsinglleft {<}% + \commondummyword\guilsinglright {>}% + \commondummyword\lbracechar {\{}% + \commondummyword\leq {<=}% + \commondummyword\mathopsup {sup}% + \commondummyword\minus {-}% + \commondummyword\pounds {pounds}% + \commondummyword\point {.}% + \commondummyword\print {-|}% + \commondummyword\quotedblbase {"}% + \commondummyword\quotedblleft {"}% + \commondummyword\quotedblright {"}% + \commondummyword\quoteleft {`}% + \commondummyword\quoteright {'}% + \commondummyword\quotesinglbase {,}% + \commondummyword\rbracechar {\}}% + \commondummyword\registeredsymbol {R}% + \commondummyword\result {=>}% + \commondummyword\sub {}% + \commondummyword\sup {}% + \commondummyword\textdegree {o}% +} + +\let\indexlbrace\relax +\let\indexrbrace\relax +\let\indexatchar\relax +\let\indexbackslash\relax + +{\catcode`\@=0 +\catcode`\\=13 + @gdef@backslashdisappear{@def\{}} +} + +{ +\catcode`\<=13 +\catcode`\-=13 +\catcode`\`=13 + \gdef\indexnonalnumdisappear{% + \ifflagclear{txiindexlquoteignore}{}{% + % @set txiindexlquoteignore makes us ignore left quotes in the sort term. + % (Introduced for FSFS 2nd ed.) + \let`=\empty + }% + % + \ifflagclear{txiindexbackslashignore}{}{% + \backslashdisappear + }% + \ifflagclear{txiindexhyphenignore}{}{% + \def-{}% + }% + \ifflagclear{txiindexlessthanignore}{}{% + \def<{}% + }% + \ifflagclear{txiindexatsignignore}{}{% + \def\@{}% + }% + } + + \gdef\indexnonalnumreappear{% + \let-\normaldash + \let<\normalless + } +} + + +% \indexnofonts is used when outputting the strings to sort the index +% by, and when constructing control sequence names. It eliminates all +% control sequences and just writes whatever the best ASCII sort string +% would be for a given command (usually its argument). +% +\def\indexnofonts{% + \indexnofontstrue + % + \def\ { }% + \def\@{@}% + \def\_{\normalunderscore}% + \def\-{}% @- shouldn't affect sorting + % + \uccode`\1=`\{ \uppercase{\def\{{1}}% + \uccode`\1=`\} \uppercase{\def\}{1}}% + \def\lbracechar##1{\{}% + \def\rbracechar##1{\}}% + % + % + % We need to get rid of all macros, leaving only the arguments (if present). + % Of course this is not nearly correct, but it is the best we can do for now. + % + % Since macro invocations are followed by braces, we can just redefine them + % to take a single TeX argument. The case of a macro invocation that + % goes to end-of-line is not handled. + % + \def\commondummyword##1{\let##1\asis}% + \macrolist + \let\value\indexnofontsvalue +} + + + + +% #1 is the index name, #2 is the entry text. +\def\doind#1#2{% + \iflinks + {% + % + \requireopenindexfile{#1}% + \edef\writeto{\csname#1indfile\endcsname}% + % + \def\indextext{#2}% + \safewhatsit\doindwrite + }% + \fi +} + +% Same as \doind, but for code indices +\def\docind#1#2{% + \iflinks + {% + % + \requireopenindexfile{#1}% + \edef\writeto{\csname#1indfile\endcsname}% + % + \def\indextext{#2}% + \safewhatsit\docindwrite + }% + \fi +} + +% Check if an index file has been opened, and if not, open it. +\def\requireopenindexfile#1{% +\ifnum\csname #1indfile\endcsname=0 + \expandafter\newwrite \csname#1indfile\endcsname + \edef\suffix{#1}% + % A .fls suffix would conflict with the file extension for the output + % of -recorder, so use .f1s instead. + \ifx\suffix\indexisfl\def\suffix{f1}\fi + % Open the file + \immediate\openout\csname#1indfile\endcsname \jobname.\suffix + % Using \immediate above here prevents an object entering into the current + % box, which could confound checks such as those in \safewhatsit for + % preceding skips. + \typeout{Writing index file \jobname.\suffix}% +\fi} +\def\indexisfl{fl} + +% Definition for writing index entry sort key. +{ +\catcode`\-=13 +\gdef\indexwritesortas{% + \begingroup + \indexnonalnumreappear + \indexwritesortasxxx} +\gdef\indexwritesortasxxx#1{% + \xdef\indexsortkey{#1}\endgroup} +} + +\def\indexwriteseealso#1{ + \gdef\pagenumbertext{\string\seealso{#1}}% +} +\def\indexwriteseeentry#1{ + \gdef\pagenumbertext{\string\seeentry{#1}}% +} + +% The default definitions +\def\sortas#1{}% +\def\seealso#1{\i{\putwordSeeAlso}\ #1}% for sorted index file only +\def\putwordSeeAlso{See also} +\def\seeentry#1{\i{\putwordSee}\ #1}% for sorted index file only + + +% Given index entry text like "aaa @subentry bbb @sortas{ZZZ}": +% * Set \bracedtext to "{aaa}{bbb}" +% * Set \fullindexsortkey to "aaa @subentry ZZZ" +% * If @seealso occurs, set \pagenumbertext +% +\def\splitindexentry#1{% + \gdef\fullindexsortkey{}% + \xdef\bracedtext{}% + \def\sep{}% + \def\seealso##1{}% + \def\seeentry##1{}% + \expandafter\doindexsegment#1\subentry\finish\subentry +} + +% append the results from the next segment +\def\doindexsegment#1\subentry{% + \def\segment{#1}% + \ifx\segment\isfinish + \else + % + % Fully expand the segment, throwing away any @sortas directives, and + % trim spaces. + \edef\trimmed{\segment}% + \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% + \ifincodeindex + \edef\trimmed{\noexpand\code{\trimmed}}% + \fi + % + \xdef\bracedtext{\bracedtext{\trimmed}}% + % + % Get the string to sort by. Process the segment with all + % font commands turned off. + \bgroup + \let\sortas\indexwritesortas + \let\seealso\indexwriteseealso + \let\seeentry\indexwriteseeentry + \indexnofonts + % The braces around the commands are recognized by texindex. + \def\lbracechar{{\string\indexlbrace}}% + \def\rbracechar{{\string\indexrbrace}}% + \let\{=\lbracechar + \let\}=\rbracechar + \def\@{{\string\indexatchar}}% + \def\atchar##1{\@}% + \def\backslashchar{{\string\indexbackslash}}% + \uccode`\~=`\\ \uppercase{\let~\backslashchar}% + % + \let\indexsortkey\empty + \global\let\pagenumbertext\empty + % Execute the segment and throw away the typeset output. This executes + % any @sortas or @seealso commands in this segment. + \setbox\dummybox = \hbox{\segment}% + \ifx\indexsortkey\empty{% + \indexnonalnumdisappear + \xdef\trimmed{\segment}% + \xdef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% + \xdef\indexsortkey{\trimmed}% + \ifx\indexsortkey\empty + \message{Empty index sort key near line \the\inputlineno}% + \xdef\indexsortkey{ }% + \fi + }\fi + % + % Append to \fullindexsortkey. + \edef\tmp{\gdef\noexpand\fullindexsortkey{% + \fullindexsortkey\sep\indexsortkey}}% + \tmp + \egroup + \def\sep{\subentry}% + % + \expandafter\doindexsegment + \fi +} +\def\isfinish{\finish}% +\newbox\dummybox % used above + +\let\subentry\relax + +% Use \ instead of @ in index files. To support old texi2dvi and texindex. +% This works without changing the escape character used in the toc or aux +% files because the index entries are fully expanded here, and \string uses +% the current value of \escapechar. +\def\escapeisbackslash{\escapechar=`\\} + +% Uncomment to use \ in index files by default. Old texi2dvi (before 2019) +% didn't support @ as the escape character (as it checked for "\entry" in +% the files, and not "@entry"). +% In the future we can remove this flag and simplify the code for +% index files and backslashes, once the support is no longer likely to be +% useful. +% +% \set txiindexescapeisbackslash + +% Write the entry in \indextext to the index file. +% + +\newif\ifincodeindex +\def\doindwrite{\incodeindexfalse\doindwritex} +\def\docindwrite{\incodeindextrue\doindwritex} + +\def\doindwritex{% + \maybemarginindex + % + \atdummies + % + \ifflagclear{txiindexescapeisbackslash}{}{\escapeisbackslash}% + % + % For texindex which always views { and } as separators. + \def\{{\lbracechar{}}% + \def\}{\rbracechar{}}% + \uccode`\~=`\\ \uppercase{\def~{\backslashchar{}}}% + % + % Split the entry into primary entry and any subentries, and get the index + % sort key. + \splitindexentry\indextext + % + % Set up the complete index entry, with both the sort key and + % the original text, including any font commands. We write + % three arguments to \entry to the .?? file (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + % + \edef\temp{% + \write\writeto{% + \string\entry{\fullindexsortkey}% + {\ifx\pagenumbertext\empty\noexpand\folio\else\pagenumbertext\fi}% + \bracedtext}% + }% + \temp +} + +% Put the index entry in the margin if desired (undocumented). +\def\maybemarginindex{% + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \relax\indextext}}% + \fi +} +\let\SETmarginindex=\relax + + +% Take care of unwanted page breaks/skips around a whatsit: +% +% If a skip is the last thing on the list now, preserve it +% by backing up by \lastskip, doing the \write, then inserting +% the skip again. Otherwise, the whatsit generated by the +% \write or \pdfdest will make \lastskip zero. The result is that +% sequences like this: +% @end defun +% @tindex whatever +% @defun ... +% will have extra space inserted, because the \medbreak in the +% start of the @defun won't see the skip inserted by the @end of +% the previous defun. +% +% But don't do any of this if we're not in vertical mode. We +% don't want to do a \vskip and prematurely end a paragraph. +% +% Avoid page breaks due to these extra skips, too. +% +% But wait, there is a catch there: +% We'll have to check whether \lastskip is zero skip. \ifdim is not +% sufficient for this purpose, as it ignores stretch and shrink parts +% of the skip. The only way seems to be to check the textual +% representation of the skip. +% +% The following is almost like \def\zeroskipmacro{0.0pt} except that +% the ``p'' and ``t'' characters have catcode \other, not 11 (letter). +% +\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} +% +\newskip\whatsitskip +\newcount\whatsitpenalty +% +% ..., ready, GO: +% +\def\safewhatsit#1{\ifhmode + #1% + \else + % \lastskip and \lastpenalty cannot both be nonzero simultaneously. + \whatsitskip = \lastskip + \edef\lastskipmacro{\the\lastskip}% + \whatsitpenalty = \lastpenalty + % + % If \lastskip is nonzero, that means the last item was a + % skip. And since a skip is discardable, that means this + % -\whatsitskip glue we're inserting is preceded by a + % non-discardable item, therefore it is not a potential + % breakpoint, therefore no \nobreak needed. + \ifx\lastskipmacro\zeroskipmacro + \else + \vskip-\whatsitskip + \fi + % + #1% + % + \ifx\lastskipmacro\zeroskipmacro + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % @deffn deffn-whatever + % @vindex index-whatever + % Description. + % would allow a break between the index-whatever whatsit + % and the "Description." paragraph. + \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi + \else + % On the other hand, if we had a nonzero \lastskip, + % this make-up glue would be preceded by a non-discardable item + % (the whatsit from the \write), so we must insert a \nobreak. + \nobreak\vskip\whatsitskip + \fi +\fi} + +% The index entry written in the file actually looks like +% \entry {sortstring}{page}{topic} +% or +% \entry {sortstring}{page}{topic}{subtopic} +% The texindex program reads in these files and writes files +% containing these kinds of lines: +% \initial {c} +% before the first topic whose initial is c +% \entry {topic}{pagelist} +% for a topic that is used without subtopics +% \primary {topic} +% \entry {topic}{} +% for the beginning of a topic that is used with subtopics +% \secondary {subtopic}{pagelist} +% for each subtopic. +% \secondary {subtopic}{} +% for a subtopic with sub-subtopics +% \tertiary {subtopic}{subsubtopic}{pagelist} +% for each sub-subtopic. + +% Define the user-accessible indexing commands +% @findex, @vindex, @kindex, @cindex. + +\def\findex {\fnindex} +\def\kindex {\kyindex} +\def\cindex {\cpindex} +\def\vindex {\vrindex} +\def\tindex {\tpindex} +\def\pindex {\pgindex} + +% Define the macros used in formatting output of the sorted index material. + +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% +\parseargdef\printindex{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \plainfrenchspacing + \everypar = {}% don't want the \kern\-parindent from indentation suppression. + \let\entry\indexentry + \ifxetex\xetexpreauxfile\fi + % + % See comment in \requireopenindexfile. + \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi + % + % See if the index file exists and is nonempty. + \openin 1 \jobname.\indexname s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % and it loses the chapter title and the aux file entries for the + % index. The easiest way to prevent this problem is to make sure + % there is some text. + \putwordIndexNonexistent + \typeout{No file \jobname.\indexname s.}% + \else + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \thisline + \ifeof 1 + \putwordIndexIsEmpty + \else + \expandafter\printindexzz\thisline\relax\relax\finish% + \fi + \fi + \closein 1 + \ifxetex\xetexpostauxfile\fi +\endgroup} + +% Checked in @bye +\let\byeerror\relax + +% If the index file starts with a backslash, forgo reading the index +% file altogether. If somebody upgrades texinfo.tex they may still have +% old index files using \ as the escape character. Reading this would +% at best lead to typesetting garbage, at worst a TeX syntax error. +\def\printindexzz#1#2\finish{% + \ifflagclear{txiindexescapeisbackslash}{% + \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1 + \ifflagclear{txiskipindexfileswithbackslash}{% + % Delay the error message until the very end to give a chance + % for the whole index to be output as input for texindex. + \global\def\byeerror{% +ERROR: A sorted index file in an obsolete format was skipped. +To fix this problem, please upgrade your version of 'texi2dvi' +or 'texi2pdf' to that at . +If you are using an old version of 'texindex' (part of the Texinfo +distribution), you may also need to upgrade to a newer version (at least 6.0). +You may be able to typeset the index if you run +'texindex \jobname.\indexname' yourself. +You could also try setting the 'txiindexescapeisbackslash' flag by +running a command like +'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do +this, Texinfo will try to use index files in the old format. +If you continue to have problems, deleting the index files and starting again +might help (with 'rm \jobname.?? \jobname.??s')% +}% + }{% + (Skipped sorted index file in obsolete format) + }% + \else + \begindoublecolumns + \ifxetex\xetexpreauxfile\fi + \input \jobname.\indexname s + \ifxetex\xetexpostauxfile\fi + \enddoublecolumns + \fi + }{% + \begindoublecolumns + \catcode`\\=0\relax + % + % Make @ an escape character to give macros a chance to work. This + % should work because we (hopefully) don't otherwise use @ in index files. + %\catcode`\@=12\relax + \catcode`\@=0\relax + \ifxetex\xetexpreauxfile\fi + \input \jobname.\indexname s + \ifxetex\xetexpostauxfile\fi + \enddoublecolumns + }% +} + +\def\indexentry#1#2{% + \let\entrypagetarget\empty + \ifpdforxetex + % only link the index text to the page if no comma appears in the + % list of pages, i.e. there is only one page + \checkpagelistcomma{#2}\pagelistcomma + \expandafter\ifcase\pagelistcomma + \def\entrypagetarget{#2}% + \fi + \fi% + \entryinternal{#1}{#2}% +} + +\def\checkpagelistcomma#1#2{% + \checkpagelistcommaxx#2#1,\finish +} +\def\checkpagelistcommaxx#1#2,#3\finish{% + \def\tmp{#3}% + \ifx\tmp\empty + \def#1{0\relax} + \else + \def#1{1\relax} + \fi +} + + +% These macros are used by the sorted index file itself. +% Change them to control the appearance of the index. + +{\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13 +\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 +\catcode`\$=3 +\gdef\initialglyphs{% + % special control sequences used in the index sort key + \let\indexlbrace\{% + \let\indexrbrace\}% + \let\indexatchar\@% + \def\indexbackslash{\math{\backslash}}% + % + % Some changes for non-alphabetic characters. Using the glyphs from the + % math fonts looks more consistent than the typewriter font used elsewhere + % for these characters. + \uccode`\~=`\\ \uppercase{\def~{\math{\backslash}}} + % + % In case @\ is used for backslash + \uppercase{\let\\=~} + % Can't get bold backslash so don't use bold forward slash + \catcode`\/=13 + \def/{{\secrmnotbold \normalslash}}% + \def-{{\normaldash\normaldash}}% en dash `--' + \def^{{\chapbf \normalcaret}}% + \def~{{\chapbf \normaltilde}}% + \def\_{% + \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }% + \def|{$\vert$}% + \def<{$\less$}% + \def>{$\gtr$}% + \def+{$\normalplus$}% +}} + +\def\initial{% + \bgroup + \initialx +} + +\def\initialx#1{% + % Remove any glue we may have, we'll be inserting our own. + \removelastskip + % + % We like breaks before the index initials, so insert a bonus. + % The glue before the bonus allows a little bit of space at the + % bottom of a column to reduce an increase in inter-line spacing. + \nobreak + \vskip 0pt plus 5\baselineskip + \penalty -300 + \vskip 0pt plus -5\baselineskip + % + % Typeset the initial. Making this add up to a whole number of + % baselineskips increases the chance of the dots lining up from column + % to column. It still won't often be perfect, because of the stretch + % we need before each entry, but it's better. + % + % No shrink because it confuses \balancecolumns. + \vskip 1.67\baselineskip plus 1\baselineskip + \doindexinitialentry{#1}% + \initialglyphs + \leftline{% + \secfonts \kern-0.05em \secbf #1}% + % \secfonts is inside the argument of \leftline so that the change of + % \baselineskip will not affect any glue inserted before the vbox that + % \leftline creates. + % Do our best not to break after the initial. + \nobreak + \vskip .33\baselineskip plus .1\baselineskip + \egroup % \initialglyphs +} + +\def\doindexinitialentry#1{% + \ifpdforxetex + \global\advance\idxinitialno by 1 + \def\indexlbrace{\{}% + \def\indexrbrace{\}}% + \def\indexbackslash{\realbackslash}% + \def\indexatchar{\@}% + \writetocentry{idxinitial}{\asis #1}{IDX\the\idxinitialno}% + % The @asis removes a pair of braces around e.g. {@indexatchar} that + % are output by texindex. + % + \pdfmkdest{idx.\asis #1.IDX\the\idxinitialno}% + \fi +} + +% No listing in TOC +\def\idxinitialentry#1#2#3#4{} + +% For index initials. +\newcount\idxinitialno \idxinitialno=1 + + +\newdimen\entryrightmargin +\entryrightmargin=0pt + +% amount to indent subsequent lines in an entry when it spans more than +% one line. +\newdimen\entrycontskip +\entrycontskip=1em + +% for PDF output, whether to make the text of the entry a link to the section. +% set for @contents and @shortcontents. +\newif\iflinkentrytext + +% \entryinternal typesets a paragraph consisting of the text (#1), dot +% leaders, and then page number (#2) flushed to the right margin. It is +% used for index and table of contents entries. The paragraph is indented +% by \leftskip. +% For PDF output, if \linkentrytexttrue and \tocnodetarget is set, link text +% to the referenced node. Else if \entrypagetarget is set, link text to the +% page. +\def\entryinternal{% + \begingroup + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % No extra space above this paragraph. + \parskip = 0in + % + % When reading the text of entry, convert explicit line breaks + % from @* into spaces. The user might give these in long section + % titles, for instance. + \def\*{\unskip\space\ignorespaces}% + \def\entrybreak{\hfil\break}% An undocumented command + % + % Swallow the left brace of the text (first parameter): + \afterassignment\doentry + \let\temp = +} +\def\entrybreak{\unskip\space\ignorespaces}% +\def\doentry{% + % Save the text of the entry in \boxA + \global\setbox\boxA=\hbox\bgroup + \bgroup % Instead of the swallowed brace. + \noindent + \aftergroup\finishentry + % And now comes the text of the entry. + % Not absorbing as a macro argument reduces the chance of problems + % with catcodes occurring. +} +{\catcode`\@=11 +% #1 is the page number +\gdef\finishentry#1{% + \egroup % end \boxA + \dimen@ = \wd\boxA % Length of text of entry + % add any leaders and page number to \boxA. + \global\setbox\boxA=\hbox\bgroup + \ifpdforxetex + \iflinkentrytext + \ifx\tocnodetarget\empty + \unhbox\boxA + \else + \startxreflink{\tocnodetarget}{}% + \unhbox\boxA + \endlink + \fi + \else + \ifx\entrypagetarget\empty + \unhbox\boxA + \else + \pdflinkpage{\entrypagetarget}{\unhbox\boxA}% + \fi + \fi + \else + \unhbox\boxA + \fi + % + % Get the width of the page numbers, and only use + % leaders if they are present. + \global\setbox\boxB = \hbox{#1}% + \ifdim\wd\boxB = 0pt + \null\nobreak\hfill\ % + \else + % + \null\nobreak\indexdotfill % Have leaders before the page number. + % + \hskip\skip\thinshrinkable + \ifpdforxetex + \ifx\tocnodetarget\empty + \pdfgettoks#1.% + \the\toksA + \else + % Should just be a single page number in toc + \startxreflink{\tocnodetarget}{}% + #1\endlink + \fi + \else + #1% + \fi + \fi + \egroup % end \boxA + % + % now output + \ifdim\wd\boxB = 0pt + \noindent\unhbox\boxA\par + \nobreak + \else\bgroup + % We want the text of the entries to be aligned to the left, and the + % page numbers to be aligned to the right. + % + \parindent = 0pt + \advance\leftskip by 0pt plus 1fil + \advance\leftskip by 0pt plus -1fill + \rightskip = 0pt plus -1fil + \advance\rightskip by 0pt plus 1fill + % Cause last line, which could consist of page numbers on their own + % if the list of page numbers is long, to be aligned to the right. + \parfillskip=0pt plus -1fill + % + \advance\rightskip by \entryrightmargin + % + \dimen@ii = \hsize + \advance\dimen@ii by -1\leftskip + \advance\dimen@ii by -1\entryrightmargin + \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line + \ifdim\dimen@ > 0.8\dimen@ii % due to long index text + \advance\leftskip by 0pt plus 1fill % ragged right + % + % Indent all lines but the first one. + \advance\leftskip by \entrycontskip + \advance\parindent by -\entrycontskip + \fi\fi + \indent % start paragraph + \unhbox\boxA + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % Word spacing - no stretch + \spaceskip=\fontdimen2\font minus \fontdimen4\font + % + \linepenalty=1000 % Discourage line breaks. + \hyphenpenalty=5000 % Discourage hyphenation. + % + \par % format the paragraph + \egroup % The \vbox + \fi + \endgroup +}} + +\newskip\thinshrinkable +\skip\thinshrinkable=.15em minus .15em + +% Like plain.tex's \dotfill, except uses up at least 0.5 em. +% The filll stretch here overpowers both the fil and fill stretch to push +% the page number to the right. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 0.5em plus 1filll} + +\def\primary #1{\line{#1\hfil}} + +\def\secondary{\indententry{0.5cm}} +\def\tertiary{\indententry{1cm}} + +\def\indententry#1#2#3{% + \bgroup + \leftskip=#1 + \entry{#2}{#3}% + \egroup +} + +% Define two-column mode, which we use to typeset indexes. +% Adapted from the TeXbook, page 416, which is to say, +% the manmac.tex format used to print the TeXbook itself. +\catcode`\@=11 % private names + +\newbox\partialpage +\newdimen\doublecolumnhsize + +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % If not much space left on page, start a new page. + \ifdim\pagetotal>0.8\vsize\vfill\eject\fi + % + % Grab any single-column material above us. + \output = {% + \savetopmark + % + \global\setbox\partialpage = \vbox{% + % Unvbox the main output page. + \unvbox\PAGE + \kern-\topskip \kern\baselineskip + }% + }% + \eject % run that output routine to set \partialpage + % + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumnhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \advance\vsize by -\ht\partialpage + \vsize = 2\vsize + % + % For the benefit of balancing columns + \advance\baselineskip by 0pt plus 0.5pt +} + +% The double-column output routine for all double-column pages except +% the last, which is done by \balancecolumns. +% +\def\doublecolumnout{% + % + \savetopmark + \splittopskip=\topskip \splitmaxdepth=\maxdepth + \dimen@ = \vsize + \divide\dimen@ by 2 + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit\PAGE to\dimen@ \setbox2=\vsplit\PAGE to\dimen@ + \global\advance\vsize by 2\ht\partialpage + \onepageout\pagesofar % empty except for the first time we are called + \unvbox\PAGE + \penalty\outputpenalty +} +% +% Re-output the contents of the output page -- any previous material, +% followed by the two boxes we just split, in box0 and box2. +\def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\txipagewidth{\box0\hfil\box2}% +} + + +% Finished with double columns. +\def\enddoublecolumns{% + % The following penalty ensures that the page builder is exercised + % _before_ we change the output routine. This is necessary in the + % following situation: + % + % The last section of the index consists only of a single entry. + % Before this section, \pagetotal is less than \pagegoal, so no + % break occurs before the last section starts. However, the last + % section, consisting of \initial and the single \entry, does not + % fit on the page and has to be broken off. Without the following + % penalty the page builder will not be exercised until \eject + % below, and by that time we'll already have changed the output + % routine to the \balancecolumns version, so the next-to-last + % double-column page will be processed with \balancecolumns, which + % is wrong: The two columns will go to the main vertical list, with + % the broken-off section in the recent contributions. As soon as + % the output routine finishes, TeX starts reconsidering the page + % break. The two columns and the broken-off section both fit on the + % page, because the two columns now take up only half of the page + % goal. When TeX sees \eject from below which follows the final + % section, it invokes the new output routine that we've set after + % \balancecolumns below; \onepageout will try to fit the two columns + % and the final section into the vbox of \txipageheight (see + % \pagebody), causing an overfull box. + % + % Note that glue won't work here, because glue does not exercise the + % page builder, unlike penalties (see The TeXbook, pp. 280-281). + \penalty0 + % + \output = {% + % Split the last of the double-column material. + \savetopmark + \balancecolumns + }% + \eject % call the \output just set + \ifdim\pagetotal=0pt + % Having called \balancecolumns once, we do not + % want to call it again. Therefore, reset \output to its normal + % definition right away. + \global\output=\expandafter{\the\defaultoutput} + % + \endgroup % started in \begindoublecolumns + % Leave the double-column material on the current page, no automatic + % page break. + \box\balancedcolumns + % + % \pagegoal was set to the doubled \vsize above, since we restarted + % the current page. We're now back to normal single-column + % typesetting, so reset \pagegoal to the normal \vsize. + \global\vsize = \txipageheight % + \pagegoal = \txipageheight % + \else + % We had some left-over material. This might happen when \doublecolumnout + % is called in \balancecolumns. Try again. + \expandafter\enddoublecolumns + \fi +} +\newbox\balancedcolumns +\setbox\balancedcolumns=\vbox{shouldnt see this}% +% +% Only called for the last of the double column material. \doublecolumnout +% does the others. +\def\balancecolumns{% + \setbox0 = \vbox{\unvbox\PAGE}% like \box255 but more efficient, see p.120. + \dimen@ = \ht0 + \ifdim\dimen@<7\baselineskip + % Don't split a short final column in two. + \setbox2=\vbox{}% + \global\setbox\balancedcolumns=\vbox{\pagesofar}% + \else + % double the leading vertical space + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \divide\dimen@ by 2 % target to split to + \dimen@ii = \dimen@ + \splittopskip = \topskip + % Loop until left column is at least as high as the right column. + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + \ifdim\ht1<\ht3 + \global\advance\dimen@ by 1pt + \repeat + }% + % Now the left column is in box 1, and the right column in box 3. + % + % Check whether the left column has come out higher than the page itself. + % (Note that we have doubled \vsize for the double columns, so + % the actual height of the page is 0.5\vsize). + \ifdim2\ht1>\vsize + % It appears that we have been called upon to balance too much material. + % Output some of it with \doublecolumnout, leaving the rest on the page. + \setbox\PAGE=\box0 + \doublecolumnout + \else + % Compare the heights of the two columns. + \ifdim4\ht1>5\ht3 + % Column heights are too different, so don't make their bottoms + % flush with each other. + \setbox2=\vbox to \ht1 {\unvbox3\vfill}% + \setbox0=\vbox to \ht1 {\unvbox1\vfill}% + \else + % Make column bottoms flush with each other. + \setbox2=\vbox to\ht1{\unvbox3\unskip}% + \setbox0=\vbox to\ht1{\unvbox1\unskip}% + \fi + \global\setbox\balancedcolumns=\vbox{\pagesofar}% + \fi + \fi + % +} +\catcode`\@ = \other + + +\message{sectioning,} +% Chapters, sections, etc. + +% Let's start with @part. +\parseargdef\part{\partzzz{#1}} +\def\partzzz#1{% + \chapoddpage + \null + \vskip.3\vsize % move it down on the page a bit + \begingroup + \noindent \titlefonts\rm #1\par % the text + \let\lastnode=\empty % no node to associate with + \writetocentry{part}{#1}{}% but put it in the toc + \headingsoff % no headline or footline on the part page + % This outputs a mark at the end of the page that clears \thischapter + % and \thissection, as is done in \startcontents. + \let\pchapsepmacro\relax + \chapmacro{}{Yomitfromtoc}{}% + \chapoddpage + \endgroup +} + +% \unnumberedno is an oxymoron. But we count the unnumbered +% sections so that we can refer to them unambiguously in the pdf +% outlines by their "section number". We avoid collisions with chapter +% numbers by starting them at 10000. (If a document ever has 10000 +% chapters, we're in trouble anyway, I'm sure.) +\newcount\unnumberedno \unnumberedno = 10000 +\newcount\chapno +\newcount\secno \secno=0 +\newcount\subsecno \subsecno=0 +\newcount\subsubsecno \subsubsecno=0 + +% This counter is funny since it counts through charcodes of letters A, B, ... +\newcount\appendixno \appendixno = `\@ +% +% \def\appendixletter{\char\the\appendixno} +% We do the following ugly conditional instead of the above simple +% construct for the sake of pdftex, which needs the actual +% letter in the expansion, not just typeset. +% +\def\appendixletter{% + \ifnum\appendixno=`A A% + \else\ifnum\appendixno=`B B% + \else\ifnum\appendixno=`C C% + \else\ifnum\appendixno=`D D% + \else\ifnum\appendixno=`E E% + \else\ifnum\appendixno=`F F% + \else\ifnum\appendixno=`G G% + \else\ifnum\appendixno=`H H% + \else\ifnum\appendixno=`I I% + \else\ifnum\appendixno=`J J% + \else\ifnum\appendixno=`K K% + \else\ifnum\appendixno=`L L% + \else\ifnum\appendixno=`M M% + \else\ifnum\appendixno=`N N% + \else\ifnum\appendixno=`O O% + \else\ifnum\appendixno=`P P% + \else\ifnum\appendixno=`Q Q% + \else\ifnum\appendixno=`R R% + \else\ifnum\appendixno=`S S% + \else\ifnum\appendixno=`T T% + \else\ifnum\appendixno=`U U% + \else\ifnum\appendixno=`V V% + \else\ifnum\appendixno=`W W% + \else\ifnum\appendixno=`X X% + \else\ifnum\appendixno=`Y Y% + \else\ifnum\appendixno=`Z Z% + % The \the is necessary, despite appearances, because \appendixletter is + % expanded while writing the .toc file. \char\appendixno is not + % expandable, thus it is written literally, thus all appendixes come out + % with the same letter (or @) in the toc without it. + \else\char\the\appendixno + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + +% Each @chapter defines these (using marks) as the number+name, number +% and name of the chapter. Page headings and footings can use +% these. @section does likewise. +\def\thischapter{} +\def\thischapternum{} +\def\thischaptername{} +\def\thissection{} +\def\thissectionnum{} +\def\thissectionname{} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count + +% @raisesections: treat @section as chapter, @subsection as section, etc. +\def\raisesections{\global\advance\secbase by -1} + +% @lowersections: treat @chapter as section, @section as subsection, etc. +\def\lowersections{\global\advance\secbase by 1} + +% we only have subsub. +\chardef\maxseclevel = 3 +% +% A numbered section within an unnumbered changes to unnumbered too. +% To achieve this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unnlevel = \maxseclevel +% +% Trace whether the current chapter is an appendix or not: +% \chapheadtype is "N" or "A", unnumbered chapters are ignored. +\def\chapheadtype{N} + +% Choose a heading macro +% #1 is heading type +% #2 is heading level +% #3 is text for heading +\def\genhead#1#2#3{% + % Compute the abs. sec. level: + \absseclevel=#2 + \advance\absseclevel by \secbase + % Make sure \absseclevel doesn't fall outside the range: + \ifnum \absseclevel < 0 + \absseclevel = 0 + \else + \ifnum \absseclevel > 3 + \absseclevel = 3 + \fi + \fi + % The heading type: + \def\headtype{#1}% + \if \headtype U% + \ifnum \absseclevel < \unnlevel + \chardef\unnlevel = \absseclevel + \fi + \else + % Check for appendix sections: + \ifnum \absseclevel = 0 + \edef\chapheadtype{\headtype}% + \else + \if \headtype A\if \chapheadtype N% + \errmessage{@appendix... within a non-appendix chapter}% + \fi\fi + \fi + % Check for numbered within unnumbered: + \ifnum \absseclevel > \unnlevel + \def\headtype{U}% + \else + \chardef\unnlevel = 3 + \fi + \fi + % Now print the heading: + \if \headtype U% + \ifcase\absseclevel + \unnumberedzzz{#3}% + \or \unnumberedseczzz{#3}% + \or \unnumberedsubseczzz{#3}% + \or \unnumberedsubsubseczzz{#3}% + \fi + \else + \if \headtype A% + \ifcase\absseclevel + \appendixzzz{#3}% + \or \appendixsectionzzz{#3}% + \or \appendixsubseczzz{#3}% + \or \appendixsubsubseczzz{#3}% + \fi + \else + \ifcase\absseclevel + \chapterzzz{#3}% + \or \seczzz{#3}% + \or \numberedsubseczzz{#3}% + \or \numberedsubsubseczzz{#3}% + \fi + \fi + \fi + \suppressfirstparagraphindent +} + +% an interface: +\def\numhead{\genhead N} +\def\apphead{\genhead A} +\def\unnmhead{\genhead U} + +% @chapter, @appendix, @unnumbered. Increment top-level counter, reset +% all lower-level sectioning counters to zero. +% +% Also set \chaplevelprefix, which we prepend to @float sequence numbers +% (e.g., figures), q.v. By default (before any chapter), that is empty. +\let\chaplevelprefix = \empty +% +\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz#1{% + % section resetting is \global in case the chapter is in a group, such + % as an @include file. + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\chapno by 1 + % + % Used for \float. + \gdef\chaplevelprefix{\the\chapno.}% + \resetallfloatnos + % + % \putwordChapter can contain complex things in translations. + \toks0=\expandafter{\putwordChapter}% + \message{\the\toks0 \space \the\chapno}% + % + % Write the actual heading. + \chapmacro{#1}{Ynumbered}{\the\chapno}% + % + % So @section and the like are numbered underneath this chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec +} + +\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz +% +\def\appendixzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\appendixno by 1 + \gdef\chaplevelprefix{\appendixletter.}% + \resetallfloatnos + % + % \putwordAppendix can contain complex things in translations. + \toks0=\expandafter{\putwordAppendix}% + \message{\the\toks0 \space \appendixletter}% + % + \chapmacro{#1}{Yappendix}{\appendixletter}% + % + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec +} + +% normally unnmhead0 calls unnumberedzzz: +\outer\parseargdef\unnumbered{\unnmhead0{#1}} +\def\unnumberedzzz#1{% + \global\advance\unnumberedno by 1 + % + % Since an unnumbered has no number, no prefix for figures. + \global\let\chaplevelprefix = \empty + \resetallfloatnos + % + % This used to be simply \message{#1}, but TeX fully expands the + % argument to \message. Therefore, if #1 contained @-commands, TeX + % expanded them. For example, in `@unnumbered The @cite{Book}', TeX + % expanded @cite (which turns out to cause errors because \cite is meant + % to be executed, not expanded). + % + % Anyway, we don't want the fully-expanded definition of @cite to appear + % as a result of the \message, we just want `@cite' itself. We use + % \the to achieve this: TeX expands \the only once, + % simply yielding the contents of . (We also do this for + % the toc entries.) + \toks0 = {#1}% + \message{(\the\toks0)}% + % + \chapmacro{#1}{Ynothing}{\the\unnumberedno}% + % + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\parseargdef\centerchap{% + \let\centerparametersmaybe = \centerparameters + \unnmhead0{#1}% + \let\centerparametersmaybe = \relax +} + +% @top is like @unnumbered. +\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}% +} + +% 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 + +% normally calls unnumberedseczzz: +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} +\def\unnumberedseczzz#1{% + \global\advance\unnumberedno by 1 + \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno}% +} + +% Subsections. +% +% 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}% +} + +% 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}% +} + +% normally calls unnumberedsubseczzz: +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} +\def\unnumberedsubseczzz#1{% + \global\advance\unnumberedno by 1 + \sectionheading{#1}{subsec}{Ynothing}{\the\unnumberedno}% +} + +% Subsubsections. +% +% 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}% +} + +% 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}% +} + +% normally unnumberedsubsubseczzz: +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} +\def\unnumberedsubsubseczzz#1{% + \global\advance\unnumberedno by 1 + \sectionheading{#1}{subsubsec}{Ynothing}{\the\unnumberedno}% +} + +% These macros control what the section commands do, according +% to what kind of chapter we are in (ordinary, appendix, or unnumbered). +% Define them by default for a numbered chapter. +\let\section = \numberedsec +\let\subsection = \numberedsubsec +\let\subsubsection = \numberedsubsubsec + +% Define @majorheading, @heading and @subheading + +\def\majorheading{% + {\advance\chapheadingskip by 10pt \chapbreak }% + \parsearg\chapheadingzzz +} + +\def\chapheading{\chapbreak \parsearg\chapheadingzzz} +\def\chapheadingzzz#1{% + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip \nobreak + \suppressfirstparagraphindent +} + +% @heading, @subheading, @subsubheading. +\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + +% @xrefname - give text with printed name for linking to node and allow +% referencing node, but do not print any heading. +\parseargdef\xrefname{\donoderef{Yomitfromtoc}{#1}}% + +% These macros generate a chapter, section, etc. heading only +% (including whitespace, linebreaking, etc. around it), +% given all the information in convenient, parsed form. + +% Args are the skip and penalty (usually negative) +\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + +% 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}} + +% Start a new page +\def\chappager{\par\vfill\supereject} + +% \chapoddpage - start on an odd page for a new chapter +% Because \domark is called before \chapoddpage, the filler page will +% get the headings for the next chapter, which is wrong. But we don't +% care -- we just disable all headings on the filler page. +\def\chapoddpage{% + \chappager + \ifodd\pageno \else + \begingroup + \headingsoff + \null + \chappager + \endgroup + \fi +} + +\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname\HEADINGSon} + +\def\CHAPPAGoff{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chapbreak +\global\def\HEADINGSon{\HEADINGSsinglechapoff}} + +\def\CHAPPAGon{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chappager +\global\def\HEADINGSon{\HEADINGSsingle}} + +\def\CHAPPAGodd{% +\global\let\contentsalignmacro = \chapoddpage +\global\let\pchapsepmacro=\chapoddpage +\global\def\HEADINGSon{\HEADINGSdouble}} + +\setchapternewpage on + +% \chapmacro - Chapter opening. +% +% #1 is the text, #2 is the section type (Ynumbered, Ynothing, +% Yappendix, Yomitfromtoc), #3 the chapter number. +% Not used for @heading series. +% +% To test against our argument. +\def\Ynothingkeyword{Ynothing} +\def\Yappendixkeyword{Yappendix} +\def\Yomitfromtockeyword{Yomitfromtoc} +% +% +% Definitions for @thischapter. These can be overridden in translation +% files. +\def\thischapterAppendix{% + \putwordAppendix{} \thischapternum: \thischaptername} + +\def\thischapterChapter{% + \putwordChapter{} \thischapternum: \thischaptername} +% +% +\def\chapmacro#1#2#3{% + \expandafter\ifx\thisenv\titlepage\else + \checkenv{}% chapters, etc., should not start inside an environment. + \fi + % Insert the first mark before the heading break (see notes for \domark). + \let\prevchapterdefs=\currentchapterdefs + \let\prevsectiondefs=\currentsectiondefs + \gdef\currentsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% + \gdef\thissection{}}% + % + \def\temptype{#2}% + \ifx\temptype\Ynothingkeyword + \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{\thischaptername}}% + \else\ifx\temptype\Yomitfromtockeyword + \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{}}% + \else\ifx\temptype\Yappendixkeyword + \toks0={#1}% + \xdef\currentchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\appendixletter}% + \let\noexpand\thischapter\noexpand\thischapterAppendix + }% + \else + \toks0={#1}% + \xdef\currentchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\the\chapno}% + \let\noexpand\thischapter\noexpand\thischapterChapter + }% + \fi\fi\fi + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert the chapter heading break. + \pchapsepmacro + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevchapterdefs=\currentchapterdefs + \let\prevsectiondefs=\currentsectiondefs + \domark + % + {% + \chapfonts \rm + \let\footnote=\errfootnoteheading % give better error message + % + % Only insert the separating space if we have a chapter/appendix + % number, and don't print the unnumbered ``number''. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unnchap}% + \else\ifx\temptype\Yomitfromtockeyword + \setbox0 = \hbox{}% contents like unnumbered, but no toc entry + \def\toctype{omit}% + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% + \def\toctype{app}% + \else + \setbox0 = \hbox{#3\enspace}% + \def\toctype{numchap}% + \fi\fi\fi + % + % Write the toc entry for this chapter. Must come before the + % \donoderef, because we include the current node name in the toc + % entry, and \donoderef resets it to empty. + \writetocentry{\toctype}{#1}{#3}% + % + % For pdftex, we have to write out the node definition (aka, make + % the pdfdest) after any page break, but before the actual text has + % been typeset. If the destination for the pdf outline is after the + % text, then jumping from the outline may wind up with the text not + % being visible, for instance under high magnification. + \donoderef{#2}{#1}% + % + % Typeset the actual heading. + \nobreak % Avoid page breaks at the interline glue. + \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerparameters{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt +} + + +% Section titles. These macros combine the section number parts and +% call the generic \sectionheading to do the printing. +% +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip{-1000}} + +% Subsection titles. +\newskip\subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} + +% Subsubsection titles. +\def\subsubsecheadingskip{\subsecheadingskip} +\def\subsubsecheadingbreak{\subsecheadingbreak} + +% Definition for @thissection. This can be overridden in translation +% files. +\def\thissectionDef{% + \putwordSection{} \thissectionnum: \thissectionname} +% + + +% Print any size, any type, section title. +% +% #1 is the text of the title, +% #2 is the section level (sec/subsec/subsubsec), +% #3 is the section type (Ynumbered, Ynothing, Yappendix, Yomitfromtoc), +% #4 is the section number. +% +\def\seckeyword{sec} +% +\def\sectionheading#1#2#3#4{% + {% + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + % It is ok for the @heading series commands to appear inside an + % environment (it's been historically allowed, though the logic is + % dubious), but not the others. + \ifx\temptype\Yomitfromtockeyword\else + \checkenv{}% non-@*heading should not be in an environment. + \fi + \let\footnote=\errfootnoteheading + % + % Switch to the right set of fonts. + \csname #2fonts\endcsname \rm + % + % Insert first mark before the heading break (see notes for \domark). + \let\prevsectiondefs=\currentsectiondefs + \ifx\temptype\Ynothingkeyword + \ifx\sectionlevel\seckeyword + \gdef\currentsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% + \gdef\thissection{\thissectionname}}% + \fi + \else\ifx\temptype\Yomitfromtockeyword + % Don't redefine \thissection. + \else\ifx\temptype\Yappendixkeyword + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\currentsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + \let\noexpand\thissection\noexpand\thissectionDef + }% + \fi + \else + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\currentsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + \let\noexpand\thissection\noexpand\thissectionDef + }% + \fi + \fi\fi\fi + % + % Go into vertical mode. Usually we'll already be there, but we + % don't want the following whatsit to end up in a preceding paragraph + % if the document didn't happen to have a blank line. + \par + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert space above the heading. + \csname #2headingbreak\endcsname + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \global\let\prevsectiondefs=\currentsectiondefs + \domark + % + % Only insert the space after the number if we have a section number. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unn}% + \else\ifx\temptype\Yomitfromtockeyword + % for @headings -- no section number, don't include in toc. + \setbox0 = \hbox{}% + \def\toctype{omit}% + \let\sectionlevel=\empty + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{#4\enspace}% + \def\toctype{app}% + \else + \setbox0 = \hbox{#4\enspace}% + \def\toctype{num}% + \fi\fi\fi + % + % Write the toc entry (before \donoderef). See comments in \chapmacro. + \writetocentry{\toctype\sectionlevel}{#1}{#4}% + % + % Write the node reference (= pdf destination for pdftex). + % Again, see comments in \chapmacro. + \donoderef{#3}{#1}% + % + % Interline glue will be inserted when the vbox is completed. + % That glue will be a valid breakpoint for the page, since it'll be + % preceded by a whatsit (usually from the \donoderef, or from the + % \writetocentry if there was no node). We don't want to allow that + % break, since then the whatsits could end up on page n while the + % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. + \nobreak + % + % Output the actual section heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright + \hangindent=\wd0 % zero if no section number + \unhbox0 #1}% + }% + % Add extra space after the heading -- half of whatever came above it. + % Don't allow stretch, though. + \kern .5 \csname #2headingskip\endcsname + % + % Do not let the kern be a potential breakpoint, as it would be if it + % was followed by glue. + \nobreak + % + % 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.) 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 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 +} + + +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. +% +% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} +% We append the current node name (if any) and page number as additional +% arguments for the \{chap,sec,...}entry macros which will eventually +% read this. The node name is used in the pdf outlines as the +% destination to jump to. +% +% We open the .toc file for writing here instead of at @setfilename (or +% any other fixed time) so that @contents can be anywhere in the document. +% But if #1 is `omit', then we don't do anything. This is used for the +% table of contents chapter openings themselves. +% +\newif\iftocfileopened +\def\omitkeyword{omit}% +% +\def\writetocentry#1#2#3{% + \edef\writetoctype{#1}% + \ifx\writetoctype\omitkeyword \else + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + % + \iflinks + {\atdummies + \edef\temp{% + \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% + \temp + }% + \fi + \fi + % + % Tell \shipout to create a pdf destination on each page, if we're + % writing pdf. These are used in the table of contents. We can't + % just write one on every page because the title pages are numbered + % 1 and 2 (the page numbers aren't printed), and so are the first + % two pages of the document. Thus, we'd have two destinations named + % `1', and two named `2'. + \ifpdforxetex + \global\pdfmakepagedesttrue + \fi +} + + +% These characters do not print properly in the Computer Modern roman +% fonts, so we must take special care. This is more or less redundant +% with the Texinfo input format setup at the end of this file. +% +\def\activecatcodes{% + \catcode`\"=\active + \catcode`\$=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\\=\active + \catcode`\^=\active + \catcode`\_=\active + \catcode`\|=\active + \catcode`\~=\active +} + + +% Read the toc file, which is essentially Texinfo input. +\def\readtocfile{% + \setupdatafile + \activecatcodes + \input \tocreadfilename +} + +% process toc file to find the maximum width of the section numbers for +% each chapter +\def\findsecnowidths{% + \begingroup + \setupdatafile + \activecatcodes + \secentryfonts + % Redefinitions + \def\numchapentry##1##2##3##4{% + \def\curchapname{secnowidth-##2}% + \curchapmax=0pt + }% + \let\appentry\numchapentry + % + \def\numsecentry##1##2##3##4{% + \def\cursecname{secnowidth-##2}% + \cursecmax=0pt + % + \setbox0=\hbox{##2}% + \ifdim\wd0>\curchapmax + \curchapmax=\wd0 + \expandafter\xdef\csname\curchapname\endcsname{\the\wd0}% + \fi + }% + \let\appsecentry\numsecentry + % + \def\numsubsecentry##1##2##3##4{% + \def\curssecname{secnowidth-##2}% + \curssecmax=0pt + % + \setbox0=\hbox{##2}% + \ifdim\wd0>\cursecmax + \cursecmax=\wd0 + \expandafter\xdef\csname\cursecname\endcsname{\the\wd0}% + \fi + }% + \let\appsubsecentry\numsubsecentry + % + \def\numsubsubsecentry##1##2##3##4{% + \setbox0=\hbox{##2}% + \ifdim\wd0>\curssecmax + \curssecmax=\wd0 + \expandafter\xdef\csname\curssecname\endcsname{\the\wd0}% + \fi + }% + \let\appsubsubsecentry\numsubsubsecentry + % + % Discard any output by outputting to dummy vbox, in case the toc file + % contains macros that we have not redefined above. + \setbox\dummybox\vbox\bgroup + \input \tocreadfilename\relax + \egroup + \endgroup +} +\newdimen\curchapmax +\newdimen\cursecmax +\newdimen\curssecmax + + +% set #1 to the maximum section width for #2 +\def\retrievesecnowidth#1#2{% + \expandafter\let\expandafter\savedsecnowidth \csname secnowidth-#2\endcsname + \ifx\savedsecnowidth\relax + #1=0pt + \else + #1=\savedsecnowidth + \fi +} +\newdimen\secnowidthchap +\secnowidthchap=0pt +\newdimen\secnowidthsec +\secnowidthsec=0pt +\newdimen\secnowidthssec +\secnowidthssec=0pt + + +\newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Prepare to read what we've written to \tocfile. +% +\def\startcontents#1#2{% + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. + \contentsalignmacro + \immediate\closeout\tocfile + % + #2% + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \chapmacro{#1}{Yomitfromtoc}{}% + % + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \raggedbottom % Worry more about breakpoints than the bottom. + \entryrightmargin=\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi + \def\thistitle{}% no title in double-sided headings + % Record where the Roman numerals started. + \ifnum\romancount=0 \global\romancount=\pagecount \fi + \linkentrytexttrue +} + +% \raggedbottom in plain.tex hardcodes \topskip so override it +\catcode`\@=11 +\def\raggedbottom{\advance\topskip by 0pt plus60pt \r@ggedbottomtrue} +\catcode`\@=\other + +% redefined for the two-volume lispref. We always output on +% \jobname.toc even if this is redefined. +% +\def\tocreadfilename{\jobname.toc} + +% Normal (long) toc. +% +\def\contents{% + \startcontents{\putwordTOC}{\contentsmkdest}% + \ifxetex\xetexpreauxfile\fi + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \findsecnowidths + \readtocfile + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \ifeof 1 \else + \pdfmakeoutlines + \fi + \closein 1 + \ifxetex\xetexpostauxfile\fi + \endgroup + \contentsendroman +} + +\def\contentsmkdest{% + \pdfmkdest{txi.CONTENTS}% +} + +% And just the chapters. +\def\summarycontents{% + \startcontents{\putwordShortTOC}{}% + % + \let\partentry = \shortpartentry + \let\numchapentry = \shortchapentry + \let\appentry = \shortchapentry + \let\unnchapentry = \shortunnchapentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf + \let\sl=\shortcontsl \let\tt=\shortconttt + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \extrasecnoskip=0.4pt + \def\numsecentry##1##2##3##4{} + \let\appsecentry = \numsecentry + \let\unnsecentry = \numsecentry + \let\numsubsecentry = \numsecentry + \let\appsubsecentry = \numsecentry + \let\unnsubsecentry = \numsecentry + \let\numsubsubsecentry = \numsecentry + \let\appsubsubsecentry = \numsecentry + \let\unnsubsubsecentry = \numsecentry + \ifxetex\xetexpreauxfile\fi + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \closein 1 + \ifxetex\xetexpostauxfile\fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup + \contentsendroman +} +\let\shortcontents = \summarycontents + +% Get ready to use Arabic numerals again +\def\contentsendroman{% + \lastnegativepageno = \pageno + \global\pageno=1 + \contentsendcount = \pagecount +} + +% Typeset the label for a chapter or appendix for the short contents. +% The arg is, e.g., `A' for an appendix, or `3' for a chapter. +% +\def\shortchaplabel#1{% + % This space should be enough, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % But use \hss just in case. + % + % We'd like to right-justify chapter numbers, but that looks strange + % with appendix letters. And right-justifying numbers and + % left-justifying letters looks strange when there is less than 10 + % chapters. Have to read the whole toc once to know how many chapters + % there are before deciding ... + \hbox to 1em{#1\hss}% +} + +% These macros generate individual entries in the table of contents, +% and are read in from the *.toc file. +% +% The arguments are like: +% \def\numchapentry#1#2#3#4 +% #1 - the chapter or section name. +% #2 - section number +% #3 - level of section (e.g "chap", "sec") +% #4 - page number + +% Parts, in the main contents. Replace the part number, which doesn't +% exist, with an empty box. Let's hope all the numbers have the same width. +% Also ignore the page number, which is conventionally not printed. +\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} +\def\partentry#1#2#3#4{% + % Add stretch and a bonus for breaking the page before the part heading. + % This reduces the chance of the page being broken immediately after the + % part heading, before a following chapter heading. + \vskip 0pt plus 5\baselineskip + \penalty-300 + \vskip 0pt plus -5\baselineskip + \dochapentry{#1}{\numeralbox}{#3}{}% +} +% +% Parts, in the short toc. +\def\shortpartentry#1#2#3#4{% + \penalty-300 + \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip + \shortchapentry{{\bf #1}}{\numeralbox}{}{}% +} + +% Chapters, in the main contents. +\def\numchapentry#1#2#3#4{% + \retrievesecnowidth\secnowidthchap{#2}% + \dochapentry{#1}{#2}{#3}{#4}% +} + +% Chapters, in the short toc. +\def\shortchapentry#1#2#3#4{% + \tocentry{#1}{\shortchaplabel{#2}}{#3}{#4}% +} + +% Appendices, in the main contents. +% Need the word Appendix, and a fixed-size box. +% +\def\appendixbox#1{% + % We use M since it's probably the widest letter. + \setbox0 = \hbox{\putwordAppendix{} M}% + \hbox to \wd0{\putwordAppendix{} #1\hss}} +% +\def\appentry#1#2#3#4{% + \retrievesecnowidth\secnowidthchap{#2}% + \dochapentry{\appendixbox{#2}\hskip.7em#1}{}{#3}{#4}% +} + +% Unnumbered chapters. +\def\unnchapentry#1#2#3#4{\dochapentry{#1}{}{#3}{#4}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{}{#3}{#4}} + +% Sections. +\def\numsecentry#1#2#3#4{% + \retrievesecnowidth\secnowidthsec{#2}% + \dosecentry{#1}{#2}{#3}{#4}% +} +\let\appsecentry=\numsecentry +\def\unnsecentry#1#2#3#4{% + \retrievesecnowidth\secnowidthsec{#2}% + \dosecentry{#1}{}{#3}{#4}% +} + +% Subsections. +\def\numsubsecentry#1#2#3#4{% + \retrievesecnowidth\secnowidthssec{#2}% + \dosubsecentry{#1}{#2}{#3}{#4}% +} +\let\appsubsecentry=\numsubsecentry +\def\unnsubsecentry#1#2#3#4{% + \retrievesecnowidth\secnowidthssec{#2}% + \dosubsecentry{#1}{}{#3}{#4}% +} + +% And subsubsections. +\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#2}{#3}{#4}} +\let\appsubsubsecentry=\numsubsubsecentry +\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{}{#3}{#4}} + +% This parameter controls the indentation of the various levels. +% Same as \defaultparindent. +\newdimen\tocindent \tocindent = 15pt + +% Now for the actual typesetting. In all these, #1 is the text, #2 is +% a section number if present, #3 is the node, and #4 is the page number. +% +% If the toc has to be broken over pages, we want it to be at chapters +% if at all possible; hence the \penalty. +\def\dochapentry#1#2#3#4{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + % Move the page numbers slightly to the right + \advance\entryrightmargin by -0.05em + \chapentryfonts + \extrasecnoskip=0.4em % separate chapter number more + \tocentry{#1}{#2}{#3}{#4}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip +} + +\def\dosecentry#1#2#3#4{\begingroup + \secnowidth=\secnowidthchap + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{#2}{#3}{#4}% +\endgroup} + +\def\dosubsecentry#1#2#3#4{\begingroup + \secnowidth=\secnowidthsec + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{#2}{#3}{#4}% +\endgroup} + +\def\dosubsubsecentry#1#2#3#4{\begingroup + \secnowidth=\secnowidthssec + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{#2}{#3}{#4}% +\endgroup} + +% Used for the maximum width of a section number so we can align +% section titles. +\newdimen\secnowidth +\secnowidth=0pt +\newdimen\extrasecnoskip +\extrasecnoskip=0pt + +\let\tocnodetarget\empty +\let\entrypagetarget\empty + +% \tocentry{TITLE}{SEC NO}{NODE}{PAGE} +% +\def\tocentry#1#2#3#4{% + \def\tocnodetarget{#3}% + \def\secno{#2}% + \ifx\empty\secno + \entryinternal{#1}{#4}% + \else + \ifdim 0pt=\secnowidth + \setbox0=\hbox{#2\hskip\labelspace\hskip\extrasecnoskip}% + \else + \advance\secnowidth by \labelspace + \advance\secnowidth by \extrasecnoskip + \setbox0=\hbox to \secnowidth{% + #2\hskip\labelspace\hskip\extrasecnoskip\hfill}% + \fi + \entrycontskip=\wd0 + \entryinternal{\box0 #1}{#4}% + \fi +} +\newdimen\labelspace +\labelspace=0.6em + +\def\chapentryfonts{\secfonts \rm} +\def\secentryfonts{\textfonts} +\def\subsecentryfonts{\textfonts} +\def\subsubsecentryfonts{\textfonts} + + +\message{environments,} +% @foo ... @end foo. + +% @tex ... @end tex escapes into raw TeX temporarily. +% One exception: @ is still an escape character, so that @end tex works. +% But \@ or @@ will get a plain @ character. + +\envdef\tex{% + \setregularquotes + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie + \catcode `\%=14 + \catcode `\+=\other + \catcode `\"=\other + \catcode `\|=\other + \catcode `\<=\other + \catcode `\>=\other + \catcode `\`=\other + \catcode `\'=\other + % + % ' is active in math mode (mathcode"8000). So reset it, and all our + % other math active characters (just in case), to plain's definitions. + \mathactive + % + % Inverse of the list at the beginning of the file. + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\/=\ptexslash + \let\sp=\ptexsp + \let\*=\ptexstar + %\let\sup=\ptexsup % do not redefine, we want @sup to work in math mode + \let\t=\ptext + \expandafter \let\csname top\endcsname=\ptextop % we've made it outer + \let\frenchspacing=\plainfrenchspacing + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +} +% There is no need to define \Etex. + +% Define @lisp ... @end lisp. +% @lisp environment forms a group so it can rebind things, +% including the definition of @end lisp (which normally is erroneous). + +% Amount to narrow the margins by for @lisp. +\newskip\lispnarrowing \lispnarrowing=0.4in + +% This is the definition that ^^M gets inside @lisp, @example, and other +% such environments. \null is better than a space, since it doesn't +% have any width. +\def\lisppar{\null\endgraf} + +% This space is always present above and below environments. +\newskip\envskipamount \envskipamount = 0pt + +% Make spacing and below environment symmetrical. We use \parskip here +% to help in doing that, since in @example-like environments \parskip +% is reset to zero; thus the \afterenvbreak inserts no space -- but the +% start of the next paragraph will insert \parskip. +% +\def\aboveenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + \ifnum\lastpenalty<10000 + % Penalize breaking before the environment, because preceding text + % often leads into it. + \penalty100 + \fi + \vskip\envskipamount + \fi + \fi +}} + +\def\afterenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + % it's not a good place to break if the last penalty was \nobreak + % or better ... + \ifnum\lastpenalty<10000 \penalty-50 \fi + \vskip\envskipamount + \fi + \fi +}} + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will +% also clear it, so that its embedded environments do the narrowing again. +\let\nonarrowing=\relax + +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. + +% +\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth +\def\ctr{{\hskip 6pt\circle\char'010}} +\def\cbl{{\circle\char'012\hskip -6pt}} +\def\cbr{{\hskip 6pt\circle\char'011}} +\def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} +\def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} +% +\newskip\lskip\newskip\rskip + +% only require the font if @cartouche is actually used +\def\cartouchefontdefs{% + \font\circle=lcircle10\relax + \circthick=\fontdimen8\circle +} +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip + +\envparseargdef\cartouche{% + \cartouchefontdefs + \ifhmode\par\fi % can't be in the midst of a paragraph. + \startsavinginserts + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt % we want these *outside*. + % + % Set paragraph width for text inside cartouche. There are + % left and right margins of 3pt each plus two vrules 0.4pt each. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \advance\cartinner by -6.8pt + % + % For drawing top and bottom of cartouche. Each corner char + % adds 6pt and we take off the width of a rule to line up with the + % right boundary perfectly. + \cartouter=\hsize + \advance\cartouter by 11.6pt + % + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % + % 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 + % + \setbox\groupbox=\vtop\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \def\arg{#1}% + \ifx\arg\empty\else + \centerV{\hfil \bf #1 \hfil}% + \fi + \kern3pt + \vskip -\parskip +} +\def\Ecartouche{% + \ifhmode\par\fi + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \addgroupbox + \checkinserts +} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\newdimen\nonfillparindent +\def\nonfillstart{% + \aboveenvbreak + \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 + \parskip = 0pt + % Turn off paragraph indentation but redefine \indent to emulate + % the normal \indent. + \nonfillparindent=\parindent + \parindent = 0pt + \let\indent\nonfillindent + % + \emergencystretch = 0pt % don't try to avoid overfull boxes + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \let\exdent=\nofillexdent +} + +\begingroup +\obeyspaces +% We want to swallow spaces (but not other tokens) after the fake +% @indent in our nonfill-environments, where spaces are normally +% active and set to @tie, resulting in them not being ignored after +% @indent. +\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% +\gdef\nonfillindentcheck{% +\ifx\temp % +\expandafter\nonfillindentgobble% +\else% +\leavevmode\nonfillindentbox% +\fi% +}% +\endgroup +\def\nonfillindentgobble#1{\nonfillindent} +\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} + +% If you want all examples etc. small: @set dispenvsize small. +% If you want even small examples the full size: @set dispenvsize nosmall. +% This affects the following displayed environments: +% @example, @display, @format, @lisp, @verbatim +% +\def\smallword{small} +\def\nosmallword{nosmall} +\let\SETdispenvsize\relax +\def\setnormaldispenv{% + \ifx\SETdispenvsize\smallword + % end paragraph for sake of leading, in case document has no blank + % line. This is redundant with what happens in \aboveenvbreak, but + % we need to do it before changing the fonts, and it's inconvenient + % to change the fonts afterward. + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} +\def\setsmalldispenv{% + \ifx\SETdispenvsize\nosmallword + \else + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} + +% We often define two environments, @foo and @smallfoo. +% Let's do it in one command. #1 is the env name, #2 the definition. +\def\makedispenvdef#1#2{% + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% + \expandafter\let\csname E#1\endcsname \afterenvbreak + \expandafter\let\csname Esmall#1\endcsname \afterenvbreak +} + +% Define two environment synonyms (#1 and #2) for an environment. +\def\maketwodispenvdef#1#2#3{% + \makedispenvdef{#1}{#3}% + \makedispenvdef{#2}{#3}% +} +% +% @lisp: indented, narrowed, typewriter font; +% @example: same as @lisp. +% +% @smallexample and @smalllisp: use smaller fonts. +% Originally contributed by Pavel@xerox. +% +\maketwodispenvdef{lisp}{example}{% + \nonfillstart + \tt\setcodequotes + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \parsearg\gobble +} +% @display/@smalldisplay: same as @lisp except keep current font. +% +\makedispenvdef{display}{% + \nonfillstart + \gobble +} + +% @format/@smallformat: same as @display except don't narrow margins. +% +\makedispenvdef{format}{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} + +% @flushleft: same as @format, but doesn't obey \SETdispenvsize. +\envdef\flushleft{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} +\let\Eflushleft = \afterenvbreak + +% @flushright. +% +\envdef\flushright{% + \let\nonarrowing = t% + \nonfillstart + \advance\leftskip by 0pt plus 1fill\relax + \gobble +} +\let\Eflushright = \afterenvbreak + + +% @raggedright does more-or-less normal line breaking but no right +% justification. From plain.tex. +\envdef\raggedright{% + \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax +} +\let\Eraggedright\par + + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. We keep \parskip nonzero in general, since +% we're doing normal filling. So, when using \aboveenvbreak and +% \afterenvbreak, temporarily make \parskip 0. +% +\makedispenvdef{quotation}{\quotationstart} +% +\def\quotationstart{% + \indentedblockstart % same as \indentedblock, but increase right margin too. + \ifx\nonarrowing\relax + \advance\rightskip by \lispnarrowing + \fi + \parsearg\quotationlabel +} + +% We have retained a nonzero parskip for the environment, since we're +% doing normal filling. +% +\def\Equotation{% + \par + \ifx\quotationauthor\thisisundefined\else + % indent a bit. + \leftline{\kern 2\leftskip \sl ---\quotationauthor}% + \fi + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallquotation{\Equotation} + +% If we're given an argument, typeset it in bold with a colon after. +\def\quotationlabel#1{% + \def\temp{#1}% + \ifx\temp\empty \else + {\bf #1: }% + \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{...} +% If we want to allow any as delimiter, +% we need the curly braces so that makeinfo sees the @verb command, eg: +% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org +% +% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. +% +% [Knuth] p.344; only we need to do the other characters Texinfo sets +% active too. Otherwise, they get lost as the first character on a +% verbatim line. +\def\dospecials{% + \do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% + \do\<\do\>\do\|\do\@\do+\do\"% + % Don't do the quotes -- if we do, @set txicodequoteundirected and + % @set txicodequotebacktick will not have effect on @verb and + % @verbatim, and ?` and !` ligatures won't get disabled. + %\do\`\do\'% +} +% +% [Knuth] p. 380 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1=\other}\dospecials} +% +% Setup for the @verb command. +% +% Eight spaces for a tab +\begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} +\endgroup +% +\def\setupverb{% + \tt + \def\par{\leavevmode\endgraf}% + \parindent = 0pt + \setcodequotes + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Setup for the @verbatim environment +% +% Real tab expansion. +\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount +% +% We typeset each line of the verbatim in an \hbox, so we can handle +% tabs. +\newbox\verbbox +\def\starttabbox{\setbox\verbbox=\hbox\bgroup} +% +\begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab + \divide\dimen\verbbox by\tabw + \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw + \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw + \wd\verbbox=\dimen\verbbox + \leavevmode\box\verbbox \starttabbox + }% + } +\endgroup + +% start the verbatim environment. +\def\setupverbatim{% + \let\nonarrowing = t% + \nonfillstart + \tt % easiest (and conventionally used) font for verbatim + \def\par{\egroup\leavevmode\box\verbbox\endgraf\starttabbox}% + \tabexpand + \setcodequotes + % Respect line breaks, + % print special symbols as themselves, and + % make each space count. + % Must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Do the @verb magic: verbatim text is quoted by unique +% delimiter characters. Before first delimiter expect a +% right brace, after last delimiter expect closing brace: +% +% \def\doverb'{'#1'}'{#1} +% +% [Knuth] p. 382; only eat outer {} +\begingroup + \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] +\endgroup +% +\def\verb{\begingroup\setupverb\doverb} +% +% +% Do the @verbatim magic: define the macro \doverbatim so that +% the (first) argument ends when '@end verbatim' is reached, ie: +% +% \def\doverbatim#1@end verbatim{#1} +% +% For Texinfo it's a lot easier than for LaTeX, +% because texinfo's \verbatim doesn't stop at '\end{verbatim}': +% we need not redefine '\', '{' and '}'. +% +% Inspired by LaTeX's verbatim command set [latex.ltx] +% +\begingroup + \catcode`\ =\active + \obeylines % + % ignore everything up to the first ^^M, that's the newline at the end + % of the @verbatim input line itself. Otherwise we get an extra blank + % line in the output. + \xdef\doverbatim#1^^M#2@end verbatim{% + \starttabbox#2\egroup\noexpand\end\gobble verbatim}% + % We really want {...\end verbatim} in the body of the macro, but + % without the active space; thus we have to use \xdef and \gobble. + % The \egroup ends the \verbbox started at the end of the last line in + % the block. +\endgroup +% +\envdef\verbatim{% + \setnormaldispenv\setupverbatim\doverbatim +} +\let\Everbatim = \afterenvbreak + + +% @verbatiminclude FILE - insert text of file in verbatim environment. +% +\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} +% +\def\doverbatiminclude#1{% + {% + \makevalueexpandable + \setupverbatim + {% + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% + \edef\tmp{\noexpand\input #1 } + \expandafter + }\expandafter\starttabbox\tmp\egroup + \afterenvbreak + }% +} + +% @copying ... @end copying. +% Save the text away for @insertcopying later. +% +% We save the uninterpreted tokens, rather than creating a box. +% Saving the text in a box would be much easier, but then all the +% typesetting commands (@smallbook, font changes, etc.) have to be done +% beforehand -- and a) we want @copying to be done first in the source +% file; b) letting users define the frontmatter in as flexible order as +% possible is desirable. +% +\def\copying{\checkenv{}\begingroup\macrobodyctxt\docopying} +{\catcode`\ =\other +\gdef\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +} + +\def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup +} + + +\message{defuns,} +% @defun etc. + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deflastargmargin \deflastargmargin=18pt +\newcount\defunpenalty + +% Start the processing of @deffn: +\def\startdefun{% + \ifnum\lastpenalty<10000 + \medbreak + \defunpenalty=10003 % Will keep this @deffn together with the + % following @def command, see below. + \else + % If there are two @def commands in a row, we'll have a \nobreak, + % which is there to keep the function description together with its + % header. But if there's nothing but headers, we need to allow a + % break somewhere. Check specifically for penalty 10002, inserted + % by \printdefunline, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % + % 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. + \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi + % + % Similarly, after a section heading, do not allow a break. + % But do insert the glue. + \medskip % preceded by discardable penalty, so not a breakpoint + \fi + % + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent +} + +% Called as \printdefunline \deffooheader{text} +% +\def\printdefunline#1#2{% + \begingroup + \plainfrenchspacing + % call \deffooheader: + #1#2 \endheader + % common ending: + \interlinepenalty = 10000 + \advance\rightskip by 0pt plus 1fil\relax + \endgraf + \nobreak\vskip -\parskip + \penalty\defunpenalty % signal to \startdefun and \deffoox + % Some of the @defun-type tags do not enable magic parentheses, + % rendering the following check redundant. But we don't optimize. + \checkparencounts + \endgroup +} + +\def\Edefun{\endgraf\medbreak} + +% @defblock, @defline do not automatically create index entries +\envdef\defblock{% + \startdefun +} +\let\Edefblock\Edefun + +\def\defline{% + \doingtypefnfalse + \parseargusing\activeparens{\printdefunline\deflineheader}% +} +\def\deflineheader#1 #2 #3\endheader{% + \printdefname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% +} + +\def\deftypeline{% + \doingtypefntrue + \parseargusing\activeparens{\printdefunline\deftypelineheader}% +} +\def\deftypelineheader#1 #2 #3 #4\endheader{% + \printdefname{#1}{#2}{#3}\magicamp\defunargs{#4\unskip}% +} + +% \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) } +% +% Define \deffoo, \deffoox \Edeffoo and \deffooheader. +\def\makedefun#1{% + \expandafter\let\csname E#1\endcsname = \Edefun + \edef\temp{\noexpand\domakedefun + \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% + \temp +} +\def\domakedefun#1#2#3{% + \envdef#1{% + \startdefun + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#2{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As in \startdefun, allow line break if we have multiple x headers + % in a row. It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi + % + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#3% definition of \deffooheader follows +} + +\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}#1 #2 #3\endheader{% + \doind{fn}{\code{#2}}% + \printdefname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% +} + +% @defop category class name args +\makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}} +\def\defopheaderx#1#2 #3 #4\endheader{% + \doind{fn}{\code{#3}\space\putwordon\ \code{#2}}% + \printdefname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}% +} + +% Typed functions: + +% @deftypefn category type name args +\makedefun{deftypefn}#1 #2 #3 #4\endheader{% + \doind{fn}{\code{#3}}% + \doingtypefntrue + \printdefname{#1}{#2}{#3}\defunargs{#4\unskip}% +} + +% @deftypeop category class type name args +\makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}} +\def\deftypeopheaderx#1#2 #3 #4 #5\endheader{% + \doind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}% + \doingtypefntrue + \printdefname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% +} + +% Typed variables: + +% @deftypevr category type var args +\makedefun{deftypevr}#1 #2 #3 #4\endheader{% + \doind{vr}{\code{#3}}% + \printdefname{#1}{#2}{#3}\defunargs{#4\unskip}% +} + +% @deftypecv category class type var args +\makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}} +\def\deftypecvheaderx#1#2 #3 #4 #5\endheader{% + \doind{vr}{\code{#4}\space\putwordof\ \code{#2}}% + \printdefname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% +} + +% Untyped variables: + +% @defvr category var args +\makedefun{defvr}#1 {\deftypevrheader{#1} {} } + +% @defcv category class var args +\makedefun{defcv}#1 {\defcvheaderx{#1\ \putwordof}} +\def\defcvheaderx#1#2 {\deftypecvheaderx{#1}#2 {} } + +% Types: + +% @deftp category name args +\makedefun{deftp}#1 #2 #3\endheader{% + \doind{tp}{\code{#2}}% + \printdefname{#1}{}{#2}\defunargs{#3\unskip}% +} + +% Remaining @defun-like shortcuts: +\makedefun{defun}{\deffnheader{\putwordDeffunc} } +\makedefun{defmac}{\deffnheader{\putwordDefmac} } +\makedefun{defspec}{\deffnheader{\putwordDefspec} } +\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } +\makedefun{defvar}{\defvrheader{\putwordDefvar} } +\makedefun{defopt}{\defvrheader{\putwordDefopt} } +\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } +\makedefun{defmethod}{\defopheaderx\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopheaderx\putwordMethodon} +\makedefun{defivar}{\defcvheaderx\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvheaderx\putwordInstanceVariableof} + +% \printdefname, which formats the name of the @def (not the args). +% #1 is the category, such as "Function". +% #2 is the return type, if any. +% #3 is the function name. +% +% We are followed by (but not passed) the arguments, if any. +% +\def\printdefname#1#2#3{% + \par + % Get the values of \leftskip and \rightskip as they were outside the @def... + \advance\leftskip by -\defbodyindent + % + % 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: + \ifflagclear{txideftypefnnl}{}{\rettypeownlinetrue}% + \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. 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 + % + % 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 + % \hsize has to be shortened this way: + \kern\leftskip + % Intentionally do not respect \rightskip, since we need the space. + }% + % + % Allow all lines to be underfull without complaint: + \tolerance=10000 \hbadness=10000 + \exdentamount=\defbodyindent + {% + \def\^^M{}% for line continuation + % + % defun fonts. We use typewriter by default (used to be bold) because: + % . we're printing identifiers, they should be in tt in principle. + % . in languages with many accents, such as Czech or French, it's + % common to leave accents off identifiers. The result looks ok in + % tt, but exceedingly strange in rm. + % . we don't want -- and --- to be treated as ligatures. + % . this still does not fix the ?` and !` ligatures, but so far no + % one has made identifiers using them :). + \df \tt + \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 + }% + \ifflagclear{txidefnamenospace}{% + {\rm\enskip}% hskip 0.5 em of \rmfont + }{}% + % + \parenbrackglyphs + % arguments will be output next, if any. +} + +% Print arguments. Use slanted for @def*, typewriter for @deftype*. +\def\defunargs#1{% + \bgroup + \def\^^M{}% for line continuation + \df \ifdoingtypefn \tt \else \sl \fi + \ifflagclear{txicodevaristt}{}% + % use \ttsl for @var in both @def* and @deftype*. + % the kern prevents an italic correction at end, which appears + % too much for ttsl. + {\def\var##1{{\setregularquotes \ttsl ##1\kern 0pt }}}% + #1% + \egroup +} + +% We want ()&[] to print specially on the defun line. +% +\def\activeparens{% + \catcode`\(=\active \catcode`\)=\active + \catcode`\[=\active \catcode`\]=\active + \catcode`\&=\active +} + +% Make control sequences which act like normal parenthesis chars. +\let\lparen = ( \let\rparen = ) + +% Be sure that we always have a definition for `(', etc. For example, +% if the fn name has parens in it, \parenbrackglyphs will not be in +% effect yet, so TeX would otherwise complain about undefined control +% sequence. +{ + \activeparens + \gdef\defcharsdefault{% + \let(=\lparen \let)=\rparen + \let[=\lbrack \let]=\rbrack + \let& = \&% + } + \globaldefs=1 \defcharsdefault + + \gdef\parenbrackglyphs{\let(=\opnr\let)=\cpnr\let[=\lbrb\let]=\rbrb} + \gdef\magicamp{\let&=\amprm} +} +\let\ampchar\& + +\def\amprm#1 {{\rm\ }} + +\newcount\parencount +% opening and closing parentheses in roman font +\def\opnr{% + \ptexslash % italic correction + \global\advance\parencount by 1 + {\sf(}% +} +\def\cpnr{% + \ptexslash % italic correction + {\sf)}% + \global\advance\parencount by -1 +} + +\newcount\brackcount +% left and right square brackets in bold font +\def\lbrb{% + \global\advance\brackcount by 1 + {\bf[}% +} +\def\rbrb{% + {\bf]}% + \global\advance\brackcount by -1 +} + +\def\checkparencounts{% + \ifnum\parencount=0 \else \badparencount \fi + \ifnum\brackcount=0 \else \badbrackcount \fi +} +% these should not use \errmessage; the glibc manual, at least, actually +% has such constructs (when documenting function pointers). +\def\badparencount{% + \message{Warning: unbalanced parentheses in @def...}% + \global\parencount=0 +} +\def\badbrackcount{% + \message{Warning: unbalanced square brackets in @def...}% + \global\brackcount=0 +} + + +\message{macros,} +% @macro. + +% 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\thisisundefined + \newwrite\macscribble + \def\scantokens#1{% + \toks0={#1}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \input \jobname.tmp + } +\fi + +% Used at the time of macro expansion. +% Argument is macro body with arguments substituted +\def\scanmacro#1{% + \newlinechar`\^^M + \def\xeatspaces##1{\eatleadingcrthen\eatspaces{##1}}% + % + % Process the macro body under the current catcode regime. + \scantokens{#1@comment}% + % + % The \comment is to remove the \newlinechar added by \scantokens, and + % can be noticed by \parsearg. Note \c isn't used because this means cedilla + % in math mode. +} + +% Used for copying and captions +\def\scanexp#1{% + \expandafter\scanmacro\expandafter{#1}% +} + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? + +% List of all defined macros in the form +% \commondummyword\macro1\commondummyword\macro2... +% Currently is also contains all @aliases; the list can be split +% if there is a need. +\def\macrolist{} + +% Add the macro to \macrolist +\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} +\def\addtomacrolistxxx#1{% + \toks0 = \expandafter{\macrolist\commondummyword#1}% + \xdef\macrolist{\the\toks0}% +} + +% Utility routines. +% This does \let #1 = #2, with \csnames; that is, +% \let \csname#1\endcsname = \csname#2\endcsname +% (except of course we have to play expansion games). +% +\def\cslet#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname +} + +% Trim leading and trailing spaces off a string. +% Concepts from aro-bend problem 15 (see CTAN). +{\catcode`\@=11 +\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} +\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} +\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} +\def\unbrace#1{#1} +\unbrace{\gdef\trim@@@ #1 } #2@{#1} +} + +% Trim a single leading ^^M off a string, then call #1 +{\catcode`\^^M=\active \catcode`\Q=3% +\gdef\eatleadingcrthen #1#2{\eatlcra #1Q#2Q^^MQ}% +\gdef\eatlcra #1#2Q^^M{\eatlcrb #1#2Q}% +\gdef\eatlcrb #1Q#2Q#3Q{#1{#2}}% +} + +% Trim a single trailing ^^M off a string. +{\catcode`\^^M=\other \catcode`\Q=3% +\gdef\eatcr #1{\eatcra #1Q^^MQ}% +\gdef\eatcra#1^^MQ{\eatcrb#1Q}% +\gdef\eatcrb#1Q#2Q{#1}% +} + +% Macro bodies are absorbed as an argument in a context where +% all characters are catcode 10, 11 or 12, except \ which is active +% (as in normal texinfo). It is necessary to change the definition of \ +% to recognize macro arguments; this is the job of \mbodybackslash. +% +% Non-ASCII encodings make 8-bit characters active, so un-activate +% them to avoid their expansion. Must do this non-globally, to +% confine the change to the current group. +% +% It's necessary to have hard CRs when the macro is executed. This is +% done by making ^^M (\endlinechar) catcode 12 when reading the macro +% body, and then making it the \newlinechar in \scanmacro. +% +\def\scanctxt{% used as subroutine + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\~=\other + \catcode`\@=\other + \catcode`\^^M=\other + \catcode`\\=\active + \passthroughcharstrue +} + +\def\macrobodyctxt{% used for @macro definitions and @copying + \scanctxt + \catcode`\ =\other + \catcode`\{=\other + \catcode`\}=\other +} + +% Used when scanning braced macro arguments. Note, however, that catcode +% changes here are ineffectual if the macro invocation was nested inside +% an argument to another Texinfo command. +\def\macroargctxt{% + \scanctxt + \catcode`\ =\active +} + +\def\macrolineargctxt{% used for whole-line arguments without braces + \scanctxt + \catcode`\{=\other + \catcode`\}=\other +} + +% \mbodybackslash is the definition of \ in @macro bodies. +% It maps \foo\ => \csname macarg.foo\endcsname => #N +% where N is the macro parameter number. +% We define \csname macarg.\endcsname to be \realbackslash, so +% \\ in macro replacement text gets you a backslash. +% +{\catcode`@=0 @catcode`@\=@active + @gdef@usembodybackslash{@let\=@mbodybackslash} + @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} +} +\expandafter\def\csname macarg.\endcsname{\realbackslash} + +\def\margbackslash#1{\char`\#1 } + +\def\macro{\recursivefalse\parsearg\macroxxx} +\def\rmacro{\recursivetrue\parsearg\macroxxx} + +\def\macroxxx#1{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty % no arguments + \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}% + \else + \expandafter\ifx\csname \the\macname\endcsname \relax + \else \errmessage{Macro name \the\macname\space already defined}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + \addtomacrolist{\the\macname}% + \fi + \begingroup \macrobodyctxt \usembodybackslash + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\parseargdef\unmacro{% + \if1\csname ismacro.#1\endcsname + \global\cslet{#1}{macsave.#1}% + \global\expandafter\let \csname ismacro.#1\endcsname=0% + % Remove the macro name from \macrolist: + \begingroup + \expandafter\let\csname#1\endcsname \relax + \let\commondummyword\unmacrodo + \xdef\macrolist{\macrolist}% + \endgroup + \fi +} + +% Called by \do from \dounmacro on each macro. The idea is to omit any +% macro definitions that have been changed to \relax. +% +\def\unmacrodo#1{% + \ifx #1\relax + % remove this + \else + \noexpand\commondummyword \noexpand#1% + \fi +} + +% \getargs -- Parse the arguments to a @macro line. Set \macname to +% the name of the macro, and \argl to the braced argument list. +\def\getargs#1{\getargsxxx#1{}} +\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} +\def\getmacname#1 #2\relax{\macname={#1}} +\def\getmacargs#1{\def\argl{#1}} +% This made use of the feature that if the last token of a +% is #, then the preceding argument is delimited by +% an opening brace, and that opening brace is not consumed. + +% Make @ a letter, so that we can make private-to-Texinfo macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + +% Parse the optional {params} list to @macro or @rmacro. +% Set \paramno to the number of arguments, +% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a +% three-param macro.) Define \macarg.BLAH for each BLAH in the params +% list to some hook where the argument is 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). +% +% If there are 10 or more arguments, a different technique is used: see +% \parsemmanyargdef@@. +% +\def\parsemargdef#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + % \hash is redefined to `#' later to get it into definitions + \let\xeatspaces\relax + \parsemargdefxxx#1,;,% + \ifnum\paramno<10\relax\else + \paramno0\relax + \parsemmanyargdef@@#1,;,% 10 or more arguments + \fi +} +\def\parsemargdefxxx#1,{% + \if#1;\let\next=\relax + \else \let\next=\parsemargdefxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\xeatspaces{\hash\the\paramno}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} + +% \parsemacbody, \parsermacbody +% +% Read recursive and nonrecursive macro bodies. (They're different since +% rec and nonrec macros end differently.) +% +% We are in \macrobodyctxt, and the \xdef causes backslashes in the macro +% body to be transformed. +% Set \macrobody to the body of the macro, and call \macrodef. +% +\catcode `\@\texiatcatcode +{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\macrodef}}% +{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\macrodef}}% +\catcode `\@=11\relax + +%%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%% + +% 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 under which the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, no macro can have more than 256 arguments (else error). +% +% 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. +\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} + + +\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}% + } + +% Define the named-macro outside of this group and then close this group. +% +\def\macargexpandinbody@{% + \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 +} + +% Trailing 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}% +} + + +%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%% + + +% This defines a Texinfo @macro or @rmacro, called by \parsemacbody. +% \macrobody has the body of the macro in it, with placeholders for +% its parameters, looking like "\xeatspaces{\hash 1}". +% \paramno is the number of parameters +% \paramlist is a TeX parameter text, e.g. "#1,#2,#3," +% There are four cases: macros of zero, one, up to nine, and many arguments. +% \xdef is used so that macro definitions will survive the file +% they're defined in: @include reads the file inside a group. +% +\def\macrodef{% + \let\hash=##% convert placeholders to macro parameter chars + \ifnum\paramno=1 + \long\def\xeatspaces##1{##1}% + % We don't use \xeatspaces for single-argument macros, because we + % want to keep ends of lines. This definition removes \xeatspaces + % when \macrobody is expanded below. + \else + \def\xeatspaces{\string\xeatspaces}% + % This expands \xeatspaces as a sequence of character tokens, which + % stops \scantokens inserting an extra space after the control sequence. + \fi + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \begingroup + \noexpand\spaceisspace + \noexpand\ignoreactivenewline + \noexpand\expandafter % skip any whitespace after the macro name. + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname{% + \endgroup + \noexpand\scanmacro{\macrobody}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \begingroup + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \endgroup + \noexpand\scanmacro{\macrobody}% + }% + \else % at most 9 + \ifnum\paramno<10\relax + % @MACNAME sets the context for reading the macro argument + % @MACNAME@@ gets the argument, processes backslashes and appends a + % comma. + % @MACNAME@@@ removes braces surrounding the argument list. + % @MACNAME@@@@ scans the macro body with arguments substituted. + \expandafter\xdef\csname\the\macname\endcsname{% + \begingroup + \noexpand\expandafter % This \expandafter skip any spaces after the + \noexpand\macroargctxt % macro before we change the catcode of space. + \noexpand\expandafter + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \noexpand\passargtomacro + \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% + \expandaftergroup{\expandafter\xdef\csname\the\macname @@@@\endcsname}% + \paramlist{% + \endgroup\noexpand\scanmacro{\macrobody}}% + \else % 10 or more: + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble + \fi + \fi} + +\catcode `\@\texiatcatcode\relax % end private-to-Texinfo catcodes + +% utility definition to avoid excessive use of \expandafter. call +% as \expandaftergroup{CONTENT}\WORD to expand \WORD exactly once and remove +% braces around CONTENT. +\def\expandaftergroup#1#2{% + \expandafter\expandaftergroupx\expandafter{#2}{#1}% +} +\def\expandaftergroupx#1#2{% + #2#1% +} + +\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +{\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape +@catcode`@_=11 % private names +@catcode`@!=11 % used as argument separator + +% \passargtomacro#1#2 - +% Call #1 with a list of tokens #2, with any doubled backslashes in #2 +% compressed to one. +% +% This implementation works by expansion, and not execution (so we cannot use +% \def or similar). This reduces the risk of this failing in contexts where +% complete expansion is done with no execution (for example, in writing out to +% an auxiliary file for an index entry). +% +% State is kept in the input stream: the argument passed to +% @look_ahead, @gobble_and_check_finish and @add_segment is +% +% THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input) +% +% where: +% THE_MACRO - name of the macro we want to call +% ARG_RESULT - argument list we build to pass to that macro +% PENDING_BS - either a backslash or nothing +% NEXT_TOKEN - used to look ahead in the input stream to see what's coming next + +@gdef@passargtomacro#1#2{% + @add_segment #1!{}@relax#2\@_finish\% +} +@gdef@_finish{@_finishx} @global@let@_finishx@relax + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 used to look ahead +% +% If the next token is not a backslash, process the rest of the argument; +% otherwise, remove the next token. +@gdef@look_ahead#1!#2#3#4{% + @ifx#4\% + @expandafter@gobble_and_check_finish + @else + @expandafter@add_segment + @fi#1!{#2}#4#4% +} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 should be a backslash, which is gobbled. +% #5 looks ahead +% +% Double backslash found. Add a single backslash, and look ahead. +@gdef@gobble_and_check_finish#1!#2#3#4#5{% + @add_segment#1\!{}#5#5% +} + +@gdef@is_fi{@fi} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 is input stream until next backslash +% +% Input stream is either at the start of the argument, or just after a +% backslash sequence, either a lone backslash, or a doubled backslash. +% NEXT_TOKEN contains the first token in the input stream: if it is \finish, +% finish; otherwise, append to ARG_RESULT the segment of the argument up until +% the next backslash. PENDING_BACKSLASH contains a backslash to represent +% a backslash just before the start of the input stream that has not been +% added to ARG_RESULT. +@gdef@add_segment#1!#2#3#4\{% +@ifx#3@_finish + @call_the_macro#1!% +@else + % append the pending backslash to the result, followed by the next segment + @expandafter@is_fi@look_ahead#1#2#4!{\}@fi + % this @fi is discarded by @look_ahead. + % we can't get rid of it with \expandafter because we don't know how + % long #4 is. +} + +% #1 - THE_MACRO +% #2 - ARG_RESULT +% #3 discards the res of the conditional in @add_segment, and @is_fi ends the +% conditional. +@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}} + +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \braceorline MAC is used for a one-argument macro MAC. It checks +% whether the next non-whitespace character is a {. It sets the context +% for reading the argument (slightly different in the two cases). Then, +% to read the argument, in the whole-line case, it then calls the regular +% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC. +% +\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup + \macroargctxt + \expandafter\passargtomacro + \else + \macrolineargctxt\expandafter\parsearg + \fi \macnamexxx} + + +% @linemacro + +\parseargdef\linemacro{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty + \paramno=0 + \let\hash\relax + \def\paramlist{\hash 1\endlinemacro}% + \else + \expandafter\linegetparamlist\argl;% + \fi + \begingroup \macrobodyctxt \usembodybackslash + \parselinemacrobody +} + +% Build up \paramlist which will be used as the parameter text for the macro. +% At the end it will be like "#1 #2 #3\endlinemacro". +\def\linegetparamlist#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + \linegetparamlistxxx#1,;,% +} +\def\linegetparamlistxxx#1,{% + \if#1;\let\next=\linegetparamlistxxxx + \else \let\next=\linegetparamlistxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\hash\the\paramno}% + \edef\paramlist{\paramlist\hash\the\paramno\space}% + \fi\next} +\def\linegetparamlistxxxx{% + \expandafter\fixparamlist\paramlist\fixparamlist +} +% Replace final space token +\def\fixparamlist#1 \fixparamlist{% + \def\paramlist{#1\endlinemacro}% +} + +% Read the body of the macro, replacing backslash-surrounded variables +% +{\catcode`\ =\other\long\gdef\parselinemacrobody#1@end linemacro{% +\xdef\macrobody{#1}% +\endgroup +\linemacrodef +}} + +% Make the definition +\def\linemacrodef{% + \let\hash=##% + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\parsearg + \expandafter\noexpand\csname\the\macname @@\endcsname + } + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \egroup + \expandafter\noexpand + \csname\the\macname @@@\endcsname##1\noexpand\endlinemacro + } + \expandaftergroup{\expandafter\xdef\csname\the\macname @@@\endcsname}% + \paramlist{% + \newlinechar=13 % split \macrobody into lines + \noexpand\scantokens{\macrobody}% + } +} + + + +% @alias. +% We need some trickery to remove the optional spaces around the equal +% sign. Make them active and then expand them all to nothing. +% +\def\alias{\parseargusing\obeyspaces\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{% + {% + \expandafter\let\obeyedspace=\empty + \addtomacrolist{#1}% + \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% + }% + \next +} + + +\message{cross references,} + +\newwrite\auxfile +\newif\ifhavexrefs % True if xref values are known. +\newif\ifwarnedxrefs % True if we warned once that they aren't known. + +% @inforef is relatively simple. +\def\inforef #1{\inforefzzz #1,,,,**} +\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 +% cross-references. The @node line might or might not have commas, and +% might or might not have spaces before the first comma, like: +% @node foo , bar , ... +% We don't want such trailing spaces in the node name. +% +\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} +% +% also remove a trailing comma, in case of something like this: +% @node Help-Cross, , , Cross-refs +\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}\omittopnode} + +% Used so that the @top node doesn't have to be wrapped in an @ifnottex +% conditional. +% \doignore goes to more effort to skip nested conditionals but we don't need +% that here. +\def\omittopnode{% + \ifx\lastnode\wordTop + \expandafter\ignorenode\fi +} +\def\wordTop{Top} + +% Until the next @node, @part or @bye command, divert output to a box that +% is not output. +\def\ignorenode{\setbox\dummybox\vbox\bgroup +\def\part{\egroup\part}% +\def\node{\egroup\node}% +\ignorenodebye +} + +{\let\bye\relax +\gdef\ignorenodebye{\let\bye\ignorenodebyedef} +\gdef\ignorenodebyedef{\egroup(`Top' node ignored)\bye}} +% The redefinition of \bye here is because it is declared \outer + +\let\lastnode=\empty + +% Write a cross-reference definition for the current node. #1 is the +% type (Ynumbered, Yappendix, Ynothing). #2 is the section title. +% +\def\donoderef#1#2{% + \ifx\lastnode\empty\else + \setref{\lastnode}{#1}{#2}% + \global\let\lastnode=\empty + \setnodeseenonce + \fi +} +\def\setnodeseenonce{ + \global\nodeseentrue + \let\setnodeseenonce\relax +} + +% @nodedescription, @nodedescriptionblock - do nothing for TeX +\parseargdef\nodedescription{} +\def\nodedescriptionblock{\doignore{nodedescriptionblock}} + + +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +% +\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\def\anchor#1{% + \savesf \setref{#1}{Yanchor}{#1}\restoresf \ignorespaces +} + +% @namedanchor{NAME, XREFNAME} -- define xref target at arbitrary point +% with label text for cross-references to it. +\def\namedanchor#1{\donamedanchor#1\finish}% +\def\donamedanchor#1,#2\finish{% + \savesf \setref{#1}{Yanchor}{\ignorespaces #2\unskip}\restoresf \ignorespaces +} + +% \setref{NAME}{SNT}{TITLE} defines a cross-reference point NAME (a node +% or an anchor), which consists of three parts: +% 1) NAME-title - the current sectioning name +% 2) NAME-snt - section number and type, passed as the SNT arg. +% 3) NAME-pg - the page number. +% +% This is called from \donoderef, \anchor, and \dofloat. In the case of +% floats, there is an additional part, which is not written here: +% 4) NAME-lof - the text as it should appear in a @listoffloats. +% +\def\setref#1#2#3{% + \pdfmkdest{#1}% + \iflinks + {% + \requireauxfile + \atdummies % preserve commands, but don't expand them + % match definition in \xrdef, \refx, \xrefX. + \def\value##1{##1}% + \edef\writexrdef##1##2{% + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef + }% + \toks0 = {#3}% + \immediate \writexrdef{title}{\the\toks0 }% + \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. + \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 +% manual. All but the node name can be omitted. +% +\def\pxref{\putwordsee{} \xrefXX} +\def\xref{\putwordSee{} \xrefXX} +\def\ref{\xrefXX} + +\def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX} +\def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]} +% +\newbox\toprefbox +\newbox\printedrefnamebox +\newbox\infofilenamebox +\newbox\printedmanualbox +% +\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \unsepspaces + % + \getprintedrefname{#1}{#3}{#5}% + \def\infofilename{\ignorespaces #4}% + \setbox\infofilenamebox = \hbox{\infofilename\unskip}% + % + \startxreflink{#1}{#4}% + \getrefx{#1-title}\Xthisreftitle + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". \iffloat distinguishes them by + % \Xthisreftitle being set to a magic string. + \iffloat\Xthisreftitle + % If the user specified the print name (third arg) to the ref, + % print it instead of our usual "Figure 1.2". + \ifdim\wd\printedrefnamebox = 0pt + \refx{#1-snt}% + \else + \printedrefname + \fi + % + % If the user also gave the printed manual name (fifth arg), append + % "in MANUALNAME". + \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}}% + \else + % Reference within this manual. + % + % Only output a following space if the -snt ref is nonempty, as is + % the case for @unnumbered and @anchor. + \getrefx{#1-snt}\tmp + \ifx\tmp\empty\else + \ifx\tmp\Yanchor\else + \tmp\space + \fi + \fi + % + % output the `[mynode]' via the macro below so it can be overridden. + \xrefprintnodename\printedrefname + % + \ifflagclear{txiomitxrefpg}{% + % We always want a comma + ,% + % output the `page 3'. + \turnoffactive \putpageref{#1}% + % Add a , if xref followed by a space + \if\space\noexpand\tokenafterxref ,% + \else\ifx\ \tokenafterxref ,% @TAB + \else\ifx\*\tokenafterxref ,% @* + \else\ifx\ \tokenafterxref ,% @SPACE + \else\ifx\ + \tokenafterxref ,% @NL + \else\ifx\tie\tokenafterxref ,% @tie + \fi\fi\fi\fi\fi\fi + }{}% + \fi\fi + \fi + \endlink +\endgroup} + +% \getprintedrefname{NODE}{LABEL}{MANUAL} +% - set \printedrefname and \printedmanual +% +\def\getprintedrefname#1#2#3{% + % Get args without leading/trailing spaces. + \def\printedrefname{\ignorespaces #2}% + \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% + % + \def\printedmanual{\ignorespaces #3}% + \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% + % + % If the printed reference name (arg #2) 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 + % Not auto section-title: use node name inside the square brackets. + \def\printedrefname{\ignorespaces #1}% + \else + % 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 (should) know the real title if we have the xref values. + \def\printedrefname{\refx{#1-title}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% + \fi + \fi + \fi + \fi +} + +% \startxreflink{NODE}{FILE} - start link in pdf output. +\def\startxreflink#1#2{% + \ifpdforxetex + % For pdfTeX and LuaTeX + {\indexnofonts + \makevalueexpandable + \turnoffactive + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. This ignores all spaces in + % #2, including (wrongly) those in the middle of the filename. + \getfilename{#2}% + % + % This (wrongly) does not take account of leading or trailing + % spaces in #1, which should be ignored. + \setpdfdestname{#1}% + % + \ifx\pdfdestname\empty + \def\pdfdestname{Top}% no empty targets + \fi + % + \leavevmode + \ifpdf + \startlink attr{/Border [0 0 0]}% + \ifnum\filenamelength>0 + goto file{\the\filename.pdf} name{\pdfdestname}% + \else + goto name{\pdfdestname}% + \fi + \else % XeTeX + \ifnum\filenamelength>0 + % With default settings, + % XeTeX (xdvipdfmx) replaces link destination names with integers. + % In this case, the replaced destination names of + % remote PDFs are no longer known. In order to avoid a replacement, + % you can use xdvipdfmx's command line option `-C 0x0010'. + % If you use XeTeX 0.99996+ (TeX Live 2016+), + % this command line option is no longer necessary + % because we can use the `dvipdfmx:config' special. + \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A + << /S /GoToR /F (\the\filename.pdf) /D (\pdfdestname) >> >>}% + \else + \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A + << /S /GoTo /D (\pdfdestname) >> >>}% + \fi + \fi + }% + \setcolor{\linkcolor}% + \fi +} + +% can be overridden in translation files +\def\putpageref#1{% + \space\putwordpage\tie\refx{#1-pg}} + +% 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 +% one that Bob is working on :). +% +\def\xrefprintnodename#1{[#1]} + +% @link{NODENAME, LABEL, MANUAL} - create a "plain" link, with no +% page number. Not useful if printed on paper. +% +\def\link#1{\linkX[#1,,,]} +\def\linkX[#1,#2,#3,#4]{% + \begingroup + \unsepspaces + \getprintedrefname{#1}{#2}{#3}% + \startxreflink{#1}{#3}% + \printedrefname + \endlink + \endgroup +} + + +% Things referred to by \setref. +% +\def\Ynothing{} +\def\Yomitfromtoc{} +\def\Yanchor{\isanchor} \let\isanchor\relax +\def\Ynumbered{% + \ifnum\secno=0 + \putwordChapter@tie \the\chapno + \else \ifnum\subsecno=0 + \putwordSection@tie \the\chapno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno + \else + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} +\def\Yappendix{% + \ifnum\secno=0 + \putwordAppendix@tie @char\the\appendixno{}% + \else \ifnum\subsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno + \else + \putwordSection@tie + @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} + +% \refx{NAME} - reference a cross-reference string named NAME. +\def\refx#1{% + \getrefx{#1}\thisrefX + \ifx\thisrefX\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \iflinks + \ifhavexrefs + {\toks0 = {#1}% avoid expansion of possibly-complex value + \message{\linenumber Undefined cross reference `\the\toks0'.}}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \fi + \else + % It's defined, so just use it. + \thisrefX + \fi +} + +% Set #2 to xref string #1 +\def\getrefx#1#2{% + \requireauxfile + {% + \indexnofonts + \turnoffactive + \def\value##1{##1}% + \expandafter\global\expandafter\let\expandafter#2\csname XR#1\endcsname + }% +} + +% This is the macro invoked by entries in the aux file. Define a control +% sequence for a cross-reference target (we prepend XR to the control sequence +% name to avoid collisions). The value is the page number. If this is a float +% type, we have more work to do. +% +\def\xrdef#1#2{% + {% Expand the node or anchor name to remove control sequences. + % \turnoffactive stops 8-bit characters being changed to commands + % like @'e. \refx does the same to retrieve the value in the definition. + \indexnofonts + \turnoffactive + \def\value##1{##1}% + \xdef\safexrefname{#1}% + }% + % + \bgroup + \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% + \egroup + % We put the \gdef inside a group to avoid the definitions building up on + % TeX's save stack, which can cause it to run out of space for aux files with + % thousands of lines. \gdef doesn't use the save stack, but \csname does + % when it defines an unknown control sequence as \relax. + % + % Was that xref control sequence that we just defined for a float? + \expandafter\iffloat\csname XR\safexrefname\endcsname + % it was a float, and we have the (safe) float type in \iffloattype. + \expandafter\let\expandafter\floatlist + \csname floatlist\iffloattype\endcsname + % + % Is this the first time we've seen this float type? + \expandafter\ifx\floatlist\relax + \toks0 = {\do}% yes, so just \do + \else + % had it before, so preserve previous elements in list. + \toks0 = \expandafter{\floatlist\do}% + \fi + % + % Remember this xref in the control sequence \floatlistFLOATTYPE, + % for later use in \listoffloats. + \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 + {\safexrefname}}% + \fi + \ignorespaces % ignore ends of line in aux file +} + +% If working on a large document in chapters, it is convenient to +% be able to disable indexing, cross-referencing, and contents, for test runs. +% This is done with @novalidate at the beginning of the file. +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% Used when writing to the aux file, or when using data from it. +\def\requireauxfile{% + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi + \global\let\requireauxfile=\relax % Only do this once. +} + +% Read the last existing aux file, if any. No error if none exists. +% +\def\tryauxfile{% + \ifxetex\xetexpreauxfile\fi + \openin 1 \jobname.aux + \ifeof 1 \else + \readdatafile{aux}% + \global\havexrefstrue + \fi + \closein 1 + \ifxetex\xetexpostauxfile\fi +} + +\def\setupdatafile{% + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + \catcode`\^=\other + % + % Special characters. Should be turned off anyway, but... + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\active + \catcode`\|=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`\%=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % + \catcode`\\=\active + % + % @ is our escape character in .aux files, and we need braces. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\@=0 +} + +\def\readdatafile#1{% +\begingroup + \setupdatafile + \input\jobname.#1 +\endgroup} + + +\message{insertions,} +% including footnotes. + +\newcount \footnoteno + +% The trailing space in the following definition for supereject is +% vital for proper filling; pages come out unaligned when you do a +% pagealignmacro call if that space before the closing brace is +% removed. (Generally, numeric constants should always be followed by a +% space to prevent strange expansion errors.) +\def\supereject{\par\penalty -20000\footnoteno =0 } + +% @footnotestyle is meaningful for Info output only. +\let\footnotestyle=\comment + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \dofootnote +}% + +% Don't bother with the trickery in plain.tex to not require the +% footnote text as a parameter. Our footnotes don't need to be so general. +% +% Oh yes, they do; otherwise, @ifset (and anything else that uses +% \parseargline) fails inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\gdef\dofootnote{% + \insert\footins\bgroup + % + % Nested footnotes are not supported in TeX, that would take a lot + % more work. (\startsavinginserts does not suffice.) + \let\footnote=\errfootnotenest + % + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \hsize=\txipagewidth + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + \smallfonts \rm + % + % Because we use hanging indentation in footnotes, a @noindent appears + % to exdent this text, so make it be a no-op. makeinfo does not use + % hanging indentation so @noindent can still be needed within footnote + % text after an @example or the like (not that this is good style). + \let\noindent = \relax + % + % Hang the footnote text off the number. Use \everypar in case the + % footnote extends for more than one paragraph. + \everypar = {\hang}% + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % 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 + +\def\errfootnotenest{% + \errhelp=\EMsimple + \errmessage{Nested footnotes not supported in texinfo.tex, + even though they work in makeinfo; sorry} +} + +\def\errfootnoteheading{% + \errhelp=\EMsimple + \errmessage{Footnotes in chapters, sections, etc., are not supported} +} + +% In case a @footnote appears in a vbox, save the footnote text and create +% the real \insert just after the vbox finished. Otherwise, the insertion +% would be lost. +% Similarly, if a @footnote appears inside an alignment, save the footnote +% text to a box and make the \insert when a row of the table is finished. +% And the same can be done for other insert classes. --kasal, 16nov03. +% +% Replace the \insert primitive by a cheating macro. +% Deeper inside, just make sure that the saved insertions are not spilled +% out prematurely. +% +\def\startsavinginserts{% + \ifx \insert\ptexinsert + \let\insert\saveinsert + \else + \let\checkinserts\relax + \fi +} + +% This \insert replacement works for both \insert\footins{foo} and +% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. +% +\def\saveinsert#1{% + \edef\next{\noexpand\savetobox \makeSAVEname#1}% + \afterassignment\next + % swallow the left brace + \let\temp = +} +\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} +\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} + +\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} + +\def\placesaveins#1{% + \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname + {\box#1}% +} + +% eat @SAVE -- beware, all of them have catcode \other: +{ + \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) + \gdef\gobblesave @SAVE{} +} + +% initialization: +\def\newsaveins #1{% + \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% + \next +} +\def\newsaveinsX #1{% + \csname newbox\endcsname #1% + \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts + \checksaveins #1}% +} + +% initialize: +\let\checkinserts\empty +\newsaveins\footins +\newsaveins\margin + + +% @image. We use the macros from epsf.tex to support this. +% If epsf.tex is not installed and @image is used, we complain. +% +% Check for and read epsf.tex up front. If we read it only at @image +% time, we might be inside a group, and then its definitions would get +% undone and the next image would fail. +\openin 1 = epsf.tex +\ifeof 1 \else + % Do not bother showing banner with epsf.tex v2.7k (available in + % doc/epsf.tex and on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +\closein 1 +% +% We will only complain once about lack of epsf.tex. +\newif\ifwarnednoepsf +\newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from https://ctan.org/texarchive/macros/texinfo/texinfo/doc/epsf.tex.} +% +\def\image#1{% + \ifx\epsfbox\thisisundefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,,,\finish + \fi +} + +% Approximate height of a line in the standard text font. +\newdimen\capheight +\setbox0=\vbox{\tenrm H} +\capheight=\ht0 + +% +% Arguments to @image: +% #1 is (mandatory) image filename; we tack on .eps extension. +% #2 is (optional) width, #3 is (optional) height. +% #4 is (ignored optional) html alt text. +% #5 is (ignored optional) extension. +% #6 is just the usual extra ignored arg for parsing stuff. +\newif\ifimagevmode +\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names + \makevalueexpandable + \ifvmode + \imagevmodetrue + \medskip + % Usually we'll have text after the image which will insert + % \parskip glue, so insert it here too to equalize the space + % above and below. + \vskip\parskip + % + % Place image in a \vtop for a top page margin that is (close to) correct, + % as \topskip glue is relative to the first baseline. + \vtop\bgroup \kern -\capheight \vskip-\parskip + \fi + % + \ifx\centersub\centerV + % For @center @image, enter vertical mode and add vertical space + % Enter an extra \parskip because @center doesn't add space itself. + \vbox\bgroup\vskip\parskip\medskip\vskip\parskip + \else + % Enter horizontal mode so that indentation from an enclosing + % environment such as @quotation is respected. + % However, if we're at the top level, we don't want the + % normal paragraph indentation. + \imageindent + \fi + % + % Output the image. + \ifpdf + % For pdfTeX and LuaTeX <= 0.80 + \dopdfimage{#1}{#2}{#3}% + \else + \ifxetex + \doxeteximage{#1}{#2}{#3}% + \else + % For epsf.tex + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% + \fi + \fi + % + \ifimagevmode + \egroup + \medskip % space after a standalone image + \fi + \ifx\centersub\centerV % @center @image + \medskip + \egroup % close \vbox + \fi +\endgroup} + + +% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, +% etc. We don't actually implement floating yet, we always include the +% float "here". But it seemed the best name for the future. +% +\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + +% There may be a space before second and/or third parameter; delete it. +\def\eatcommaspace#1, {#1,} + +% #1 is the optional FLOATTYPE, the text label for this float, typically +% "Figure", "Table", "Example", etc. Can't contain commas. If omitted, +% this float will not be numbered and cannot be referred to. +% +% #2 is the optional xref label. Also must be present for the float to +% be referable. +% +% #3 is the optional positioning argument; for now, it is ignored. It +% will somehow specify the positions allowed to float to (here, top, bottom). +% +% We keep a separate counter for each FLOATTYPE, which we reset at each +% chapter-level command. +\let\resetallfloatnos=\empty +% +\def\dofloat#1,#2,#3,#4\finish{% + \let\thiscaption=\empty + \let\thisshortcaption=\empty + % + % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \startsavinginserts + % + % We can't be used inside a paragraph. + \par + % + \vtop\bgroup + \def\floattype{#1}% + \def\floatlabel{#2}% + \def\floatloc{#3}% we do nothing with this yet. + % + \ifx\floattype\empty + \let\safefloattype=\empty + \else + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + \fi + % + % If label is given but no type, we handle that as the empty type. + \ifx\floatlabel\empty \else + % We want each FLOATTYPE to be numbered separately (Figure 1, + % Table 1, Figure 2, ...). (And if no label, no number.) + % + \expandafter\getfloatno\csname\safefloattype floatno\endcsname + \global\advance\floatno by 1 + % + {% + % This magic value for the third argument of \setref is output as + % the XREFLABEL-title value. \xrefX uses it to distinguish float + % labels (which have a completely different output format) from + % node and anchor labels. And \xrdef uses it to construct the + % lists of floats. + % + \edef\tmp{\noexpand\setref{\floatlabel}{Yfloat}% + {\floatmagic=\safefloattype}}% + \tmp + }% + \fi + % + % start with \parskip glue, I guess. + \vskip\parskip + % + % Don't suppress indentation if a float happens to start a section. + \restorefirstparagraphindent +} + +% we have these possibilities: +% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap +% @float Foo,lbl & no caption: Foo 1.1 +% @float Foo & @caption{Cap}: Foo: Cap +% @float Foo & no caption: Foo +% @float ,lbl & Caption{Cap}: 1.1: Cap +% @float ,lbl & no caption: 1.1 +% @float & @caption{Cap}: Cap +% @float & no caption: +% +\def\Efloat{% + \let\floatident = \empty + % + % In all cases, if we have a float type, it comes first. + \ifx\floattype\empty \else \def\floatident{\floattype}\fi + % + % If we have an xref label, the number comes next. + \ifx\floatlabel\empty \else + \ifx\floattype\empty \else % if also had float type, need tie first. + \appendtomacro\floatident{\tie}% + \fi + % the number. + \appendtomacro\floatident{\chaplevelprefix\the\floatno}% + \fi + % + % Start the printed caption with what we've constructed in + % \floatident, but keep it separate; we need \floatident again. + \let\captionline = \floatident + % + \ifx\thiscaption\empty \else + \ifx\floatident\empty \else + \appendtomacro\captionline{: }% had ident, so need a colon between + \fi + % + % caption text. + \appendtomacro\captionline{\scanexp\thiscaption}% + \fi + % + % If we have anything to print, print it, with space before. + % Eventually this needs to become an \insert. + \ifx\captionline\empty \else + \vskip.5\parskip + \captionline + % + % Space below caption. + \vskip\parskip + \fi + % + % If have an xref label, write the list of floats info. Do this + % after the caption, to avoid chance of it being a breakpoint. + \ifx\floatlabel\empty \else + % Write the text that goes in the lof to the aux file as + % \floatlabel-lof. Besides \floatident, we include the short + % caption if specified, else the full caption if specified, else nothing. + {% + \requireauxfile + \atdummies + % + \ifx\thisshortcaption\empty + \def\gtemp{\thiscaption}% + \else + \def\gtemp{\thisshortcaption}% + \fi + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% + }% + \fi + \egroup % end of \vtop + % + \checkinserts +} + +% Append the tokens #2 to the definition of macro #1, not expanding either. +% +\def\appendtomacro#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% +} + +% @caption, @shortcaption +% +\def\caption{\docaption\thiscaption} +\def\shortcaption{\docaption\thisshortcaption} +\def\docaption{\checkenv\float \bgroup\scanctxt\docaptionz} +\def\docaptionz#1#2{\egroup \def#1{#2}} + +% The parameter is the control sequence identifying the counter we are +% going to use. Create it if it doesn't exist and assign it to \floatno. +\def\getfloatno#1{% + \ifx#1\relax + % Haven't seen this figure type before. + \csname newcount\endcsname #1% + % + % Remember to reset this floatno at the next chap. + \expandafter\gdef\expandafter\resetallfloatnos + \expandafter{\resetallfloatnos #1=0 }% + \fi + \let\floatno#1% +} + +% \setref calls this to get the XREFLABEL-snt value. We want an @xref +% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we +% first read the @float command. +% +\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% + +% Magic string used for the XREFLABEL-title value, so \xrefX can +% distinguish floats from other xref types. +\def\floatmagic{!!float!!} + +% #1 is the control sequence we are passed; we expand into a conditional +% which is true if #1 represents a float ref. That is, the magic +% value which we passed to \setref above. +% +\def\iffloat#1{\expandafter\doiffloat#1==\finish} +% +% #1 is (maybe) the \floatmagic string. If so, #2 will be the +% (safe) float type for this float. We set \iffloattype to #2. +% +\def\doiffloat#1=#2=#3\finish{% + \def\temp{#1}% + \def\iffloattype{#2}% + \ifx\temp\floatmagic +} + +% @listoffloats FLOATTYPE - print a list of floats like a table of contents. +% +\parseargdef\listoffloats{% + \def\floattype{#1}% floattype + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + % + % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. + \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax + \ifhavexrefs + % if the user said @listoffloats foo but never @float foo. + \message{\linenumber No `\safefloattype' floats to list.}% + \fi + \else + \begingroup + \leftskip=\tocindent % indent these entries like a toc + \let\do=\listoffloatsdo + \csname floatlist\safefloattype\endcsname + \endgroup + \fi +} + +% This is called on each entry in a list of floats. We're passed the +% xref label, in the form LABEL-title, which is how we save it in the +% aux file. We strip off the -title and look up \XRLABEL-lof, which +% has the text we're supposed to typeset here. +% +% Figures without xref labels will not be included in the list (since +% they won't appear in the aux file). +% +\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} +\def\listoffloatsdoentry#1-title\finish{{% + % Can't fully expand XR#1-lof because it can contain anything. Just + % pass the control sequence. On the other hand, XR#1-pg is just the + % page number, and we want to fully expand that so we can get a link + % in pdf output. + \toksA = \expandafter{\csname XR#1-lof\endcsname}% + % + % use the same \entry macro we use to generate the TOC and index. + \let\entry\entryinternal + \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% + \writeentry +}} + + +\message{localization,} + +% For single-language documents, @documentlanguage is usually given very +% early, just after @documentencoding. Single argument is the language +% (de) or locale (de_DE) abbreviation. +% +{ + \catcode`\_ = \active + \globaldefs=1 +\parseargdef\documentlanguage{% + \tex % read txi-??.tex file in plain TeX. + % Read the file by the name they passed if it exists. + \let_ = \normalunderscore % normal _ character for filename test + \openin 1 txi-#1.tex + \ifeof 1 + \documentlanguagetrywithoutunderscore #1_\finish + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 + \endgroup % end raw TeX +} +% +% If they passed de_DE, and txi-de_DE.tex doesn't exist, +% try txi-de.tex. +% +\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% + \openin 1 txi-#1.tex + \ifeof 1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 +} +}% end of special _ catcode +% +\newhelp\nolanghelp{The given language definition file cannot be found or +is empty. Maybe you need to install it? Putting it in the current +directory should work if nowhere else does.} + +% This macro is called from txi-??.tex files; the first argument is the +% \language name to set (without the "\lang@" prefix), the second and +% third args are \{left,right}hyphenmin. +% +% The language names to pass are determined when the format is built. +% See the etex.log file created at that time, e.g., +% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. +% +% With TeX Live 2008, etex now includes hyphenation patterns for all +% available languages. This means we can support hyphenation in +% Texinfo, at least to some extent. (This still doesn't solve the +% accented characters problem.) +% +\catcode`@=11 +\def\txisetlanguage#1#2#3{% + % do not set the language if the name is undefined in the current TeX. + \expandafter\ifx\csname lang@#1\endcsname \relax + \message{no patterns for #1}% + \else + \global\language = \csname lang@#1\endcsname + \fi + % but there is no harm in adjusting the hyphenmin values regardless. + \global\lefthyphenmin = #2\relax + \global\righthyphenmin = #3\relax +} + +% XeTeX and LuaTeX can handle Unicode natively. +% Their default I/O uses UTF-8 sequences instead of a byte-wise operation. +% Other TeX engines' I/O (pdfTeX, etc.) is byte-wise. +% +\newif\iftxinativeunicodecapable +\newif\iftxiusebytewiseio + +\ifxetex + \txinativeunicodecapabletrue + \txiusebytewiseiofalse +\else + \ifluatex + \txinativeunicodecapabletrue + \txiusebytewiseiofalse + \else + \txinativeunicodecapablefalse + \txiusebytewiseiotrue + \fi +\fi + +\let\xetexpreauxfile\relax +\let\xetexpostauxfile\relax + +% Set I/O by bytes instead of UTF-8 sequence for XeTeX and LuaTex +% for non-UTF-8 (byte-wise) encodings. +% +\def\setbytewiseio{% + \ifxetex + % For document root file + \XeTeXinputencoding "bytes" + % + % Setting for subsequent files to be read with @include. + \XeTeXdefaultencoding "bytes" + % + % Use UTF-8 for reading auxiliary index and TOC files, which are + % always output in UTF-8 with XeTeX. + \def\xetexpreauxfile{\XeTeXdefaultencoding "UTF-8"}% + \def\xetexpostauxfile{\XeTeXdefaultencoding "bytes"}% + \fi + + \ifluatex + \directlua{ + local utf8_char, byte, gsub = unicode.utf8.char, string.byte, string.gsub + local function convert_char (char) + return utf8_char(byte(char)) + end + + local function convert_line (line) + return gsub(line, ".", convert_char) + end + + callback.register("process_input_buffer", convert_line) + + local function convert_line_out (line) + local line_out = "" + for c in string.utfvalues(line) do + line_out = line_out .. string.char(c) + end + return line_out + end + + callback.register("process_output_buffer", convert_line_out) + } + \fi + + \txiusebytewiseiotrue +} + + +% Helpers for encodings. +% Set the catcode of characters 128 through 255 to the specified number. +% +\def\setnonasciicharscatcode#1{% + \count255=128 + \loop\ifnum\count255<256 + \global\catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +\def\setnonasciicharscatcodenonglobal#1{% + \count255=128 + \loop\ifnum\count255<256 + \catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +% @documentencoding sets the definition of non-ASCII characters +% according to the specified encoding. +% +\def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz} +\def\documentencodingzzz#1{% + % + % Encoding being declared for the document. + \def\declaredencoding{\csname #1.enc\endcsname}% + % + % Supported encodings: names converted to tokens in order to be able + % to compare them with \ifx. + \def\ascii{\csname US-ASCII.enc\endcsname}% + \def\latnine{\csname ISO-8859-15.enc\endcsname}% + \def\latone{\csname ISO-8859-1.enc\endcsname}% + \def\lattwo{\csname ISO-8859-2.enc\endcsname}% + \def\utfeight{\csname UTF-8.enc\endcsname}% + % + \ifx \declaredencoding \ascii + \asciichardefs + % + \else \ifx \declaredencoding \lattwo + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \lattwochardefs + % + \else \ifx \declaredencoding \latone + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \latonechardefs + % + \else \ifx \declaredencoding \latnine + \iftxinativeunicodecapable + \setbytewiseio + \fi + \setnonasciicharscatcode\active + \latninechardefs + % + \else \ifx \declaredencoding \utfeight + \iftxinativeunicodecapable + % For native Unicode handling (XeTeX and LuaTeX) + \nativeunicodechardefs + \else + % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX). + % Since we already invoke \utfeightchardefs at the top level, + % making non-ascii chars active is sufficient. + \setnonasciicharscatcode\active + \fi + % + \else + \message{Ignoring unknown document encoding: #1.}% + % + \fi % utfeight + \fi % latnine + \fi % latone + \fi % lattwo + \fi % ascii + % + \ifxetex + \ifx \declaredencoding \utfeight + \else + \ifx \declaredencoding \ascii + \else + \message{Warning: XeTeX with non-UTF-8 encodings cannot handle % + non-ASCII characters in auxiliary files.}% + \fi + \fi + \fi +} + +% A message to be logged when using a character that isn't available +% the default font encoding (OT1). +% +\def\missingcharmsg#1{\message{Character missing, sorry: #1.}} + +% Take account of \c (plain) vs. \, (Texinfo) difference. +\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} + +\def\gdefchar#1#2{% +\gdef#1{% + \ifpassthroughchars + \string#1% + \else + #2% + \fi +}} + +\begingroup + +% Make non-ASCII characters active for defining the character definition +% macros. +\setnonasciicharscatcode\active + +% Latin1 (ISO-8859-1) character definitions. +\gdef\latonechardefs{% + \gdefchar^^a0{\tie} + \gdefchar^^a1{\exclamdown} + \gdefchar^^a2{{\tcfont \char162}} % cent + \gdefchar^^a3{\pounds{}} + \gdefchar^^a4{{\tcfont \char164}} % currency + \gdefchar^^a5{{\tcfont \char165}} % yen + \gdefchar^^a6{{\tcfont \char166}} % broken bar + \gdefchar^^a7{\S} + \gdefchar^^a8{\"{}} + \gdefchar^^a9{\copyright{}} + \gdefchar^^aa{\ordf} + \gdefchar^^ab{\guillemetleft{}} + \gdefchar^^ac{\ensuremath\lnot} + \gdefchar^^ad{\-} + \gdefchar^^ae{\registeredsymbol{}} + \gdefchar^^af{\={}} + % + \gdefchar^^b0{\textdegree} + \gdefchar^^b1{$\pm$} + \gdefchar^^b2{$^2$} + \gdefchar^^b3{$^3$} + \gdefchar^^b4{\'{}} + \gdefchar^^b5{$\mu$} + \gdefchar^^b6{\P} + \gdefchar^^b7{\ensuremath\cdot} + \gdefchar^^b8{\cedilla\ } + \gdefchar^^b9{$^1$} + \gdefchar^^ba{\ordm} + \gdefchar^^bb{\guillemetright{}} + \gdefchar^^bc{$1\over4$} + \gdefchar^^bd{$1\over2$} + \gdefchar^^be{$3\over4$} + \gdefchar^^bf{\questiondown} + % + \gdefchar^^c0{\`A} + \gdefchar^^c1{\'A} + \gdefchar^^c2{\^A} + \gdefchar^^c3{\~A} + \gdefchar^^c4{\"A} + \gdefchar^^c5{\ringaccent A} + \gdefchar^^c6{\AE} + \gdefchar^^c7{\cedilla C} + \gdefchar^^c8{\`E} + \gdefchar^^c9{\'E} + \gdefchar^^ca{\^E} + \gdefchar^^cb{\"E} + \gdefchar^^cc{\`I} + \gdefchar^^cd{\'I} + \gdefchar^^ce{\^I} + \gdefchar^^cf{\"I} + % + \gdefchar^^d0{\DH} + \gdefchar^^d1{\~N} + \gdefchar^^d2{\`O} + \gdefchar^^d3{\'O} + \gdefchar^^d4{\^O} + \gdefchar^^d5{\~O} + \gdefchar^^d6{\"O} + \gdefchar^^d7{$\times$} + \gdefchar^^d8{\O} + \gdefchar^^d9{\`U} + \gdefchar^^da{\'U} + \gdefchar^^db{\^U} + \gdefchar^^dc{\"U} + \gdefchar^^dd{\'Y} + \gdefchar^^de{\TH} + \gdefchar^^df{\ss} + % + \gdefchar^^e0{\`a} + \gdefchar^^e1{\'a} + \gdefchar^^e2{\^a} + \gdefchar^^e3{\~a} + \gdefchar^^e4{\"a} + \gdefchar^^e5{\ringaccent a} + \gdefchar^^e6{\ae} + \gdefchar^^e7{\cedilla c} + \gdefchar^^e8{\`e} + \gdefchar^^e9{\'e} + \gdefchar^^ea{\^e} + \gdefchar^^eb{\"e} + \gdefchar^^ec{\`{\dotless i}} + \gdefchar^^ed{\'{\dotless i}} + \gdefchar^^ee{\^{\dotless i}} + \gdefchar^^ef{\"{\dotless i}} + % + \gdefchar^^f0{\dh} + \gdefchar^^f1{\~n} + \gdefchar^^f2{\`o} + \gdefchar^^f3{\'o} + \gdefchar^^f4{\^o} + \gdefchar^^f5{\~o} + \gdefchar^^f6{\"o} + \gdefchar^^f7{$\div$} + \gdefchar^^f8{\o} + \gdefchar^^f9{\`u} + \gdefchar^^fa{\'u} + \gdefchar^^fb{\^u} + \gdefchar^^fc{\"u} + \gdefchar^^fd{\'y} + \gdefchar^^fe{\th} + \gdefchar^^ff{\"y} +} + +% Latin9 (ISO-8859-15) encoding character definitions. +\gdef\latninechardefs{% + % Encoding is almost identical to Latin1. + \latonechardefs + % + \gdefchar^^a4{\euro{}} + \gdefchar^^a6{\v S} + \gdefchar^^a8{\v s} + \gdefchar^^b4{\v Z} + \gdefchar^^b8{\v z} + \gdefchar^^bc{\OE} + \gdefchar^^bd{\oe} + \gdefchar^^be{\"Y} +} + +% Latin2 (ISO-8859-2) character definitions. +\gdef\lattwochardefs{% + \gdefchar^^a0{\tie} + \gdefchar^^a1{\ogonek{A}} + \gdefchar^^a2{\u{}} + \gdefchar^^a3{\L} + \gdefchar^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdefchar^^a5{\v L} + \gdefchar^^a6{\'S} + \gdefchar^^a7{\S} + \gdefchar^^a8{\"{}} + \gdefchar^^a9{\v S} + \gdefchar^^aa{\cedilla S} + \gdefchar^^ab{\v T} + \gdefchar^^ac{\'Z} + \gdefchar^^ad{\-} + \gdefchar^^ae{\v Z} + \gdefchar^^af{\dotaccent Z} + % + \gdefchar^^b0{\textdegree} + \gdefchar^^b1{\ogonek{a}} + \gdefchar^^b2{\ogonek{ }} + \gdefchar^^b3{\l} + \gdefchar^^b4{\'{}} + \gdefchar^^b5{\v l} + \gdefchar^^b6{\'s} + \gdefchar^^b7{\v{}} + \gdefchar^^b8{\cedilla\ } + \gdefchar^^b9{\v s} + \gdefchar^^ba{\cedilla s} + \gdefchar^^bb{\v t} + \gdefchar^^bc{\'z} + \gdefchar^^bd{\H{}} + \gdefchar^^be{\v z} + \gdefchar^^bf{\dotaccent z} + % + \gdefchar^^c0{\'R} + \gdefchar^^c1{\'A} + \gdefchar^^c2{\^A} + \gdefchar^^c3{\u A} + \gdefchar^^c4{\"A} + \gdefchar^^c5{\'L} + \gdefchar^^c6{\'C} + \gdefchar^^c7{\cedilla C} + \gdefchar^^c8{\v C} + \gdefchar^^c9{\'E} + \gdefchar^^ca{\ogonek{E}} + \gdefchar^^cb{\"E} + \gdefchar^^cc{\v E} + \gdefchar^^cd{\'I} + \gdefchar^^ce{\^I} + \gdefchar^^cf{\v D} + % + \gdefchar^^d0{\DH} + \gdefchar^^d1{\'N} + \gdefchar^^d2{\v N} + \gdefchar^^d3{\'O} + \gdefchar^^d4{\^O} + \gdefchar^^d5{\H O} + \gdefchar^^d6{\"O} + \gdefchar^^d7{$\times$} + \gdefchar^^d8{\v R} + \gdefchar^^d9{\ringaccent U} + \gdefchar^^da{\'U} + \gdefchar^^db{\H U} + \gdefchar^^dc{\"U} + \gdefchar^^dd{\'Y} + \gdefchar^^de{\cedilla T} + \gdefchar^^df{\ss} + % + \gdefchar^^e0{\'r} + \gdefchar^^e1{\'a} + \gdefchar^^e2{\^a} + \gdefchar^^e3{\u a} + \gdefchar^^e4{\"a} + \gdefchar^^e5{\'l} + \gdefchar^^e6{\'c} + \gdefchar^^e7{\cedilla c} + \gdefchar^^e8{\v c} + \gdefchar^^e9{\'e} + \gdefchar^^ea{\ogonek{e}} + \gdefchar^^eb{\"e} + \gdefchar^^ec{\v e} + \gdefchar^^ed{\'{\dotless{i}}} + \gdefchar^^ee{\^{\dotless{i}}} + \gdefchar^^ef{\v d} + % + \gdefchar^^f0{\dh} + \gdefchar^^f1{\'n} + \gdefchar^^f2{\v n} + \gdefchar^^f3{\'o} + \gdefchar^^f4{\^o} + \gdefchar^^f5{\H o} + \gdefchar^^f6{\"o} + \gdefchar^^f7{$\div$} + \gdefchar^^f8{\v r} + \gdefchar^^f9{\ringaccent u} + \gdefchar^^fa{\'u} + \gdefchar^^fb{\H u} + \gdefchar^^fc{\"u} + \gdefchar^^fd{\'y} + \gdefchar^^fe{\cedilla t} + \gdefchar^^ff{\dotaccent{}} +} + +\endgroup % active chars + +% UTF-8 character definitions. +% +% This code to support UTF-8 is based on LaTeX's utf8.def, with some +% changes for Texinfo conventions. It is included here under the GPL by +% permission from Frank Mittelbach and the LaTeX team. +% +\newcount\countUTFx +\newcount\countUTFy +\newcount\countUTFz + +\gdef\UTFviiiTwoOctets#1#2{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\endcsname} +% +\gdef\UTFviiiThreeOctets#1#2#3{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} +% +\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} + +\gdef\UTFviiiDefined#1{% + \ifx #1\relax + \ifutfviiidefinedwarning + \message{\linenumber Unicode char \string #1 not defined for Texinfo}% + \fi + \else + \expandafter #1% + \fi +} +\newif\ifutfviiidefinedwarning +\utfviiidefinedwarningtrue + +% Give non-ASCII bytes the active definitions for processing UTF-8 sequences +\begingroup + \catcode`\~13 + \catcode`\$12 + \catcode`\"12 + + % Loop from \countUTFx to \countUTFy, performing \UTFviiiTmp + % substituting ~ and $ with a character token of that value. + \gdef\UTFviiiLoop{% + \catcode\countUTFx\active + \uccode`\~\countUTFx + \uccode`\$\countUTFx + \uppercase\expandafter{\UTFviiiTmp}% + \advance\countUTFx by 1 + \ifnum\countUTFx < \countUTFy + \expandafter\UTFviiiLoop + \fi} + % + % For bytes other than the first in a UTF-8 sequence. Not expected to + % be expanded except when writing to auxiliary files. + \countUTFx = "80 + \countUTFy = "C2 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $\fi}}% + \UTFviiiLoop + + \countUTFx = "C2 + \countUTFy = "E0 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiTwoOctets\expandafter$\fi}}% + \UTFviiiLoop + + \countUTFx = "E0 + \countUTFy = "F0 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiThreeOctets\expandafter$\fi}}% + \UTFviiiLoop + + \countUTFx = "F0 + \countUTFy = "F4 + \def\UTFviiiTmp{% + \gdef~{% + \ifpassthroughchars $% + \else\expandafter\UTFviiiFourOctets\expandafter$\fi + }}% + \UTFviiiLoop + % + % for pdftex only, used to expand ASCII to UTF-16BE. + \gdef\asciitounicode{% + \countUTFx = "20 + \countUTFy = "80 + \def\UTFviiiTmp{% + \def~{\nullbyte $}}% + \UTFviiiLoop + } + {\catcode0=11 \gdef\nullbyte{^^00}}% +\endgroup + +\def\globallet{\global\let} % save some \expandafter's below + +% @U{xxxx} to produce U+xxxx, if we support it. +\def\U#1{% + \expandafter\ifx\csname uni:#1\endcsname \relax + \iftxinativeunicodecapable + % All Unicode characters can be used if native Unicode handling is + % active. However, if the font does not have the glyph, + % letters are missing. + \begingroup + \uccode`\.="#1\relax + \uppercase{.} + \endgroup + \else + \errhelp = \EMsimple + \errmessage{Unicode character U+#1 not supported, sorry}% + \fi + \else + \csname uni:#1\endcsname + \fi +} + +% These macros are used here to construct the names of macros +% that expand to the definitions for UTF-8 sequences. +\def\UTFviiiTwoOctetsName#1#2{% + \csname u8:#1\string #2\endcsname}% +\def\UTFviiiThreeOctetsName#1#2#3{% + \csname u8:#1\string #2\string #3\endcsname}% +\def\UTFviiiFourOctetsName#1#2#3#4{% + \csname u8:#1\string #2\string #3\string #4\endcsname}% + +% generate UTF-16 from codepoint +\def\utfsixteentotoks#1#2{% + \countUTFz = "#2\relax + \ifnum \countUTFz > 65535 + % doesn't work for codepoints > U+FFFF + % we don't define glyphs for any of these anyway, so it doesn't matter + #1={U+#2}% + \else + \countUTFx = \countUTFz + \divide\countUTFx by 256 + \countUTFy = \countUTFx + \multiply\countUTFx by 256 + \advance\countUTFz by -\countUTFx + \uccode`,=\countUTFy + \uccode`;=\countUTFz + \ifnum\countUTFy = 0 + \uppercase{#1={\nullbyte\string;}}% + \else\ifnum\countUTFz = 0 + \uppercase{#1={\string,\nullbyte}}% + \else + \uppercase{#1={\string,\string;}}% + \fi\fi + % NB \uppercase cannot insert a null byte + \fi +} + +\newif\ifutfbytespdf +\utfbytespdffalse + +% For UTF-8 byte sequences (TeX, e-TeX and pdfTeX), +% provide a definition macro to replace a Unicode character; +% this gets used by the @U command +% +\begingroup + \catcode`\"=12 + \catcode`\<=12 + \catcode`\.=12 + \catcode`\,=12 + \catcode`\;=12 + \catcode`\!=12 + \catcode`\~=13 + \gdef\DeclareUnicodeCharacterUTFviii#1#2{% + \countUTFz = "#1\relax + \begingroup + \parseXMLCharref + % + % Completely expand \UTFviiiTmp, which looks like: + % 1. \UTFviiTwoOctetsName B1 B2 + % 2. \csname u8:B1 \string B2 \endcsname + % 3. \u8: B1 B2 (a single control sequence token) + \xdef\UTFviiiTmp{\UTFviiiTmp}% + % + \ifpdf + \toksA={#2}% + \utfsixteentotoks\toksB{#1}% + \expandafter\xdef\UTFviiiTmp{% + \noexpand\ifutfbytespdf\noexpand\utfbytes{\the\toksB}% + \noexpand\else\the\toksA\noexpand\fi}% + \else + \expandafter\gdef\UTFviiiTmp{#2}% + \fi + % + \expandafter\ifx\csname uni:#1\endcsname \relax \else + \message{Internal error, already defined: #1}% + \fi + % + % define an additional control sequence for this code point. + \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp + \endgroup} + % + % Given the value in \countUTFz as a Unicode code point, set + % \UTFviiiTmp to one of the \UTVviii*OctetsName macros followed by + % the corresponding UTF-8 sequence. + \gdef\parseXMLCharref{% + \ifnum\countUTFz < "20\relax + \errhelp = \EMsimple + \errmessage{Cannot define Unicode char value < 0020}% + \else\ifnum\countUTFz < "800\relax + \parseUTFviiiA,% + \parseUTFviiiB C\UTFviiiTwoOctetsName.,% + \else\ifnum\countUTFz < "10000\relax + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiB E\UTFviiiThreeOctetsName.{,;}% + \else + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiA!% + \parseUTFviiiB F\UTFviiiFourOctetsName.{!,;}% + \fi\fi\fi + } + + % Extract a byte from the end of the UTF-8 representation of \countUTFx. + % It must be a non-initial byte in the sequence. + % Change \uccode of #1 for it to be used in \parseUTFviiiB as one + % of the bytes. + \gdef\parseUTFviiiA#1{% + \countUTFx = \countUTFz + \divide\countUTFz by 64 + \countUTFy = \countUTFz % Save to be the future value of \countUTFz. + \multiply\countUTFz by 64 + + % \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract + % in order to get the last five bits. + \advance\countUTFx by -\countUTFz + + % Convert this to the byte in the UTF-8 sequence. + \advance\countUTFx by 128 + \uccode `#1\countUTFx + \countUTFz = \countUTFy} + + % Used to put a UTF-8 byte sequence into \UTFviiiTmp + % #1 is the increment for \countUTFz to yield a the first byte of the UTF-8 + % sequence. + % #2 is one of the \UTFviii*OctetsName macros. + % #3 is always a full stop (.) + % #4 is a template for the other bytes in the sequence. The values for these + % bytes is substituted in here with \uppercase using the \uccode's. + \gdef\parseUTFviiiB#1#2#3#4{% + \advance\countUTFz by "#10\relax + \uccode `#3\countUTFz + \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} +\endgroup + +% For native Unicode handling (XeTeX and LuaTeX), +% provide a definition macro that sets a catcode to `other' non-globally +% +\def\DeclareUnicodeCharacterNativeOther#1#2{% + \catcode"#1=\other +} + +% Suppress ligature creation from adjacent characters. +\ifluatex + % Braces do not suppress ligature creation in LuaTeX, e.g. in of{}fice + % to suppress the "ff" ligature. Using a kern appears to be the only + % workaround. + \def\nolig{\kern0pt{}} +\else + \def\nolig{{}} +\fi + +% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M +% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block) +% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block) +% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A +% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B +% +% Many of our renditions are less than wonderful, and all the missing +% characters are available somewhere. Loading the necessary fonts +% awaits user request. We can't truly support Unicode without +% reimplementing everything that's been done in LaTeX for many years, +% plus probably using luatex or xetex, and who knows what else. +% We won't be doing that here in this simple file. But we can try to at +% least make most of the characters not bomb out. +% +\def\unicodechardefs{% + \DeclareUnicodeCharacter{0020}{ } % space + \DeclareUnicodeCharacter{0021}{\char"21 }% % space to terminate number + \DeclareUnicodeCharacter{0022}{\char"22 }% + \DeclareUnicodeCharacter{0023}{\char"23 }% + \DeclareUnicodeCharacter{0024}{\char"24 }% + \DeclareUnicodeCharacter{0025}{\char"25 }% + \DeclareUnicodeCharacter{0026}{\char"26 }% + \DeclareUnicodeCharacter{0027}{\char"27 }% + \DeclareUnicodeCharacter{0028}{\char"28 }% + \DeclareUnicodeCharacter{0029}{\char"29 }% + \DeclareUnicodeCharacter{002A}{\char"2A }% + \DeclareUnicodeCharacter{002B}{\char"2B }% + \DeclareUnicodeCharacter{002C}{\char"2C }% + \DeclareUnicodeCharacter{002D}{\char"2D }% + \DeclareUnicodeCharacter{002E}{\char"2E }% + \DeclareUnicodeCharacter{002F}{\char"2F }% + \DeclareUnicodeCharacter{0030}{0}% + \DeclareUnicodeCharacter{0031}{1}% + \DeclareUnicodeCharacter{0032}{2}% + \DeclareUnicodeCharacter{0033}{3}% + \DeclareUnicodeCharacter{0034}{4}% + \DeclareUnicodeCharacter{0035}{5}% + \DeclareUnicodeCharacter{0036}{6}% + \DeclareUnicodeCharacter{0037}{7}% + \DeclareUnicodeCharacter{0038}{8}% + \DeclareUnicodeCharacter{0039}{9}% + \DeclareUnicodeCharacter{003A}{\char"3A }% + \DeclareUnicodeCharacter{003B}{\char"3B }% + \DeclareUnicodeCharacter{003C}{\char"3C }% + \DeclareUnicodeCharacter{003D}{\char"3D }% + \DeclareUnicodeCharacter{003E}{\char"3E }% + \DeclareUnicodeCharacter{003F}{\char"3F }% + \DeclareUnicodeCharacter{0040}{\char"40 }% + \DeclareUnicodeCharacter{0041}{A}% + \DeclareUnicodeCharacter{0042}{B}% + \DeclareUnicodeCharacter{0043}{C}% + \DeclareUnicodeCharacter{0044}{D}% + \DeclareUnicodeCharacter{0045}{E}% + \DeclareUnicodeCharacter{0046}{F}% + \DeclareUnicodeCharacter{0047}{G}% + \DeclareUnicodeCharacter{0048}{H}% + \DeclareUnicodeCharacter{0049}{I}% + \DeclareUnicodeCharacter{004A}{J}% + \DeclareUnicodeCharacter{004B}{K}% + \DeclareUnicodeCharacter{004C}{L}% + \DeclareUnicodeCharacter{004D}{M}% + \DeclareUnicodeCharacter{004E}{N}% + \DeclareUnicodeCharacter{004F}{O}% + \DeclareUnicodeCharacter{0050}{P}% + \DeclareUnicodeCharacter{0051}{Q}% + \DeclareUnicodeCharacter{0052}{R}% + \DeclareUnicodeCharacter{0053}{S}% + \DeclareUnicodeCharacter{0054}{T}% + \DeclareUnicodeCharacter{0055}{U}% + \DeclareUnicodeCharacter{0056}{V}% + \DeclareUnicodeCharacter{0057}{W}% + \DeclareUnicodeCharacter{0058}{X}% + \DeclareUnicodeCharacter{0059}{Y}% + \DeclareUnicodeCharacter{005A}{Z}% + \DeclareUnicodeCharacter{005B}{\char"5B }% + \DeclareUnicodeCharacter{005C}{\char"5C }% + \DeclareUnicodeCharacter{005D}{\char"5D }% + \DeclareUnicodeCharacter{005E}{\char"5E }% + \DeclareUnicodeCharacter{005F}{\char"5F }% + \DeclareUnicodeCharacter{0060}{\char"60 }% + \DeclareUnicodeCharacter{0061}{a}% + \DeclareUnicodeCharacter{0062}{b}% + \DeclareUnicodeCharacter{0063}{c}% + \DeclareUnicodeCharacter{0064}{d}% + \DeclareUnicodeCharacter{0065}{e}% + \DeclareUnicodeCharacter{0066}{f}% + \DeclareUnicodeCharacter{0067}{g}% + \DeclareUnicodeCharacter{0068}{h}% + \DeclareUnicodeCharacter{0069}{i}% + \DeclareUnicodeCharacter{006A}{j}% + \DeclareUnicodeCharacter{006B}{k}% + \DeclareUnicodeCharacter{006C}{l}% + \DeclareUnicodeCharacter{006D}{m}% + \DeclareUnicodeCharacter{006E}{n}% + \DeclareUnicodeCharacter{006F}{o}% + \DeclareUnicodeCharacter{0070}{p}% + \DeclareUnicodeCharacter{0071}{q}% + \DeclareUnicodeCharacter{0072}{r}% + \DeclareUnicodeCharacter{0073}{s}% + \DeclareUnicodeCharacter{0074}{t}% + \DeclareUnicodeCharacter{0075}{u}% + \DeclareUnicodeCharacter{0076}{v}% + \DeclareUnicodeCharacter{0077}{w}% + \DeclareUnicodeCharacter{0078}{x}% + \DeclareUnicodeCharacter{0079}{y}% + \DeclareUnicodeCharacter{007A}{z}% + \DeclareUnicodeCharacter{007B}{\char"7B }% + \DeclareUnicodeCharacter{007C}{\char"7C }% + \DeclareUnicodeCharacter{007D}{\char"7D }% + \DeclareUnicodeCharacter{007E}{\char"7E }% + % \DeclareUnicodeCharacter{007F}{} % DEL + % + \DeclareUnicodeCharacter{00A0}{\tie}% + \DeclareUnicodeCharacter{00A1}{\exclamdown}% + \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent + \DeclareUnicodeCharacter{00A3}{\pounds{}}% + \DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency + \DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen + \DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar + \DeclareUnicodeCharacter{00A7}{\S}% + \DeclareUnicodeCharacter{00A8}{\"{ }}% + \DeclareUnicodeCharacter{00A9}{\copyright{}}% + \DeclareUnicodeCharacter{00AA}{\ordf}% + \DeclareUnicodeCharacter{00AB}{\guillemetleft{}}% + \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot}% + \DeclareUnicodeCharacter{00AD}{\-}% + \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}% + \DeclareUnicodeCharacter{00AF}{\={ }}% + % + \DeclareUnicodeCharacter{00B0}{\textdegree}% + \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}% + \DeclareUnicodeCharacter{00B2}{$^2$}% + \DeclareUnicodeCharacter{00B3}{$^3$}% + \DeclareUnicodeCharacter{00B4}{\'{ }}% + \DeclareUnicodeCharacter{00B5}{$\mu$}% + \DeclareUnicodeCharacter{00B6}{\P}% + \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot}% + \DeclareUnicodeCharacter{00B8}{\cedilla{ }}% + \DeclareUnicodeCharacter{00B9}{$^1$}% + \DeclareUnicodeCharacter{00BA}{\ordm}% + \DeclareUnicodeCharacter{00BB}{\guillemetright{}}% + \DeclareUnicodeCharacter{00BC}{$1\over4$}% + \DeclareUnicodeCharacter{00BD}{$1\over2$}% + \DeclareUnicodeCharacter{00BE}{$3\over4$}% + \DeclareUnicodeCharacter{00BF}{\questiondown}% + % + \DeclareUnicodeCharacter{00C0}{\`A}% + \DeclareUnicodeCharacter{00C1}{\'A}% + \DeclareUnicodeCharacter{00C2}{\^A}% + \DeclareUnicodeCharacter{00C3}{\~A}% + \DeclareUnicodeCharacter{00C4}{\"A}% + \DeclareUnicodeCharacter{00C5}{\AA}% + \DeclareUnicodeCharacter{00C6}{\AE}% + \DeclareUnicodeCharacter{00C7}{\cedilla{C}}% + \DeclareUnicodeCharacter{00C8}{\`E}% + \DeclareUnicodeCharacter{00C9}{\'E}% + \DeclareUnicodeCharacter{00CA}{\^E}% + \DeclareUnicodeCharacter{00CB}{\"E}% + \DeclareUnicodeCharacter{00CC}{\`I}% + \DeclareUnicodeCharacter{00CD}{\'I}% + \DeclareUnicodeCharacter{00CE}{\^I}% + \DeclareUnicodeCharacter{00CF}{\"I}% + % + \DeclareUnicodeCharacter{00D0}{\DH}% + \DeclareUnicodeCharacter{00D1}{\~N}% + \DeclareUnicodeCharacter{00D2}{\`O}% + \DeclareUnicodeCharacter{00D3}{\'O}% + \DeclareUnicodeCharacter{00D4}{\^O}% + \DeclareUnicodeCharacter{00D5}{\~O}% + \DeclareUnicodeCharacter{00D6}{\"O}% + \DeclareUnicodeCharacter{00D7}{\ensuremath\times}% + \DeclareUnicodeCharacter{00D8}{\O}% + \DeclareUnicodeCharacter{00D9}{\`U}% + \DeclareUnicodeCharacter{00DA}{\'U}% + \DeclareUnicodeCharacter{00DB}{\^U}% + \DeclareUnicodeCharacter{00DC}{\"U}% + \DeclareUnicodeCharacter{00DD}{\'Y}% + \DeclareUnicodeCharacter{00DE}{\TH}% + \DeclareUnicodeCharacter{00DF}{\ss}% + % + \DeclareUnicodeCharacter{00E0}{\`a}% + \DeclareUnicodeCharacter{00E1}{\'a}% + \DeclareUnicodeCharacter{00E2}{\^a}% + \DeclareUnicodeCharacter{00E3}{\~a}% + \DeclareUnicodeCharacter{00E4}{\"a}% + \DeclareUnicodeCharacter{00E5}{\aa}% + \DeclareUnicodeCharacter{00E6}{\ae}% + \DeclareUnicodeCharacter{00E7}{\cedilla{c}}% + \DeclareUnicodeCharacter{00E8}{\`e}% + \DeclareUnicodeCharacter{00E9}{\'e}% + \DeclareUnicodeCharacter{00EA}{\^e}% + \DeclareUnicodeCharacter{00EB}{\"e}% + \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}% + \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}% + \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}% + \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}% + % + \DeclareUnicodeCharacter{00F0}{\dh}% + \DeclareUnicodeCharacter{00F1}{\~n}% + \DeclareUnicodeCharacter{00F2}{\`o}% + \DeclareUnicodeCharacter{00F3}{\'o}% + \DeclareUnicodeCharacter{00F4}{\^o}% + \DeclareUnicodeCharacter{00F5}{\~o}% + \DeclareUnicodeCharacter{00F6}{\"o}% + \DeclareUnicodeCharacter{00F7}{\ensuremath\div}% + \DeclareUnicodeCharacter{00F8}{\o}% + \DeclareUnicodeCharacter{00F9}{\`u}% + \DeclareUnicodeCharacter{00FA}{\'u}% + \DeclareUnicodeCharacter{00FB}{\^u}% + \DeclareUnicodeCharacter{00FC}{\"u}% + \DeclareUnicodeCharacter{00FD}{\'y}% + \DeclareUnicodeCharacter{00FE}{\th}% + \DeclareUnicodeCharacter{00FF}{\"y}% + % + \DeclareUnicodeCharacter{0100}{\=A}% + \DeclareUnicodeCharacter{0101}{\=a}% + \DeclareUnicodeCharacter{0102}{\u{A}}% + \DeclareUnicodeCharacter{0103}{\u{a}}% + \DeclareUnicodeCharacter{0104}{\ogonek{A}}% + \DeclareUnicodeCharacter{0105}{\ogonek{a}}% + \DeclareUnicodeCharacter{0106}{\'C}% + \DeclareUnicodeCharacter{0107}{\'c}% + \DeclareUnicodeCharacter{0108}{\^C}% + \DeclareUnicodeCharacter{0109}{\^c}% + \DeclareUnicodeCharacter{010A}{\dotaccent{C}}% + \DeclareUnicodeCharacter{010B}{\dotaccent{c}}% + \DeclareUnicodeCharacter{010C}{\v{C}}% + \DeclareUnicodeCharacter{010D}{\v{c}}% + \DeclareUnicodeCharacter{010E}{\v{D}}% + \DeclareUnicodeCharacter{010F}{d'}% + % + \DeclareUnicodeCharacter{0110}{\DH}% + \DeclareUnicodeCharacter{0111}{\dh}% + \DeclareUnicodeCharacter{0112}{\=E}% + \DeclareUnicodeCharacter{0113}{\=e}% + \DeclareUnicodeCharacter{0114}{\u{E}}% + \DeclareUnicodeCharacter{0115}{\u{e}}% + \DeclareUnicodeCharacter{0116}{\dotaccent{E}}% + \DeclareUnicodeCharacter{0117}{\dotaccent{e}}% + \DeclareUnicodeCharacter{0118}{\ogonek{E}}% + \DeclareUnicodeCharacter{0119}{\ogonek{e}}% + \DeclareUnicodeCharacter{011A}{\v{E}}% + \DeclareUnicodeCharacter{011B}{\v{e}}% + \DeclareUnicodeCharacter{011C}{\^G}% + \DeclareUnicodeCharacter{011D}{\^g}% + \DeclareUnicodeCharacter{011E}{\u{G}}% + \DeclareUnicodeCharacter{011F}{\u{g}}% + % + \DeclareUnicodeCharacter{0120}{\dotaccent{G}}% + \DeclareUnicodeCharacter{0121}{\dotaccent{g}}% + \DeclareUnicodeCharacter{0122}{\cedilla{G}}% + \DeclareUnicodeCharacter{0123}{\cedilla{g}}% + \DeclareUnicodeCharacter{0124}{\^H}% + \DeclareUnicodeCharacter{0125}{\^h}% + \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}}% + \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}}% + \DeclareUnicodeCharacter{0128}{\~I}% + \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}% + \DeclareUnicodeCharacter{012A}{\=I}% + \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}% + \DeclareUnicodeCharacter{012C}{\u{I}}% + \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}% + \DeclareUnicodeCharacter{012E}{\ogonek{I}}% + \DeclareUnicodeCharacter{012F}{\ogonek{i}}% + % + \DeclareUnicodeCharacter{0130}{\dotaccent{I}}% + \DeclareUnicodeCharacter{0131}{\dotless{i}}% + \DeclareUnicodeCharacter{0132}{IJ}% + \DeclareUnicodeCharacter{0133}{ij}% + \DeclareUnicodeCharacter{0134}{\^J}% + \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}% + \DeclareUnicodeCharacter{0136}{\cedilla{K}}% + \DeclareUnicodeCharacter{0137}{\cedilla{k}}% + \DeclareUnicodeCharacter{0138}{\ensuremath\kappa}% + \DeclareUnicodeCharacter{0139}{\'L}% + \DeclareUnicodeCharacter{013A}{\'l}% + \DeclareUnicodeCharacter{013B}{\cedilla{L}}% + \DeclareUnicodeCharacter{013C}{\cedilla{l}}% + \DeclareUnicodeCharacter{013D}{L'}% should kern + \DeclareUnicodeCharacter{013E}{l'}% should kern + \DeclareUnicodeCharacter{013F}{L\U{00B7}}% + % + \DeclareUnicodeCharacter{0140}{l\U{00B7}}% + \DeclareUnicodeCharacter{0141}{\L}% + \DeclareUnicodeCharacter{0142}{\l}% + \DeclareUnicodeCharacter{0143}{\'N}% + \DeclareUnicodeCharacter{0144}{\'n}% + \DeclareUnicodeCharacter{0145}{\cedilla{N}}% + \DeclareUnicodeCharacter{0146}{\cedilla{n}}% + \DeclareUnicodeCharacter{0147}{\v{N}}% + \DeclareUnicodeCharacter{0148}{\v{n}}% + \DeclareUnicodeCharacter{0149}{'n}% + \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}}% + \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}}% + \DeclareUnicodeCharacter{014C}{\=O}% + \DeclareUnicodeCharacter{014D}{\=o}% + \DeclareUnicodeCharacter{014E}{\u{O}}% + \DeclareUnicodeCharacter{014F}{\u{o}}% + % + \DeclareUnicodeCharacter{0150}{\H{O}}% + \DeclareUnicodeCharacter{0151}{\H{o}}% + \DeclareUnicodeCharacter{0152}{\OE}% + \DeclareUnicodeCharacter{0153}{\oe}% + \DeclareUnicodeCharacter{0154}{\'R}% + \DeclareUnicodeCharacter{0155}{\'r}% + \DeclareUnicodeCharacter{0156}{\cedilla{R}}% + \DeclareUnicodeCharacter{0157}{\cedilla{r}}% + \DeclareUnicodeCharacter{0158}{\v{R}}% + \DeclareUnicodeCharacter{0159}{\v{r}}% + \DeclareUnicodeCharacter{015A}{\'S}% + \DeclareUnicodeCharacter{015B}{\'s}% + \DeclareUnicodeCharacter{015C}{\^S}% + \DeclareUnicodeCharacter{015D}{\^s}% + \DeclareUnicodeCharacter{015E}{\cedilla{S}}% + \DeclareUnicodeCharacter{015F}{\cedilla{s}}% + % + \DeclareUnicodeCharacter{0160}{\v{S}}% + \DeclareUnicodeCharacter{0161}{\v{s}}% + \DeclareUnicodeCharacter{0162}{\cedilla{T}}% + \DeclareUnicodeCharacter{0163}{\cedilla{t}}% + \DeclareUnicodeCharacter{0164}{\v{T}}% + \DeclareUnicodeCharacter{0165}{\v{t}}% + \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}}% + \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}}% + \DeclareUnicodeCharacter{0168}{\~U}% + \DeclareUnicodeCharacter{0169}{\~u}% + \DeclareUnicodeCharacter{016A}{\=U}% + \DeclareUnicodeCharacter{016B}{\=u}% + \DeclareUnicodeCharacter{016C}{\u{U}}% + \DeclareUnicodeCharacter{016D}{\u{u}}% + \DeclareUnicodeCharacter{016E}{\ringaccent{U}}% + \DeclareUnicodeCharacter{016F}{\ringaccent{u}}% + % + \DeclareUnicodeCharacter{0170}{\H{U}}% + \DeclareUnicodeCharacter{0171}{\H{u}}% + \DeclareUnicodeCharacter{0172}{\ogonek{U}}% + \DeclareUnicodeCharacter{0173}{\ogonek{u}}% + \DeclareUnicodeCharacter{0174}{\^W}% + \DeclareUnicodeCharacter{0175}{\^w}% + \DeclareUnicodeCharacter{0176}{\^Y}% + \DeclareUnicodeCharacter{0177}{\^y}% + \DeclareUnicodeCharacter{0178}{\"Y}% + \DeclareUnicodeCharacter{0179}{\'Z}% + \DeclareUnicodeCharacter{017A}{\'z}% + \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}% + \DeclareUnicodeCharacter{017C}{\dotaccent{z}}% + \DeclareUnicodeCharacter{017D}{\v{Z}}% + \DeclareUnicodeCharacter{017E}{\v{z}}% + \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}}% + % + \DeclareUnicodeCharacter{01C4}{D\v{Z}}% + \DeclareUnicodeCharacter{01C5}{D\v{z}}% + \DeclareUnicodeCharacter{01C6}{d\v{z}}% + \DeclareUnicodeCharacter{01C7}{LJ}% + \DeclareUnicodeCharacter{01C8}{Lj}% + \DeclareUnicodeCharacter{01C9}{lj}% + \DeclareUnicodeCharacter{01CA}{NJ}% + \DeclareUnicodeCharacter{01CB}{Nj}% + \DeclareUnicodeCharacter{01CC}{nj}% + \DeclareUnicodeCharacter{01CD}{\v{A}}% + \DeclareUnicodeCharacter{01CE}{\v{a}}% + \DeclareUnicodeCharacter{01CF}{\v{I}}% + % + \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}% + \DeclareUnicodeCharacter{01D1}{\v{O}}% + \DeclareUnicodeCharacter{01D2}{\v{o}}% + \DeclareUnicodeCharacter{01D3}{\v{U}}% + \DeclareUnicodeCharacter{01D4}{\v{u}}% + % + \DeclareUnicodeCharacter{01E2}{\={\AE}}% + \DeclareUnicodeCharacter{01E3}{\={\ae}}% + \DeclareUnicodeCharacter{01E6}{\v{G}}% + \DeclareUnicodeCharacter{01E7}{\v{g}}% + \DeclareUnicodeCharacter{01E8}{\v{K}}% + \DeclareUnicodeCharacter{01E9}{\v{k}}% + % + \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}% + \DeclareUnicodeCharacter{01F1}{DZ}% + \DeclareUnicodeCharacter{01F2}{Dz}% + \DeclareUnicodeCharacter{01F3}{dz}% + \DeclareUnicodeCharacter{01F4}{\'G}% + \DeclareUnicodeCharacter{01F5}{\'g}% + \DeclareUnicodeCharacter{01F8}{\`N}% + \DeclareUnicodeCharacter{01F9}{\`n}% + \DeclareUnicodeCharacter{01FC}{\'{\AE}}% + \DeclareUnicodeCharacter{01FD}{\'{\ae}}% + \DeclareUnicodeCharacter{01FE}{\'{\O}}% + \DeclareUnicodeCharacter{01FF}{\'{\o}}% + % + \DeclareUnicodeCharacter{021E}{\v{H}}% + \DeclareUnicodeCharacter{021F}{\v{h}}% + % + \DeclareUnicodeCharacter{0226}{\dotaccent{A}}% + \DeclareUnicodeCharacter{0227}{\dotaccent{a}}% + \DeclareUnicodeCharacter{0228}{\cedilla{E}}% + \DeclareUnicodeCharacter{0229}{\cedilla{e}}% + \DeclareUnicodeCharacter{022E}{\dotaccent{O}}% + \DeclareUnicodeCharacter{022F}{\dotaccent{o}}% + % + \DeclareUnicodeCharacter{0232}{\=Y}% + \DeclareUnicodeCharacter{0233}{\=y}% + \DeclareUnicodeCharacter{0237}{\dotless{j}}% + % + \DeclareUnicodeCharacter{02BC}{'}% + % + \DeclareUnicodeCharacter{02DB}{\ogonek{ }}% + % + % Greek letters upper case + \DeclareUnicodeCharacter{0391}{{\it A}}% + \DeclareUnicodeCharacter{0392}{{\it B}}% + \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}}% + \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}}% + \DeclareUnicodeCharacter{0395}{{\it E}}% + \DeclareUnicodeCharacter{0396}{{\it Z}}% + \DeclareUnicodeCharacter{0397}{{\it H}}% + \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}}% + \DeclareUnicodeCharacter{0399}{{\it I}}% + \DeclareUnicodeCharacter{039A}{{\it K}}% + \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}}% + \DeclareUnicodeCharacter{039C}{{\it M}}% + \DeclareUnicodeCharacter{039D}{{\it N}}% + \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}}% + \DeclareUnicodeCharacter{039F}{{\it O}}% + \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}}% + \DeclareUnicodeCharacter{03A1}{{\it P}}% + %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma + \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}}% + \DeclareUnicodeCharacter{03A4}{{\it T}}% + \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}}% + \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}}% + \DeclareUnicodeCharacter{03A7}{{\it X}}% + \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}}% + \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}}% + % + % Vowels with accents + \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}}% + \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}}% + \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}}% + \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}}% + \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}}% + \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}}% + % + % Standalone accent + \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}}% + % + % Greek letters lower case + \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha}% + \DeclareUnicodeCharacter{03B2}{\ensuremath\beta}% + \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma}% + \DeclareUnicodeCharacter{03B4}{\ensuremath\delta}% + \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon}% + \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta}% + \DeclareUnicodeCharacter{03B7}{\ensuremath\eta}% + \DeclareUnicodeCharacter{03B8}{\ensuremath\theta}% + \DeclareUnicodeCharacter{03B9}{\ensuremath\iota}% + \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa}% + \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda}% + \DeclareUnicodeCharacter{03BC}{\ensuremath\mu}% + \DeclareUnicodeCharacter{03BD}{\ensuremath\nu}% + \DeclareUnicodeCharacter{03BE}{\ensuremath\xi}% + \DeclareUnicodeCharacter{03BF}{{\it o}}% omicron + \DeclareUnicodeCharacter{03C0}{\ensuremath\pi}% + \DeclareUnicodeCharacter{03C1}{\ensuremath\rho}% + \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma}% + \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma}% + \DeclareUnicodeCharacter{03C4}{\ensuremath\tau}% + \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon}% + \DeclareUnicodeCharacter{03C6}{\ensuremath\phi}% + \DeclareUnicodeCharacter{03C7}{\ensuremath\chi}% + \DeclareUnicodeCharacter{03C8}{\ensuremath\psi}% + \DeclareUnicodeCharacter{03C9}{\ensuremath\omega}% + % + % More Greek vowels with accents + \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}}% + \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}}% + \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}}% + \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}}% + \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}}% + % + % Variant Greek letters + \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta}% + \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi}% + \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho}% + % + \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}% + \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}% + \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}% + \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}% + \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}% + \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}% + \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}% + \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}% + \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}% + \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}% + \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}% + \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}% + % + \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}% + \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}% + % + \DeclareUnicodeCharacter{1E20}{\=G}% + \DeclareUnicodeCharacter{1E21}{\=g}% + \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}% + \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}% + \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}% + \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}% + \DeclareUnicodeCharacter{1E26}{\"H}% + \DeclareUnicodeCharacter{1E27}{\"h}% + % + \DeclareUnicodeCharacter{1E30}{\'K}% + \DeclareUnicodeCharacter{1E31}{\'k}% + \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}% + \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}% + \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}% + \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}% + \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}% + \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}% + \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}% + \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}% + \DeclareUnicodeCharacter{1E3E}{\'M}% + \DeclareUnicodeCharacter{1E3F}{\'m}% + % + \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}% + \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}% + \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}% + \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}% + \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}% + \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}% + \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}% + \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}% + \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}% + \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}% + % + \DeclareUnicodeCharacter{1E54}{\'P}% + \DeclareUnicodeCharacter{1E55}{\'p}% + \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}% + \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}% + \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}% + \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}% + \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}% + \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}% + \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}% + \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}% + % + \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}% + \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}% + \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}% + \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}% + \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}% + \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}% + \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}% + \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}% + \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}% + \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}% + % + \DeclareUnicodeCharacter{1E7C}{\~V}% + \DeclareUnicodeCharacter{1E7D}{\~v}% + \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}% + \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}% + % + \DeclareUnicodeCharacter{1E80}{\`W}% + \DeclareUnicodeCharacter{1E81}{\`w}% + \DeclareUnicodeCharacter{1E82}{\'W}% + \DeclareUnicodeCharacter{1E83}{\'w}% + \DeclareUnicodeCharacter{1E84}{\"W}% + \DeclareUnicodeCharacter{1E85}{\"w}% + \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}% + \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}% + \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}% + \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}% + \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}% + \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}% + \DeclareUnicodeCharacter{1E8C}{\"X}% + \DeclareUnicodeCharacter{1E8D}{\"x}% + \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}% + \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}% + % + \DeclareUnicodeCharacter{1E90}{\^Z}% + \DeclareUnicodeCharacter{1E91}{\^z}% + \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}% + \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}% + \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}% + \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}% + \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}% + \DeclareUnicodeCharacter{1E97}{\"t}% + \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}% + \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}% + % + \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}% + \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}% + % + \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}% + \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}% + \DeclareUnicodeCharacter{1EBC}{\~E}% + \DeclareUnicodeCharacter{1EBD}{\~e}% + % + \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}% + \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}% + \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}% + \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}% + % + \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}% + \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}% + % + \DeclareUnicodeCharacter{1EF2}{\`Y}% + \DeclareUnicodeCharacter{1EF3}{\`y}% + \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}% + % + \DeclareUnicodeCharacter{1EF8}{\~Y}% + \DeclareUnicodeCharacter{1EF9}{\~y}% + % + % Exotic spaces + \DeclareUnicodeCharacter{2007}{\hphantom{0}}% + % + % Punctuation + \DeclareUnicodeCharacter{2013}{--}% + \DeclareUnicodeCharacter{2014}{---}% + \DeclareUnicodeCharacter{2018}{\quoteleft\nolig}% + \DeclareUnicodeCharacter{2019}{\quoteright\nolig}% + \DeclareUnicodeCharacter{201A}{\quotesinglbase{}}% + \DeclareUnicodeCharacter{201C}{\quotedblleft{}}% + \DeclareUnicodeCharacter{201D}{\quotedblright{}}% + \DeclareUnicodeCharacter{201E}{\quotedblbase{}}% + \DeclareUnicodeCharacter{2020}{\ensuremath\dagger}% + \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}% + \DeclareUnicodeCharacter{2022}{\bullet{}}% + \DeclareUnicodeCharacter{202F}{\thinspace}% + \DeclareUnicodeCharacter{2026}{\dots{}}% + \DeclareUnicodeCharacter{2039}{\guilsinglleft{}}% + \DeclareUnicodeCharacter{203A}{\guilsinglright{}}% + % + \DeclareUnicodeCharacter{20AC}{\euro{}}% + % + \DeclareUnicodeCharacter{2192}{\arrow}% + \DeclareUnicodeCharacter{21D2}{\result{}}% + % + % Mathematical symbols + \DeclareUnicodeCharacter{2200}{\ensuremath\forall}% + \DeclareUnicodeCharacter{2203}{\ensuremath\exists}% + \DeclareUnicodeCharacter{2208}{\ensuremath\in}% + \DeclareUnicodeCharacter{2212}{\minus{}}% + \DeclareUnicodeCharacter{2217}{\ast}% + \DeclareUnicodeCharacter{221E}{\ensuremath\infty}% + \DeclareUnicodeCharacter{2225}{\ensuremath\parallel}% + \DeclareUnicodeCharacter{2227}{\ensuremath\wedge}% + \DeclareUnicodeCharacter{2229}{\ensuremath\cap}% + \DeclareUnicodeCharacter{2261}{\equiv{}}% + \DeclareUnicodeCharacter{2264}{\ensuremath\leq}% + \DeclareUnicodeCharacter{2265}{\ensuremath\geq}% + \DeclareUnicodeCharacter{2282}{\ensuremath\subset}% + \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}% + % + \DeclareUnicodeCharacter{2016}{\ensuremath\Vert}% + \DeclareUnicodeCharacter{2032}{\ensuremath{^\prime}}% + \DeclareUnicodeCharacter{210F}{\ensuremath\hbar}% + \DeclareUnicodeCharacter{2111}{\ensuremath\Im}% + \DeclareUnicodeCharacter{2113}{\ensuremath\ell}% + \DeclareUnicodeCharacter{2118}{\ensuremath\wp}% + \DeclareUnicodeCharacter{211C}{\ensuremath\Re}% + \DeclareUnicodeCharacter{2135}{\ensuremath\aleph}% + \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow}% + \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow}% + \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow}% + \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow}% + \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow}% + \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow}% + \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow}% + \DeclareUnicodeCharacter{2198}{\ensuremath\searrow}% + \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow}% + \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto}% + \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow}% + \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow}% + \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup}% + \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown}% + \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup}% + \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown}% + \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons}% + \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow}% + \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow}% + \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow}% + \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow}% + \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow}% + \DeclareUnicodeCharacter{2202}{\ensuremath\partial}% + \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset}% + \DeclareUnicodeCharacter{2207}{\ensuremath\nabla}% + \DeclareUnicodeCharacter{2209}{\ensuremath\notin}% + \DeclareUnicodeCharacter{220B}{\ensuremath\owns}% + \DeclareUnicodeCharacter{220F}{\ensuremath\prod}% + \DeclareUnicodeCharacter{2210}{\ensuremath\coprod}% + \DeclareUnicodeCharacter{2211}{\ensuremath\sum}% + \DeclareUnicodeCharacter{2213}{\ensuremath\mp}% + \DeclareUnicodeCharacter{2218}{\ensuremath\circ}% + \DeclareUnicodeCharacter{221A}{\ensuremath\surd}% + \DeclareUnicodeCharacter{221D}{\ensuremath\propto}% + \DeclareUnicodeCharacter{2220}{\ensuremath\angle}% + \DeclareUnicodeCharacter{2223}{\ensuremath\mid}% + \DeclareUnicodeCharacter{2228}{\ensuremath\vee}% + \DeclareUnicodeCharacter{222A}{\ensuremath\cup}% + \DeclareUnicodeCharacter{222B}{\ensuremath\smallint}% + \DeclareUnicodeCharacter{222E}{\ensuremath\oint}% + \DeclareUnicodeCharacter{223C}{\ensuremath\sim}% + \DeclareUnicodeCharacter{2240}{\ensuremath\wr}% + \DeclareUnicodeCharacter{2243}{\ensuremath\simeq}% + \DeclareUnicodeCharacter{2245}{\ensuremath\cong}% + \DeclareUnicodeCharacter{2248}{\ensuremath\approx}% + \DeclareUnicodeCharacter{224D}{\ensuremath\asymp}% + \DeclareUnicodeCharacter{2250}{\ensuremath\doteq}% + \DeclareUnicodeCharacter{2260}{\ensuremath\neq}% + \DeclareUnicodeCharacter{226A}{\ensuremath\ll}% + \DeclareUnicodeCharacter{226B}{\ensuremath\gg}% + \DeclareUnicodeCharacter{227A}{\ensuremath\prec}% + \DeclareUnicodeCharacter{227B}{\ensuremath\succ}% + \DeclareUnicodeCharacter{2283}{\ensuremath\supset}% + \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq}% + \DeclareUnicodeCharacter{228E}{\ensuremath\uplus}% + \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq}% + \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq}% + \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap}% + \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup}% + \DeclareUnicodeCharacter{2295}{\ensuremath\oplus}% + \DeclareUnicodeCharacter{2296}{\ensuremath\ominus}% + \DeclareUnicodeCharacter{2297}{\ensuremath\otimes}% + \DeclareUnicodeCharacter{2298}{\ensuremath\oslash}% + \DeclareUnicodeCharacter{2299}{\ensuremath\odot}% + \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash}% + \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv}% + \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop}% + \DeclareUnicodeCharacter{22A5}{\ensuremath\bot}% + \DeclareUnicodeCharacter{22A8}{\ensuremath\models}% + \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge}% + \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee}% + \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap}% + \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup}% + \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond}% + \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot}% + \DeclareUnicodeCharacter{22C6}{\ensuremath\star}% + \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie}% + \DeclareUnicodeCharacter{2308}{\ensuremath\lceil}% + \DeclareUnicodeCharacter{2309}{\ensuremath\rceil}% + \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor}% + \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor}% + \DeclareUnicodeCharacter{2322}{\ensuremath\frown}% + \DeclareUnicodeCharacter{2323}{\ensuremath\smile}% + % + \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle}% + \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright}% + \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown}% + \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft}% + \DeclareUnicodeCharacter{25C7}{\ensuremath\diamond}% + \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit}% + \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit}% + \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit}% + \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit}% + \DeclareUnicodeCharacter{266D}{\ensuremath\flat}% + \DeclareUnicodeCharacter{266E}{\ensuremath\natural}% + \DeclareUnicodeCharacter{266F}{\ensuremath\sharp}% + \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc}% + \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle}% + \DeclareUnicodeCharacter{27C2}{\ensuremath\perp}% + \DeclareUnicodeCharacter{27E8}{\ensuremath\langle}% + \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow}% + \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow}% + \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow}% + \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto}% + \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus}% + \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot}% + \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus}% + \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes}% + \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus}% + \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup}% + \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg}% + \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq}% + \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq}% + % + \global\mathchardef\checkmark="1370% actually the square root sign + \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark}% + % + % These are all the combining accents. We need these empty definitions + % at present for the sake of PDF outlines. + \DeclareUnicodeCharacter{0300}{}% + \DeclareUnicodeCharacter{0301}{}% + \DeclareUnicodeCharacter{0302}{}% + \DeclareUnicodeCharacter{0303}{}% + \DeclareUnicodeCharacter{0305}{}% + \DeclareUnicodeCharacter{0306}{}% + \DeclareUnicodeCharacter{0307}{}% + \DeclareUnicodeCharacter{0308}{}% + \DeclareUnicodeCharacter{030A}{}% + \DeclareUnicodeCharacter{030B}{}% + \DeclareUnicodeCharacter{030C}{}% + \DeclareUnicodeCharacter{0323}{}% + \DeclareUnicodeCharacter{0327}{}% + \DeclareUnicodeCharacter{0328}{}% + \DeclareUnicodeCharacter{0331}{}% + \DeclareUnicodeCharacter{0361}{}% +}% end of \unicodechardefs + +% UTF-8 byte sequence (pdfTeX) definitions (replacing and @U command) +% It makes the setting that replace UTF-8 byte sequence. +\def\utfeightchardefs{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterUTFviii + \unicodechardefs +} + +% Whether the active definitions of non-ASCII characters expand to +% non-active tokens with the same character code. This is used to +% write characters literally, instead of using active definitions for +% printing the correct glyphs. +\newif\ifpassthroughchars +\passthroughcharsfalse + +% For native Unicode handling (XeTeX and LuaTeX), +% provide a definition macro to replace/pass-through a Unicode character +% +\def\DeclareUnicodeCharacterNative#1#2{% + \ifnum"#1>"7F % only make non-ASCII chars active + \catcode"#1=\active + \def\dodeclareunicodecharacternative##1##2##3{% + \begingroup + \uccode`\~="##2\relax + \uppercase{\gdef~}{% + \ifpassthroughchars + ##1% + \else + ##3% + \fi + } + \endgroup + } + \begingroup + \uccode`\.="#1\relax + \uppercase{\def\UTFNativeTmp{.}}% + \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% + \endgroup + \fi +} + +% Native Unicode handling (XeTeX and LuaTeX) character replacing definition. +% It activates the setting that replaces Unicode characters. +\def\nativeunicodechardefs{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNative + \unicodechardefs +} + +% For native Unicode handling (XeTeX and LuaTeX), +% make the character token expand +% to the sequences given in \unicodechardefs for printing. +\def\DeclareUnicodeCharacterNativeAtU#1#2{% + \def\UTFAtUTmp{#2} + \expandafter\globallet\csname uni:#1\endcsname \UTFAtUTmp +} + +% @U command definitions for native Unicode handling (XeTeX and LuaTeX). +\def\nativeunicodechardefsatu{% + \let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeAtU + \unicodechardefs +} + +% US-ASCII character definitions. +\def\asciichardefs{% nothing need be done + \relax +} + +% Define all Unicode characters we know about +\iftxinativeunicodecapable + \nativeunicodechardefsatu +\else + \utfeightchardefs +\fi + + +\message{formatting,} + +\newdimen\defaultparindent \defaultparindent = 15pt + +\chapheadingskip = 15pt plus 4pt minus 2pt +\secheadingskip = 12pt plus 3pt minus 2pt +\subsecheadingskip = 9pt plus 2pt minus 2pt + +% Prevent underfull vbox error messages. +\vbadness = 10000 + +% Don't be very finicky about underfull hboxes, either. +\hbadness = 6666 + +% Following George Bush, get rid of widows and orphans. +\widowpenalty=10000 +\clubpenalty=10000 + +% Use TeX 3.0's \emergencystretch to help line breaking, but if we're +% using an old version of TeX, don't do anything. We want the amount of +% stretch added to depend on the line length, hence the dependence on +% \hsize. We call this whenever the paper size is set. +% +\def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi +} + +% Parameters in order: 1) textheight; 2) textwidth; +% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; +% 7) physical page height; 8) physical page width. +% +% We also call \setleading{\textleading}, so the caller should define +% \textleading. The caller should also set \parskip. +% +\def\internalpagesizes#1#2#3#4#5#6#7#8{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip + % + \vsize = #1\relax + \advance\vsize by \topskip + \txipageheight = \vsize + % + \hsize = #2\relax + \txipagewidth = \hsize + % + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % if we don't reset these, they will remain at "1 true in" of + % whatever layout pdftex was dumped with. + \pdfhorigin = 1 true in + \pdfvorigin = 1 true in + \else + \ifxetex + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % XeTeX does not have \pdfhorigin and \pdfvorigin. + \else + \special{papersize=#8,#7}% + \fi + \fi + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch +} + +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % If page is nothing but text, make it come out even. + \internalpagesizes{607.2pt}{6in}% that's 46 lines + {\voffset}{.25in}% + {\bindingoffset}{36pt}% + {11in}{8.5in}% +}} + +% Use @smallbook to reset parameters for 7x9.25 trim size. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5in}% + {-.2in}{0in}% + {\bindingoffset}{16pt}% + {9.25in}{7in}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \contentsrightmargin = 0pt + \defbodyindent = .5cm +}} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % Double-side printing via postscript on Laserjet 4050 + % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. + % To change the settings for a different printer or situation, adjust + % \normaloffset until the front-side and back-side texts align. Then + % do the same for \bindingoffset. You can set these for testing in + % your texinfo source file like this: + % @tex + % \global\normaloffset = -6mm + % \global\bindingoffset = 10mm + % @end tex + \internalpagesizes{673.2pt}{160mm}% that's 51 lines + {\voffset}{\hoffset}% + {\bindingoffset}{44pt}% + {297mm}{210mm}% + % + \tolerance = 700 + \contentsrightmargin = 0pt + \defbodyindent = 5mm +}} + +% Use @afivepaper to print on European A5 paper. +% From romildo@urano.iceb.ufop.br, 2 July 2000. +% He also recommends making @example and @lisp be small. +\def\afivepaper{{\globaldefs = 1 + \parskip = 2pt plus 1pt minus 0.1pt + \textleading = 12.5pt + % + \internalpagesizes{160mm}{120mm}% + {\voffset}{-11.4mm}% + {\bindingoffset}{8pt}% + {210mm}{148mm}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \contentsrightmargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm +}} + +% A specific text layout, 24x15cm overall, intended for A4 paper. +\def\afourlatex{{\globaldefs = 1 + \afourpaper + \internalpagesizes{237mm}{150mm}% + {\voffset}{4.6mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + % + % Must explicitly reset to 0 because we call \afourpaper. + \globaldefs = 0 +}} + +% Use @afourwide to print on A4 paper in landscape format. +\def\afourwide{{\globaldefs = 1 + \afourpaper + \internalpagesizes{241mm}{165mm}% + {\voffset}{-2.95mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + \globaldefs = 0 +}} + +\def\bsixpaper{{\globaldefs = 1 + \afourpaper + \internalpagesizes{140mm}{100mm}% + {-6.35mm}{-12.7mm}% + {\bindingoffset}{14pt}% + {176mm}{125mm}% + \let\SETdispenvsize=\smallword + \lispnarrowing = 0.2in + \globaldefs = 0 +}} + + +% @pagesizes TEXTHEIGHT[,TEXTWIDTH] +% Perhaps we should allow setting the margins, \topskip, \parskip, +% and/or leading, also. Or perhaps we should compute them somehow. +% +\parseargdef\pagesizes{\pagesizesyyy #1,,\finish} +\def\pagesizesyyy#1,#2,#3\finish{{% + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi + \globaldefs = 1 + % + \parskip = 3pt plus 2pt minus 1pt + \setleading{\textleading}% + % + \dimen0 = #1\relax + \advance\dimen0 by 2.5in % default 1in margin above heading line + % and 1.5in to include heading, footing and + % bottom margin + % + \dimen2 = \hsize + \advance\dimen2 by 2in % default to 1 inch margin on each side + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% + {\bindingoffset}{44pt}% + {\dimen0}{\dimen2}% +}} + +% Set default to letter. +% +\letterpaper + +% Default value of \hfuzz, for suppressing warnings about overfull hboxes. +\hfuzz = 1pt + + +\message{microtype,} + +% protrusion, from Thanh's protcode.tex. +\def\mtsetprotcode#1{% + \rpcode#1`\!=200 \rpcode#1`\,=700 \rpcode#1`\-=700 \rpcode#1`\.=700 + \rpcode#1`\;=500 \rpcode#1`\:=500 \rpcode#1`\?=200 + \rpcode#1`\'=700 + \rpcode#1 34=500 % '' + \rpcode#1 123=300 % -- + \rpcode#1 124=200 % --- + \rpcode#1`\)=50 \rpcode#1`\A=50 \rpcode#1`\F=50 \rpcode#1`\K=50 + \rpcode#1`\L=50 \rpcode#1`\T=50 \rpcode#1`\V=50 \rpcode#1`\W=50 + \rpcode#1`\X=50 \rpcode#1`\Y=50 \rpcode#1`\k=50 \rpcode#1`\r=50 + \rpcode#1`\t=50 \rpcode#1`\v=50 \rpcode#1`\w=50 \rpcode#1`\x=50 + \rpcode#1`\y=50 + % + \lpcode#1`\`=700 + \lpcode#1 92=500 % `` + \lpcode#1`\(=50 \lpcode#1`\A=50 \lpcode#1`\J=50 \lpcode#1`\T=50 + \lpcode#1`\V=50 \lpcode#1`\W=50 \lpcode#1`\X=50 \lpcode#1`\Y=50 + \lpcode#1`\v=50 \lpcode#1`\w=50 \lpcode#1`\x=50 \lpcode#1`\y=0 + % + \mtadjustprotcode#1\relax +} + +\newcount\countC +\def\mtadjustprotcode#1{% + \countC=0 + \loop + \ifcase\lpcode#1\countC\else + \mtadjustcp\lpcode#1\countC + \fi + \ifcase\rpcode#1\countC\else + \mtadjustcp\rpcode#1\countC + \fi + \advance\countC 1 + \ifnum\countC < 256 \repeat +} + +\newcount\countB +\def\mtadjustcp#1#2#3{% + \setbox\boxA=\hbox{% + \ifx#2\font\else#2\fi + \char#3}% + \countB=\wd\boxA + \multiply\countB #1#2#3\relax + \divide\countB \fontdimen6 #2\relax + #1#2#3=\countB\relax +} + +\ifxetex % XeTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{} +\else + \ifluatex % LuaTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{\expandglyphsinfont#1 20 20 1\relax} + \else + \ifpdf % pdfTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{\pdffontexpand#1 20 20 1 autoexpand\relax} + \else % TeX + \def\mtfontexpand#1{} + \fi + \fi +\fi + + +\newif\ifmicrotype + +\def\microtypeON{% + \microtypetrue + % + \ifxetex % XeTeX + \XeTeXprotrudechars=2 + \else + \ifluatex % LuaTeX + \adjustspacing=2 + \protrudechars=2 + \else + \ifpdf % pdfTeX + \pdfadjustspacing=2 + \pdfprotrudechars=2 + \fi + \fi + \fi + % + \mtfontexpand\textrm + \mtfontexpand\textsl + \mtfontexpand\textbf +} + +\def\microtypeOFF{% + \microtypefalse + % + \ifxetex % XeTeX + \XeTeXprotrudechars=0 + \else + \ifluatex % LuaTeX + \adjustspacing=0 + \protrudechars=0 + \else + \ifpdf % pdfTeX + \pdfadjustspacing=0 + \pdfprotrudechars=0 + \fi + \fi + \fi +} + +\microtypeOFF + +\parseargdef\microtype{% + \def\txiarg{#1}% + \ifx\txiarg\onword + \microtypeON + \else\ifx\txiarg\offword + \microtypeOFF + \else + \errhelp = \EMsimple + \errmessage{Unknown @microtype option `\txiarg', must be on|off}% + \fi\fi +} + + +\message{and turning on texinfo input format.} + +% Make UTF-8 the default encoding. +\documentencodingzzz{UTF-8} + +\def^^L{\par} % remove \outer, so ^L can appear in an @comment +\catcode`\^^K = 10 % treat vertical tab as whitespace + +% 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 \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{~} + +% Set catcodes for Texinfo file + +% Active characters for printing the wanted glyph. +% Most of these we simply print from the \tt font, but for some, we can +% use math or other variants that look better in normal text. +% +\catcode`\"=\active +\def\activedoublequote{{\tt\char34}} +\let"=\activedoublequote +\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde +\chardef\hatchar=`\^ +\catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat + +\catcode`\_=\active +\def_{\ifusingtt\normalunderscore\_} +\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } +\let\realunder=_ + +\catcode`\|=\active \def|{{\tt\char124}} + +\chardef \less=`\< +\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless +\chardef \gtr=`\> +\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr +\catcode`\+=\active \def+{{\tt \char 43}} +\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix +\catcode`\-=\active \let-=\normaldash + + +% 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 + \setregularquotes + \let\b = \strong + \let\i = \smartitalic + % in principle, all other definitions in \tex have to be undone too. +} + +% Used sometimes to turn off (effectively) the active characters even after +% parsing them. +\def\turnoffactive{% + \passthroughcharstrue + \let-=\normaldash + \let"=\normaldoublequote + \let$=\normaldollar %$ font-lock fix + \let+=\normalplus + \let<=\normalless + \let>=\normalgreater + \let^=\normalcaret + \let_=\normalunderscore + \let|=\normalverticalbar + \let~=\normaltilde + \otherbackslash + \setregularquotes + \unsepspaces +} + +% 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. +% So turn them off again, and have \loadconf turn them back on. +\catcode`+=\other \catcode`\_=\other + + +% \backslashcurfont outputs one backslash character in current font, +% as in \char`\\. +\global\chardef\backslashcurfont=`\\ + +% Print a typewriter backslash. For math mode, we can't simply use +% \backslashcurfont: 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). 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\ttbackslash{{\tt \ifmmode \mathchar29020 \else \backslashcurfont \fi}} +\let\backslashchar = \ttbackslash % \backslashchar{} is for user documents. + +% These are made active for url-breaking, so need +% active definitions as the normal characters. +\def\normaldot{.} +\def\normalquest{?} +\def\normalslash{/} + +% \newlinesloadsconf - call \loadconf as soon as possible in the +% file, e.g. at the first newline. +% +{\catcode`\^=7 +\catcode`\^^M=13 +\gdef\newlineloadsconf{% + \catcode`\^^M=13 % + \newlineloadsconfzz% +} +\gdef\newlineloadsconfzz#1^^M{% + \def\c{\loadconf\c}% + % Definition for the first newline read in the file + \def ^^M{\loadconf}% + % In case the first line has a whole-line or environment command on it + \let\originalparsearg\parsearg% + \def\parsearg{\loadconf\originalparsearg}% + % + % \startenvironment is in the expansion of commands defined with \envdef + \let\originalstartenvironment\startenvironment% + \def\startenvironment{\loadconf\startenvironment}% +}} + + +% Emergency active definition of newline, in case an active newline token +% appears by mistake. +{\catcode`\^=7 \catcode13=13% +\gdef\enableemergencynewline{% + \gdef^^M{% + \par% + %\par% +}}} + + +% \loadconf gets called at the beginning of every Texinfo file. +% If texinfo.cnf is present on the system, read it. Useful for site-wide +% @afourpaper, etc. Not opening texinfo.cnf directly in texinfo.tex +% makes it possible to make a format file for Texinfo. +% +\gdef\loadconf{% + \relax % Terminate the filename if running as "tex '&texinfo' FILE.texi". + % + % Turn off the definitions that trigger \loadconf + \everyjobreset + \catcode13=5 % regular end of line + \enableemergencynewline + \let\c=\comment + \let\parsearg\originalparsearg + \let\startenvironment\originalstartenvironment + % + % Also turn back on active characters that might appear in the input + % file name, in case not using a pre-dumped format. + \catcode`+=\active + \catcode`\_=\active + % + \openin 1 texinfo.cnf + \ifeof 1 \else \input texinfo.cnf \fi + \closein 1 +} + +% Redefine some control sequences to be controlled by the \ifdummies +% and \ifindexnofonts switches. Do this at the end so that the control +% sequences are all defined. +\definedummies + + + + +\catcode`\@=0 + +% \realbackslash is an actual character `\' with catcode other. +{\catcode`\\=\other @gdef@realbackslash{\}} + +% In Texinfo, backslash is an active character; it prints the backslash +% in fixed width font. +\catcode`\\=\active % @ for escape char from now on. + +@let\ = @ttbackslash + +% If in a .fmt file, print the version number. +% \eatinput stops the `\input texinfo' from showing up. +% After that, `\' should revert to printing a backslash. +% Turn on active characters that we couldn't do earlier because +% they might have appeared in the input file name. +% +@everyjob{@message{[Texinfo version @texinfoversion]}% + @global@let\ = @eatinput + @catcode`+=@active @catcode`@_=@active} + +{@catcode`@^=7 @catcode`@^^M=13% +@gdef@eatinput input texinfo#1^^M{@loadconf}} + +@def@everyjobreset{@ifx\@eatinput @let\ = @ttbackslash @fi} + +% \otherbackslash defines an active \ to be a literal `\' character with +% catcode other. +@gdef@otherbackslash{@let\=@realbackslash} + +% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of +% the literal character `\'. +% +{@catcode`- = @active + @gdef@normalturnoffactive{% + @turnoffactive + @let\=@ttbackslash + } +} + +% Say @foo, not \foo, in error messages. +@escapechar = `@@ + +% These look ok in all fonts, so just make them not special. +% @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 +@c don't make ` and ' active, @code will not get them as active chars. +@c Do this last of all since we use ` in the previous @catcode assignments. +@catcode`@'=@active +@catcode`@`=@active + +@c Local variables: +@c eval: (add-hook 'before-save-hook 'time-stamp nil t) +@c time-stamp-pattern: "texinfoversion{%Y-%02m-%02d.%02H}" +@c page-delimiter: "^\\\\message" +@c End: + +@newlineloadsconf diff --git a/local/recipes/dev/gnu-make/source/build.cfg.in b/local/recipes/dev/gnu-make/source/build.cfg.in new file mode 100644 index 0000000000..69e7b674c3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build.cfg.in @@ -0,0 +1,38 @@ +# Configuration for building GNU Make in the absence of any 'make' program. +# @configure_input@ + +# Copyright (C) 1993-2022 Free Software 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 . + +# See Makefile.in for comments describing these variables. + +top_srcdir='@top_srcdir@' + +prefix='@prefix@' +exec_prefix=`eval echo @exec_prefix@` + +CC='@CC@' +AR='@AR@' +CFLAGS='@CFLAGS@ @GUILE_CFLAGS@' +CPPFLAGS='@CPPFLAGS@' +DEFS='@DEFS@' +ARFLAGS='@ARFLAGS@' +LDFLAGS='@AM_LDFLAGS@ @LDFLAGS@' +ALLOCA='@ALLOCA@' +LOADLIBES='@LIBS@ @GUILE_LIBS@ @LIBINTL@' +REMOTE='@REMOTE@' +OBJEXT='@OBJEXT@' +EXEEXT='@EXEEXT@' diff --git a/local/recipes/dev/gnu-make/source/build.sh b/local/recipes/dev/gnu-make/source/build.sh new file mode 100755 index 0000000000..fdcd964698 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build.sh @@ -0,0 +1,182 @@ +#!/bin/sh +# Shell script to build GNU Make in the absence of any 'make' program. + +# Copyright (C) 1993-2022 Free Software 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 . + +# Get configure-generated values +. ./build.cfg + +die () { echo "$*" 1>&2; exit 1; } +usage () { echo "$0 [-k]"; exit $1; } + +keep_going=false + +: ${OUTDIR:=.} +OUTLIB="$OUTDIR/lib" + +# Directory to find libraries in for '-lXXX'. +libdir=$exec_prefix/lib +# Directory to search by default for included makefiles. +includedir=$prefix/include + +localedir=$prefix/share/locale + +defines="-DLOCALEDIR=\"$localedir\" -DLIBDIR=\"$libdir\" -DINCLUDEDIR=\"$includedir\"" + +# Look up a make variable value. +# It can handle simple recursion where variables are separate words. +# Print the value to stdout. +get_mk_var () +{ + file=$1 + var=$2 + + val= + v=$(sed -e :a -e '/\\$/N; s/\\\n//; ta' "$file" | sed -n "s=^ *$var *\= *==p") + for w in $v; do + case $w in + (\$[\(\{]*[\)\}]) w=${w#\$[\(\{]}; w=$(get_mk_var "$file" "${w%[\)\}]}") ;; + esac + val="${val:+$val }$w" + done + + printf '%s\n' "$val" +} + +# Compile source files. Object files are put into $objs. +compile () +{ + success=true + objs= + for ofile in "$@"; do + # We should try to use a Makefile variable like libgnu_a_SOURCES or + # something but just hardcode it. + file="${ofile%.$OBJEXT}.c" + case $file in + (lib/libgnu_a-*.c) file="lib/${file#lib/libgnu_a-}" ;; + esac + echo "compiling $file..." + of="$OUTDIR/$ofile" + mkdir -p "${of%/*}" || exit 1 + if $CC $cflags $CPPFLAGS $CFLAGS -c -o "$of" "$top_srcdir/$file"; then + : worked + else + $keep_going || die "Compilation failed." + success=false + fi + + objs="${objs:+$objs }$of" + done + + $success +} + +# Use config.status to convert a .in file. Output file is put into $out. +# $out will be empty if no conversion was needed. +convert () +{ + out= + base=$1 + var="GENERATE_$(echo $base | tr 'a-z./+' A-Z__X)" + + # Is this file disabled? + grep "${var}_FALSE\"]=\"\"" config.status >/dev/null && return 0 + + # If there's no .in file then no conversion needed + in="$top_srcdir/lib/$(echo ${base%.*}.in.${base##*.} | tr / _)" + test -f "$in" || return 0 + + # Not disabled, so create it + out="$OUTLIB/$base" + mkdir -p "${out%/*}" + + # First perform the normal replacements, using config.status + sed -e 's|@GUARD_PREFIX@|GL|g' \ + -e 's/@GNULIB_UNISTD_H_GETOPT@/0/g' \ + "$in" > "${out}_" + ./config.status --file "${out}__:${out}_" + int="${out}__" + + # Then see if there any files we need to include. Unfortunately there's no + # algorithmic conversion so we just have to hard-code it. + incls=$(sed -n 's/.*definitions* of \(_[^ $]*\).*/\1/p' "$in") + + for inc in $incls; do + case $inc in + (_GL_FUNCDECL_RPL) fn=$(get_mk_var lib/Makefile CXXDEFS_H) ;; + (_GL_ARG_NONNULL) fn=$(get_mk_var lib/Makefile ARG_NONNULL_H) ;; + (_GL_WARN_ON_USE) fn=$(get_mk_var lib/Makefile WARN_ON_USE_H) ;; + (_Noreturn) fn=$(get_mk_var lib/Makefile _NORETURN_H) ;; + (*) echo "Unknown file replacement: $inc"; exit 1 ;; + esac + + fn="$top_srcdir/lib/${fn##*/}" + test -f "$fn" || { echo "Missing file: $fn"; exit 1; } + + sed "/definitions* of $inc/r $fn" "$int" > "${int}_" + int=${int}_ + done + + # Done! + mv "$int" "$out" +} + +# Get source files provided from gnulib and convert to object files +LIBOBJS= +for lo in $( (get_mk_var lib/Makefile libgnu_a_OBJECTS; get_mk_var lib/Makefile libgnu_a_LIBADD) | sed "s=\$[\(\{]OBJEXT[\)\}]=$OBJEXT=g"); do + LIBOBJS="${LIBOBJS:+$LIBOBJS }lib/$lo" +done + +# Get object files from the Makefile +OBJS=$(get_mk_var Makefile make_OBJECTS | sed "s=\$[\(\{]OBJEXT[\)\}]=$OBJEXT=g") + +while test -n "$1"; do + case $1 in + (-k) keep_going=true; shift ;; + (--) shift; break ;; + (-[h?]) usage 0 ;; + (-*) echo "Unknown option: $1"; usage 1 ;; + esac +done + +test -z "$1" || die "Unknown argument: $*" + +# Generate gnulib header files that would normally be created by make +set -e +for b in $(get_mk_var lib/Makefile BUILT_SOURCES); do + convert $b +done +set +e + +# Build the gnulib library +cflags="$DEFS -I$OUTLIB -Ilib -I$top_srcdir/lib -I$OUTDIR/src -Isrc -I$top_srcdir/src" +compile $LIBOBJS || die "Compilation failed." + +echo "creating libgnu.a..." +$AR $ARFLAGS "$OUTLIB"/libgnu.a $objs || die "Archive of libgnu failed." + +# Compile the source files into those objects. +cflags="$DEFS $defines -I$OUTDIR/src -Isrc -I$top_srcdir/src -I$OUTLIB -Ilib -I$top_srcdir/lib" +compile $OBJS || die "Compilation failed." + +# Link all the objects together. +echo "linking make..." +$CC $CFLAGS $LDFLAGS -L"$OUTLIB" -o "$OUTDIR/makenew$EXEEXT" $objs -lgnu $LOADLIBES || die "Link failed." + +mv -f "$OUTDIR/makenew$EXEEXT" "$OUTDIR/make$EXEEXT" || exit 1 + +echo done. diff --git a/local/recipes/dev/gnu-make/source/build_w32.bat b/local/recipes/dev/gnu-make/source/build_w32.bat new file mode 100644 index 0000000000..30ca0b2a86 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/build_w32.bat @@ -0,0 +1,458 @@ +@echo off +:: Copyright (C) 1996-2022 Free Software 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 . + +setlocal +if not "%RECURSEME%"=="%~0" ( + set "RECURSEME=%~0" + %ComSpec% /s /c ""%~0" %*" + goto :EOF +) + +call :Reset + +if "%1" == "-h" goto Usage +if "%1" == "--help" goto Usage + +echo. +echo Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8/10 +echo. + +set MAKE=gnumake +set GUILE=Y +set COMPILER=cl.exe +set O=obj +set ARCH=x64 +set DEBUG=N +set DIRENT=Y +set VERBOSE=N + +if exist maintMakefile ( + set MAINT=Y +) else ( + set MAINT=N +) + +:ParseSW +if "%1" == "--verbose" goto SetVerbose +if "%1" == "--debug" goto SetDebug +if "%1" == "--without-guile" goto NoGuile +if "%1" == "--x86" goto Set32Bit +if "%1" == "gcc" goto SetCC +if "%1" == "tcc" goto SetTCC +if "%1" == "" goto DoneSW +goto Usage + +:SetVerbose +set VERBOSE=Y +shift +goto ParseSW + +:SetDebug +set DEBUG=Y +echo - Building without compiler optimizations +shift +goto ParseSW + +:NoGuile +set GUILE=N +echo - Building without Guile +shift +goto ParseSW + +:Set32Bit +set ARCH=x86 +echo - Building 32bit GNU Make +shift +goto ParseSW + +:SetCC +set COMPILER=gcc +set O=o +echo - Building with GCC +shift +goto ParseSW + +:SetTCC +set COMPILER=tcc +set O=o +echo - Building with TinyC +shift +goto ParseSW + +:DoneSW +if "%MAINT%" == "Y" echo - Enabling maintainer mode + +if "%COMPILER%" == "gcc" goto FindGcc +if "%COMPILER%" == "tcc" goto FindTcc + +:: Find a compiler. Visual Studio requires a lot of effort to locate :-/. +call %COMPILER% >nul 2>&1 +if not ERRORLEVEL 1 goto FoundMSVC + +:: Visual Studio 17 and above provides the "vswhere" tool +call :FindVswhere +if ERRORLEVEL 1 goto LegacyVS + +for /f "tokens=* usebackq" %%i in (`"%VSWHERE%" -latest -property installationPath`) do ( + set InstallPath=%%i +) +set "VSVARS=%InstallPath%\VC\Auxiliary\Build\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +:: No "vswhere" or it can't find a compiler. Go old-school. +:LegacyVS +set "VSVARS=%VS150COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS140COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS120COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS80COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS71COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%VS70COMNTOOLS%\..\..\VC\vcvarsall.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%V6TOOLS%\VC98\Bin\vcvars32.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%V6TOOLS%\VC97\Bin\vcvars32.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +set "VSVARS=%V5TOOLS%\VC\Bin\vcvars32.bat" +call :CheckMSVC +if not ERRORLEVEL 1 goto FoundMSVC + +:: We did not find anything--fail +echo No MSVC compiler available. +echo Please run vcvarsall.bat and/or configure your Path. +exit 1 + +:FoundMSVC +set OUTDIR=.\WinRel +set LNKOUT=./WinRel +set "OPTS=/O2 /D NDEBUG" +set LINKOPTS= +if "%DEBUG%" == "Y" set OUTDIR=.\WinDebug +if "%DEBUG%" == "Y" set LNKOUT=./WinDebug +if "%DEBUG%" == "Y" set "OPTS=/Zi /Od /D _DEBUG" +if "%DEBUG%" == "Y" set LINKOPTS=/DEBUG +if "%MAINT%" == "Y" set "OPTS=%OPTS% /D MAKE_MAINTAINER_MODE" +:: Show the compiler version that we found +:: Unfortunately this also shows a "usage" note; I can't find anything better. +echo. +call %COMPILER% +goto Build + +:FindGcc +set OUTDIR=.\GccRel +set LNKOUT=./GccRel +set OPTS=-O2 +set DIRENT=N +if "%DEBUG%" == "Y" set OPTS=-O0 +if "%DEBUG%" == "Y" set OUTDIR=.\GccDebug +if "%DEBUG%" == "Y" set LNKOUT=./GccDebug +if "%MAINT%" == "Y" set "OPTS=%OPTS% -DMAKE_MAINTAINER_MODE" +:: Show the compiler version that we found +echo. +call %COMPILER% --version +if not ERRORLEVEL 1 goto Build +echo No %COMPILER% found. +exit 1 + +:FindTcc +set OUTDIR=.\TccRel +set LNKOUT=./TccRel +set OPTS=-O2 +if "%DEBUG%" == "Y" set OPTS=-O0 +if "%DEBUG%" == "Y" set OUTDIR=.\TccDebug +if "%DEBUG%" == "Y" set LNKOUT=./TccDebug +if "%MAINT%" == "Y" set "OPTS=%OPTS% -DMAKE_MAINTAINER_MODE" +:: Show the compiler version that we found +echo. +call %COMPILER% -v +if not ERRORLEVEL 1 goto Build +echo No %COMPILER% found. +exit 1 + +:Build +:: Clean the directory if it exists +if exist %OUTDIR%\nul rmdir /S /Q %OUTDIR% + +:: Recreate it +mkdir %OUTDIR% +mkdir %OUTDIR%\src +mkdir %OUTDIR%\src\w32 +mkdir %OUTDIR%\src\w32\compat +mkdir %OUTDIR%\src\w32\subproc +mkdir %OUTDIR%\lib + +if "%GUILE%" == "Y" call :ChkGuile + +if not exist src\config.h.W32 goto NotConfig + +echo. +echo Compiling %OUTDIR% version + +copy src\config.h.W32 %OUTDIR%\src\config.h + +copy lib\glob.in.h %OUTDIR%\lib\glob.h +copy lib\fnmatch.in.h %OUTDIR%\lib\fnmatch.h + +if exist %OUTDIR%\link.sc del %OUTDIR%\link.sc + +call :Compile src/ar +call :Compile src/arscan +call :Compile src/commands +call :Compile src/default +call :Compile src/dir +call :Compile src/expand +call :Compile src/file +call :Compile src/function +call :Compile src/getopt +call :Compile src/getopt1 +call :Compile src/guile GUILE +call :Compile src/hash +call :Compile src/implicit +call :Compile src/job +call :Compile src/load +call :Compile src/loadapi +call :Compile src/main GUILE +call :Compile src/misc +call :Compile src/output +call :Compile src/read +call :Compile src/remake +call :Compile src/remote-stub +call :Compile src/rule +call :Compile src/shuffle +call :Compile src/signame +call :Compile src/strcache +call :Compile src/variable +call :Compile src/version +call :Compile src/vpath +call :Compile src/w32/pathstuff +call :Compile src/w32/w32os +call :Compile src/w32/compat/posixfcn +call :Compile src/w32/subproc/misc +call :Compile src/w32/subproc/sub_proc +call :Compile src/w32/subproc/w32err +call :Compile lib/fnmatch +call :Compile lib/glob +call :Compile lib/getloadavg + +:: Compile dirent unless it is supported by compiler library (like with gcc). +if "%DIRENT%" == "Y" call :Compile src\w32\compat\dirent + +call :Link + +echo. +if exist %OUTDIR%\%MAKE%.exe goto Success +echo %OUTDIR% build FAILED! +exit 1 + +:Success +echo %OUTDIR% build succeeded. +if exist Basic.mk copy /Y Basic.mk Makefile +if not exist tests\config-flags.pm copy /Y tests\config-flags.pm.W32 tests\config-flags.pm +call :Reset +goto :EOF + +:: +:: Subroutines +:: + +:Compile +if "%VERBOSE%" == "N" echo - Compiling %1.c +echo %LNKOUT%/%1.%O% >>%OUTDIR%\link.sc +set EXTRAS= +if "%2" == "GUILE" set "EXTRAS=%GUILECFLAGS%" +if exist "%OUTDIR%\%1.%O%" del "%OUTDIR%\%1.%O%" +if "%COMPILER%" == "gcc" goto GccCompile +if "%COMPILER%" == "tcc" goto TccCompile + +:: MSVC Compile +if "%VERBOSE%" == "Y" echo on +call %COMPILER% /nologo /MT /W4 /EHsc %OPTS% /I %OUTDIR%/src /I src /I %OUTDIR%/lib /I lib /I src/w32/include /D _CONSOLE /D HAVE_CONFIG_H /FR%OUTDIR% /Fp%OUTDIR%\%MAKE%.pch /Fo%OUTDIR%\%1.%O% /Fd%OUTDIR%\%MAKE%.pdb %EXTRAS% /c %1.c +@echo off +goto CompileDone + +:GccCompile +:: GCC Compile +if "%VERBOSE%" == "Y" echo on +call %COMPILER% -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 %OPTS% -I%OUTDIR%/src -I./src -I%OUTDIR%/lib -I./lib -I./src/w32/include -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%/%1.%O% -c %1.c +@echo off +goto CompileDone + +:TccCompile +:: TCC Compile +if "%VERBOSE%" == "Y" echo on +call %COMPILER% -mthreads -Wall -std=c11 %OPTS% -I%OUTDIR%/src -I./src -I%OUTDIR%/lib -I./lib -I./src/w32/include -D_cdecl= -D_MSC_VER -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%/%1.%O% -c %1.c +@echo off +goto CompileDone + +:CompileDone +if not exist "%OUTDIR%\%1.%O%" exit 1 +goto :EOF + +:Link +echo. +echo - Linking %LNKOUT%/%MAKE%.exe +if "%COMPILER%" == "gcc" goto GccLink +if "%COMPILER%" == "tcc" goto TccLink + +:: MSVC Link +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 >>%OUTDIR%\link.sc +if "%VERBOSE%" == "Y" echo on +call link.exe /NOLOGO /SUBSYSTEM:console /PDB:%LNKOUT%\%MAKE%.pdb %LINKOPTS% /OUT:%LNKOUT%\%MAKE%.exe @%LNKOUT%\link.sc +@echo off +goto :EOF + +:GccLink +:: GCC Link +if "%VERBOSE%" == "Y" echo on +echo %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 >>%OUTDIR%\link.sc +call %COMPILER% -mthreads -gdwarf-2 -g3 %OPTS% -o %LNKOUT%/%MAKE%.exe @%LNKOUT%/link.sc -Wl,--out-implib=%LNKOUT%/libgnumake-1.dll.a +@echo off +goto :EOF + +:TccLink +:: TCC Link +if "%VERBOSE%" == "Y" echo on +echo %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lodbc32 -lodbccp32 >>%OUTDIR%\link.sc +call %COMPILER% -mthreads %OPTS% -o %LNKOUT%/%MAKE%.exe @%LNKOUT%/link.sc +@echo off +goto :EOF + +:ChkGuile +:: Build with Guile is supported only on NT and later versions +if not "%OS%" == "Windows_NT" goto NoGuile +call pkg-config --help > %OUTDIR%\guile.tmp 2> NUL +if ERRORLEVEL 1 goto NoPkgCfg + +set PKGMSC= +if not "%COMPILER%" == "gcc" set PKGMSC=--msvc-syntax + +echo Checking for Guile 2.0 +call pkg-config --cflags --short-errors "guile-2.0" > %OUTDIR%\gl-c2.tmp 2> NUL +if not ERRORLEVEL 1 set /P GUILECFLAGS= < %OUTDIR%\gl-c2.tmp + +call pkg-config --libs --static --short-errors %PKGMSC% "guile-2.0" > %OUTDIR%\gl-l2.tmp 2> NUL +if not ERRORLEVEL 1 set /P GUILELIBS= < %OUTDIR%\gl-l2.tmp + +if not "%GUILECFLAGS%" == "" goto GuileDone + +echo Checking for Guile 1.8 +call pkg-config --cflags --short-errors "guile-1.8" > %OUTDIR%\gl-c18.tmp 2> NUL +if not ERRORLEVEL 1 set /P GUILECFLAGS= < %OUTDIR%\gl-c18.tmp + +call pkg-config --libs --static --short-errors %PKGMSC% "guile-1.8" > %OUTDIR%\gl-l18.tmp 2> NUL +if not ERRORLEVEL 1 set /P GUILELIBS= < %OUTDIR%\gl-l18.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 "%GUILECFLAGS%" == "" goto :EOF + +echo - Guile found: building with Guile +set "GUILECFLAGS=%GUILECFLAGS% -DHAVE_GUILE" +goto :EOF + +:FindVswhere +set VSWHERE=vswhere +call "%VSWHERE%" -help >nul 2>&1 +if not ERRORLEVEL 1 exit /b 0 +set "VSWHERE=C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere" +call "%VSWHERE%" -help >nul 2>&1 +if ERRORLEVEL 1 exit /b 1 +goto :EOF + +:CheckMSVC +if not exist "%VSVARS%" exit /b 1 +call "%VSVARS%" %ARCH% +if ERRORLEVEL 1 exit /b 1 +call %COMPILER% >nul 2>&1 +if ERRORLEVEL 1 exit /b 1 +goto :EOF + +:NotConfig +echo. +echo *** This workspace is not configured. +echo Either retrieve the configured source in the release tarball +echo or, if building from Git, run the .\bootstrap.bat script first. +exit /b 1 + +:Usage +echo Usage: %0 [options] [gcc] OR [tcc] +echo Options: +echo. --without-guile Do not compile Guile support even if found +echo. --debug Make a Debug build--default is Release +echo. --x86 Make a 32bit binary--default is 64bit +echo. --help Display these instructions and exit +echo. +echo. "gcc" means compile with GCC, "tcc" means compile with Tiny C's TCC +goto :EOF + +:Reset +set ARCH= +set COMPILER= +set DEBUG= +set GUILE= +set GUILECFLAGS= +set GUILELIBS= +set LINKOPTS= +set MAKE= +set NOGUILE= +set O= +set OPTS= +set OUTDIR= +set LNKOUT= +set PKGMSC= +set VSVARS= +goto :EOF diff --git a/local/recipes/dev/gnu-make/source/builddos.bat b/local/recipes/dev/gnu-make/source/builddos.bat new file mode 100644 index 0000000000..2ee916a7a2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/builddos.bat @@ -0,0 +1,97 @@ +@echo off +rem Copyright (C) 1998-2022 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 +rem the terms of the GNU General Public License as published by the Free +rem Software Foundation; either version 3 of the License, or (at your option) +rem any later version. +rem +rem GNU Make is distributed in the hope that it will be useful, but WITHOUT +rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. +rem more details. +rem +rem You should have received a copy of the GNU General Public License along +rem with this program. If not, see . + +echo Building Make for MSDOS with DJGPP + +rem The SmallEnv trick protects against too small environment block, +rem in which case the values will be truncated and the whole thing +rem goes awry. COMMAND.COM will say "Out of environment space", but +rem many people don't care, so we force them to care by refusing to go. + +rem Where is the srcdir? +set XSRC=. +if not "%XSRC%"=="." goto SmallEnv +if "%1%"=="" goto SrcDone +if "%1%"=="." goto SrcDone +set XSRC=%1 + +if not "%XSRC%"=="%1" goto SmallEnv + +:SrcDone + +if not exist src mkdir src +if not exist lib mkdir lib + +copy /Y %XSRC%\src\configh.dos .\src\config.h + +copy /Y %XSRC%\lib\glob.in.h .\lib\glob.h +copy /Y %XSRC%\lib\fnmatch.in.h .\lib\fnmatch.h + +rem Echo ON so they will see what is going on. +@echo on +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/commands.c -o commands.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/output.c -o output.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/job.c -o job.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/dir.c -o dir.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/file.c -o file.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/misc.c -o misc.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -DLOCALEDIR=\"/dev/env/DJDIR/share/locale\" -O2 -g %XSRC%/src/main.c -o main.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -DINCLUDEDIR=\"/dev/env/DJDIR/include\" -O2 -g %XSRC%/src/read.c -o read.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -DLIBDIR=\"/dev/env/DJDIR/lib\" -O2 -g %XSRC%/src/remake.c -o remake.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/rule.c -o rule.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/implicit.c -o implicit.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/default.c -o default.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/variable.c -o variable.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/expand.c -o expand.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/function.c -o function.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/vpath.c -o vpath.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/hash.c -o hash.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/strcache.c -o strcache.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/version.c -o version.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/ar.c -o ar.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/arscan.c -o arscan.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/signame.c -o signame.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/remote-stub.c -o remote-stub.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/getopt.c -o getopt.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/getopt1.c -o getopt1.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/shuffle.c -o shuffle.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/load.c -o load.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/lib/glob.c -o lib/glob.o +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/lib/fnmatch.c -o lib/fnmatch.o +@echo off +echo commands.o > respf.$$$ +for %%f in (job output dir file misc main read remake rule implicit default variable load) do echo %%f.o >> respf.$$$ +for %%f in (expand function vpath hash strcache version ar arscan signame remote-stub getopt getopt1 shuffle) do echo %%f.o >> respf.$$$ +for %%f in (lib\glob lib\fnmatch) do echo %%f.o >> respf.$$$ +gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/guile.c -o guile.o +echo guile.o >> respf.$$$ +@echo Linking... +@echo on +gcc -o make.exe @respf.$$$ +@echo off +if not exist make.exe echo Make.exe build failed... +if exist make.exe echo make.exe is now built! +if exist make.exe del respf.$$$ +if exist make.exe copy /Y %XSRC%\Basic.mk Makefile +goto End + +:SmallEnv +echo Your environment is too small. Please enlarge it and run me again. + +:End +set XRSC= +@echo on diff --git a/local/recipes/dev/gnu-make/source/configure b/local/recipes/dev/gnu-make/source/configure new file mode 100755 index 0000000000..9a6a6f83d4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/configure @@ -0,0 +1,17351 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.73 for GNU Make 4.4. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# 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 +case $# in # (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +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 \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in #( + e) case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || 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'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in #( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + 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 +case $# in # (( + 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; + *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; +esac +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed 'exec'. +printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf '%s\n' "$0: This script requires a shell more modern than all" + printf '%s\n' "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." + else + printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_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 +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +# 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. +as_fn_error () +{ + 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 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf '%s\n' "$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). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# 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` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_CONFIG_STATUS= +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +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 +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +ECHO_T +ECHO_N +ECHO_C +target_alias +host_alias +build_alias +LIBS +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --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" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # 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'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` + 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" ;; + *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +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" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +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 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --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 + --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 + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/make] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --disable-largefile omit support for large files + --disable-year2038 omit support for timestamps past the year 2038 + --enable-cross-guesses={conservative|risky} + specify policy for cross-compilation guesses + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + --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 + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --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-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 + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + 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. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.73 + +Copyright (C) 2026 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in #( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in #( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) eval "$3=yes" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in #( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else case e in #( + e) printf '%s\n' "$as_me: program exited with status $ac_status" >&5 + printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} # ac_fn_check_decl + +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else case e in #( + e) eval "$4=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$4 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf '%s\n' "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# Dump the cache to stdout. It can be in a pipe (this is a requirement). +ac_cache_dump () +{ + # The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) +} + +# Print debugging info to stdout. +ac_dump_debugging_info () +{ + echo + + printf '%s\n' "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + ac_cache_dump + echo + + printf '%s\n' "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf '%s\n' "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; + esac + printf '%s\n' "$ac_var='$ac_val'" + done | sort + echo + fi + + if test -s confdefs.h; then + printf '%s\n' "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf '%s\n' "$as_me: caught signal $ac_signal" + printf '%s\n' "$as_me: exit $exit_status" +} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. +ac_exit_trap () +{ + exit_status= + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + ac_dump_debugging_info >&5 + eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +} + +trap 'ac_exit_trap $?' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf '%s\n' "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf '%s\n' "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf '%s\n' "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf '%s\n' "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf '%s\n' "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf '%s\n' "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf '%s\n' "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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 + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf '%s\n' "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf '%s\n' "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C23 (global declarations) +ac_c_conftest_c23_globals=' +/* Does the compiler advertise conformance to C17 or earlier? + Although GCC 14 does not do that, even with -std=gnu23, + it is close enough, and defines __STDC_VERSION == 202000L. */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L +# error "Compiler advertises conformance to C17 or earlier" +#endif + +// Check alignas. +char alignas (double) c23_aligned_as_double; +char alignas (0) c23_no_special_alignment; +extern char c23_aligned_as_int; +char alignas (0) alignas (int) c23_aligned_as_int; + +// Check alignof. +enum +{ + c23_int_alignment = alignof (int), + c23_int_array_alignment = alignof (int[100]), + c23_char_alignment = alignof (char) +}; +static_assert (0 < -alignof (int), "alignof is signed"); + +int function_with_unnamed_parameter (int) { return 0; } + +void c23_noreturn (); + +/* Test parsing of string and char UTF-8 literals (including hex escapes). + The parens pacify GCC 15. */ +bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); + +bool check_that_bool_works = true | false | !nullptr; +#if !true +# error "true does not work in #if" +#endif +#if false +#elifdef __STDC_VERSION__ +#else +# error "#elifdef does not work" +#endif + +#ifndef __has_c_attribute +# error "__has_c_attribute not defined" +#endif + +#ifndef __has_include +# error "__has_include not defined" +#endif + +#define LPAREN() ( +#define FORTY_TWO(x) 42 +#define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) +static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); + +static_assert (0b101010 == 42); +static_assert (0B101010 == 42); +static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); +static_assert (0.500'\''000'\''000 == 0.5); + +enum unsignedish : unsigned int { uione = 1 }; +static_assert (0 < -uione); + +#include +constexpr nullptr_t null_pointer = nullptr; + +static typeof (1 + 1L) two () { return 2; } +static long int three () { return 3; } +' + +# Test code for whether the C compiler supports C23 (body of main). +ac_c_conftest_c23_main=' + { + label_before_declaration: + int arr[10] = {}; + if (arr[0]) + goto label_before_declaration; + if (!arr[0]) + goto label_at_end_of_block; + label_at_end_of_block: + } + ok |= !null_pointer; + ok |= two != three; +' + +# Test code for whether the C compiler supports C23 (complete). +ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} + +int +main (int, char **) +{ + int ok = 0; + ${ac_c_conftest_c23_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Do not test the value of __STDC__, because some compilers define it to 0 + or do not define it, while otherwise adequately conforming. */ + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (char **p, int i) +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +/* Does the compiler advertise C99 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr, and "aND" is used instead of "and" to work around +// GCC bug 40564 which is irrelevant here. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, aND third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + const char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + static struct incomplete_array *volatile incomplete_array_pointer; + struct incomplete_array *ia = incomplete_array_pointer; + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + // Do not test for VLAs, as some otherwise-conforming compilers lack them. + // C code should instead use __STDC_NO_VLA__; see Autoconf manual. + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || ni.number != 58); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +/* Does the compiler advertise C11 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +gt_needs="$gt_needs " +as_fn_append ac_header_c_list " vfork.h vfork_h HAVE_VFORK_H" +as_fn_append ac_func_c_list " fork HAVE_FORK" +as_fn_append ac_func_c_list " vfork HAVE_VFORK" + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath config.guess config.sub compile missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf '%s\n' "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf '%s\n' "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w= + for ac_val in x $ac_old_val; do + ac_old_val_w="$ac_old_val_w $ac_val" + done + ac_new_val_w= + for ac_val in x $ac_new_val; do + ac_new_val_w="$ac_new_val_w $ac_val" + done + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.18' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF/1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF/1 since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf '%s\n' "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in #( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf '%s\n' "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # 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". + printf '%s\n' ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf '%s\n' "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf '%s\n' "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in #( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf '%s\n' "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf '%s\n' "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf '%s\n' "$STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf '%s\n' "$ac_ct_STRIP" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + 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 ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf '%s\n' "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk 'busybox awk' +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf '%s\n' "$AWK" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf '%s\n' "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @printf '%s\n' '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# 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;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + SET_MAKE= +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +# Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if printf '%s\n' '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 ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf '%s\n' "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in #( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in #( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf '%s\n' "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in #( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf '%s\n' "#define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf '%s\n' "#define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# 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}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf '%s\n' "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + _am_tools=none + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf '%s\n' "$am_cv_prog_tar_ustar" >&6; } + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + + + + + + +# Checks for programs. + + + + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf '%s\n' "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +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= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in #( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf '%s\n' "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in #( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf '%s\n' "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf '%s\n' "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in #( + e) printf '%s\n' "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$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; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf '%s\n' "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in #( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in #( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else case e in #( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf '%s\n' "$gl_cv_compiler_clang" >&6; } + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else case e in #( + e) gl_cv_compiler_check_decl_option=none ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf '%s\n' "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf '%s\n' "#define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else case e in #( + e) ac_cv_safe_to_define___extensions__=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf '%s\n' "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf '%s\n' "$ac_cv_should_define__xopen_source" >&6; } + + printf '%s\n' "#define _ALL_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _COSMO_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _GNU_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf '%s\n' "#define _NETBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _OPENBSD_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf '%s\n' "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf '%s\n' "#define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf '%s\n' "#define _MINIX 1" >>confdefs.h + + printf '%s\n' "#define _POSIX_SOURCE 1" >>confdefs.h + + printf '%s\n' "#define _POSIX_1_SOURCE 2" >>confdefs.h + +else case e in #( + e) MINIX= ;; +esac +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf '%s\n' "#define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf '%s\n' "#define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf '%s\n' "$CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf '%s\n' "$ac_ct_CC" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf '%s\n' "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in #( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in #( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf '%s\n' "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 +printf %s "checking for $CC option to enable C23 features... " >&6; } +if test ${ac_cv_prog_cc_c23+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c23=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c23_program +_ACEOF +for ac_arg in '' -std=gnu23 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c23=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c23" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c23" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c23" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 +printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } + CC="$CC $ac_cv_prog_cc_c23" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 + ac_prog_cc_stdc=c23 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 -std:c11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf '%s\n' "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf '%s\n' "none needed" >&6; } +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + # aligned with autoconf, so not including core; see bug#72225. + rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.$ac_objext \ + conftest.dSYM conftest1.$ac_ext conftest1.$ac_objext conftest1.dSYM \ + conftest2.$ac_ext conftest2.$ac_objext conftest2.dSYM + unset am_i ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf '%s\n' "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else case e in #( + e) gl_cv_compiler_clang=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf '%s\n' "$gl_cv_compiler_clang" >&6; } + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else case e in #( + e) gl_cv_compiler_check_decl_option=none ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf '%s\n' "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf '%s\n' "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Configure gnulib + + + # 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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf '%s\n' "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`printf '%s\n' "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf '%s\n' "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`printf '%s\n' "$host_os" | sed 's/ /-/g'`;; esac + + + + + + + case "$host_os" in + openbsd*) + +printf '%s\n' "#define _ISOC11_SOURCE 1" >>confdefs.h + + ;; + esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in #( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf '%s\n' "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 +printf %s "checking for Minix Amsterdam compiler... " >&6; } +if test ${gl_cv_c_amsterdam_compiler+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else case e in #( + e) gl_cv_c_amsterdam_compiler=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf '%s\n' "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf '%s\n' "$ac_ct_AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +# Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO" +then : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf '%s\n' "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +#include +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf '%s\n' "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +printf '%s\n' "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h +;; +esac +rm -rf conftest* + case $ac_cv_sys_file_offset_bits in #( + unknown) : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _LARGE_FILES +#define _LARGE_FILES 1 +#include +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +printf '%s\n' "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +printf '%s\n' "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h +;; +esac +rm -rf conftest* ;; #( + 64) : + + # Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; +fi + + if test "$enable_year2038" != no +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for time_t past the year 2038" >&5 +printf %s "checking for time_t past the year 2038... " >&6; } +if test ${gl_cv_type_time_t_y2038+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else case e in #( + e) gl_cv_type_time_t_y2038=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_y2038" >&5 +printf '%s\n' "$gl_cv_type_time_t_y2038" >&6; } + if test "$gl_cv_type_time_t_y2038" = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit time_t with _TIME_BITS=64" >&5 +printf %s "checking for 64-bit time_t with _TIME_BITS=64... " >&6; } +if test ${gl_cv_type_time_t_bits_macro+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else case e in #( + e) gl_cv_type_time_t_bits_macro=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_bits_macro" >&5 +printf '%s\n' "$gl_cv_type_time_t_bits_macro" >&6; } + if test "$gl_cv_type_time_t_bits_macro" = yes; then + +printf '%s\n' "#define _TIME_BITS 64" >>confdefs.h + + +printf '%s\n' "#define _FILE_OFFSET_BITS 64" >>confdefs.h + + gl_cv_type_time_t_y2038=yes + fi + fi + if test $gl_cv_type_time_t_y2038 = no; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _USE_32BIT_TIME_T + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "The 'time_t' type stops working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags. +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) # If not cross-compiling and says we should check, + # and 'touch' works with a large timestamp, then evidently wider time_t + # is desired and supported, so fail and ask the builder to fix the + # problem. Otherwise, just warn the builder. + + if test "$gl_warned_about_y2038" != yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&5 +printf '%s\n' "$as_me: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&2;} + gl_warned_about_y2038=yes + fi + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +fi + ;; #( + *) : + ;; +esac +fi + + + + case "$host_os" in + mingw*) + +printf '%s\n' "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h + + ;; + esac + + + + # Pre-early section. + + + + # Code from module alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + # Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf '%s\n' "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else case e in #( + e) gl_cross_guesses=conservative ;; +esac +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +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 case e in #( + e) +printf '%s\n' "#define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else case e in #( + e) ac_cv_working_alloca_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf '%s\n' "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf '%s\n' "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_func_alloca_works=$ac_cv_working_alloca_h +if test "$ac_cv_func_alloca_works" != yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf '%s\n' "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +printf '%s\n' "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf '%s\n' "#define C_ALLOCA 1" >>confdefs.h + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + 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 (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else case e in #( + e) ac_cv_c_stack_direction=-1 ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf '%s\n' "$ac_cv_c_stack_direction" >&6; } +printf '%s\n' "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define eaccess access" >>confdefs.h + ;; +esac +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to detect undeclared functions" >&5 +printf %s "checking for $CC options to detect undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in #( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf '%s\n' "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See 'config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC options to ignore future-version functions" >&5 +printf %s "checking for $CC options to ignore future-version functions... " >&6; } +if test ${ac_cv_c_future_darwin_options+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_compile_saved="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if ! (defined __APPLE__ && defined __MACH__) + #error "-Werror=unguarded-availability-new not needed here" + #endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_future_darwin_options='-Werror=unguarded-availability-new' +else case e in #( + e) ac_cv_c_future_darwin_options='none needed' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$ac_compile_saved" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_future_darwin_options" >&5 +printf '%s\n' "$ac_cv_c_future_darwin_options" >&6; } + case $ac_cv_c_future_darwin_options in #( + 'none needed') : + ac_c_future_darwin_options='' ;; #( + *) : + ac_c_future_darwin_options=$ac_cv_c_future_darwin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "MicrosoftCompiler" >/dev/null 2>&1 +then : + rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if test -f conftest.o; then + gl_asmext='s' + gl_c_asm_opt='-S' + else + gl_asmext='asm' + gl_c_asm_opt='-c -Fa' + fi + rm -f conftest* + +else case e in #( + e) gl_asmext='s' + gl_c_asm_opt='-S' + ;; +esac +fi +rm -rf conftest* + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else case e in #( + e) gl_cv_host_cpu_c_abi=x86_64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in #( + e) gl_cv_host_cpu_c_abi=i386 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else case e in #( + e) gl_cv_host_cpu_c_abi=arm64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in #( + e) # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else case e in #( + e) gl_cv_host_cpu_c_abi=hppa ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else case e in #( + e) gl_cv_host_cpu_c_abi=ia64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else case e in #( + e) # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else case e in #( + e) gl_cv_host_cpu_c_abi=mips ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else case e in #( + e) gl_cv_host_cpu_c_abi=powerpc64 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else case e in #( + e) gl_cv_host_cpu_c_abi=powerpc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else case e in #( + e) cpu=riscv32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else case e in #( + e) main_abi=ilp32 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else case e in #( + e) float_abi='' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else case e in #( + e) gl_cv_host_cpu_c_abi=s390 ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else case e in #( + e) gl_cv_host_cpu_c_abi=sparc ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf '%s\n' "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else case e in #( + e) gl_cv_type_off_t_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf '%s\n' "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else case e in #( + e) gl_cv_member_st_size_64=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf '%s\n' "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf '%s\n' "#define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C99 requires bool, true, and false to be macros, + C23 and C++11 overrule that, so do not test for that. + Although C99 requires __bool_true_false_are_defined and + _Bool, C23 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else case e in #( + e) ac_cv_header_stdbool_h=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf '%s\n' "$ac_cv_header_stdbool_h" >&6; } + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf '%s\n' "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else case e in #( + e) gl_cv_rpl_alloca=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf '%s\n' "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf '%s\n' "#define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else case e in #( + e) gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char elf_begin (void); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else case e in #( + e) ac_cv_lib_elf_elf_begin=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf '%s\n' "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kvm_open (void); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else case e in #( + e) ac_cv_lib_kvm_kvm_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf '%s\n' "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else case e in #( + e) ac_cv_lib_util_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getloadavg (void); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else case e in #( + e) ac_cv_lib_getloadavg_getloadavg=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf '%s\n' "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else case e in #( + e) LIBS=$gl_getloadavg_LIBS ;; +esac +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char kstat_open (void); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else case e in #( + e) ac_cv_lib_kstat_kstat_open=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf '%s\n' "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf '%s\n' "#define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char perfstat_cpu_total (void); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else case e in #( + e) ac_cv_lib_perfstat_perfstat_cpu_total=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf '%s\n' "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf '%s\n' "#define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "#define DGUX 1" >>confdefs.h + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dg_sys_info (void); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else case e in #( + e) ac_cv_lib_dgc_dg_sys_info=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf '%s\n' "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf '%s\n' "#define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi ;; +esac +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else case e in #( + e) HAVE_DECL_GETLOADAVG=0 ;; +esac +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + 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" = xyes +then : + printf '%s\n' "#define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf '%s\n' "#define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf '%s\n' "#define UMAX 1" >>confdefs.h + + +printf '%s\n' "#define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf '%s\n' "#define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf '%s\n' "#define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf '%s\n' "#define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf '%s\n' "#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf '%s\n' "#define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf '%s\n' "#define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5 +printf %s "checking if system libc has GNU glob... " >&6; } +if test ${make_cv_sys_gnu_glob+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else case e in #( + e) make_cv_sys_gnu_glob=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf '%s\n' "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + 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 (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else case e in #( + e) ac_cv_dos_paths=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf '%s\n' "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf '%s\n' "#define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + case "$GL_GENERATE_STDBOOL_H" in + false) STDBOOL_H='' ;; + true) + if test -z "$STDBOOL_H"; then + STDBOOL_H="${gl_source_base_prefix}stdbool.h" + fi + ;; + *) echo "*** GL_GENERATE_STDBOOL_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE='#' + fi + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf '%s\n' "$RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf '%s\n' "$ac_ct_RANLIB" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf '%s\n' "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in #( + e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf '%s\n' "$AR" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi ;; +esac +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf '%s\n' "$PERL" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + +# Specialized system macros + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in #( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else case e in #( + e) ac_cv_c_bigendian=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else case e in #( + e) ac_cv_c_bigendian=yes ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf '%s\n' "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf '%s\n' "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf '%s\n' "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in #( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf '%s\n' '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf '%s\n' "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else case e in #( + e) USE_NLS=yes ;; +esac +fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf '%s\n' "$MSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf '%s\n' "$GMSGFMT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf '%s\n' "$XGETTEXT" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf '%s\n' "$MSGMERGE" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +# Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else case e in #( + e) with_gnu_ld=no ;; +esac +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf '%s\n' "$LD" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf '%s\n' "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf '%s\n' "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + 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+y} +then : + enableval=$enable_rpath; : +else case e in #( + e) enable_rpath=yes ;; +esac +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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_TRADITIONAL "sixtyfour bits" >/dev/null 2>&1 +then : + gl_cv_solaris_64bit=yes +else case e in #( + e) gl_cv_solaris_64bit=no ;; +esac +fi +rm -rf conftest* + + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf '%s\n' "$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" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else case e in #( + e) gt_cv_func_CFPreferencesCopyAppValue=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf '%s\n' "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf '%s\n' "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else case e in #( + e) gt_cv_func_CFLocaleCopyCurrent=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf '%s\n' "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf '%s\n' "#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 + + + + + + + LIBINTL= + 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 + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else case e in #( + e) eval "$gt_func_gnugettext_libc=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf '%s\n' "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + 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 case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* 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 ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* 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 ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#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 ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#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)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf '%s\n' "$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 + +printf '%s\n' "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf '%s\n' "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else case e in #( + e) eval "$gt_func_gnugettext_libintl=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + 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 +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" ;; +esac +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } + fi + + 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 + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + 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 + +printf '%s\n' "#define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf '%s\n' "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf '%s\n' "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf '%s\n' "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf '%s\n' "#define HAVE_GETTEXT 1" >>confdefs.h + + +printf '%s\n' "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (void); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else case e in #( + e) ac_cv_search_strerror=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf '%s\n' "$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 + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char getpwnam (void); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else case e in #( + e) ac_cv_search_getpwnam=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf '%s\n' "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf '%s\n' "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_sh"` +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else case e in #( + e) eval "$as_ac_Header=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$as_ac_Header + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf '%s\n' "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf '%s\n' "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in #( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else case e in #( + e) ac_cv_search_opendir=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf '%s\n' "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else case e in #( + e) ac_cv_header_stat_broken=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf '%s\n' "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf '%s\n' "#define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf '%s\n' "#define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf '%s\n' "#define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf '%s\n' "#define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf '%s\n' "#define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf '%s\n' "#define HAVE_FCNTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf '%s\n' "#define HAVE_STRING_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf '%s\n' "#define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default" +if test "x$ac_cv_header_spawn_h" = xyes +then : + printf '%s\n' "#define HAVE_SPAWN_H 1" >>confdefs.h + +fi + + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* 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; + if (s) return 0; + } + { /* Derived from code rejected by Sun C 1.0 and similar vintage. */ + int x[] = {25, 17}; + typedef int const *iptr; + iptr foo = &x[0]; + ++foo; + if (!*foo) return 0; + } + { /* IBM 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]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in #( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf '%s\n' "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf '%s\n' "#define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define uid_t int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define gid_t int" >>confdefs.h + ;; +esac +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" = xyes +then : + +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else case e in #( + e) ac_pid_type='__int64' ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf '%s\n' "#define pid_t $ac_pid_type" >>confdefs.h + + ;; +esac +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define off_t long int" >>confdefs.h + ;; +esac +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 case e in #( + e) +printf '%s\n' "#define size_t unsigned int" >>confdefs.h + ;; +esac +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else case e in #( + e) +printf '%s\n' "#define ssize_t int" >>confdefs.h + ;; +esac +fi + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else case e in #( + e) ac_cv_type_unsigned_long_long_int=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf '%s\n' "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes +then : + : +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else case e in #( + e) ac_cv_type_long_long_int=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + + fi + fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf '%s\n' "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +printf '%s\n' "#define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" +if test "x$ac_cv_type_intmax_t" = xyes +then : + +printf '%s\n' "#define HAVE_INTMAX_T 1" >>confdefs.h + +else case e in #( + e) test $ac_cv_type_long_long_int = yes \ + && ac_type='long long int' \ + || ac_type='long int' + +printf '%s\n' "#define intmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf '%s\n' "#define HAVE_UINTMAX_T 1" >>confdefs.h + +else case e in #( + e) test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf '%s\n' "#define uintmax_t $ac_type" >>confdefs.h + ;; +esac +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf '%s\n' "#define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else case e in #( + e) +printf '%s\n' "#define sig_atomic_t int" >>confdefs.h + ;; +esac +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # 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_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. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf '%s\n' "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf '%s\n' "#define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +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.beam conftest.$ac_ext + +fi ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf '%s\n' "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else case e in #( + e) val=0 ;; +esac +fi + +printf '%s\n' "#define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +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. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in #( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf '%s\n' "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf '%s\n' "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return 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 +else case e in #( + e) ac_cv_func_gettimeofday=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf '%s\n' "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf '%s\n' "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf '%s\n' "#define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf '%s\n' "#define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf '%s\n' "#define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf '%s\n' "#define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf '%s\n' "#define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf '%s\n' "#define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf '%s\n' "#define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf '%s\n' "#define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf '%s\n' "#define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf '%s\n' "#define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf '%s\n' "#define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf '%s\n' "#define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf '%s\n' "#define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf '%s\n' "#define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf '%s\n' "#define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf '%s\n' "#define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf '%s\n' "#define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf '%s\n' "#define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf '%s\n' "#define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf '%s\n' "#define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf '%s\n' "#define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf '%s\n' "#define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf '%s\n' "#define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf '%s\n' "#define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf '%s\n' "#define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf '%s\n' "#define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf '%s\n' "#define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf '%s\n' "#define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf '%s\n' "#define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf '%s\n' "#define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf '%s\n' "#define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf '%s\n' "#define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf '%s\n' "#define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf '%s\n' "#define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf '%s\n' "#define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf '%s\n' "#define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf '%s\n' "#define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# 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_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By R. Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else case e in #( + e) ac_cv_func_fork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf '%s\n' "$ac_cv_func_fork_works" >&6; } + +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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf '%s\n' "$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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* 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 , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + 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 (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + 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); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _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; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* 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 +else case e in #( + e) ac_cv_func_vfork_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf '%s\n' "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf '%s\n' "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf '%s\n' "#define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf '%s\n' "#define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf '%s\n' "#define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf '%s\n' "#define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf '%s\n' "#define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf '%s\n' "#define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf '%s\n' "#define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf '%s\n' "#define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf '%s\n' "#define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_strcoll_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_strcoll_works=no ;; + esac +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else case e in #( + e) ac_cv_func_strcoll_works=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf '%s\n' "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf '%s\n' "#define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else case e in #( + e) ac_cv_func_closedir_void=yes ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf '%s\n' "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf '%s\n' "#define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf '%s\n' "#define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +# Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +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 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf '%s\n' "$PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + +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 +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf '%s\n' "$ac_pt_PKG_CONFIG" >&6; } +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf '%s\n' "$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 +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf '%s\n' "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } + +if test -n "$GUILE_CFLAGS"; then + pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 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" && \ + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "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-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "A pkg-config implementation 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. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get a pkg-config implementation, see . +See 'config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf '%s\n' "#define HAVE_GUILE 1" >>confdefs.h + +else case e in #( + e) have_guile=no ;; +esac +fi + + if test "$have_guile" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else case e in #( + e) have_guile=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf '%s\n' "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf '%s\n' "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf '%s\n' "#define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf '%s\n' "#define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +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 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else case e in #( + e) make_cv_union_wait=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf '%s\n' "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf '%s\n' "#define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf '%s\n' "#define HAVE_DOS_PATHS 1" >>confdefs.h + + +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+y} +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 + +cf_test_netlibs=no +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf '%s\n' "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf '%s\n' "#define HAVE_GETHOSTNAME 1" >>confdefs.h + +else case e in #( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 +printf %s "checking for gethostname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else case e in #( + e) ac_cv_lib_nsl_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in #( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostname (void); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else case e in #( + e) ac_cv_lib_socket_gethostname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf '%s\n' "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in #( + e) + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else case e in #( + e) ac_cv_lib_inet_main=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf '%s\n' "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +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" = xyes +then : + printf '%s\n' "#define HAVE_SOCKET 1" >>confdefs.h + +else case e in #( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +printf %s "checking for socket in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_socket+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else case e in #( + e) ac_cv_lib_socket_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf '%s\n' "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else case e in #( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else case e in #( + e) ac_cv_lib_bsd_socket=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf '%s\n' "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else case e in #( + e) + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + +done +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" = xyes +then : + printf '%s\n' "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else case e in #( + e) + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +printf %s "checking for gethostbyname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else case e in #( + e) ac_cv_lib_nsl_gethostbyname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf '%s\n' "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf '%s\n' "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else case e in #( + e) + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + ;; +esac +fi + + ;; +esac +fi + +done + ;; +esac +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$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" +else case e in #( + e) with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes ;; +esac +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +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+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf '%s\n' "#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+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else case e in #( + e) make_cv_job_server="yes" ;; +esac +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else case e in #( + e) has_wait_nohang=yes ;; +esac +fi + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else case e in #( + e) make_cv_sa_restart=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf '%s\n' "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf '%s\n' "#define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in #( + */no/*) : + make_cv_job_server=no ;; #( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in #( + os2*|mingw*) : + make_cv_job_server=yes ;; #( + *) : + ;; +esac + +# 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 ;; #( + *) : + +printf '%s\n' "#define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options$ac_c_future_darwin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf '%s\n' "#define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +# Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else case e in #( + e) make_cv_load="yes" ;; +esac +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in #( + */no/*) : + make_cv_load=no ;; #( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else case e in #( + e) ac_cv_search_dlopen=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf '%s\n' "$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 case e in #( + e) make_cv_load= ;; +esac +fi + + +fi + +case /$make_cv_load/$user_load/ in #( + */no/*) : + make_cv_load=no ;; #( + *) : + +printf '%s\n' "#define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# 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 : + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "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 : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "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 : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf '%s\n' "#define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +# Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else case e in #( + e) make_cv_posix_spawn="yes" ;; +esac +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in #( + */no/*) : + make_cv_posix_spawn=no ;; #( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else case e in #( + e) make_cv_synchronous_posix_spawn=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf '%s\n' "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in #( + */no/*) : + make_cv_posix_spawn=no ;; #( + *) : + +printf '%s\n' "#define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else case e in #( + e) make_cv_path_sccs_get=get ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf '%s\n' "$make_cv_path_sccs_get" >&6; } + +printf '%s\n' "#define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +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. + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 case e in #( + e) make_cv_sys_get_minus_G=no ;; +esac +fi + ;; +esac +fi +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf '%s\n' "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf '%s\n' "#define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf '%s\n' "#define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in #( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf '%s\n' "#define WINDOWS32 1" >>confdefs.h + + +printf '%s\n' "#define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; #( + *) : + ;; +esac + + +printf '%s\n' "#define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf '%s\n' "#define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf '%s\n' "#define MK_CONFIGURE 1" >>confdefs.h + + +# 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 + + +# Allow building with dmalloc +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +# Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf '%s\n' "yes" >&6; } + +printf '%s\n' "#define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } +fi +else case e in #( + e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf '%s\n' "no" >&6; } ;; +esac +fi + + + +# 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 + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in #( + ""|n|no|y|ye|yes) : + : ;; #( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else case e in #( + e) 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 + ;; +esac +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 + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +ac_cache_dump | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf '%s\n' "$as_me: updating cache $cache_file" >&6;} + 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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +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$//' + ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf '%s\n' "done" >&6; } +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +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 + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + 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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +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. +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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +case $CONFIG_STATUS in #( + -*) : + CONFIG_STATUS=./$CONFIG_STATUS ;; #( + */*) : + ;; #( + *) : + CONFIG_STATUS=./$CONFIG_STATUS ;; +esac + +ac_write_fail=0 +ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' +{ printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # contradicts POSIX and common usage. Disable this. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# 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. +as_fn_error () +{ + 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 + printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf '%s\n' "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ------------------------------------- ## +## Main body of "$CONFIG_STATUS" script. ## +## ------------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.73. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.73, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2026 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || { + awk '' >"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf '%s\n' "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf '%s\n' "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf '%s\n' "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +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 + shift + \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf '%s\n' "$ac_log" +} >&5 + +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # 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%}" + + +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap '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 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || 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. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final ':' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo 'cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1' && + printf '%s\n' 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && + printf '%s\n' "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' && + echo "_ACAWK" && + echo "_ACEOF" +} >conf$$files.sh && +. ./conf$$files.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >"$CONFIG_STATUS" || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$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 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[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_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 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >"$CONFIG_STATUS" || ac_write_fail=1 + +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + suffix = P[macro] D[macro] + while (suffix ~ /[\t ]$/) { + suffix = substr(suffix, 1, length(suffix) - 1) + } + # Preserve the white space surrounding the "#". + print prefix "define", macro suffix + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$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 ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf '%s\n' "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf '%s\n' "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $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' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf '%s\n' "$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 +printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) 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 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf '%s\n' "/* $configure_input */" >&1 \ + && 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 + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf '%s\n' "/* $configure_input */" >&1 \ + && 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" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf '%s\n' "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf '%s\n' "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf '%s\n' "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf '%s\n' X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See 'config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # 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" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment 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 assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_CONFIG_STATUS= + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + case $CONFIG_STATUS in #( + -*) : + ac_no_opts=-- ;; #( + *) : + ac_no_opts= ;; +esac + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || + ac_cs_success=false + 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 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + diff --git a/local/recipes/dev/gnu-make/source/configure.ac b/local/recipes/dev/gnu-make/source/configure.ac new file mode 100644 index 0000000000..9f68897129 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/configure.ac @@ -0,0 +1,554 @@ +# Process this file with autoconf to produce a configure script. +# +# Copyright (C) 1993-2022 Free Software 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 . + +AC_INIT([GNU Make],[4.4],[bug-make@gnu.org]) + +AC_PREREQ([2.69]) + +# Autoconf setup +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_SRCDIR([src/vpath.c]) +AC_CONFIG_HEADERS([src/config.h]) + +AC_CONFIG_LIBOBJ_DIR([lib]) + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) + +# Checks for programs. +AC_USE_SYSTEM_EXTENSIONS +AC_PROG_CC + +# Configure gnulib +gl_EARLY +gl_INIT + +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_C_BIGENDIAN + +# Enable gettext, in "external" mode. +AM_GNU_GETTEXT_VERSION([0.19.4]) +AM_GNU_GETTEXT([external]) + +# Checks for libraries. +AC_SEARCH_LIBS([strerror],[cposix]) +AC_SEARCH_LIBS([getpwnam], [sun]) + +AC_HEADER_DIRENT +AC_HEADER_STAT + +AC_CHECK_HEADERS([stdlib.h locale.h unistd.h limits.h fcntl.h string.h \ + memory.h sys/param.h sys/resource.h sys/timeb.h sys/time.h \ + sys/select.h sys/file.h spawn.h]) + +AM_PROG_CC_C_O +AC_C_CONST +AC_TYPE_UID_T +AC_TYPE_PID_T +AC_TYPE_OFF_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T +AC_TYPE_INTMAX_T +AC_TYPE_UINTMAX_T + +# Check for sig_atomic_t +gt_TYPE_SIG_ATOMIC_T + +# 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 +#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.]) + ]) +]) + +# 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 + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return 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([strtoll strdup strndup stpcpy memrchr mempcpy umask mkstemp \ + mktemp fdopen dup dup2 getcwd realpath sigsetmask sigaction \ + getgroups seteuid setegid setlinebuf setreuid setregid \ + mkfifo getrlimit setrlimit setvbuf pipe strerror strsignal \ + lstat readlink atexit isatty ttyname pselect posix_spawn \ + posix_spawnattr_setsigmask]) + +# 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 ]]) + +AC_FUNC_FORK + +# 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_CLOSEDIR_VOID + +# dir.c and our glob.c use dirent.d_type if available +AC_STRUCT_DIRENT_D_TYPE + +# See if the user wants to add (or not) GNU Guile support +AC_ARG_WITH([guile], [AS_HELP_STRING([--with-guile], + [Support GNU Guile for embedded scripting])]) + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. +PKG_PROG_PKG_CONFIG + +AS_IF([test "x$with_guile" != xno], +[ guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + AC_MSG_CHECKING([for GNU Guile]) + for v in $guile_versions; do + PKG_CHECK_EXISTS([guile-$v], [guile_version=$v; have_guile=yes; break], []) + done + AC_MSG_RESULT([$guile_version]) + AS_IF([test "$have_guile" = yes], + [ PKG_CHECK_MODULES(GUILE, [guile-$guile_version]) + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + AC_CHECK_HEADER([libguile.h], + [AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support])], + [have_guile=no], + [/* Avoid configuration error warnings. */]) + AS_IF([test "$have_guile" = yes], + [ AC_MSG_CHECKING([whether we can link GNU Guile]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} +]], [[ + scm_with_guile (guile_init, 0); +]])], + [have_guile=yes], + [have_guile=no]) + AC_MSG_RESULT([$have_guile])]) + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + ]) +]) + +AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) + +AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , , + [AC_INCLUDES_DEFAULT +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif +]) + + +# Check out the wait reality. +AC_CHECK_HEADERS([sys/wait.h],[],[],[[#include ]]) +AC_CHECK_FUNCS([waitpid wait3]) +AC_CACHE_CHECK([for union wait], [make_cv_union_wait], +[ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include +#include ]], + [[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 .]) +]) + + +# 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], +[AS_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], + AS_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], + AS_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 ]], + [[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 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 ]]) + +AC_ARG_ENABLE([load], + AS_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_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/], + [*/no/*], [make_cv_load=no]) + +# We might need -ldl +AS_IF([test "$make_cv_load" = yes], [ + AC_SEARCH_LIBS([dlopen], [dl], [], [make_cv_load=]) + ]) + +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.]) + ]) + +# 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.]) +]) + +# Use posix_spawn if we have support and the user didn't disable it + +AC_ARG_ENABLE([posix-spawn], + AS_HELP_STRING([--disable-posix-spawn],[disable support for posix_spawn()]), + [make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval"], + [make_cv_posix_spawn="yes"]) + +AS_CASE([/$ac_cv_header_spawn/$ac_cv_func_posix_spawn/], + [*/no/*], [make_cv_posix_spawn=no]) + +AS_IF([test "$make_cv_posix_spawn" = yes], + AC_CACHE_CHECK([for posix_spawn that fails synchronously], + [make_cv_synchronous_posix_spawn], + [make_cv_synchronous_posix_spawn=no + AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include + #include + extern char **environ; + int main () { + char path[[]] = "./xxx-non-existent"; + char *argv[[]] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + }]])], + [make_cv_synchronous_posix_spawn=yes], + [make_cv_synchronous_posix_spawn=no], + [make_cv_synchronous_posix_spawn="no (cross-compiling)"])])) + +AS_CASE([/$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/], + [*/no/*], [make_cv_posix_spawn=no], + [AC_DEFINE(USE_POSIX_SPAWN, 1, [Define to 1 to use posix_spawn().]) + ]) + +# 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' option.]) + ]) +]) +rm -f s.conftest conftoast + +# 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], [Build for the WINDOWS32 API.]) + AC_DEFINE([HAVE_DOS_PATHS], [1], [Support DOS-style pathnames.]) + ]) + +AC_DEFINE_UNQUOTED([PATH_SEPARATOR_CHAR],['$PATH_SEPARATOR'], + [Define to the character that separates directories in PATH.]) + +AC_DEFINE_UNQUOTED([HAVE_DECL_GETLOADAVG],[$HAVE_DECL_GETLOADAVG], + [Define to 1 if you have the declaration of 'getloadavg'.]) + +# Remember that we ran configure to generate config.h + +AC_DEFINE([MK_CONFIGURE], [1], + [Define to 1 if config.h is generated by running the configure script.]) + +# 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 +]) + +AS_IF([test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes], +[ echo + echo "WARNING: posix_spawn() is not supported on this system." + echo +]) + +# autoconf initializes $prefix to NONE. +AM_CONDITIONAL([KNOWN_PREFIX], + [test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr]) + +# Specify what files are to be created. +AC_CONFIG_FILES([build.cfg tests/config-flags.pm \ + Makefile lib/Makefile doc/Makefile po/Makefile.in]) +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +AC_CONFIG_LINKS([build.sh:build.sh]) + +# OK, do it! + +AC_OUTPUT + +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/local/recipes/dev/gnu-make/source/configure~ b/local/recipes/dev/gnu-make/source/configure~ new file mode 100755 index 0000000000..58a1d4f3e5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/configure~ @@ -0,0 +1,16404 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.71 for GNU Make 4.4. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +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="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else \$as_nop + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || 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'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else $as_nop + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi + + + if test "x$CONFIG_SHELL" != x +then : + 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and bug-make@gnu.org +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_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 +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop + +# 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. +as_fn_error () +{ + 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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$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). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +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'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# 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` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='GNU Make' +PACKAGE_TARNAME='make' +PACKAGE_VERSION='4.4' +PACKAGE_STRING='GNU Make 4.4' +PACKAGE_BUGREPORT='bug-make@gnu.org' +PACKAGE_URL='https://www.gnu.org/software/make/' + +ac_unique_file="src/vpath.c" +ac_config_libobj_dir=lib +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +gt_needs= +ac_func_c_list= +ac_subst_vars='gltests_LIBOBJDEPS +gltests_LTLIBOBJS +gltests_LIBOBJS +gl_LIBOBJDEPS +gl_LTLIBOBJS +gl_LIBOBJS +am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +KNOWN_PREFIX_FALSE +KNOWN_PREFIX_TRUE +WINDOWSENV_FALSE +WINDOWSENV_TRUE +MAKE_HOST +AM_LDFLAGS +USE_CUSTOMS_FALSE +USE_CUSTOMS_TRUE +REMOTE +HAVE_GUILE_FALSE +HAVE_GUILE_TRUE +GUILE_LIBS +GUILE_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +POSUB +LTLIBINTL +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 +SED +PERL +LIBGNU_LTLIBDEPS +LIBGNU_LIBDEPS +GL_CFLAG_GNULIB_WARNINGS +GL_CFLAG_ALLOW_WARNINGS +gltests_WITNESS +GL_GENERATE_STDBOOL_H_FALSE +GL_GENERATE_STDBOOL_H_TRUE +STDBOOL_H +HAVE__BOOL +USE_SYSTEM_GLOB +USE_SYSTEM_GLOB_FALSE +USE_SYSTEM_GLOB_TRUE +HOST_CPU_C_ABI +HOST_CPU +GL_COND_OBJ_GETLOADAVG_FALSE +GL_COND_OBJ_GETLOADAVG_TRUE +GETLOADAVG_LIBS +GL_GNULIB_GETLOADAVG +HAVE_DECL_GETLOADAVG +GL_GENERATE_ALLOCA_H_FALSE +GL_GENERATE_ALLOCA_H_TRUE +ALLOCA_H +HAVE_ALLOCA_H +ALLOCA +GL_COND_LIBTOOL_FALSE +GL_COND_LIBTOOL_TRUE +RANLIB +ARFLAGS +AR +EGREP +GREP +CPP +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='MAINT_MAKEFILE' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +enable_year2038 +enable_cross_guesses +enable_nls +with_gnu_ld +enable_rpath +with_libiconv_prefix +with_libintl_prefix +with_guile +with_customs +enable_case_insensitive_file_system +enable_job_server +enable_load +enable_posix_spawn +with_dmalloc +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +GUILE_CFLAGS +GUILE_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --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" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # 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'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + 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" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +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" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +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 4.4 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --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 + --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 + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/make] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU Make 4.4:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --disable-largefile omit support for large files + --disable-year2038 omit support for timestamps past the year 2038 + --enable-cross-guesses={conservative|risky} + specify policy for cross-compilation guesses + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + --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 + --disable-posix-spawn disable support for posix_spawn() + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --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-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 + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + 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. + +Report bugs to . +GNU Make home page: . +General help using GNU software: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +GNU Make configure 4.4 +generated by GNU Autoconf 2.71 + +Copyright (C) 2021 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + ac_compile="$ac_save_ac_compile" + +} # ac_fn_check_decl + +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main (void) +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$4=yes" +else $as_nop + eval "$4=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$4 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 4.4, which was +generated by GNU Autoconf 2.71. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$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 + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +gt_needs="$gt_needs " +as_fn_append ac_header_c_list " vfork.h vfork_h HAVE_VFORK_H" +as_fn_append ac_func_c_list " fork HAVE_FORK" +as_fn_append ac_func_c_list " vfork HAVE_VFORK" + +# Auxiliary files required by this configure script. +ac_aux_files="config.rpath config.guess config.sub compile missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/build-aux" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Autoconf setup + + +ac_config_headers="$ac_config_headers src/config.h" + + + + +# Automake setup +# We have to enable "foreign" because ChangeLog is auto-generated +# Automake 1.15 and gnulib don't get along: gnulib has some strange error +# in the way it handles getloadavg.c which causes make distcheck to fail. +# https://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html +am__api_version='1.16' + + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # 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 + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + 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 ('*'coreutils) '* | \ + 'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# 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;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + SET_MAKE= +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +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} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" '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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$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 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='make' + VERSION='4.4' + + +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# 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}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + +# Checks for programs. + + + + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf "%s\n" "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test ${enable_dependency_tracking+y} +then : + enableval=$enable_dependency_tracking; +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= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else $as_nop + ac_file='' +fi +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else $as_nop + gl_cv_compiler_clang=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf "%s\n" "$gl_cv_compiler_clang" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else $as_nop + gl_cv_compiler_check_decl_option=none +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf "%s\n" "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else $as_nop + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } + + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h + + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h + + printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h + + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf "%s\n" "#define _MINIX 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h + + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h + +else $as_nop + MINIX= +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h + +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is clang" >&5 +printf %s "checking whether the compiler is clang... " >&6; } +if test ${gl_cv_compiler_clang+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #ifdef __clang__ + barfbarf + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_clang=no +else $as_nop + gl_cv_compiler_clang=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_clang" >&5 +printf "%s\n" "$gl_cv_compiler_clang" >&6; } + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler option needed when checking for declarations" >&5 +printf %s "checking for compiler option needed when checking for declarations... " >&6; } +if test ${gl_cv_compiler_check_decl_option+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $gl_cv_compiler_clang = yes; then + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration' +else $as_nop + gl_cv_compiler_check_decl_option=none +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_compiler_check_decl_option" >&5 +printf "%s\n" "$gl_cv_compiler_check_decl_option" >&6; } + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi + + +depcc="$CC" am_compiler_list= + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # 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. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + 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. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Configure gnulib + + + # 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 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + + + + + case "$host_os" in + openbsd*) + +printf "%s\n" "#define _ISOC11_SOURCE 1" >>confdefs.h + + ;; + esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + 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 +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + 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 +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5 +printf %s "checking for Minix Amsterdam compiler... " >&6; } +if test ${gl_cv_c_amsterdam_compiler+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef __ACK__ +Amsterdam +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Amsterdam" >/dev/null 2>&1 +then : + gl_cv_c_amsterdam_compiler=yes +else $as_nop + gl_cv_c_amsterdam_compiler=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 +printf "%s\n" "$gl_cv_c_amsterdam_compiler" >&6; } + + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + : + fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="ar" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + + + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + fi + fi + + +# Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +printf %s "checking for special C compiler options needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO" +then : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if test ${ac_cv_sys_file_offset_bits+y} +then : + printf %s "(cached) " >&6 +else $as_nop + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h +;; +esac +rm -rf conftest* + case $ac_cv_sys_file_offset_bits in #( + unknown) : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } +if test ${ac_cv_sys_large_files+y} +then : + printf %s "(cached) " >&6 +else $as_nop + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#undef _LARGE_FILES +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +printf "%s\n" "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h +;; +esac +rm -rf conftest* ;; #( + 64) : + + # Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; +fi + + if test "$enable_year2038" != no +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for time_t past the year 2038" >&5 +printf %s "checking for time_t past the year 2038... " >&6; } +if test ${gl_cv_type_time_t_y2038+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_y2038=yes +else $as_nop + gl_cv_type_time_t_y2038=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_y2038" >&5 +printf "%s\n" "$gl_cv_type_time_t_y2038" >&6; } + if test "$gl_cv_type_time_t_y2038" = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit time_t with _TIME_BITS=64" >&5 +printf %s "checking for 64-bit time_t with _TIME_BITS=64... " >&6; } +if test ${gl_cv_type_time_t_bits_macro+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_time_t_bits_macro=yes +else $as_nop + gl_cv_type_time_t_bits_macro=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_bits_macro" >&5 +printf "%s\n" "$gl_cv_type_time_t_bits_macro" >&6; } + if test "$gl_cv_type_time_t_bits_macro" = yes; then + +printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h + + +printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h + + gl_cv_type_time_t_y2038=yes + fi + fi + if test $gl_cv_type_time_t_y2038 = no; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _USE_32BIT_TIME_T + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The 'time_t' type stops working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags. +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + # If not cross-compiling and says we should check, + # and 'touch' works with a large timestamp, then evidently wider time_t + # is desired and supported, so fail and ask the builder to fix the + # problem. Otherwise, just warn the builder. + + if test "$gl_warned_about_y2038" != yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&5 +printf "%s\n" "$as_me: WARNING: The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC=\"${CC} -m64\"' perhaps?" >&2;} + gl_warned_about_y2038=yes + fi + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +fi + ;; #( + *) : + ;; +esac +fi + + + + case "$host_os" in + mingw*) + +printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h + + ;; + esac + + + + # Pre-early section. + + + + # Code from module alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + + + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: + + + + + + + + + + # Check whether --enable-cross-guesses was given. +if test ${enable_cross_guesses+y} +then : + enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5 +printf "%s\n" "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;} + enableval=conservative + fi + gl_cross_guesses="$enableval" +else $as_nop + gl_cross_guesses=conservative +fi + + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ + + +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 $as_nop + +printf "%s\n" "#define size_t unsigned int" >>confdefs.h + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +printf %s "checking for working alloca.h... " >&6; } +if test ${ac_cv_working_alloca_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_working_alloca_h=yes +else $as_nop + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +printf "%s\n" "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +printf %s "checking for alloca... " >&6; } +if test ${ac_cv_func_alloca_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test $ac_cv_working_alloca_h = yes; then + ac_cv_func_alloca_works=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# else +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +int +main (void) +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_func_alloca_works=yes +else $as_nop + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +printf "%s\n" "$ac_cv_func_alloca_works" >&6; } +fi + +if test $ac_cv_func_alloca_works = yes; then + +printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + + + + + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +printf %s "checking stack direction for C alloca... " >&6; } +if test ${ac_cv_c_stack_direction+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + ac_cv_c_stack_direction=0 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + 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 (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_stack_direction=1 +else $as_nop + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +printf "%s\n" "$ac_cv_c_stack_direction" >&6; } +printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + +fi + + + ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess" +if test "x$ac_cv_func_eaccess" = xyes +then : + +else $as_nop + +printf "%s\n" "#define eaccess access" >>confdefs.h + +fi + + + + HAVE_DECL_GETLOADAVG=1; + + + + + + + + + + + GL_GNULIB_GETLOADAVG=0 + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else $as_nop + ac_cv_c_undeclared_builtin_options=$ac_arg +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See \`config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _MSC_VER +MicrosoftCompiler +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "MicrosoftCompiler" >/dev/null 2>&1 +then : + rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if test -f conftest.o; then + gl_asmext='s' + gl_c_asm_opt='-S' + else + gl_asmext='asm' + gl_c_asm_opt='-c -Fa' + fi + rm -f conftest* + +else $as_nop + gl_asmext='s' + gl_c_asm_opt='-S' + +fi +rm -rf conftest* + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5 +printf %s "checking host CPU and C ABI... " >&6; } +if test ${gl_cv_host_cpu_c_abi+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$host_cpu" in + + i[34567]86 ) + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=x86_64-x32 +else $as_nop + gl_cv_host_cpu_c_abi=x86_64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop + gl_cv_host_cpu_c_abi=i386 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __aarch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=arm64-ilp32 +else $as_nop + gl_cv_host_cpu_c_abi=arm64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop + # Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=hppa64 +else $as_nop + gl_cv_host_cpu_c_abi=hppa +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef _ILP32 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=ia64-ilp32 +else $as_nop + gl_cv_host_cpu_c_abi=ia64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mips64 +else $as_nop + # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=mipsn32 +else $as_nop + gl_cv_host_cpu_c_abi=mips +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=powerpc64-elfv2 +else $as_nop + gl_cv_host_cpu_c_abi=powerpc64 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +else $as_nop + gl_cv_host_cpu_c_abi=powerpc +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cpu=riscv64 +else $as_nop + cpu=riscv32 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + main_abi=lp64 +else $as_nop + main_abi=ilp32 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=d +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + float_abi=f +else $as_nop + float_abi='' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=s390x +else $as_nop + gl_cv_host_cpu_c_abi=s390 +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_host_cpu_c_abi=sparc64 +else $as_nop + gl_cv_host_cpu_c_abi=sparc +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5 +printf "%s\n" "$gl_cv_host_cpu_c_abi" >&6; } + + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + + + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <&5 +printf %s "checking for 64-bit off_t... " >&6; } +if test ${gl_cv_type_off_t_64+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_type_off_t_64=yes +else $as_nop + gl_cv_type_off_t_64=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 +printf "%s\n" "$gl_cv_type_off_t_64" >&6; } + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit st_size" >&5 +printf %s "checking for 64-bit st_size... " >&6; } +if test ${gl_cv_member_st_size_64+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_member_st_size_64=yes +else $as_nop + gl_cv_member_st_size_64=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_member_st_size_64" >&5 +printf "%s\n" "$gl_cv_member_st_size_64" >&6; } + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac + +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes +then : + +printf "%s\n" "#define HAVE__BOOL 1" >>confdefs.h + + +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 +printf %s "checking for stdbool.h that conforms to C99 or later... " >&6; } +if test ${ac_cv_header_stdbool_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C 1999 requires bool, true, and false to be macros, + C 2023 and C++ 2011 overrule that, so do not test for that. + Although C 1999 requires __bool_true_false_are_defined and + _Bool, C 2023 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + +int +main (void) +{ + + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stdbool_h=yes +else $as_nop + ac_cv_header_stdbool_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +printf "%s\n" "$ac_cv_header_stdbool_h" >&6; } + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler option to allow warnings" >&5 +printf %s "checking for C compiler option to allow warnings... " >&6; } +if test ${gl_cv_cc_wallow+y} +then : + printf %s "(cached) " >&6 +else $as_nop + rm -f conftest* + echo 'int dummy;' > conftest.c + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } >/dev/null + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_wallow" >&5 +printf "%s\n" "$gl_cv_cc_wallow" >&6; } + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + + + + + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gl_command\""; } >&5 + (eval $gl_command) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + + + + + if false; then + GL_COND_LIBTOOL_TRUE= + GL_COND_LIBTOOL_FALSE='#' +else + GL_COND_LIBTOOL_TRUE='#' + GL_COND_LIBTOOL_FALSE= +fi + + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + + + + + + + + + + + + + gl_source_base='lib' + gl_source_base_prefix= + + + if test $ac_cv_func_alloca_works = no; then + : + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5 +printf %s "checking for alloca as a compiler built-in... " >&6; } +if test ${gl_cv_rpl_alloca+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Need own alloca" >/dev/null 2>&1 +then : + gl_cv_rpl_alloca=yes +else $as_nop + gl_cv_rpl_alloca=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5 +printf "%s\n" "$gl_cv_rpl_alloca" >&6; } + if test $gl_cv_rpl_alloca = yes; then + +printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h + + GL_GENERATE_ALLOCA_H=true + else + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + + + + + + + case "$GL_GENERATE_ALLOCA_H" in + false) ALLOCA_H='' ;; + true) + if test -z "$ALLOCA_H"; then + ALLOCA_H="${gl_source_base_prefix}alloca.h" + fi + ;; + *) echo "*** GL_GENERATE_ALLOCA_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_ALLOCA_H; then + GL_GENERATE_ALLOCA_H_TRUE= + GL_GENERATE_ALLOCA_H_FALSE='#' +else + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE= +fi +: + if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then + GL_GENERATE_ALLOCA_H_TRUE='#' + GL_GENERATE_ALLOCA_H_FALSE='#' + fi + + + + + + + + + + + + + + + + + + +# Persuade glibc to declare getloadavg(). + + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" +if test "x$ac_cv_func_getloadavg" = xyes +then : + +else $as_nop + gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +printf %s "checking for elf_begin in -lelf... " >&6; } +if test ${ac_cv_lib_elf_elf_begin+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $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. */ +char elf_begin (); +int +main (void) +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_elf_elf_begin=yes +else $as_nop + ac_cv_lib_elf_elf_begin=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +printf "%s\n" "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes +then : + LIBS="-lelf $LIBS" +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 +printf %s "checking for kvm_open in -lkvm... " >&6; } +if test ${ac_cv_lib_kvm_kvm_open+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkvm $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. */ +char kvm_open (); +int +main (void) +{ +return kvm_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kvm_kvm_open=yes +else $as_nop + ac_cv_lib_kvm_kvm_open=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 +printf "%s\n" "$ac_cv_lib_kvm_kvm_open" >&6; } +if test "x$ac_cv_lib_kvm_kvm_open" = xyes +then : + LIBS="-lkvm $LIBS" +fi + + # Check for the 4.4BSD definition of getloadavg. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 +printf %s "checking for getloadavg in -lutil... " >&6; } +if test ${ac_cv_lib_util_getloadavg+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $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. */ +char getloadavg (); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_util_getloadavg=yes +else $as_nop + ac_cv_lib_util_getloadavg=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 +printf "%s\n" "$ac_cv_lib_util_getloadavg" >&6; } +if test "x$ac_cv_lib_util_getloadavg" = xyes +then : + LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes +fi + + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 +printf %s "checking for getloadavg in -lgetloadavg... " >&6; } +if test ${ac_cv_lib_getloadavg_getloadavg+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgetloadavg $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. */ +char getloadavg (); +int +main (void) +{ +return getloadavg (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_getloadavg_getloadavg=yes +else $as_nop + ac_cv_lib_getloadavg_getloadavg=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 +printf "%s\n" "$ac_cv_lib_getloadavg_getloadavg" >&6; } +if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes +then : + LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes +else $as_nop + LIBS=$gl_getloadavg_LIBS +fi + + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 +printf %s "checking for kstat_open in -lkstat... " >&6; } +if test ${ac_cv_lib_kstat_kstat_open+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lkstat $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. */ +char kstat_open (); +int +main (void) +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_kstat_kstat_open=yes +else $as_nop + ac_cv_lib_kstat_kstat_open=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 +printf "%s\n" "$ac_cv_lib_kstat_kstat_open" >&6; } +if test "x$ac_cv_lib_kstat_kstat_open" = xyes +then : + printf "%s\n" "#define HAVE_LIBKSTAT 1" >>confdefs.h + + LIBS="-lkstat $LIBS" + +fi + + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5 +printf %s "checking for perfstat_cpu_total in -lperfstat... " >&6; } +if test ${ac_cv_lib_perfstat_perfstat_cpu_total+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lperfstat $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. */ +char perfstat_cpu_total (); +int +main (void) +{ +return perfstat_cpu_total (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_perfstat_perfstat_cpu_total=yes +else $as_nop + ac_cv_lib_perfstat_perfstat_cpu_total=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5 +printf "%s\n" "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; } +if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes +then : + printf "%s\n" "#define HAVE_LIBPERFSTAT 1" >>confdefs.h + + LIBS="-lperfstat $LIBS" + +fi + + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf "%s\n" "#define DGUX 1" >>confdefs.h + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 +printf %s "checking for dg_sys_info in -ldgc... " >&6; } +if test ${ac_cv_lib_dgc_dg_sys_info+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldgc $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. */ +char dg_sys_info (); +int +main (void) +{ +return dg_sys_info (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dgc_dg_sys_info=yes +else $as_nop + ac_cv_lib_dgc_dg_sys_info=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 +printf "%s\n" "$ac_cv_lib_dgc_dg_sys_info" >&6; } +if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes +then : + printf "%s\n" "#define HAVE_LIBDGC 1" >>confdefs.h + + LIBS="-ldgc $LIBS" + +fi + +fi + + fi + fi +fi + + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +ac_fn_c_check_header_compile "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_loadavg_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_LOADAVG_H 1" >>confdefs.h + +fi + +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +ac_fn_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getloadavg" = xyes +then : + +else $as_nop + HAVE_DECL_GETLOADAVG=0 +fi + + + if test $HAVE_GETLOADAVG = 0; then + GL_COND_OBJ_GETLOADAVG_TRUE= + GL_COND_OBJ_GETLOADAVG_FALSE='#' +else + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE= +fi +: + if test -z "${GL_COND_OBJ_GETLOADAVG_TRUE}" && test -z "${GL_COND_OBJ_GETLOADAVG_FALSE}"; then + GL_COND_OBJ_GETLOADAVG_TRUE='#' + GL_COND_OBJ_GETLOADAVG_FALSE='#' + fi + + if test -z "$GL_COND_OBJ_GETLOADAVG_TRUE"; then : + + +# Figure out what our getloadavg.c needs. + + + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + + 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" = xyes +then : + printf "%s\n" "#define HAVE_PSTAT_GETDYNAMIC 1" >>confdefs.h + gl_func_getloadavg_done=yes +fi + +done +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + +printf "%s\n" "#define SVR4 1" >>confdefs.h + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$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" = xyes +then : + gl_func_getloadavg_done=yes + +printf "%s\n" "#define UMAX 1" >>confdefs.h + + +printf "%s\n" "#define UMAX4_3 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_cpustats_h" = xyes +then : + gl_func_getloadavg_done=yes; printf "%s\n" "#define UMAX 1" >>confdefs.h + +fi + +fi + +if test $gl_func_getloadavg_done = no; then + ac_fn_c_check_header_compile "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_mach_h" = xyes +then : + printf "%s\n" "#define HAVE_MACH_MACH_H 1" >>confdefs.h + +fi + +fi + + for ac_header in nlist.h +do : + ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" +if test "x$ac_cv_header_nlist_h" = xyes +then : + printf "%s\n" "#define HAVE_NLIST_H 1" >>confdefs.h + ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include +" +if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1" >>confdefs.h + + +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +printf "%s\n" "#define N_NAME_POINTER 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi + +done + +fi + + + + + + + + + + GL_GNULIB_GETLOADAVG=1 + + + + + +printf "%s\n" "#define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h + + + + + + # Check the system to see if it provides GNU glob. If not, use our + # local version. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5 +printf %s "checking if system libc has GNU glob... " >&6; } +if test ${make_cv_sys_gnu_glob+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "gnu glob" >/dev/null 2>&1 +then : + make_cv_sys_gnu_glob=yes +else $as_nop + make_cv_sys_gnu_glob=no +fi +rm -rf conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 +printf "%s\n" "$make_cv_sys_gnu_glob" >&6; } + # Tell automake about this, so it can build the right .c files. + if test "$make_cv_sys_gnu_glob" = yes; then + USE_SYSTEM_GLOB_TRUE= + USE_SYSTEM_GLOB_FALSE='#' +else + USE_SYSTEM_GLOB_TRUE='#' + USE_SYSTEM_GLOB_FALSE= +fi + + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + + # Check for DOS-style pathnames. + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether system uses MSDOS-style paths" >&5 +printf %s "checking whether system uses MSDOS-style paths... " >&6; } +if test ${ac_cv_dos_paths+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + 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 (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_dos_paths=yes +else $as_nop + ac_cv_dos_paths=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_dos_paths" >&5 +printf "%s\n" "$ac_cv_dos_paths" >&6; } + + if test x"$ac_cv_dos_paths" = xyes +then : + +printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h + +fi + + + + + + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + + + + + + + case "$GL_GENERATE_STDBOOL_H" in + false) STDBOOL_H='' ;; + true) + if test -z "$STDBOOL_H"; then + STDBOOL_H="${gl_source_base_prefix}stdbool.h" + fi + ;; + *) echo "*** GL_GENERATE_STDBOOL_H is not set correctly" 1>&2; exit 1 ;; + esac + + + if $GL_GENERATE_STDBOOL_H; then + GL_GENERATE_STDBOOL_H_TRUE= + GL_GENERATE_STDBOOL_H_FALSE='#' +else + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE= +fi +: + if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then + GL_GENERATE_STDBOOL_H_TRUE='#' + GL_GENERATE_STDBOOL_H_FALSE='#' + fi + + + + + + + # End of code from modules + + + + + + + + + + gltests_libdeps= + gltests_ltlibdeps= + + + + + + + + + + + + + gl_source_base='tests' + gl_source_base_prefix= + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS + + gl_module_indicator_condition=$gltests_WITNESS + + + + + + + + + + + + + LIBGNU_LIBDEPS="$gl_libdeps" + + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +# Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="ar" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Perl is needed for the test suite (only) +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="perl" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_PERL" && ac_cv_prog_PERL="perl" +fi +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +# Specialized system macros + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main (void) +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else $as_nop + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_bigendian=yes +else $as_nop + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes +then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main (void) +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_c_bigendian=no +else $as_nop + ac_cv_c_bigendian=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 +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf "%s\n" "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + + +# Enable gettext, in "external" mode. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 +printf %s "checking whether NLS is requested... " >&6; } + # Check whether --enable-nls was given. +if test ${enable_nls+y} +then : + enableval=$enable_nls; USE_NLS=$enableval +else $as_nop + USE_NLS=yes +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } + + + + + GETTEXT_MACRO_VERSION=0.19 + + + + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$MSGFMT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +printf "%s\n" "$MSGFMT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMSGFMT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GMSGFMT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +printf "%s\n" "$GMSGFMT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XGETTEXT+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$XGETTEXT" in + [\\/]* | ?:[\\/]*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +printf "%s\n" "$XGETTEXT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +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. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MSGMERGE+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 +printf "%s\n" "$MSGMERGE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$localedir" || localedir='${datadir}/locale' + + + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + + + ac_config_commands="$ac_config_commands po-directories" + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + + +# Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else $as_nop + with_gnu_ld=no +fi + +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${acl_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 &5 +printf "%s\n" "$LD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${acl_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 +printf %s "checking for shared library run path origin... " >&6; } +if test ${acl_cv_rpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 +printf "%s\n" "$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + 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+y} +then : + enableval=$enable_rpath; : +else $as_nop + enable_rpath=yes +fi + + + + + acl_libdirstem=lib + acl_libdirstem2= + case "$host_os" in + solaris*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 +printf %s "checking for 64-bit host... " >&6; } +if test ${gl_cv_solaris_64bit+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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 $as_nop + gl_cv_solaris_64bit=no +fi +rm -rf conftest* + + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 +printf "%s\n" "$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" + + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test ${with_libiconv_prefix+y} +then : + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + LIBICONV_PREFIX= + HAVE_LIBICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 +printf %s "checking for CFPreferencesCopyAppValue... " >&6; } +if test ${gt_cv_func_CFPreferencesCopyAppValue+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFPreferencesCopyAppValue=yes +else $as_nop + gt_cv_func_CFPreferencesCopyAppValue=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h + + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 +printf %s "checking for CFLocaleCopyCurrent... " >&6; } +if test ${gt_cv_func_CFLocaleCopyCurrent+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + gt_cv_func_CFLocaleCopyCurrent=yes +else $as_nop + gt_cv_func_CFLocaleCopyCurrent=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +printf "%s\n" "#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 + + + + + + + LIBINTL= + 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 + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 +printf %s "checking for GNU gettext in libc... " >&6; } +if eval test \${$gt_func_gnugettext_libc+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libc=yes" +else $as_nop + eval "$gt_func_gnugettext_libc=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$gt_func_gnugettext_libc + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 +printf %s "checking for iconv... " >&6; } +if test ${am_cv_func_iconv+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main (void) +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 +printf "%s\n" "$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 +printf %s "checking for working iconv... " >&6; } +if test ${am_cv_func_iconv_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + 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 $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + +int +main (void) +{ +int result = 0; + /* 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 ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* 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 ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#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 ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#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)) + result |= 16; + return result; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + am_cv_func_iconv_works=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + test "$am_cv_func_iconv_works" = no || break + done + LIBS="$am_save_LIBS" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 +printf "%s\n" "$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 + +printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h + + fi + if test "$am_cv_lib_iconv" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 +printf %s "checking how to link with libiconv... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 +printf "%s\n" "$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix was given. +if test ${with_libintl_prefix+y} +then : + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + 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 + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + LIBINTL_PREFIX= + HAVE_LIBINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + 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 + 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 + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + 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/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$acl_hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + 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 + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + 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/$acl_libdirstem" \ + || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + 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=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 +printf %s "checking for GNU gettext in libintl... " >&6; } +if eval test \${$gt_func_gnugettext_libintl+y} +then : + printf %s "(cached) " >&6 +else $as_nop + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$gt_func_gnugettext_libintl=yes" +else $as_nop + eval "$gt_func_gnugettext_libintl=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + 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 +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + +int +main (void) +{ + +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +eval ac_res=\$$gt_func_gnugettext_libintl + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + fi + + 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 + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + + 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 + +printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h + + else + USE_NLS=no + fi + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 +printf %s "checking whether to use NLS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 +printf "%s\n" "$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 +printf %s "checking where the gettext function comes from... " >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 +printf "%s\n" "$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 +printf %s "checking how to link with libintl... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 +printf "%s\n" "$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h + + fi + + POSUB=po + fi + + + + INTLLIBS="$LIBINTL" + + + + + + + +# Checks for libraries. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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. */ +char strerror (); +int +main (void) +{ +return strerror (); + ; + return 0; +} +_ACEOF +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_strerror+y} +then : + break +fi +done +if test ${ac_cv_search_strerror+y} +then : + +else $as_nop + ac_cv_search_strerror=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf "%s\n" "$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 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing getpwnam" >&5 +printf %s "checking for library containing getpwnam... " >&6; } +if test ${ac_cv_search_getpwnam+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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. */ +char getpwnam (); +int +main (void) +{ +return getpwnam (); + ; + return 0; +} +_ACEOF +for ac_lib in '' sun +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_getpwnam=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getpwnam+y} +then : + break +fi +done +if test ${ac_cv_search_getpwnam+y} +then : + +else $as_nop + ac_cv_search_getpwnam=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getpwnam" >&5 +printf "%s\n" "$ac_cv_search_getpwnam" >&6; } +ac_res=$ac_cv_search_getpwnam +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_ac_Header=yes" +else $as_nop + eval "$as_ac_Header=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$as_ac_Header + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : + cat >>confdefs.h <<_ACEOF +#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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. */ +char opendir (); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else $as_nop + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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. */ +char opendir (); +int +main (void) +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_opendir+y} +then : + break +fi +done +if test ${ac_cv_search_opendir+y} +then : + +else $as_nop + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +printf %s "checking whether stat file-mode macros are broken... " >&6; } +if test ${ac_cv_header_stat_broken+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_header_stat_broken=no +else $as_nop + ac_cv_header_stat_broken=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +printf "%s\n" "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +printf "%s\n" "#define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + + +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes +then : + printf "%s\n" "#define HAVE_MEMORY_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_timeb_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIMEB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default" +if test "x$ac_cv_header_spawn_h" = xyes +then : + printf "%s\n" "#define HAVE_SPAWN_H 1" >>confdefs.h + +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* 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; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* IBM 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]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else $as_nop + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf "%s\n" "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf "%s\n" "#define const /**/" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +printf %s "checking for uid_t in sys/types.h... " >&6; } +if test ${ac_cv_type_uid_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uid_t" >/dev/null 2>&1 +then : + ac_cv_type_uid_t=yes +else $as_nop + ac_cv_type_uid_t=no +fi +rm -rf conftest* + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +printf "%s\n" "$ac_cv_type_uid_t" >&6; } +if test $ac_cv_type_uid_t = no; then + +printf "%s\n" "#define uid_t int" >>confdefs.h + + +printf "%s\n" "#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" = xyes +then : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else $as_nop + ac_pid_type='__int64' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h + + +fi + + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define off_t long int" >>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 $as_nop + +printf "%s\n" "#define size_t unsigned int" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes +then : + +else $as_nop + +printf "%s\n" "#define ssize_t int" >>confdefs.h + +fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} + +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + +else $as_nop + ac_cv_type_unsigned_long_long_int=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then + +printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes +then : + : +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #ifndef LLONG_MAX + # define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + +else $as_nop + ac_cv_type_long_long_int=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then + +printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h + + fi + + + + ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" +if test "x$ac_cv_type_intmax_t" = xyes +then : + +printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h + +else $as_nop + test $ac_cv_type_long_long_int = yes \ + && ac_type='long long int' \ + || ac_type='long int' + +printf "%s\n" "#define intmax_t $ac_type" >>confdefs.h + +fi + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" +if test "x$ac_cv_type_uintmax_t" = xyes +then : + +printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h + +else $as_nop + test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' + +printf "%s\n" "#define uintmax_t $ac_type" >>confdefs.h + +fi + + + +# Check for sig_atomic_t + + ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include +" +if test "x$ac_cv_type_sig_atomic_t" = xyes +then : + +printf "%s\n" "#define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + + +else $as_nop + +printf "%s\n" "#define sig_atomic_t int" >>confdefs.h + +fi + + + +# Find out whether our struct stat returns nanosecond resolution timestamps. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5 +printf %s "checking for nanoseconds field of struct stat... " >&6; } +if test ${ac_cv_struct_st_mtim_nsec+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # 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_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. */ +#include +#include + +int +main (void) +{ +struct stat s; s.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_st_mtim_nsec=$ac_val; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5 +printf "%s\n" "$ac_cv_struct_st_mtim_nsec" >&6; } + + if test $ac_cv_struct_st_mtim_nsec != no; then + +printf "%s\n" "#define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h + + fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use high resolution file timestamps" >&5 +printf %s "checking whether to use high resolution file timestamps... " >&6; } +if test ${make_cv_file_timestamp_hi_res+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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 +#endif +int +main (void) +{ +char a[0x7fffffff < (uintmax_t)-1 >> 30 ? 1 : -1]; + ; + return 0; +} +_ACEOF +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.beam conftest.$ac_ext + +fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_file_timestamp_hi_res" >&5 +printf "%s\n" "$make_cv_file_timestamp_hi_res" >&6; } +if test "$make_cv_file_timestamp_hi_res" = yes +then : + val=1 +else $as_nop + val=0 +fi + +printf "%s\n" "#define FILE_TIMESTAMP_HI_RES $val" >>confdefs.h + + +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. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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. */ +char clock_gettime (); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt posix4 +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else $as_nop + ac_cv_search_clock_gettime=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + if test "$ac_cv_search_clock_gettime" != no +then : + +printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h + + +fi + +fi + +# See if we have a standard version of gettimeofday(). Since actual +# implementations can differ, just make sure we have the most common +# one. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard gettimeofday" >&5 +printf %s "checking for standard gettimeofday... " >&6; } +if test ${ac_cv_func_gettimeofday+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_func_gettimeofday=no + if test "$cross_compiling" = yes +then : + ac_cv_func_gettimeofday="no (cross-compiling)" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () + { + struct timeval t; t.tv_sec = -1; t.tv_usec = -1; + return 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 +else $as_nop + ac_cv_func_gettimeofday=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_gettimeofday" >&5 +printf "%s\n" "$ac_cv_func_gettimeofday" >&6; } +if test "$ac_cv_func_gettimeofday" = yes +then : + +printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h + + +fi + +ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes +then : + printf "%s\n" "#define HAVE_STRTOLL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes +then : + printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup" +if test "x$ac_cv_func_strndup" = xyes +then : + printf "%s\n" "#define HAVE_STRNDUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy" +if test "x$ac_cv_func_stpcpy" = xyes +then : + printf "%s\n" "#define HAVE_STPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr" +if test "x$ac_cv_func_memrchr" = xyes +then : + printf "%s\n" "#define HAVE_MEMRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy" +if test "x$ac_cv_func_mempcpy" = xyes +then : + printf "%s\n" "#define HAVE_MEMPCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "umask" "ac_cv_func_umask" +if test "x$ac_cv_func_umask" = xyes +then : + printf "%s\n" "#define HAVE_UMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes +then : + printf "%s\n" "#define HAVE_MKSTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mktemp" "ac_cv_func_mktemp" +if test "x$ac_cv_func_mktemp" = xyes +then : + printf "%s\n" "#define HAVE_MKTEMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "fdopen" "ac_cv_func_fdopen" +if test "x$ac_cv_func_fdopen" = xyes +then : + printf "%s\n" "#define HAVE_FDOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup" "ac_cv_func_dup" +if test "x$ac_cv_func_dup" = xyes +then : + printf "%s\n" "#define HAVE_DUP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf "%s\n" "#define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" +if test "x$ac_cv_func_getcwd" = xyes +then : + printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf "%s\n" "#define HAVE_REALPATH 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigsetmask" "ac_cv_func_sigsetmask" +if test "x$ac_cv_func_sigsetmask" = xyes +then : + printf "%s\n" "#define HAVE_SIGSETMASK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction" +if test "x$ac_cv_func_sigaction" = xyes +then : + printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" +if test "x$ac_cv_func_getgroups" = xyes +then : + printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" +if test "x$ac_cv_func_seteuid" = xyes +then : + printf "%s\n" "#define HAVE_SETEUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" +if test "x$ac_cv_func_setegid" = xyes +then : + printf "%s\n" "#define HAVE_SETEGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" +if test "x$ac_cv_func_setlinebuf" = xyes +then : + printf "%s\n" "#define HAVE_SETLINEBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid" +if test "x$ac_cv_func_setreuid" = xyes +then : + printf "%s\n" "#define HAVE_SETREUID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid" +if test "x$ac_cv_func_setregid" = xyes +then : + printf "%s\n" "#define HAVE_SETREGID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo" +if test "x$ac_cv_func_mkfifo" = xyes +then : + printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit" +if test "x$ac_cv_func_getrlimit" = xyes +then : + printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit" +if test "x$ac_cv_func_setrlimit" = xyes +then : + printf "%s\n" "#define HAVE_SETRLIMIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf" +if test "x$ac_cv_func_setvbuf" = xyes +then : + printf "%s\n" "#define HAVE_SETVBUF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pipe" "ac_cv_func_pipe" +if test "x$ac_cv_func_pipe" = xyes +then : + printf "%s\n" "#define HAVE_PIPE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal" +if test "x$ac_cv_func_strsignal" = xyes +then : + printf "%s\n" "#define HAVE_STRSIGNAL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" +if test "x$ac_cv_func_lstat" = xyes +then : + printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink" +if test "x$ac_cv_func_readlink" = xyes +then : + printf "%s\n" "#define HAVE_READLINK 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "atexit" "ac_cv_func_atexit" +if test "x$ac_cv_func_atexit" = xyes +then : + printf "%s\n" "#define HAVE_ATEXIT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty" +if test "x$ac_cv_func_isatty" = xyes +then : + printf "%s\n" "#define HAVE_ISATTY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname" +if test "x$ac_cv_func_ttyname" = xyes +then : + printf "%s\n" "#define HAVE_TTYNAME 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect" +if test "x$ac_cv_func_pselect" = xyes +then : + printf "%s\n" "#define HAVE_PSELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" +if test "x$ac_cv_func_posix_spawn" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_SPAWN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "posix_spawnattr_setsigmask" "ac_cv_func_posix_spawnattr_setsigmask" +if test "x$ac_cv_func_posix_spawnattr_setsigmask" = xyes +then : + printf "%s\n" "#define HAVE_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h + +fi + + +# 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_check_decl "$LINENO" "bsd_signal" "ac_cv_have_decl_bsd_signal" "#define _GNU_SOURCE 1 +#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_bsd_signal" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_BSD_SIGNAL $ac_have_decl" >>confdefs.h + + + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + + +if test "x$ac_cv_func_fork" = xyes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +printf %s "checking for working fork... " >&6; } +if test ${ac_cv_func_fork_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + ac_cv_func_fork_works=cross +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ + + /* By Ruediger Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_fork_works=yes +else $as_nop + ac_cv_func_fork_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 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +printf "%s\n" "$ac_cv_func_fork_works" >&6; } + +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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +printf %s "checking for working vfork... " >&6; } +if test ${ac_cv_func_vfork_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + ac_cv_func_vfork_works=cross +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#include +#ifdef HAVE_VFORK_H +# include +#endif + +static void +do_nothing (int sig) +{ + (void) sig; +} + +/* 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 , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +sparc_address_test (int arg) +{ + 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 (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + /* On Solaris 2.4, changes by the child to the signal handler + also munge signal handlers in the parent. To detect this, + start by putting the parent's handler in a known state. */ + signal (SIGTERM, SIG_DFL); + + 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); + + /* Alter the child's signal handler. */ + if (signal (SIGTERM, do_nothing) != SIG_DFL) + _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; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child munge the parent's signal handler? */ + || signal (SIGTERM, SIG_DFL) != SIG_DFL + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* 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 +else $as_nop + ac_cv_func_vfork_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 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +printf "%s\n" "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +printf "%s\n" "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +printf "%s\n" "#define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +printf "%s\n" "#define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +printf "%s\n" "#define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + + +# Rumor has it that strcasecmp lives in -lresolv on some odd systems. +# It doesn't hurt much to use our own if we can't find it so I don't +# make the effort here. +ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" +if test "x$ac_cv_func_strcasecmp" = xyes +then : + printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" +if test "x$ac_cv_func_strncasecmp" = xyes +then : + printf "%s\n" "#define HAVE_STRNCASECMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcmpi" "ac_cv_func_strcmpi" +if test "x$ac_cv_func_strcmpi" = xyes +then : + printf "%s\n" "#define HAVE_STRCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strncmpi" "ac_cv_func_strncmpi" +if test "x$ac_cv_func_strncmpi" = xyes +then : + printf "%s\n" "#define HAVE_STRNCMPI 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp" +if test "x$ac_cv_func_stricmp" = xyes +then : + printf "%s\n" "#define HAVE_STRICMP 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp" +if test "x$ac_cv_func_strnicmp" = xyes +then : + printf "%s\n" "#define HAVE_STRNICMP 1" >>confdefs.h + +fi + + +# strcoll() is used by the GNU glob library +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5 +printf %s "checking for working strcoll... " >&6; } +if test ${ac_cv_func_strcoll_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_strcoll_works=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_strcoll_works=no ;; + esac +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +return (strcoll ("abc", "def") >= 0 || + strcoll ("ABC", "DEF") >= 0 || + strcoll ("123", "456") >= 0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_strcoll_works=yes +else $as_nop + ac_cv_func_strcoll_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 + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5 +printf "%s\n" "$ac_cv_func_strcoll_works" >&6; } +if test $ac_cv_func_strcoll_works = yes; then + +printf "%s\n" "#define HAVE_STRCOLL 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +printf %s "checking whether closedir returns void... " >&6; } +if test ${ac_cv_func_closedir_void+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <$ac_header_dirent> + +int +main (void) +{ + + return closedir(0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_func_closedir_void=no +else $as_nop + ac_cv_func_closedir_void=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +printf "%s\n" "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +printf "%s\n" "#define CLOSEDIR_VOID 1" >>confdefs.h + +fi + + +# dir.c and our glob.c use dirent.d_type if available + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h + + +fi + + + +# See if the user wants to add (or not) GNU Guile support + +# Check whether --with-guile was given. +if test ${with_guile+y} +then : + withval=$with_guile; +fi + + +# Annoyingly, each version of Guile comes with it's own PC file so we have to +# specify them as individual packages. Ugh. + + + + + + + +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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$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 +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$with_guile" != xno +then : + guile_versions="3.0 2.2 2.0 1.8" + guile_version=no + have_guile=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5 +printf %s "checking for GNU Guile... " >&6; } + for v in $guile_versions; do + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + guile_version=$v; have_guile=yes; break +fi + done + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5 +printf "%s\n" "$guile_version" >&6; } + if test "$have_guile" = yes +then : + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5 +printf %s "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" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 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" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "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-$guile_version" 2>&1` + else + GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GUILE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (guile-$guile_version) were not met: + +$GUILE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "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. + +Alternatively, you may set the environment variables GUILE_CFLAGS +and GUILE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details" "$LINENO" 5; } +else + GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS + GUILE_LIBS=$pkg_cv_GUILE_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +fi + # Unfortunately pkg doesn't help in multi-arch environments where the + # package is installed for some architectures but not others; we need + # to try to link. + keep_CPPFLAGS="$CPPFLAGS" + keep_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" + LIBS="$LIBS $GUILE_LIBS" + ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */ +" +if test "x$ac_cv_header_libguile_h" = xyes +then : + +printf "%s\n" "#define HAVE_GUILE 1" >>confdefs.h + +else $as_nop + have_guile=no +fi + + if test "$have_guile" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can link GNU Guile" >&5 +printf %s "checking whether we can link GNU Guile... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +static void * +guile_init (void *arg) +{ + (void) arg; + return 0; +} + +int +main (void) +{ + + scm_with_guile (guile_init, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + have_guile=yes +else $as_nop + have_guile=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_guile" >&5 +printf "%s\n" "$have_guile" >&6; } +fi + CPPFLAGS="$keep_CPPFLAGS" + LIBS="$keep_LIBS" + +fi + +fi + + if test "$have_guile" = "yes"; then + HAVE_GUILE_TRUE= + HAVE_GUILE_FALSE='#' +else + HAVE_GUILE_TRUE='#' + HAVE_GUILE_FALSE= +fi + + +ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sys_siglist" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl__sys_siglist" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "__sys_siglist" "ac_cv_have_decl___sys_siglist" "$ac_includes_default +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl___sys_siglist" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL___SYS_SIGLIST $ac_have_decl" >>confdefs.h + + + +# Check out the wait reality. +ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "#include +" +if test "x$ac_cv_header_sys_wait_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid" +if test "x$ac_cv_func_waitpid" = xyes +then : + printf "%s\n" "#define HAVE_WAITPID 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3" +if test "x$ac_cv_func_wait3" = xyes +then : + printf "%s\n" "#define HAVE_WAIT3 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for union wait" >&5 +printf %s "checking for union wait... " >&6; } +if test ${make_cv_union_wait+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main (void) +{ +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 + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + make_cv_union_wait=yes +else $as_nop + make_cv_union_wait=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_union_wait" >&5 +printf "%s\n" "$make_cv_union_wait" >&6; } +if test "$make_cv_union_wait" = yes +then : + +printf "%s\n" "#define HAVE_UNION_WAIT 1" >>confdefs.h + + +fi + + +# If we're building on Windows/DOS/OS/2, add some support for DOS drive specs. +if test "$PATH_SEPARATOR" = ';' +then : + +printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h + + +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+y} +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 + +cf_test_netlibs=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for network libraries" >&5 +printf %s "checking for network libraries... " >&6; } +if test ${cf_cv_netlibs+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: working..." >&5 +printf "%s\n" "working..." >&6; } +cf_cv_netlibs="" +cf_test_netlibs=yes + + for ac_func in gethostname +do : + ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname" +if test "x$ac_cv_func_gethostname" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h + +else $as_nop + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lnsl" >&5 +printf %s "checking for gethostname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. */ +char gethostname (); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostname=yes +else $as_nop + ac_cv_lib_nsl_gethostname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostname" >&5 +printf "%s\n" "$ac_cv_lib_nsl_gethostname" >&6; } +if test "x$ac_cv_lib_nsl_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else $as_nop + + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 +printf %s "checking for gethostname in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_gethostname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. */ +char gethostname (); +int +main (void) +{ +return gethostname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_gethostname=yes +else $as_nop + ac_cv_lib_socket_gethostname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostname" >&5 +printf "%s\n" "$ac_cv_lib_socket_gethostname" >&6; } +if test "x$ac_cv_lib_socket_gethostname" = xyes +then : + + +cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else $as_nop + + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null + +fi + + +fi + + +fi + +done +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-linet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main (void) +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_inet_main=yes +else $as_nop + ac_cv_lib_inet_main=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf "%s\n" "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : + cf_cv_netlibs="-linet $cf_cv_netlibs" +fi + +# +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" = xyes +then : + printf "%s\n" "#define HAVE_SOCKET 1" >>confdefs.h + +else $as_nop + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +printf %s "checking for socket in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_socket+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $cf_cv_netlibs $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. */ +char socket (); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_socket_socket=yes +else $as_nop + ac_cv_lib_socket_socket=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf "%s\n" "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" +else $as_nop + + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 +printf %s "checking for socket in -lbsd... " >&6; } +if test ${ac_cv_lib_bsd_socket+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $cf_cv_netlibs $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. */ +char socket (); +int +main (void) +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bsd_socket=yes +else $as_nop + ac_cv_lib_bsd_socket=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_socket" >&5 +printf "%s\n" "$ac_cv_lib_bsd_socket" >&6; } +if test "x$ac_cv_lib_bsd_socket" = xyes +then : + + +cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" +else $as_nop + + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null + +fi + + +fi + + +fi + +done +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" = xyes +then : + printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h + +else $as_nop + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +printf %s "checking for gethostbyname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $cf_cv_netlibs $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. */ +char gethostbyname (); +int +main (void) +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_nsl_gethostbyname=yes +else $as_nop + ac_cv_lib_nsl_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : + + +cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` + + +printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h + + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" +else $as_nop + + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null + +fi + + +fi + +done + +fi + +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&6 + + ac_fn_c_check_header_compile "$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" +else $as_nop + with_customs=no + CPPFLAGS="$make_cppflags" make_badcust=yes +fi + + ;; +esac + +fi + + +# Tell automake about this, so it can include the right .c files. + if test "$use_customs" = true; then + USE_CUSTOMS_TRUE= + USE_CUSTOMS_FALSE='#' +else + USE_CUSTOMS_TRUE='#' + USE_CUSTOMS_FALSE= +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+y} +then : + enableval=$enable_case_insensitive_file_system; if test "$enableval" = yes +then : + printf "%s\n" "#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+y} +then : + enableval=$enable_job_server; make_cv_job_server="$enableval" user_job_server="$enableval" +else $as_nop + make_cv_job_server="yes" +fi + + +if test "$ac_cv_func_waitpid" = no && test "$ac_cv_func_wait3" = no +then : + has_wait_nohang=no +else $as_nop + has_wait_nohang=yes +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SA_RESTART" >&5 +printf %s "checking for SA_RESTART... " >&6; } +if test ${make_cv_sa_restart+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +return SA_RESTART; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sa_restart=yes +else $as_nop + make_cv_sa_restart=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_sa_restart" >&5 +printf "%s\n" "$make_cv_sa_restart" >&6; } + +if test "$make_cv_sa_restart" != no +then : + +printf "%s\n" "#define HAVE_SA_RESTART 1" >>confdefs.h + + +fi + +# Only allow jobserver on systems that support it +case /$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/ in #( + */no/*) : + make_cv_job_server=no ;; #( + *) : + ;; +esac + +# Also supported on OS2 and MinGW +case $host_os in #( + os2*|mingw*) : + make_cv_job_server=yes ;; #( + *) : + ;; +esac + +# 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 ;; #( + *) : + +printf "%s\n" "#define MAKE_JOBSERVER 1" >>confdefs.h + + ;; +esac + +# If dl*() functions are supported we can enable the load operation +ac_fn_check_decl "$LINENO" "dlopen" "ac_cv_have_decl_dlopen" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlopen" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_DLOPEN $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlsym" "ac_cv_have_decl_dlsym" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlsym" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_DLSYM $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "dlerror" "ac_cv_have_decl_dlerror" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_dlerror" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_DLERROR $ac_have_decl" >>confdefs.h + + +# Check whether --enable-load was given. +if test ${enable_load+y} +then : + enableval=$enable_load; make_cv_load="$enableval" user_load="$enableval" +else $as_nop + make_cv_load="yes" +fi + + +case /$ac_cv_have_decl_dlopen/$ac_cv_have_decl_dlsym/$ac_cv_have_decl_dlerror/ in #( + */no/*) : + make_cv_load=no ;; #( + *) : + ;; +esac + +# We might need -ldl +if test "$make_cv_load" = yes +then : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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. */ +char dlopen (); +int +main (void) +{ +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.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : + +else $as_nop + ac_cv_search_dlopen=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf "%s\n" "$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 $as_nop + make_cv_load= +fi + + +fi + +case /$make_cv_load/$user_load/ in #( + */no/*) : + make_cv_load=no ;; #( + *) : + +printf "%s\n" "#define MAKE_LOAD 1" >>confdefs.h + + ;; +esac + +# 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 : + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 +printf %s "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 : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + AM_LDFLAGS=-Wl,--export-dynamic + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 +printf %s "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 : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + AM_LDFLAGS=-rdynamic + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$old_LDFLAGS" + +fi + +# if we have both lstat() and readlink() then we can support symlink +# timechecks. +if test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes +then : + +printf "%s\n" "#define MAKE_SYMLINKS 1" >>confdefs.h + + +fi + +# Use posix_spawn if we have support and the user didn't disable it + +# Check whether --enable-posix-spawn was given. +if test ${enable_posix_spawn+y} +then : + enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval" +else $as_nop + make_cv_posix_spawn="yes" +fi + + +case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in #( + */no/*) : + make_cv_posix_spawn=no ;; #( + *) : + ;; +esac + +if test "$make_cv_posix_spawn" = yes +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5 +printf %s "checking for posix_spawn that fails synchronously... " >&6; } +if test ${make_cv_synchronous_posix_spawn+y} +then : + printf %s "(cached) " >&6 +else $as_nop + make_cv_synchronous_posix_spawn=no + if test "$cross_compiling" = yes +then : + make_cv_synchronous_posix_spawn="no (cross-compiling)" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + extern char **environ; + int main () { + char path[] = "./xxx-non-existent"; + char *argv[] = {path, 0}; + return posix_spawn (0, path, 0, 0, argv, environ) == ENOENT ? 0 : 1; + } +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + make_cv_synchronous_posix_spawn=yes +else $as_nop + make_cv_synchronous_posix_spawn=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5 +printf "%s\n" "$make_cv_synchronous_posix_spawn" >&6; } +fi + +case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in #( + */no/*) : + make_cv_posix_spawn=no ;; #( + *) : + +printf "%s\n" "#define USE_POSIX_SPAWN 1" >>confdefs.h + + ;; +esac + +# Find the SCCS commands, so we can include them in our default rules. + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5 +printf %s "checking for location of SCCS get command... " >&6; } +if test ${make_cv_path_sccs_get+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + if test -f /usr/sccs/get +then : + make_cv_path_sccs_get=/usr/sccs/get +else $as_nop + make_cv_path_sccs_get=get +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_path_sccs_get" >&5 +printf "%s\n" "$make_cv_path_sccs_get" >&6; } + +printf "%s\n" "#define SCCS_GET \"$make_cv_path_sccs_get\"" >>confdefs.h + + +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. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if SCCS get command understands -G" >&5 +printf %s "checking if SCCS get command understands -G... " >&6; } +if test ${make_cv_sys_get_minus_G+y} +then : + printf %s "(cached) " >&6 +else $as_nop + 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 $as_nop + make_cv_sys_get_minus_G=no +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_get_minus_G" >&5 +printf "%s\n" "$make_cv_sys_get_minus_G" >&6; } + if test "$make_cv_sys_get_minus_G" = yes +then : + +printf "%s\n" "#define SCCS_GET_MINUS_G 1" >>confdefs.h + + +fi + +fi +rm -f s.conftest conftoast + +# Let the makefile know what our build host is + + +printf "%s\n" "#define MAKE_HOST \"$host\"" >>confdefs.h + +MAKE_HOST="$host" + + +w32_target_env=no + if false; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + +case $host in #( + *-*-mingw32) : + if true; then + WINDOWSENV_TRUE= + WINDOWSENV_FALSE='#' +else + WINDOWSENV_TRUE='#' + WINDOWSENV_FALSE= +fi + + w32_target_env=yes + +printf "%s\n" "#define WINDOWS32 1" >>confdefs.h + + +printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h + + ;; #( + *) : + ;; +esac + + +printf "%s\n" "#define PATH_SEPARATOR_CHAR '$PATH_SEPARATOR'" >>confdefs.h + + + +printf "%s\n" "#define HAVE_DECL_GETLOADAVG $HAVE_DECL_GETLOADAVG" >>confdefs.h + + +# Remember that we ran configure to generate config.h + + +printf "%s\n" "#define MK_CONFIGURE 1" >>confdefs.h + + +# 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 + + +# Allow building with dmalloc +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 +printf %s "checking if malloc debugging is wanted... " >&6; } + +# Check whether --with-dmalloc was given. +if test ${with_dmalloc+y} +then : + withval=$with_dmalloc; if test "$withval" = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +printf "%s\n" "#define WITH_DMALLOC 1" >>confdefs.h + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +# 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 + +if test "x$make_badcust" = xyes +then : + +echo +echo "WARNING: --with-customs specified but no customs.h could be found;" +echo " disabling Customs support." +echo + +fi + +case $with_customs in #( + ""|n|no|y|ye|yes) : + : ;; #( + *) : + if test -f "$with_customs/lib/libcustoms.a" +then : + : +else $as_nop + 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 + +if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes +then : + echo + echo "WARNING: posix_spawn() is not supported on this system." + echo + +fi + +# autoconf initializes $prefix to NONE. + if test "x$prefix" = xNONE -o "x$prefix" = x/usr/local \ + -o "x$prefix" = x/usr/gnu -o "x$prefix" = x/usr; then + KNOWN_PREFIX_TRUE= + KNOWN_PREFIX_FALSE='#' +else + KNOWN_PREFIX_TRUE='#' + KNOWN_PREFIX_FALSE= +fi + + +# Specify what files are to be created. +ac_config_files="$ac_config_files build.cfg tests/config-flags.pm Makefile lib/Makefile doc/Makefile po/Makefile.in" + +# We don't need this: the standard automake output suffices for POSIX systems. +#mk/Posix.mk + +# Put build.sh in the build directory so it's easy to find +ac_config_links="$ac_config_links build.sh:build.sh" + + +# OK, do it! + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +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$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + 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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gl_LIBOBJS=$gl_libobjs + + gl_LTLIBOBJS=$gl_ltlibobjs + + gl_LIBOBJDEPS=$gl_libobjdeps + + + + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + gltests_LIBOBJS=$gltests_libobjs + + gltests_LTLIBOBJS=$gltests_ltlibobjs + + gltests_LIBOBJDEPS=$gltests_libobjdeps + + + +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. +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. +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. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${KNOWN_PREFIX_TRUE}" && test -z "${KNOWN_PREFIX_FALSE}"; then + as_fn_error $? "conditional \"KNOWN_PREFIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# 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. +as_fn_error () +{ + 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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# 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'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by GNU Make $as_me 4.4, which was +generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_links="$ac_config_links" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to . +GNU Make home page: . +General help using GNU software: ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +GNU Make config.status 4.4 +configured by $0, generated by GNU Autoconf 2.71, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2021 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +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 + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # 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%}" + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; + "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;; + "tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "build.sh") CONFIG_LINKS="$CONFIG_LINKS build.sh:build.sh" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_LINKS+y} || CONFIG_LINKS=$config_links + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap '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 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || 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. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + +if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then + ac_cs_awk_getline=: + ac_cs_awk_pipe_init= + ac_cs_awk_read_file=' + while ((getline aline < (F[key])) > 0) + print(aline) + close(F[key])' + ac_cs_awk_pipe_fini= +else + ac_cs_awk_getline=false + ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" + ac_cs_awk_read_file=' + print "|#_!!_#|" + print "cat " F[key] " &&" + '$ac_cs_awk_pipe_init + # The final `:' finishes the AND list. + ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' +fi +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + +# Create commands to substitute file output variables. +{ + echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" && + 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 +rm -f conf$$files.sh + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + \$ac_cs_awk_pipe_init +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + if (nfields == 3 && !substed) { + key = field[2] + if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { + \$ac_cs_awk_read_file + next + } + } + print line +} +\$ac_cs_awk_pipe_fini +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$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 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[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_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 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$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 `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | +if $ac_cs_awk_getline; then + $AWK -f "$ac_tmp/subs.awk" +else + $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' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$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 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) 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 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf "%s\n" "/* $configure_input */" >&1 \ + && 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf "%s\n" "/* $configure_input */" >&1 \ + && 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" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :L) + # + # CONFIG_LINK + # + + if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then + : + else + # Prefer the file from the source tree if names are identical. + if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then + ac_source=$srcdir/$ac_source + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 +printf "%s\n" "$as_me: linking $ac_source to $ac_file" >&6;} + + if test ! -r "$ac_source"; then + as_fn_error $? "$ac_source: file not found" "$LINENO" 5 + fi + rm -f "$ac_file" + + # Try a relative symlink, then a hard link, then a copy. + case $ac_source in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; + *) ac_rel_source=$ac_top_build_prefix$ac_source ;; + esac + ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || + ln "$ac_source" "$ac_file" 2>/dev/null || + cp -p "$ac_source" "$ac_file" || + as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 + fi + ;; + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # 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" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment 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 assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + 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 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + diff --git a/local/recipes/dev/gnu-make/source/doc/Makefile.am b/local/recipes/dev/gnu-make/source/doc/Makefile.am new file mode 100644 index 0000000000..18d577b10a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/Makefile.am @@ -0,0 +1,24 @@ +# -*-Makefile-*-, or close enough +# Copyright (C) 2000-2022 Free Software 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 . + +TEXI2HTML = texi2html +TEXI2HTML_FLAGS = -split_chapter + +info_TEXINFOS = make.texi +make_TEXINFOS = fdl.texi make-stds.texi + +CLEANFILES = make*.html diff --git a/local/recipes/dev/gnu-make/source/doc/Makefile.in b/local/recipes/dev/gnu-make/source/doc/Makefile.in new file mode 100644 index 0000000000..b7fdc07f31 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/Makefile.in @@ -0,0 +1,846 @@ +# Makefile.in generated by automake 1.18.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2025 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# -*-Makefile-*-, or close enough +# Copyright (C) 2000-2022 Free Software 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 . +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +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 = @build@ +host_triplet = @host@ +subdir = doc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ + $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \ + $(top_srcdir)/m4/asm-underscore.m4 \ + $(top_srcdir)/m4/dospaths.m4 $(top_srcdir)/m4/eaccess.m4 \ + $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/findprog-in.m4 \ + $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/gnulib-comp.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ + $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/warn-on-use.m4 \ + $(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/version.texi \ + $(srcdir)/stamp-vti $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +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_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) +am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) +am__v_DVIPS_0 = @echo " DVIPS " $@; +am__v_DVIPS_1 = +AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) +am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) +am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; +am__v_MAKEINFO_1 = +AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) +am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) +am__v_INFOHTML_0 = @echo " INFOHTML" $@; +am__v_INFOHTML_1 = +AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) +am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) +am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; +am__v_TEXI2DVI_1 = +AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) +am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) +am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; +am__v_TEXI2PDF_1 = +AM_V_texinfo = $(am__v_texinfo_@AM_V@) +am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) +am__v_texinfo_0 = -q +am__v_texinfo_1 = +AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) +am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) +am__v_texidevnull_0 = > /dev/null +am__v_texidevnull_1 = +INFO_DEPS = $(srcdir)/make.info +TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex +am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux +DVIS = make.dvi +PDFS = make.pdf +PSS = make.ps +HTMLS = make.html +TEXINFOS = make.texi +TEXI2DVI = texi2dvi +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 \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ + } +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(make_TEXINFOS) $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/mdate-sh \ + $(top_srcdir)/build-aux/texinfo.tex +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +GETLOADAVG_LIBS = @GETLOADAVG_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ +GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ +GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GUILE_CFLAGS = @GUILE_CFLAGS@ +GUILE_LIBS = @GUILE_LIBS@ +HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE__BOOL = @HAVE__BOOL@ +HOST_CPU = @HOST_CPU@ +HOST_CPU_C_ABI = @HOST_CPU_C_ABI@ +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@ +LDFLAGS = @LDFLAGS@ +LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ +LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKE_HOST = @MAKE_HOST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +REMOTE = @REMOTE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STDBOOL_H = @STDBOOL_H@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@ +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@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ +am__tar = @am__tar@ +am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +TEXI2HTML = texi2html +TEXI2HTML_FLAGS = -split_chapter +info_TEXINFOS = make.texi +make_TEXINFOS = fdl.texi make-stds.texi +CLEANFILES = make*.html +all: all-am + +.SUFFIXES: +.SUFFIXES: .dvi .html .info .pdf .ps .texi +$(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) --foreign doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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): + +.texi.info: + $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + am__cwd=`pwd` && $(am__cd) $(srcdir) && \ + rm -rf $$backupdir && mkdir $$backupdir && \ + if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ + for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ + if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ + done; \ + else :; fi && \ + cd "$$am__cwd"; \ + if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $@ $<; \ + then \ + rc=0; \ + $(am__cd) $(srcdir); \ + else \ + rc=$$?; \ + $(am__cd) $(srcdir) && \ + $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ + fi; \ + rm -rf $$backupdir; exit $$rc + +.texi.dvi: + $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) $(AM_TEXI2FLAGS) -I $(srcdir) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ + $< + +.texi.pdf: + $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2PDF) $(AM_TEXI2FLAGS) -I $(srcdir) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ + $< + +.texi.html: + $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) + $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $(@:.html=.htp) $<; \ + then \ + rm -rf $@ && mv $(@:.html=.htp) $@; \ + else \ + rm -rf $(@:.html=.htp); exit 1; \ + fi +$(srcdir)/make.info: make.texi $(srcdir)/version.texi $(make_TEXINFOS) +make.dvi: make.texi $(srcdir)/version.texi $(make_TEXINFOS) +make.pdf: make.texi $(srcdir)/version.texi $(make_TEXINFOS) +make.html: make.texi $(srcdir)/version.texi $(make_TEXINFOS) +$(srcdir)/version.texi: $(srcdir)/stamp-vti +$(srcdir)/stamp-vti: make.texi $(top_srcdir)/configure + @(dir=.; test -f ./make.texi || dir=$(srcdir); \ + set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/make.texi`; \ + echo "@set UPDATED $$1 $$2 $$3"; \ + echo "@set UPDATED-MONTH $$2 $$3"; \ + echo "@set EDITION $(VERSION)"; \ + echo "@set VERSION $(VERSION)") > vti.tmp$$$$ && \ + (cmp -s vti.tmp$$$$ $(srcdir)/version.texi \ + || (echo "Updating $(srcdir)/version.texi" && \ + cp vti.tmp$$$$ $(srcdir)/version.texi.tmp$$$$ && \ + mv $(srcdir)/version.texi.tmp$$$$ $(srcdir)/version.texi)) && \ + rm -f vti.tmp$$$$ $(srcdir)/version.texi.$$$$ + @cp $(srcdir)/version.texi $@ + +mostlyclean-vti: + -rm -f vti.tmp* $(srcdir)/version.texi.tmp* + +maintainer-clean-vti: + -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi +.dvi.ps: + $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) $(AM_V_texinfo) -o $@ $< + +uninstall-dvi-am: + @$(NORMAL_UNINSTALL) + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ + rm -f "$(DESTDIR)$(dvidir)/$$f"; \ + done + +uninstall-html-am: + @$(NORMAL_UNINSTALL) + @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ + rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ + done + +uninstall-info-am: + @$(PRE_UNINSTALL) + @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ + if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ + then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ + (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ + echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ + rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ + else :; fi); \ + done + +uninstall-pdf-am: + @$(NORMAL_UNINSTALL) + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ + done + +uninstall-ps-am: + @$(NORMAL_UNINSTALL) + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ + rm -f "$(DESTDIR)$(psdir)/$$f"; \ + done + +dist-info: $(INFO_DEPS) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + case $$base in \ + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ + base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ + for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ + if test -f $$file; then \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f "$(distdir)/$$relfile" || \ + cp -p $$file "$(distdir)/$$relfile"; \ + else :; fi; \ + done; \ + done + +mostlyclean-aminfo: + -$(am__rm_rf) make.t2d make.t2p + +clean-aminfo: + -$(am__rm_rf) make.dvi make.pdf make.ps make.html + +maintainer-clean-aminfo: + @list='$(INFO_DEPS)'; for i in $$list; do \ + i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ + echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ + rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ + done +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(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 + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-info +check-am: all-am +check: check-am +all-am: Makefile $(INFO_DEPS) +installdirs: + for dir in "$(DESTDIR)$(infodir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + 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: + -$(am__rm_f) $(CLEANFILES) + +distclean-generic: + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__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-aminfo clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: $(DVIS) + +html: html-am + +html-am: $(HTMLS) + +info: info-am + +info-am: $(INFO_DEPS) + +install-data-am: install-info-am + +install-dvi: install-dvi-am + +install-dvi-am: $(DVIS) + @$(NORMAL_INSTALL) + @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"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ + done +install-exec-am: + +install-html: install-html-am + +install-html-am: $(HTMLS) + @$(NORMAL_INSTALL) + @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) \ + d2=$$d$$p; \ + if test -d "$$d2"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ + echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ + else \ + list2="$$list2 $$d2"; \ + fi; \ + done; \ + test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ + done; } +install-info: install-info-am + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + @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/||"`;; \ + esac; \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ + for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ + $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ + if test -f $$ifile; then \ + echo "$$ifile"; \ + else : ; fi; \ + done; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done + @$(POST_INSTALL) + @if $(am__can_run_installinfo); then \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ + install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ + done; \ + else : ; fi +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: $(PDFS) + @$(NORMAL_INSTALL) + @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"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done +install-ps: install-ps-am + +install-ps-am: $(PSS) + @$(NORMAL_INSTALL) + @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"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti + +pdf: pdf-am + +pdf-am: $(PDFS) + +ps: ps-am + +ps-am: $(PSS) + +uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-pdf-am uninstall-ps-am + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-aminfo clean-generic \ + cscopelist-am ctags-am dist-info distclean distclean-generic \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti mostlyclean \ + mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \ + pdf-am ps ps-am tags-am uninstall uninstall-am \ + uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-pdf-am uninstall-ps-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/local/recipes/dev/gnu-make/source/doc/fdl.texi b/local/recipes/dev/gnu-make/source/doc/fdl.texi new file mode 100644 index 0000000000..eaf3da0e92 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/fdl.texi @@ -0,0 +1,505 @@ +@c The GNU Free Documentation License. +@center Version 1.3, 3 November 2008 + +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + +@display +Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. +@uref{https://fsf.org/} + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display + +@enumerate 0 +@item +PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document @dfn{free} in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of ``copyleft'', which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +@item +APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The ``Document'', below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as ``you''. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A ``Modified Version'' of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A ``Secondary Section'' is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The ``Invariant Sections'' are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The ``Cover Texts'' are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A ``Transparent'' copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not ``Transparent'' is called ``Opaque''. + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, La@TeX{} input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG@. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. + +The ``Title Page'' means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, ``Title Page'' means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The ``publisher'' means any person or entity that distributes copies +of the Document to the public. + +A section ``Entitled XYZ'' means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as ``Acknowledgements'', +``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' +of such a section when you modify the Document means that it remains a +section ``Entitled XYZ'' according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +@item +VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +@item +COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +@item +MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +@enumerate A +@item +Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +@item +List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +@item +State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +@item +Preserve all the copyright notices of the Document. + +@item +Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +@item +Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +@item +Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +@item +Include an unaltered copy of this License. + +@item +Preserve the section Entitled ``History'', Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled ``History'' in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +@item +Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the ``History'' section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +@item +For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +@item +Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +@item +Delete any section Entitled ``Endorsements''. Such a section +may not be included in the Modified Version. + +@item +Do not retitle any existing section to be Entitled ``Endorsements'' or +to conflict in title with any Invariant Section. + +@item +Preserve any Warranty Disclaimers. +@end enumerate + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled ``Endorsements'', provided it contains +nothing but endorsements of your Modified Version by various +parties---for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +@item +COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled ``History'' +in the various original documents, forming one section Entitled +``History''; likewise combine any sections Entitled ``Acknowledgements'', +and any sections Entitled ``Dedications''. You must delete all +sections Entitled ``Endorsements.'' + +@item +COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +@item +AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an ``aggregate'' if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +@item +TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled ``Acknowledgements'', +``Dedications'', or ``History'', the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +@item +TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + +@item +FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +@uref{https://www.gnu.org/licenses/}. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +@item +RELICENSING + +``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the +site means any set of copyrightable works thus published on the MMC +site. + +``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +``Incorporate'' means to publish or republish a Document, in whole or +in part, as part of another Document. + +An MMC is ``eligible for relicensing'' if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole +or in part into the MMC, (1) had no cover texts or invariant sections, +and (2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + +@end enumerate + +@page +@heading ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +@smallexample +@group + Copyright (C) @var{year} @var{your name}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. +@end group +@end smallexample + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the ``with@dots{}Texts.''@: line with this: + +@smallexample +@group + with the Invariant Sections being @var{list their titles}, with + the Front-Cover Texts being @var{list}, and with the Back-Cover Texts + being @var{list}. +@end group +@end smallexample + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +@c Local Variables: +@c ispell-local-pdict: "ispell-dict" +@c End: diff --git a/local/recipes/dev/gnu-make/source/doc/make-stds.texi b/local/recipes/dev/gnu-make/source/doc/make-stds.texi new file mode 100644 index 0000000000..b0745a8a3e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make-stds.texi @@ -0,0 +1,1173 @@ +@comment This file is included by both standards.texi and make.texinfo. +@comment It was broken out of standards.texi on 1/6/93 by roland. + +@node Makefile Conventions +@chapter Makefile Conventions +@cindex makefile, conventions for +@cindex conventions for makefiles +@cindex standards for makefiles + +@c Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, +@c 2004, 2005, 2006, 2007, 2008, 2010, 2013, 2014, 2015 +@c 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 +@c or any later version published by the Free Software Foundation; +@c with no Invariant Sections, with no +@c Front-Cover Texts, and with no Back-Cover Texts. +@c A copy of the license is included in the section entitled ``GNU +@c Free Documentation License''. + +This +@ifinfo +node +@end ifinfo +@iftex +@ifset CODESTD +section +@end ifset +@ifclear CODESTD +chapter +@end ifclear +@end iftex +describes conventions for writing the Makefiles for GNU programs. +Using Automake will help you write a Makefile that follows these +conventions. For more information on portable Makefiles, see +@sc{posix} and @ref{Portable Make, Portable Make Programming,, autoconf, +Autoconf}. + + +@menu +* Makefile Basics:: General conventions for Makefiles. +* Utilities in Makefiles:: Utilities to be used in Makefiles. +* Command Variables:: Variables for specifying commands. +* DESTDIR:: Supporting staged installs. +* Directory Variables:: Variables for installation directories. +* Standard Targets:: Standard targets for users. +* Install Command Categories:: Three categories of commands in the @samp{install} + rule: normal, pre-install and post-install. +@end menu + +@node Makefile Basics +@section General Conventions for Makefiles + +Every Makefile should contain this line: + +@example +SHELL = /bin/sh +@end example + +@noindent +to avoid trouble on systems where the @code{SHELL} variable might be +inherited from the environment. (This is never a problem with GNU +@code{make}.) + +Different @code{make} programs have incompatible suffix lists and +implicit rules, and this sometimes creates confusion or misbehavior. So +it is a good idea to set the suffix list explicitly using only the +suffixes you need in the particular Makefile, like this: + +@example +.SUFFIXES: +.SUFFIXES: .c .o +@end example + +@noindent +The first line clears out the suffix list, the second introduces all +suffixes which may be subject to implicit rules in this Makefile. + +Don't assume that @file{.} is in the path for command execution. When +you need to run programs that are a part of your package during the +make, please make sure that it uses @file{./} if the program is built as +part of the make or @file{$(srcdir)/} if the file is an unchanging part +of the source code. Without one of these prefixes, the current search +path is used. + +The distinction between @file{./} (the @dfn{build directory}) and +@file{$(srcdir)/} (the @dfn{source directory}) is important because +users can build in a separate directory using the @samp{--srcdir} option +to @file{configure}. A rule of the form: + +@smallexample +foo.1 : foo.man sedscript + sed -f sedscript foo.man > foo.1 +@end smallexample + +@noindent +will fail when the build directory is not the source directory, because +@file{foo.man} and @file{sedscript} are in the source directory. + +When using GNU @code{make}, relying on @samp{VPATH} to find the source +file will work in the case where there is a single dependency file, +since the @code{make} automatic variable @samp{$<} will represent the +source file wherever it is. (Many versions of @code{make} set @samp{$<} +only in implicit rules.) A Makefile target like + +@smallexample +foo.o : bar.c + $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o +@end smallexample + +@noindent +should instead be written as + +@smallexample +foo.o : bar.c + $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@@ +@end smallexample + +@noindent +in order to allow @samp{VPATH} to work correctly. When the target has +multiple dependencies, using an explicit @samp{$(srcdir)} is the easiest +way to make the rule work well. For example, the target above for +@file{foo.1} is best written as: + +@smallexample +foo.1 : foo.man sedscript + sed -f $(srcdir)/sedscript $(srcdir)/foo.man > $@@ +@end smallexample + +GNU distributions usually contain some files which are not source +files---for example, Info files, and the output from Autoconf, Automake, +Bison or Flex. Since these files normally appear in the source +directory, they should always appear in the source directory, not in the +build directory. So Makefile rules to update them should put the +updated files in the source directory. + +However, if a file does not appear in the distribution, then the +Makefile should not put it in the source directory, because building a +program in ordinary circumstances should not modify the source directory +in any way. + +Try to make the build and installation targets, at least (and all their +subtargets) work correctly with a parallel @code{make}. + +@node Utilities in Makefiles +@section Utilities in Makefiles + +Write the Makefile commands (and any shell scripts, such as +@code{configure}) to run under @code{sh} (both the traditional Bourne +shell and the @sc{posix} shell), not @code{csh}. Don't use any +special features of @code{ksh} or @code{bash}, or @sc{posix} features +not widely supported in traditional Bourne @code{sh}. + +The @code{configure} script and the Makefile rules for building and +installation should not use any utilities directly except these: + +@c dd find +@c gunzip gzip md5sum +@c mkfifo mknod tee uname + +@example +awk cat cmp cp diff echo egrep expr false grep install-info ln ls +mkdir mv printf pwd rm rmdir sed sleep sort tar test touch tr true +@end example + +Compression programs such as @code{gzip} can be used in the +@code{dist} rule. + +Generally, stick to the widely-supported (usually +@sc{posix}-specified) options and features of these programs. For +example, don't use @samp{mkdir -p}, convenient as it may be, because a +few systems don't support it at all and with others, it is not safe +for parallel execution. For a list of known incompatibilities, see +@ref{Portable Shell, Portable Shell Programming,, autoconf, Autoconf}. + + +It is a good idea to avoid creating symbolic links in makefiles, since a +few file systems don't support them. + +The Makefile rules for building and installation can also use compilers +and related programs, but should do so via @code{make} variables so that the +user can substitute alternatives. Here are some of the programs we +mean: + +@example +ar bison cc flex install ld ldconfig lex +make makeinfo ranlib texi2dvi yacc +@end example + +Use the following @code{make} variables to run those programs: + +@example +$(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX) +$(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC) +@end example + +When you use @code{ranlib} or @code{ldconfig}, you should make sure +nothing bad happens if the system does not have the program in question. +Arrange to ignore an error from that command, and print a message before +the command to tell the user that failure of this command does not mean +a problem. (The Autoconf @samp{AC_PROG_RANLIB} macro can help with +this.) + +If you use symbolic links, you should implement a fallback for systems +that don't have symbolic links. + +Additional utilities that can be used via Make variables are: + +@example +chgrp chmod chown mknod +@end example + +It is ok to use other utilities in Makefile portions (or scripts) +intended only for particular systems where you know those utilities +exist. + +@node Command Variables +@section Variables for Specifying Commands + +Makefiles should provide variables for overriding certain commands, options, +and so on. + +In particular, you should run most utility programs via variables. +Thus, if you use Bison, have a variable named @code{BISON} whose default +value is set with @samp{BISON = bison}, and refer to it with +@code{$(BISON)} whenever you need to use Bison. + +File management utilities such as @code{ln}, @code{rm}, @code{mv}, and +so on, need not be referred to through variables in this way, since users +don't need to replace them with other programs. + +Each program-name variable should come with an options variable that is +used to supply options to the program. Append @samp{FLAGS} to the +program-name variable name to get the options variable name---for +example, @code{BISONFLAGS}. (The names @code{CFLAGS} for the C +compiler, @code{YFLAGS} for yacc, and @code{LFLAGS} for lex, are +exceptions to this rule, but we keep them because they are standard.) +Use @code{CPPFLAGS} in any compilation command that runs the +preprocessor, and use @code{LDFLAGS} in any compilation command that +does linking as well as in any direct use of @code{ld}. + +If there are C compiler options that @emph{must} be used for proper +compilation of certain files, do not include them in @code{CFLAGS}. +Users expect to be able to specify @code{CFLAGS} freely themselves. +Instead, arrange to pass the necessary options to the C compiler +independently of @code{CFLAGS}, by writing them explicitly in the +compilation commands or by defining an implicit rule, like this: + +@smallexample +CFLAGS = -g +ALL_CFLAGS = -I. $(CFLAGS) +.c.o: + $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< +@end smallexample + +Do include the @samp{-g} option in @code{CFLAGS}, because that is not +@emph{required} for proper compilation. You can consider it a default +that is only recommended. If the package is set up so that it is +compiled with GCC by default, then you might as well include @samp{-O} +in the default value of @code{CFLAGS} as well. + +Put @code{CFLAGS} last in the compilation command, after other variables +containing compiler options, so the user can use @code{CFLAGS} to +override the others. + +@code{CFLAGS} should be used in every invocation of the C compiler, +both those which do compilation and those which do linking. + +Every Makefile should define the variable @code{INSTALL}, which is the +basic command for installing a file into the system. + +Every Makefile should also define the variables @code{INSTALL_PROGRAM} +and @code{INSTALL_DATA}. (The default for @code{INSTALL_PROGRAM} should +be @code{$(INSTALL)}; the default for @code{INSTALL_DATA} should be +@code{$@{INSTALL@} -m 644}.) Then it should use those variables as the +commands for actual installation, for executables and non-executables +respectively. Minimal use of these variables is as follows: + +@example +$(INSTALL_PROGRAM) foo $(bindir)/foo +$(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a +@end example + +However, it is preferable to support a @code{DESTDIR} prefix on the +target files, as explained in the next section. + +It is acceptable, but not required, to install multiple files in one +command, with the final argument being a directory, as in: + +@example +$(INSTALL_PROGRAM) foo bar baz $(bindir) +@end example + + +@node DESTDIR +@section @code{DESTDIR}: Support for Staged Installs + +@vindex DESTDIR +@cindex staged installs +@cindex installations, staged + +@code{DESTDIR} is a variable prepended to each installed target file, +like this: + +@example +$(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo +$(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a +@end example + +The @code{DESTDIR} variable is specified by the user on the @code{make} +command line as an absolute file name. For example: + +@example +make DESTDIR=/tmp/stage install +@end example + +@noindent +@code{DESTDIR} should be supported only in the @code{install*} and +@code{uninstall*} targets, as those are the only targets where it is +useful. + +If your installation step would normally install +@file{/usr/local/bin/foo} and @file{/usr/@/local/@/lib/@/libfoo.a}, then an +installation invoked as in the example above would install +@file{/tmp/stage/usr/local/bin/foo} and +@file{/tmp/stage/usr/local/lib/libfoo.a} instead. + +Prepending the variable @code{DESTDIR} to each target in this way +provides for @dfn{staged installs}, where the installed files are not +placed directly into their expected location but are instead copied +into a temporary location (@code{DESTDIR}). However, installed files +maintain their relative directory structure and any embedded file names +will not be modified. + +You should not set the value of @code{DESTDIR} in your @file{Makefile} +at all; then the files are installed into their expected locations by +default. Also, specifying @code{DESTDIR} should not change the +operation of the software in any way, so its value should not be +included in any file contents. + +@code{DESTDIR} support is commonly used in package creation. It is +also helpful to users who want to understand what a given package will +install where, and to allow users who don't normally have permissions +to install into protected areas to build and install before gaining +those permissions. Finally, it can be useful with tools such as +@code{stow}, where code is installed in one place but made to appear +to be installed somewhere else using symbolic links or special mount +operations. So, we strongly recommend GNU packages support +@code{DESTDIR}, though it is not an absolute requirement. + + +@node Directory Variables +@section Variables for Installation Directories + +Installation directories should always be named by variables, so it is +easy to install in a nonstandard place. The standard names for these +variables and the values they should have in GNU packages are +described below. They are based on a standard file system layout; +variants of it are used in GNU/Linux and other modern operating +systems. + +Installers are expected to override these values when calling +@command{make} (e.g., @kbd{make prefix=/usr install}) or +@command{configure} (e.g., @kbd{configure --prefix=/usr}). GNU +packages should not try to guess which value should be appropriate for +these variables on the system they are being installed onto: use the +default settings specified here so that all GNU packages behave +identically, allowing the installer to achieve any desired layout. + +@cindex directories, creating installation +@cindex installation directories, creating +All installation directories, and their parent directories, should be +created (if necessary) before they are installed into. + +These first two variables set the root for the installation. All the +other installation directories should be subdirectories of one of +these two, and nothing should be directly installed into these two +directories. + +@table @code +@item prefix +@vindex prefix +A prefix used in constructing the default values of the variables listed +below. The default value of @code{prefix} should be @file{/usr/local}. +When building the complete GNU system, the prefix will be empty and +@file{/usr} will be a symbolic link to @file{/}. +(If you are using Autoconf, write it as @samp{@@prefix@@}.) + +Running @samp{make install} with a different value of @code{prefix} from +the one used to build the program should @emph{not} recompile the +program. + +@item exec_prefix +@vindex exec_prefix +A prefix used in constructing the default values of some of the +variables listed below. The default value of @code{exec_prefix} should +be @code{$(prefix)}. +(If you are using Autoconf, write it as @samp{@@exec_prefix@@}.) + +Generally, @code{$(exec_prefix)} is used for directories that contain +machine-specific files (such as executables and subroutine libraries), +while @code{$(prefix)} is used directly for other directories. + +Running @samp{make install} with a different value of @code{exec_prefix} +from the one used to build the program should @emph{not} recompile the +program. +@end table + +Executable programs are installed in one of the following directories. + +@table @code +@item bindir +@vindex bindir +The directory for installing executable programs that users can run. +This should normally be @file{/usr/local/bin}, but write it as +@file{$(exec_prefix)/bin}. +(If you are using Autoconf, write it as @samp{@@bindir@@}.) + +@item sbindir +@vindex sbindir +The directory for installing executable programs that can be run from +the shell, but are only generally useful to system administrators. This +should normally be @file{/usr/local/sbin}, but write it as +@file{$(exec_prefix)/sbin}. +(If you are using Autoconf, write it as @samp{@@sbindir@@}.) + +@item libexecdir +@vindex libexecdir +@comment This paragraph adjusted to avoid overfull hbox --roland 5jul94 +The directory for installing executable programs to be run by other +programs rather than by users. This directory should normally be +@file{/usr/local/libexec}, but write it as @file{$(exec_prefix)/libexec}. +(If you are using Autoconf, write it as @samp{@@libexecdir@@}.) + +The definition of @samp{libexecdir} is the same for all packages, so +you should install your data in a subdirectory thereof. Most packages +install their data under @file{$(libexecdir)/@var{package-name}/}, +possibly within additional subdirectories thereof, such as +@file{$(libexecdir)/@var{package-name}/@var{machine}/@var{version}}. +@end table + +Data files used by the program during its execution are divided into +categories in two ways. + +@itemize @bullet +@item +Some files are normally modified by programs; others are never normally +modified (though users may edit some of these). + +@item +Some files are architecture-independent and can be shared by all +machines at a site; some are architecture-dependent and can be shared +only by machines of the same kind and operating system; others may never +be shared between two machines. +@end itemize + +This makes for six different possibilities. However, we want to +discourage the use of architecture-dependent files, aside from object +files and libraries. It is much cleaner to make other data files +architecture-independent, and it is generally not hard. + +Here are the variables Makefiles should use to specify directories +to put these various kinds of files in: + +@table @samp +@item datarootdir +The root of the directory tree for read-only architecture-independent +data files. This should normally be @file{/usr/local/share}, but +write it as @file{$(prefix)/share}. (If you are using Autoconf, write +it as @samp{@@datarootdir@@}.) @samp{datadir}'s default value is +based on this variable; so are @samp{infodir}, @samp{mandir}, and +others. + +@item datadir +The directory for installing idiosyncratic read-only +architecture-independent data files for this program. This is usually +the same place as @samp{datarootdir}, but we use the two separate +variables so that you can move these program-specific files without +altering the location for Info files, man pages, etc. + +@c raggedright (not until next Texinfo release) +This should normally be @file{/usr/local/share}, but write it as +@file{$(datarootdir)}. (If you are using Autoconf, write it as +@samp{@@datadir@@}.) +@c end raggedright + +The definition of @samp{datadir} is the same for all packages, so you +should install your data in a subdirectory thereof. Most packages +install their data under @file{$(datadir)/@var{package-name}/}. + +@item sysconfdir +The directory for installing read-only data files that pertain to a +single machine--that is to say, files for configuring a host. Mailer +and network configuration files, @file{/etc/passwd}, and so forth belong +here. All the files in this directory should be ordinary ASCII text +files. This directory should normally be @file{/usr/local/etc}, but +write it as @file{$(prefix)/etc}. +(If you are using Autoconf, write it as @samp{@@sysconfdir@@}.) + +Do not install executables here in this directory (they probably belong +in @file{$(libexecdir)} or @file{$(sbindir)}). Also do not install +files that are modified in the normal course of their use (programs +whose purpose is to change the configuration of the system excluded). +Those probably belong in @file{$(localstatedir)}. + +@item sharedstatedir +The directory for installing architecture-independent data files which +the programs modify while they run. This should normally be +@file{/usr/local/com}, but write it as @file{$(prefix)/com}. +(If you are using Autoconf, write it as @samp{@@sharedstatedir@@}.) + +@item localstatedir +The directory for installing data files which the programs modify while +they run, and that pertain to one specific machine. Users should never +need to modify files in this directory to configure the package's +operation; put such configuration information in separate files that go +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 +types of files, if your program has them. Every GNU package should +have Info files, so every program needs @samp{infodir}, but not all +need @samp{libdir} or @samp{lispdir}. + +@table @samp +@item includedir +The directory for installing header files to be included by user +programs with the C @samp{#include} preprocessor directive. This +should normally be @file{/usr/local/include}, but write it as +@file{$(prefix)/include}. +(If you are using Autoconf, write it as @samp{@@includedir@@}.) + +Most compilers other than GCC do not look for header files in directory +@file{/usr/local/include}. So installing the header files this way is +only useful with GCC@. Sometimes this is not a problem because some +libraries are only really intended to work with GCC@. But some libraries +are intended to work with other compilers. They should install their +header files in two places, one specified by @code{includedir} and one +specified by @code{oldincludedir}. + +@item oldincludedir +The directory for installing @samp{#include} header files for use with +compilers other than GCC@. This should normally be @file{/usr/include}. +(If you are using Autoconf, you can write it as @samp{@@oldincludedir@@}.) + +The Makefile commands should check whether the value of +@code{oldincludedir} is empty. If it is, they should not try to use +it; they should cancel the second installation of the header files. + +A package should not replace an existing header in this directory unless +the header came from the same package. Thus, if your Foo package +provides a header file @file{foo.h}, then it should install the header +file in the @code{oldincludedir} directory if either (1) there is no +@file{foo.h} there or (2) the @file{foo.h} that exists came from the Foo +package. + +To tell whether @file{foo.h} came from the Foo package, put a magic +string in the file---part of a comment---and @code{grep} for that string. + +@item docdir +The directory for installing documentation files (other than Info) for +this package. By default, it should be +@file{/usr/local/share/doc/@var{yourpkg}}, but it should be written as +@file{$(datarootdir)/doc/@var{yourpkg}}. (If you are using Autoconf, +write it as @samp{@@docdir@@}.) The @var{yourpkg} subdirectory, which +may include a version number, prevents collisions among files with +common names, such as @file{README}. + +@item infodir +The directory for installing the Info files for this package. By +default, it should be @file{/usr/local/share/info}, but it should be +written as @file{$(datarootdir)/info}. (If you are using Autoconf, +write it as @samp{@@infodir@@}.) @code{infodir} is separate from +@code{docdir} for compatibility with existing practice. + +@item htmldir +@itemx dvidir +@itemx pdfdir +@itemx psdir +Directories for installing documentation files in the particular +format. They should all be set to @code{$(docdir)} by default. (If +you are using Autoconf, write them as @samp{@@htmldir@@}, +@samp{@@dvidir@@}, etc.) Packages which supply several translations +of their documentation should install them in +@samp{$(htmldir)/}@var{ll}, @samp{$(pdfdir)/}@var{ll}, etc. where +@var{ll} is a locale abbreviation such as @samp{en} or @samp{pt_BR}. + +@item libdir +The directory for object files and libraries of object code. Do not +install executables here, they probably ought to go in @file{$(libexecdir)} +instead. The value of @code{libdir} should normally be +@file{/usr/local/lib}, but write it as @file{$(exec_prefix)/lib}. +(If you are using Autoconf, write it as @samp{@@libdir@@}.) + +@item lispdir +The directory for installing any Emacs Lisp files in this package. By +default, it should be @file{/usr/local/share/emacs/site-lisp}, but it +should be written as @file{$(datarootdir)/emacs/site-lisp}. + +If you are using Autoconf, write the default as @samp{@@lispdir@@}. +In order to make @samp{@@lispdir@@} work, you need the following lines +in your @file{configure.ac} file: + +@example +lispdir='$@{datarootdir@}/emacs/site-lisp' +AC_SUBST(lispdir) +@end example + +@item localedir +The directory for installing locale-specific message catalogs for this +package. By default, it should be @file{/usr/local/share/locale}, but +it should be written as @file{$(datarootdir)/locale}. (If you are +using Autoconf, write it as @samp{@@localedir@@}.) This directory +usually has a subdirectory per locale. +@end table + +Unix-style man pages are installed in one of the following: + +@table @samp +@item mandir +The top-level directory for installing the man pages (if any) for this +package. It will normally be @file{/usr/local/share/man}, but you +should write it as @file{$(datarootdir)/man}. (If you are using +Autoconf, write it as @samp{@@mandir@@}.) + +@item man1dir +The directory for installing section 1 man pages. Write it as +@file{$(mandir)/man1}. +@item man2dir +The directory for installing section 2 man pages. Write it as +@file{$(mandir)/man2} +@item @dots{} + +@strong{Don't make the primary documentation for any GNU software be a +man page. Write a manual in Texinfo instead. Man pages are just for +the sake of people running GNU software on Unix, which is a secondary +application only.} + +@item manext +The file name extension for the installed man page. This should contain +a period followed by the appropriate digit; it should normally be @samp{.1}. + +@item man1ext +The file name extension for installed section 1 man pages. +@item man2ext +The file name extension for installed section 2 man pages. +@item @dots{} +Use these names instead of @samp{manext} if the package needs to install man +pages in more than one section of the manual. +@end table + +And finally, you should set the following variable: + +@table @samp +@item srcdir +The directory for the sources being compiled. The value of this +variable is normally inserted by the @code{configure} shell script. +(If you are using Autoconf, use @samp{srcdir = @@srcdir@@}.) +@end table + +For example: + +@smallexample +@c I have changed some of the comments here slightly to fix an overfull +@c hbox, so the make manual can format correctly. --roland +# Common prefix for installation directories. +# NOTE: This directory must exist when you start the install. +prefix = /usr/local +datarootdir = $(prefix)/share +datadir = $(datarootdir) +exec_prefix = $(prefix) +# Where to put the executable for the command 'gcc'. +bindir = $(exec_prefix)/bin +# Where to put the directories used by the compiler. +libexecdir = $(exec_prefix)/libexec +# Where to put the Info files. +infodir = $(datarootdir)/info +@end smallexample + +If your program installs a large number of files into one of the +standard user-specified directories, it might be useful to group them +into a subdirectory particular to that program. If you do this, you +should write the @code{install} rule to create these subdirectories. + +Do not expect the user to include the subdirectory name in the value of +any of the variables listed above. The idea of having a uniform set of +variable names for installation directories is to enable the user to +specify the exact same values for several different GNU packages. In +order for this to be useful, all the packages must be designed so that +they will work sensibly when the user does so. + +At times, not all of these variables may be implemented in the current +release of Autoconf and/or Automake; but as of Autoconf@tie{}2.60, we +believe all of them are. When any are missing, the descriptions here +serve as specifications for what Autoconf will implement. As a +programmer, you can either use a development version of Autoconf or +avoid using these variables until a stable release is made which +supports them. + + +@node Standard Targets +@section Standard Targets for Users + +All GNU programs should have the following targets in their Makefiles: + +@table @samp +@item all +Compile the entire program. This should be the default target. This +target need not rebuild any documentation files; Info files should +normally be included in the distribution, and DVI (and other +documentation format) files should be made only when explicitly asked +for. + +By default, the Make rules should compile and link with @samp{-g}, so +that executable programs have debugging symbols. 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 +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. 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 +@samp{make all} has just been done. This is convenient for building the +program under one user name and installing it under another. + +The commands should create all the directories in which files are to be +installed, if they don't already exist. This includes the directories +specified as the values of the variables @code{prefix} and +@code{exec_prefix}, as well as all subdirectories that are needed. +One way to do this is by means of an @code{installdirs} target +as described below. + +Use @samp{-} before any command for installing a man page, so that +@code{make} will ignore any errors. This is in case there are systems +that don't have the Unix man page documentation system installed. + +The way to install Info files is to copy them into @file{$(infodir)} +with @code{$(INSTALL_DATA)} (@pxref{Command Variables}), and then run +the @code{install-info} program if it is present. @code{install-info} +is a program that edits the Info @file{dir} file to add or update the +menu entry for the given Info file; it is part of the Texinfo package. + +Here is a sample rule to install an Info file that also tries to +handle some additional situations, such as @code{install-info} not +being present. + +@comment This example has been carefully formatted for the Make manual. +@comment Please do not reformat it without talking to bug-make@gnu.org. +@smallexample +do-install-info: foo.info installdirs + $(NORMAL_INSTALL) +# Prefer an info file in . to one in srcdir. + if test -f foo.info; then d=.; \ + else d="$(srcdir)"; fi; \ + $(INSTALL_DATA) $$d/foo.info \ + "$(DESTDIR)$(infodir)/foo.info" +# Run install-info only if it exists. +# Use 'if' instead of just prepending '-' to the +# line so we notice real errors from install-info. +# Use '$(SHELL) -c' because some shells do not +# fail gracefully when there is an unknown command. + $(POST_INSTALL) + if $(SHELL) -c 'install-info --version' \ + >/dev/null 2>&1; then \ + install-info --dir-file="$(DESTDIR)$(infodir)/dir" \ + "$(DESTDIR)$(infodir)/foo.info"; \ + else true; fi +@end smallexample + +When writing the @code{install} target, you must classify all the +commands into three categories: normal ones, @dfn{pre-installation} +commands and @dfn{post-installation} commands. @xref{Install Command +Categories}. + +@item install-html +@itemx install-dvi +@itemx install-pdf +@itemx install-ps +These targets install documentation in formats other than Info; +they're intended to be called explicitly by the person installing the +package, if that format is desired. GNU prefers Info files, so these +must be installed by the @code{install} target. + +When you have many documentation files to install, we recommend that +you avoid collisions and clutter by arranging for these targets to +install in subdirectories of the appropriate installation directory, +such as @code{htmldir}. As one example, if your package has multiple +manuals, and you wish to install HTML documentation with many files +(such as the ``split'' mode output by @code{makeinfo --html}), you'll +certainly want to use subdirectories, or two nodes with the same name +in different manuals will overwrite each other. + +Please make these @code{install-@var{format}} targets invoke the +commands for the @var{format} target, for example, by making +@var{format} a dependency. + +@item uninstall +Delete all the installed files---the copies that the @samp{install} +and @samp{install-*} targets create. + +This rule should not modify the directories where compilation is done, +only the directories where files are installed. + +The uninstallation commands are divided into three categories, just like +the installation commands. @xref{Install Command Categories}. + +@item install-strip +Like @code{install}, but strip the executable files while installing +them. In simple cases, this target can use the @code{install} target in +a simple way: + +@smallexample +install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ + install +@end smallexample + +But if the package installs scripts as well as real executables, the +@code{install-strip} target can't just refer to the @code{install} +target; it has to strip the executables but not the scripts. + +@code{install-strip} should not strip the executables in the build +directory which are being copied for installation. It should only strip +the copies that are installed. + +Normally we do not recommend stripping an executable unless you are sure +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. + +@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 +record the configuration. Also preserve files that could be made by +building, but normally aren't because the distribution comes with +them. There is no need to delete parent directories that were created +with @samp{mkdir -p}, since they could have existed anyway. + +Delete @file{.dvi} files here if they are not part of the distribution. + +@item distclean +Delete all files in the current directory (or created by this +makefile) that are created by configuring or building the program. If +you have unpacked the source and built the program without creating +any other files, @samp{make distclean} should leave only the files +that were in the distribution. However, there is no need to delete +parent directories that were created with @samp{mkdir -p}, since they +could have existed anyway. + +@item mostlyclean +Like @samp{clean}, but may refrain from deleting a few files that people +normally don't want to recompile. For example, the @samp{mostlyclean} +target for GCC does not delete @file{libgcc.a}, because recompiling it +is rarely necessary and takes a lot of time. + +@item maintainer-clean +Delete almost everything that can be reconstructed with this Makefile. +This typically includes everything deleted by @code{distclean}, plus +more: C source files produced by Bison, tags tables, Info files, and +so on. + +The reason we say ``almost everything'' is that running the command +@samp{make maintainer-clean} should not delete @file{configure} even +if @file{configure} can be remade using a rule in the Makefile. More +generally, @samp{make maintainer-clean} should not delete anything +that needs to exist in order to run @file{configure} and then begin to +build the program. Also, there is no need to delete parent +directories that were created with @samp{mkdir -p}, since they could +have existed anyway. These are the only exceptions; +@code{maintainer-clean} should delete everything else that can be +rebuilt. + +The @samp{maintainer-clean} target is intended to be used by a maintainer of +the package, not by ordinary users. You may need special tools to +reconstruct some of the files that @samp{make maintainer-clean} deletes. +Since these files are normally included in the distribution, we don't +take care to make them easy to reconstruct. If you find you need to +unpack the full distribution again, don't blame us. + +To help make users aware of this, the commands for the special +@code{maintainer-clean} target should start with these two: + +@smallexample +@@echo 'This command is intended for maintainers to use; it' +@@echo 'deletes files that may need special tools to rebuild.' +@end smallexample + +@item TAGS +Update a tags table for this program. +@c ADR: how? + +@item info +Generate any Info files needed. The best way to write the rules is as +follows: + +@smallexample +info: foo.info + +foo.info: foo.texi chap1.texi chap2.texi + $(MAKEINFO) $(srcdir)/foo.texi +@end smallexample + +@noindent +You must define the variable @code{MAKEINFO} in the Makefile. It should +run the @code{makeinfo} program, which is part of the Texinfo +distribution. + +Normally a GNU distribution comes with Info files, and that means the +Info files are present in the source directory. Therefore, the Make +rule for an info file should update it in the source directory. When +users build the package, ordinarily Make will not update the Info files +because they will already be up to date. + +@item dvi +@itemx html +@itemx pdf +@itemx ps +Generate documentation files in the given format. These targets +should always exist, but any or all can be a no-op if the given output +format cannot be generated. These targets should not be dependencies +of the @code{all} target; the user must manually invoke them. + +Here's an example rule for generating DVI files from Texinfo: + +@smallexample +dvi: foo.dvi + +foo.dvi: foo.texi chap1.texi chap2.texi + $(TEXI2DVI) $(srcdir)/foo.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. (@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: + +@smallexample +html: foo.html + +foo.html: foo.texi chap1.texi chap2.texi + $(TEXI2HTML) $(srcdir)/foo.texi +@end smallexample + +@noindent +Again, you would define the variable @code{TEXI2HTML} in the Makefile; +for example, it might run @code{makeinfo --no-split --html} +(@command{makeinfo} is part of the Texinfo distribution). + +@item dist +Create a distribution tar file for this program. The tar file should be +set up so that the file names in the tar file start with a subdirectory +name which is the name of the package it is a distribution for. This +name can include the version number. + +For example, the distribution tar file of GCC version 1.40 unpacks into +a subdirectory named @file{gcc-1.40}. + +The easiest way to do this is to create a subdirectory appropriately +named, use @code{ln} or @code{cp} to install the proper files in it, and +then @code{tar} that subdirectory. + +Compress the tar file with @code{gzip}. For example, the actual +distribution file for GCC version 1.40 is called @file{gcc-1.40.tar.gz}. +It is ok to support other free compression formats as well. + +The @code{dist} target should explicitly depend on all non-source files +that are in the distribution, to make sure they are up to date in the +distribution. +@ifset CODESTD +@xref{Releases, , Making Releases}. +@end ifset +@ifclear CODESTD +@xref{Releases, , Making Releases, standards, GNU Coding Standards}. +@end ifclear + +@item check +Perform self-tests (if any). The user must build the program before +running the tests, but need not install the program; you should write +the self-tests so that they work when the program is built but not +installed. +@end table + +The following targets are suggested as conventional names, for programs +in which they are useful. + +@table @code +@item installcheck +Perform installation tests (if any). The user must build and install +the program before running the tests. You should not assume that +@file{$(bindir)} is in the search path. + +@item installdirs +It's useful to add a target named @samp{installdirs} to create the +directories where files are installed, and their parent directories. +There is a script called @file{mkinstalldirs} which is convenient for +this; you can find it in the Gnulib package. +You can use a rule like this: + +@comment This has been carefully formatted to look decent in the Make manual. +@comment Please be sure not to make it extend any further to the right.--roland +@smallexample +# Make sure all installation directories (e.g. $(bindir)) +# actually exist by making them if necessary. +installdirs: mkinstalldirs + $(srcdir)/mkinstalldirs $(bindir) $(datadir) \ + $(libdir) $(infodir) \ + $(mandir) +@end smallexample + +@noindent +or, if you wish to support @env{DESTDIR} (strongly encouraged), + +@smallexample +# Make sure all installation directories (e.g. $(bindir)) +# actually exist by making them if necessary. +installdirs: mkinstalldirs + $(srcdir)/mkinstalldirs \ + $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \ + $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \ + $(DESTDIR)$(mandir) +@end smallexample + +This rule should not modify the directories where compilation is done. +It should do nothing but create installation directories. +@end table + +@node Install Command Categories +@section Install Command Categories + +@cindex pre-installation commands +@cindex post-installation commands +When writing the @code{install} target, you must classify all the +commands into three categories: normal ones, @dfn{pre-installation} +commands and @dfn{post-installation} commands. + +Normal commands move files into their proper places, and set their +modes. They may not alter any files except the ones that come entirely +from the package they belong to. + +Pre-installation and post-installation commands may alter other files; +in particular, they can edit global configuration files or data bases. + +Pre-installation commands are typically executed before the normal +commands, and post-installation commands are typically run after the +normal commands. + +The most common use for a post-installation command is to run +@code{install-info}. This cannot be done with a normal command, since +it alters a file (the Info directory) which does not come entirely and +solely from the package being installed. It is a post-installation +command because it needs to be done after the normal command which +installs the package's Info files. + +Most programs don't need any pre-installation commands, but we have the +feature just in case it is needed. + +To classify the commands in the @code{install} rule into these three +categories, insert @dfn{category lines} among them. A category line +specifies the category for the commands that follow. + +A category line consists of a tab and a reference to a special Make +variable, plus an optional comment at the end. There are three +variables you can use, one for each category; the variable name +specifies the category. Category lines are no-ops in ordinary execution +because these three Make variables are normally undefined (and you +@emph{should not} define them in the makefile). + +Here are the three possible category lines, each with a comment that +explains what it means: + +@smallexample + $(PRE_INSTALL) # @r{Pre-install commands follow.} + $(POST_INSTALL) # @r{Post-install commands follow.} + $(NORMAL_INSTALL) # @r{Normal commands follow.} +@end smallexample + +If you don't use a category line at the beginning of the @code{install} +rule, all the commands are classified as normal until the first category +line. If you don't use any category lines, all the commands are +classified as normal. + +These are the category lines for @code{uninstall}: + +@smallexample + $(PRE_UNINSTALL) # @r{Pre-uninstall commands follow.} + $(POST_UNINSTALL) # @r{Post-uninstall commands follow.} + $(NORMAL_UNINSTALL) # @r{Normal commands follow.} +@end smallexample + +Typically, a pre-uninstall command would be used for deleting entries +from the Info directory. + +If the @code{install} or @code{uninstall} target has any dependencies +which act as subroutines of installation, then you should start +@emph{each} dependency's commands with a category line, and start the +main target's commands with a category line also. This way, you can +ensure that each command is placed in the right category regardless of +which of the dependencies actually run. + +Pre-installation and post-installation commands should not run any +programs except for these: + +@example +[ basename bash cat chgrp chmod chown cmp cp dd diff echo +egrep expand expr false fgrep find getopt grep gunzip gzip +hostname install install-info kill ldconfig ln ls md5sum +mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee +test touch true uname xargs yes +@end example + +@cindex binary packages +The reason for distinguishing the commands in this way is for the sake +of making binary packages. Typically a binary package contains all the +executables and other files that need to be installed, and has its own +method of installing them---so it does not need to run the normal +installation commands. But installing the binary package does need to +execute the pre-installation and post-installation commands. + +Programs to build binary packages work by extracting the +pre-installation and post-installation commands. Here is one way of +extracting the pre-installation commands (the @option{-s} option to +@command{make} is needed to silence messages about entering +subdirectories): + +@smallexample +make -s -n install -o all \ + PRE_INSTALL=pre-install \ + POST_INSTALL=post-install \ + NORMAL_INSTALL=normal-install \ + | gawk -f pre-install.awk +@end smallexample + +@noindent +where the file @file{pre-install.awk} could contain this: + +@smallexample +$0 ~ /^(normal-install|post-install)[ \t]*$/ @{on = 0@} +on @{print $0@} +$0 ~ /^pre-install[ \t]*$/ @{on = 1@} +@end smallexample diff --git a/local/recipes/dev/gnu-make/source/doc/make.1 b/local/recipes/dev/gnu-make/source/doc/make.1 new file mode 100644 index 0000000000..0fd0104d97 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make.1 @@ -0,0 +1,416 @@ +.TH MAKE 1 "31 May 2022" "GNU" "User Commands" +.SH NAME +make \- GNU make utility to maintain groups of programs +.SH SYNOPSIS +.B make +[\fIOPTION\fR]... [\fITARGET\fR]... +.SH DESCRIPTION +.LP +The +.I make +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, +.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 +.BR make , +you must write a file called the +.I makefile +that describes the relationships among files in your program, and provides +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: +.sp 1 +.RS +.B make +.RE +.sp 1 +suffices to perform all necessary recompilations. +The +.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 +.B make +executes commands in the +.I makefile +to update one or more +.IR targets , +where +.I target +is typically a program. +If no +.B \-f +option is present, +.B make +will look for the makefiles +.IR GNUmakefile , +.IR makefile , +and +.IR Makefile , +in that order. +.LP +Normally you should call your makefile either +.I makefile +or +.IR Makefile . +(We recommend +.I Makefile +because it appears prominently near the beginning of a directory +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 +.BR make , +and will not be understood by other versions of +.BR make . +If +.I makefile +is '\-', the standard input is read. +.LP +.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 +\fB\-b\fR, \fB\-m\fR +These options are ignored for compatibility with other versions of +.BR make . +.TP 0.5i +\fB\-B\fR, \fB\-\-always\-make\fR +Unconditionally make all targets. +.TP 0.5i +\fB\-C\fR \fIdir\fR, \fB\-\-directory\fR=\fIdir\fR +Change to directory +.I dir +before reading the makefiles or doing anything else. +If multiple +.B \-C +options are specified, each is interpreted relative to the +previous one: +.BR "\-C " / +.BR "\-C " etc +is equivalent to +.BR "\-C " /etc. +This is typically used with recursive invocations of +.BR make . +.TP 0.5i +.B \-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 +.B make +decides what to do. +.TP 0.5i +.BI \-\-debug "[=FLAGS]" +Print debugging information in addition to normal processing. +If the +.I FLAGS +are omitted, then the behavior is the same as if +.B \-d +was specified. +.I FLAGS +may be any or all of the following names, comma- or space-separated. Only the +first character is significant: the rest may be omitted: +.I all +for all debugging output (same as using +.BR \-d ), +.I basic +for basic debugging, +.I verbose +for more verbose basic debugging, +.I implicit +for showing implicit rule search operations, +.I jobs +for details on invocation of commands, +.I makefile +for debugging while remaking makefiles, +.I print +shows all recipes that are run even if they are silent, and +.I why +shows the reason +.BR make +decided to rebuild each target. Use +.I none +to disable all previous debugging flags. +.TP 0.5i +\fB\-e\fR, \fB\-\-environment\-overrides\fR +Give variables taken from the environment precedence over variables +from makefiles. +.TP 0.5i +\fB\-E\fR \fIstring\fR, \fB\-\-eval\fR \fIstring\fR +Interpret \fIstring\fR using the \fBeval\fR function, before parsing any +makefiles. +.TP 0.5i +\fB\-f\fR \fIfile\fR, \fB\-\-file\fR=\fIfile\fR, \fB\-\-makefile\fR=\fIFILE\fR +Use +.I file +as a makefile. +.TP 0.5i +\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 +Specifies a directory +.I dir +to search for included makefiles. +If several +.B \-I +options are used to specify several directories, the directories are +searched in the order specified. +Unlike the arguments to other flags of +.BR make , +directories given with +.B \-I +flags may come directly after the flag: +.BI \-I dir +is allowed, as well as +.B \-I +.IR dir . +This syntax is allowed for compatibility with the C +preprocessor's +.B \-I +flag. +.TP 0.5i +\fB\-j\fR [\fIjobs\fR], \fB\-\-jobs\fR[=\fIjobs\fR] +Specifies the number of +.I jobs +(commands) to run simultaneously. +If there is more than one +.B \-j +option, the last one is effective. +If the +.B \-j +option is given without an argument, +.BR make +will not limit the number of jobs that can run simultaneously. +.TP 0.5i +\fB\--jobserver-style=\fR\fIstyle\fR +The style of jobserver to use. The +.I style +may be one of +.BR fifo , +.BR pipe , +or +.B sem +(Windows only). +.TP 0.5i +\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 +all the same. +.TP 0.5i +\fB\-l\fR [\fIload\fR], \fB\-\-load\-average\fR[=\fIload\fR] +Specifies that no new jobs (commands) should be started if there are +others jobs running and the load average is at least +.I load +(a floating-point number). +With no argument, removes a previous load limit. +.TP 0.5i +\fB\-L\fR, \fB\-\-check\-symlink\-times\fR +Use the latest mtime between symlinks and target. +.TP 0.5i +\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 +\fB\-o\fR \fIfile\fR, \fB\-\-old\-file\fR=\fIfile\fR, \fB\-\-assume\-old\fR=\fIfile\fR +Do not remake the file +.I file +even if it is older than its dependencies, and do not remake anything +on account of changes in +.IR file . +Essentially the file is treated as very old and its rules are ignored. +.TP 0.5i +\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. +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 +.IR "make \-p \-f/dev/null" . +.TP 0.5i +\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 +\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 +\fB\-R\fR, \fB\-\-no\-builtin\-variables\fR +Don't define any built\-in variables. +.TP 0.5i +\fB\-s\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR +Silent operation; do not print the commands as they are executed. +.TP 0.5i +.B \-\-no\-silent +Cancel the effect of the \fB\-s\fR option. +.TP 0.5i +\fB\-S\fR, \fB\-\-no\-keep\-going\fR, \fB\-\-stop\fR +Cancel the effect of the +.B \-k +option. +.TP 0.5i +\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 +.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 +\fB\-v\fR, \fB\-\-version\fR +Print the version of the +.B make +program plus a copyright, a list of authors and a notice that there +is no warranty. +.TP 0.5i +\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 +.B make +commands. +.TP 0.5i +.B \-\-no\-print\-directory +Turn off +.BR \-w , +even if it was turned on implicitly. +.TP 0.5i +.BI \-\-shuffle "[=MODE]" +Enable shuffling of goal and prerequisite ordering. +.I MODE +is one of +.I none +to disable shuffle mode, +.I random +to shuffle prerequisites in random order, +.I reverse +to consider prerequisites in reverse order, or an integer +.I +which enables +.I random +mode with a specific +.I seed +value. If +.I MODE +is omitted the default is +.IR random . +.TP 0.5i +\fB\-W\fR \fIfile\fR, \fB\-\-what\-if\fR=\fIfile\fR, \fB\-\-new\-file\fR=\fIfile\fR, \fB\-\-assume\-new\fR=\fIfile\fR +Pretend that the target +.I file +has just been modified. +When used with the +.B \-n +flag, this shows you what would happen if you were to modify that file. +Without +.BR \-n , +it is almost the same as running a +.I touch +command on the given file before running +.BR make , +except that the modification time is changed only in the imagination of +.BR make . +.TP 0.5i +.B \-\-warn\-undefined\-variables +Warn when an undefined variable is referenced. +.SH "EXIT STATUS" +GNU +.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 +.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" +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 +.IR "The GNU Make Manual" . +.SH AUTHOR +This manual page contributed by Dennis Morse of Stanford University. +Further updates contributed by Mike Frysinger. It has been reworked by Roland +McGrath. Maintained by Paul Smith. +.SH "COPYRIGHT" +Copyright \(co 1992-1993, 1996-2022 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 +Foundation; either version 3 of the License, or (at your option) any later +version. +.LP +GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License for more details. +.LP +You should have received a copy of the GNU General Public License along with +this program. If not, see +.IR https://www.gnu.org/licenses/ . diff --git a/local/recipes/dev/gnu-make/source/doc/make.info b/local/recipes/dev/gnu-make/source/doc/make.info new file mode 100644 index 0000000000..2125e16bc3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make.info @@ -0,0 +1,221 @@ +This is make.info, produced by makeinfo version 6.7 from make.texi. + +This file documents the GNU 'make' utility, which determines +automatically which pieces of a large program need to be recompiled, and +issues the commands to recompile them. + + This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make +Manual', for GNU 'make' version 4.4. + + Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, +1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, +2022 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.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 + "GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: "You have the freedom to copy and + modify this GNU manual. Buying copies from the FSF supports it in + developing GNU and promoting software freedom." +INFO-DIR-SECTION Software development +START-INFO-DIR-ENTRY +* Make: (make). Remake files automatically. +END-INFO-DIR-ENTRY + + +Indirect: +make.info-1: 1391 +make.info-2: 302239 +make.info-3: 626899 + +Tag Table: +(Indirect) +Node: Top1391 +Node: Overview17167 +Node: Preparing18180 +Node: Reading19148 +Node: Bugs20075 +Node: Introduction22025 +Node: Rule Introduction23618 +Node: Simple Makefile25551 +Node: How Make Works29287 +Node: Variables Simplify31977 +Node: make Deduces34183 +Node: Combine By Prerequisite35916 +Node: Cleanup36945 +Node: Makefiles38363 +Node: Makefile Contents39258 +Node: Splitting Lines42431 +Node: Makefile Names44920 +Node: Include46527 +Ref: Include-Footnote-150706 +Node: MAKEFILES Variable50840 +Node: Remaking Makefiles52381 +Node: Overriding Makefiles57285 +Node: Reading Makefiles59313 +Node: Parsing Makefiles63097 +Node: Secondary Expansion64955 +Node: Rules72330 +Node: Rule Example74917 +Node: Rule Syntax75765 +Node: Prerequisite Types78360 +Node: Wildcards81399 +Ref: Wildcards-Footnote-183432 +Node: Wildcard Examples83522 +Node: Wildcard Pitfall84872 +Node: Wildcard Function86661 +Node: Directory Search88716 +Node: General Search89851 +Node: Selective Search91558 +Node: Search Algorithm94548 +Node: Recipes/Search97066 +Node: Implicit/Search98389 +Node: Libraries/Search99331 +Node: Phony Targets101302 +Node: Force Targets106894 +Node: Empty Targets107931 +Node: Special Targets109233 +Node: Multiple Targets118577 +Node: Multiple Rules122919 +Node: Static Pattern125137 +Node: Static Usage125789 +Node: Static versus Implicit129508 +Node: Double-Colon131248 +Node: Automatic Prerequisites133008 +Node: Recipes137269 +Node: Recipe Syntax138441 +Node: Splitting Recipe Lines140556 +Node: Variables in Recipes143709 +Node: Echoing145035 +Node: Execution146247 +Ref: Execution-Footnote-1147660 +Node: One Shell147805 +Node: Choosing the Shell151123 +Node: Parallel155267 +Node: Parallel Disable157983 +Node: Parallel Output161414 +Node: Parallel Input165849 +Node: Errors166968 +Node: Interrupts170603 +Node: Recursion172964 +Node: MAKE Variable175061 +Node: Variables/Recursion177304 +Node: Options/Recursion183159 +Node: -w Option189605 +Node: Canned Recipes190600 +Node: Empty Recipes193583 +Node: Using Variables195023 +Node: Reference198599 +Node: Flavors200409 +Node: Recursive Assignment201154 +Node: Simple Assignment203028 +Node: Immediate Assignment206613 +Node: Conditional Assignment209096 +Node: Advanced209732 +Node: Substitution Refs210237 +Node: Computed Names211839 +Node: Values216206 +Node: Setting217281 +Node: Appending220547 +Node: Override Directive224103 +Node: Multi-Line225730 +Node: Undefine Directive228593 +Node: Environment229682 +Node: Target-specific231881 +Node: Pattern-specific235058 +Node: Suppressing Inheritance236905 +Node: Special Variables238358 +Node: Conditionals247482 +Node: Conditional Example248195 +Node: Conditional Syntax250758 +Node: Testing Flags256518 +Node: Functions257918 +Node: Syntax of Functions259527 +Node: Text Functions262112 +Node: File Name Functions270753 +Node: Conditional Functions275979 +Node: Let Function279821 +Node: Foreach Function282444 +Node: File Function285727 +Node: Call Function288284 +Node: Value Function291177 +Node: Eval Function292614 +Node: Origin Function294892 +Node: Flavor Function298118 +Node: Make Control Functions299162 +Node: Shell Function302239 +Node: Guile Function305227 +Node: Running305977 +Node: Makefile Arguments308030 +Node: Goals308746 +Node: Instead of Execution313494 +Node: Avoiding Compilation317209 +Node: Overriding319184 +Node: Testing321496 +Node: Temporary Files323380 +Node: Options Summary324489 +Node: Implicit Rules338769 +Node: Using Implicit340906 +Node: Catalogue of Rules344425 +Node: Implicit Variables353815 +Node: Chained Rules358888 +Node: Pattern Rules363703 +Node: Pattern Intro365237 +Node: Pattern Examples367966 +Node: Automatic Variables369773 +Node: Pattern Match377180 +Node: Match-Anything Rules380610 +Node: Canceling Rules384531 +Node: Last Resort385245 +Node: Suffix Rules387074 +Node: Implicit Rule Search390808 +Node: Archives394760 +Node: Archive Members395465 +Node: Archive Update397075 +Node: Archive Symbols398986 +Node: Archive Pitfalls400219 +Node: Archive Suffix Rules400941 +Node: Extending make402489 +Node: Guile Integration403634 +Node: Guile Types404862 +Node: Guile Interface407282 +Node: Guile Example408568 +Node: Loading Objects410759 +Node: load Directive412249 +Node: Remaking Loaded Objects415003 +Node: Loaded Object API415637 +Node: Loaded Object Example422522 +Node: Integrating make424894 +Node: Job Slots425645 +Node: POSIX Jobserver429021 +Node: Windows Jobserver432647 +Node: Terminal Output434059 +Node: Features436451 +Node: Missing445620 +Node: Makefile Conventions449348 +Node: Makefile Basics450327 +Node: Utilities in Makefiles453494 +Node: Command Variables455993 +Node: DESTDIR459233 +Node: Directory Variables461400 +Node: Standard Targets476759 +Node: Install Command Categories490865 +Node: Quick Reference495391 +Node: Error Messages508608 +Node: Complex Makefile517403 +Node: GNU Free Documentation License526021 +Node: Concept Index551179 +Node: Name Index626899 + +End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/local/recipes/dev/gnu-make/source/doc/make.info-1 b/local/recipes/dev/gnu-make/source/doc/make.info-1 new file mode 100644 index 0000000000..521a80d2ff --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make.info-1 @@ -0,0 +1,7235 @@ +This is make.info, produced by makeinfo version 6.7 from make.texi. + +This file documents the GNU 'make' utility, which determines +automatically which pieces of a large program need to be recompiled, and +issues the commands to recompile them. + + This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make +Manual', for GNU 'make' version 4.4. + + Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, +1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, +2022 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.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 + "GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: "You have the freedom to copy and + modify this GNU manual. Buying copies from the FSF supports it in + developing GNU and promoting software freedom." +INFO-DIR-SECTION Software development +START-INFO-DIR-ENTRY +* Make: (make). Remake files automatically. +END-INFO-DIR-ENTRY + + +File: make.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir) + +GNU 'make' +********** + +This file documents the GNU 'make' utility, which determines +automatically which pieces of a large program need to be recompiled, and +issues the commands to recompile them. + + This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make +Manual', for GNU 'make' version 4.4. + + Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, +1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, +2022 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.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 + "GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: "You have the freedom to copy and + modify this GNU manual. Buying copies from the FSF supports it in + developing GNU and promoting software freedom." + +* Menu: + +* Overview:: Overview of 'make'. +* Introduction:: An introduction to 'make'. +* Makefiles:: Makefiles tell 'make' what to do. +* Rules:: Rules describe when a file must be remade. +* Recipes:: Recipes say how to remake a file. +* Using Variables:: You can use variables to avoid repetition. +* Conditionals:: Use or ignore parts of the makefile based + on the values of variables. +* Functions:: Many powerful ways to manipulate text. +* Invoking make: Running. How to invoke 'make' on the command line. +* 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'. +* Integrating make:: Integrating 'make' with other tools. +* 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 + GNU programs. +* Quick Reference:: A quick reference for experienced users. +* Error Messages:: A list of common errors generated by 'make'. +* 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. + + -- The Detailed Node Listing -- + +Overview of 'make' + +* 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 recipes. +* Combine By Prerequisite:: Another style of makefile. +* Cleanup:: Rules for cleaning the directory. + +Writing Makefiles + +* Makefile Contents:: What makefiles contain. +* Makefile Names:: How to name your makefile. +* Include:: How one makefile can use another makefile. +* MAKEFILES Variable:: The environment can specify extra makefiles. +* Remaking Makefiles:: How makefiles get remade. +* Overriding Makefiles:: How to override part of one makefile + with another makefile. +* Reading Makefiles:: How makefiles are read in. +* Parsing 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. +* Rule Syntax:: General syntax explained. +* Prerequisite Types:: There are two types of prerequisites. +* 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 a recipe + or prerequisites to mark other targets + as phony. +* Empty Targets:: When only the date matters and the + files are empty. +* Special Targets:: Targets with special built-in meanings. +* Multiple Targets:: When to make use of several targets in a rule. +* Multiple Rules:: How to use several rules with the same target. +* Static Pattern:: Static pattern rules apply to multiple targets + and can vary the prerequisites according to + the target name. +* Double-Colon:: How to use a special kind of rule to allow + several independent rules for one target. +* Automatic Prerequisites:: How to automatically generate rules giving + prerequisites from source files themselves. + +Using Wildcard Characters in File Names + +* Wildcard Examples:: Several examples. +* Wildcard Pitfall:: Problems to avoid. +* Wildcard Function:: How to cause wildcard expansion where + it does not normally take place. + +Searching Directories for Prerequisites + +* General Search:: Specifying a search path that applies + to every prerequisite. +* 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 + with search paths. +* Implicit/Search:: How search paths affect implicit rules. +* Libraries/Search:: Directory search for link libraries. + +Static Pattern Rules + +* Static Usage:: The syntax of static pattern rules. +* Static versus Implicit:: When are they better than implicit rules? + +Writing Recipes in Rules + +* Recipe Syntax:: Recipe syntax features and pitfalls. +* Echoing:: How to control when recipes are echoed. +* Execution:: How recipes are executed. +* Parallel:: How recipes can be executed in parallel. +* Errors:: What happens after a recipe execution error. +* Interrupts:: What happens when a recipe is interrupted. +* Recursion:: Invoking 'make' from makefiles. +* Canned Recipes:: Defining canned recipes. +* Empty Recipes:: Defining useful, do-nothing recipes. + +Recipe Syntax + +* 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 Disable:: Disabling 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)'. +* Variables/Recursion:: How to communicate variables to a sub-'make'. +* Options/Recursion:: How to communicate options to a sub-'make'. +* -w Option:: How the '-w' or '--print-directory' option + helps debug use of recursive 'make' commands. + +How to Use Variables + +* Reference:: How to use the value of a variable. +* Flavors:: Variables come in two flavors. +* Advanced:: Advanced features for referencing a variable. +* Values:: All the ways variables get their values. +* Setting:: How to set a variable in the makefile. +* Appending:: How to append more text to the old value + of a variable. +* Override Directive:: How to set a variable in the makefile even if + 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. +* Pattern-specific:: Target-specific variable values can be applied + to a group of targets that match a pattern. +* Suppressing Inheritance:: Suppress inheritance of variables. +* Special Variables:: Variables with special meaning or behavior. + +The Two Flavors of Variables + +* Recursive Assignment:: Setting recursively expanded variables. +* Simple Assignment:: Setting simply expanded variables. +* Immediate Assignment:: Setting immediately expanded variables. +* Conditional Assignment:: Assigning variable values conditionally. + +Advanced Features for Reference to Variables + +* Substitution Refs:: Referencing a variable with + substitutions on the value. +* Computed Names:: Computing the name of the variable to refer to. + +Conditional Parts of Makefiles + +* Conditional Example:: Example of a conditional +* Conditional Syntax:: The syntax of conditionals. +* Testing Flags:: Conditionals that test flags. + +Functions for Transforming Text + +* Syntax of Functions:: How to write a function call. +* Text Functions:: General-purpose text manipulation functions. +* File Name Functions:: Functions for manipulating file names. +* Conditional Functions:: Functions that implement conditions. +* Let Function:: Local variables. +* 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. +* 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' + +* Makefile Arguments:: How to specify which makefile to use. +* Goals:: How to use goal arguments to specify which + parts of the makefile to use. +* Instead of Execution:: How to use mode flags to specify what + kind of thing to do with the recipes + in the makefile other than simply + execute them. +* Avoiding Compilation:: How to avoid recompiling certain files. +* Overriding:: How to override a variable to specify + an alternate compiler and other things. +* Testing:: How to proceed past some errors, to + test compilation. +* Temporary Files:: Where 'make' keeps its temporary files. +* Options Summary:: Summary of Options + +Using Implicit Rules + +* 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 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. + +Defining and Redefining Pattern Rules + +* Pattern Intro:: An introduction to pattern rules. +* Pattern Examples:: Examples of pattern rules. +* Automatic Variables:: How to use automatic variables in the + recipe of implicit rules. +* Pattern Match:: How patterns match. +* Match-Anything Rules:: Precautions you should take prior to + defining rules that can match any + target file whatever. +* Canceling Rules:: How to override or cancel built-in rules. + +Using 'make' to Update Archive Files + +* Archive Members:: Archive members as targets. +* Archive Update:: The implicit rule for archive member targets. +* Archive Pitfalls:: Dangers to watch out for when using archives. +* Archive Suffix Rules:: You can write a special kind of suffix rule + for updating archives. + +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 + +Integrating GNU 'make' + +* Job Slots:: Share job slots with GNU 'make'. +* Terminal Output:: Control output to terminals. + +Sharing Job Slots with GNU 'make' + +* POSIX Jobserver:: Using the jobserver on POSIX systems. +* Windows Jobserver:: Using the jobserver on Windows systems. + + + +File: make.info, Node: Overview, Next: Introduction, Prev: Top, Up: Top + +1 Overview of 'make' +******************** + +The 'make' utility automatically determines which pieces of a large +program need to be recompiled, and issues commands to recompile them. +This manual describes GNU 'make', which was implemented by Richard +Stallman and Roland McGrath. Development since Version 3.76 has been +handled by Paul D. Smith. + + GNU 'make' conforms to section 6.2 of 'IEEE Standard 1003.2-1992' +(POSIX.2). + + Our examples show C programs, since they are most common, but you can +use 'make' with any programming language whose compiler can be run with +a shell command. Indeed, '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. + +* Menu: + +* 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 + +Preparing and Running Make +========================== + +To prepare to use 'make', you must write a file called the "makefile" +that describes the relationships among files in your program and +provides 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. + + Once a suitable makefile exists, each time you change some source +files, this simple shell command: + + make + +suffices to perform all necessary recompilations. The 'make' program +uses the makefile data base and the last-modification times of the files +to decide which of the files need to be updated. For each of those +files, it issues the recipes recorded in the data base. + + You can provide command line arguments to 'make' to control which +files should be recompiled, or how. *Note How to Run 'make': Running. + + +File: make.info, Node: Reading, Next: Bugs, Prev: Preparing, Up: Overview + +1.1 How to Read This Manual +=========================== + +If you are new to 'make', or are looking for a general introduction, +read the first few sections of each chapter, skipping the later +sections. In each chapter, the first few sections contain introductory +or general information and the later sections contain specialized or +technical information. The exception is the second chapter, *note An +Introduction to Makefiles: Introduction, all of which is introductory. + + If you are familiar with other 'make' programs, see *note Features of +GNU 'make': Features, which lists the enhancements GNU 'make' has, and +*note Incompatibilities and Missing Features: Missing, which explains +the few things GNU 'make' lacks that others have. + + For a quick summary, see *note Options Summary::, *note Quick +Reference::, and *note Special Targets::. + + +File: make.info, Node: Bugs, Prev: Reading, Up: Overview + +1.2 Problems and Bugs +===================== + +If you have problems with GNU 'make' or think you've found a bug, please +report it to the developers; we cannot promise to do anything but we +might well want to fix it. + + Before reporting a bug, make sure you've actually found a real bug. +Carefully reread the documentation and see if it really says you can do +what you're trying to do. If it's not clear whether you should be able +to do something or not, report that too; it's a bug in the +documentation! + + Before reporting a bug or trying to fix it yourself, try to isolate +it to the smallest possible makefile that reproduces the problem. Then +send us the makefile and the exact results 'make' gave you, including +any error or warning messages. Please don't paraphrase these messages: +it's best to cut and paste them into your report. When generating this +small makefile, be sure to not use any non-free or unusual tools in your +recipes: you can almost always emulate what such a tool would do with +simple shell commands. Finally, be sure to explain what you expected to +occur; this will help us decide whether the problem was really in the +documentation. + + Once you have a precise problem you can report it in one of two ways. +Either send electronic mail to: + + bug-make@gnu.org + +or use our Web-based project management tool, at: + + https://savannah.gnu.org/projects/make/ + +In addition to the information above, please be careful to include the +version number of 'make' you are using. You can get this information +with the command 'make --version'. Be sure also to include the type of +machine and operating system you are using. One way to obtain this +information is by looking at the final lines of output from the command +'make --help'. + + If you have a code change you'd like to submit, see the 'README' file +section "Submitting Patches" for information. + + +File: make.info, Node: Introduction, Next: Makefiles, Prev: Overview, Up: Top + +2 An Introduction to Makefiles +****************************** + +You need a file called a "makefile" to tell 'make' what to do. Most +often, the makefile tells 'make' how to compile and link a program. + + In this chapter, we will discuss a simple makefile that describes how +to compile and link a text editor which consists of eight C source files +and three header files. The makefile can also tell 'make' how to run +miscellaneous commands when explicitly asked (for example, to remove +certain files as a clean-up operation). To see a more complex example +of a makefile, see *note Complex Makefile::. + + When 'make' recompiles the editor, each changed C source file must be +recompiled. If a header file has changed, each C source file that +includes the header file must be recompiled to be safe. Each +compilation produces an object file corresponding to the source file. +Finally, if any source file has been recompiled, all the object files, +whether newly made or saved from previous compilations, must be linked +together to produce the new executable editor. + +* 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. + + +File: make.info, Node: Rule Introduction, Next: Simple Makefile, Prev: Introduction, Up: Introduction + +2.1 What a Rule Looks Like +========================== + +A simple makefile consists of "rules" with the following shape: + + TARGET ... : PREREQUISITES ... + RECIPE + ... + ... + + A "target" is usually the name of a file that is generated by a +program; examples of targets are executable or object files. A target +can also be the name of an action to carry out, such as 'clean' (*note +Phony Targets::). + + A "prerequisite" is a file that is used as input to create the +target. A target often depends on several files. + + A "recipe" is an action that 'make' carries out. A recipe may have +more than one command, either on the same line or each on its own line. +*Please note:* you need to put a tab character at the beginning of every +recipe line! This is an obscurity that catches the unwary. If you +prefer to prefix your recipes with a character other than tab, you can +set the '.RECIPEPREFIX' variable to an alternate character (*note +Special Variables::). + + Usually a recipe is in a rule with prerequisites and serves to create +a target file if any of the prerequisites change. However, the rule +that specifies a recipe for the target need not have prerequisites. For +example, the rule containing the delete command associated with the +target 'clean' does not have prerequisites. + + A "rule", then, explains how and when to remake certain files which +are the targets of the particular rule. 'make' carries out the recipe +on the prerequisites to create or update the target. A rule can also +explain how and when to carry out an action. *Note Writing Rules: +Rules. + + A makefile may contain other text besides rules, but a simple +makefile need only contain rules. Rules may look somewhat more +complicated than shown in this template, but all fit the pattern more or +less. + + +File: make.info, Node: Simple Makefile, Next: How Make Works, Prev: Rule Introduction, Up: Introduction + +2.2 A Simple Makefile +===================== + +Here is a straightforward makefile that describes the way an executable +file called 'edit' depends on eight object files which, in turn, depend +on eight C source and three header files. + + In this example, all the C files include 'defs.h', but only those +defining editing commands include 'command.h', and only low level files +that change the editor buffer include 'buffer.h'. + + edit : main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + cc -o edit main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + + main.o : main.c defs.h + cc -c main.c + kbd.o : kbd.c defs.h command.h + cc -c kbd.c + command.o : command.c defs.h command.h + cc -c command.c + display.o : display.c defs.h buffer.h + cc -c display.c + insert.o : insert.c defs.h buffer.h + cc -c insert.c + search.o : search.c defs.h buffer.h + cc -c search.c + files.o : files.c defs.h buffer.h command.h + cc -c files.c + utils.o : utils.c defs.h + cc -c utils.c + clean : + 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. *Note Splitting Long +Lines: Splitting Lines. + + To use this makefile to create the executable file called 'edit', +type: + + make + + To use this makefile to delete the executable file and all the object +files from the directory, type: + + make clean + + In the example makefile, the targets include the executable file +'edit', and the object files 'main.o' and 'kbd.o'. The prerequisites +are files such as 'main.c' and 'defs.h'. In fact, each '.o' file is +both a target and a prerequisite. Recipes include 'cc -c main.c' and +'cc -c kbd.c'. + + When a target is a file, it needs to be recompiled or relinked if any +of its prerequisites change. In addition, any prerequisites that are +themselves automatically generated should be updated first. In this +example, 'edit' depends on each of the eight object files; the object +file 'main.o' depends on the source file 'main.c' and on the header file +'defs.h'. + + A recipe may follow each line that contains a target and +prerequisites. These recipes say how to update the target file. A tab +character (or whatever character is specified by the '.RECIPEPREFIX' +variable; *note Special Variables::) must come at the beginning of every +line in the recipe to distinguish recipes from other lines in the +makefile. (Bear in mind that 'make' does not know anything about how +the recipes work. It is up to you to supply recipes that will update +the target file properly. All 'make' does is execute the recipe you +have specified when the target file needs to be updated.) + + The target 'clean' is not a file, but merely the name of an action. +Since you normally do not want to carry out the actions in this rule, +'clean' is not a prerequisite of any other rule. Consequently, 'make' +never does anything with it unless you tell it specifically. Note that +this rule not only is not a prerequisite, it also does not have any +prerequisites, so the only purpose of the rule is to run the specified +recipe. Targets that do not refer to files but are just actions are +called "phony targets". *Note Phony Targets::, for information about +this kind of target. *Note Errors in Recipes: Errors, to see how to +cause 'make' to ignore errors from 'rm' or any other command. + + +File: make.info, Node: How Make Works, Next: Variables Simplify, Prev: Simple Makefile, Up: Introduction + +2.3 How 'make' Processes a Makefile +=================================== + +By default, 'make' starts with the first target (not targets whose names +start with '.' unless they also contain one or more '/'). This is +called the "default goal". ("Goals" are the targets that 'make' strives +ultimately to update. You can override this behavior using the command +line (*note Arguments to Specify the Goals: Goals.) or with the +'.DEFAULT_GOAL' special variable (*note Other Special Variables: Special +Variables.). + + In the simple example of the previous section, the default goal is to +update the executable program 'edit'; therefore, we put that rule first. + + Thus, when you give the command: + + make + +'make' reads the makefile in the current directory and begins by +processing the first rule. In the example, this rule is for relinking +'edit'; but before 'make' can fully process this rule, it must process +the rules for the files that 'edit' depends on, which in this case are +the object files. Each of these files is processed according to its own +rule. These rules say to update each '.o' file by compiling its source +file. The recompilation must be done if the source file, or any of the +header files named as prerequisites, is more recent than the object +file, or if the object file does not exist. + + The other rules are processed because their targets appear as +prerequisites of the goal. If some other rule is not depended on by the +goal (or anything it depends on, etc.), that rule is not processed, +unless you tell 'make' to do so (with a command such as 'make clean'). + + Before recompiling an object file, 'make' considers updating its +prerequisites, the source file and header files. This makefile does not +specify anything to be done for them--the '.c' and '.h' files are not +the targets of any rules--so 'make' does nothing for these files. But +'make' would update automatically generated C programs, such as those +made by Bison or Yacc, by their own rules at this time. + + After recompiling whichever object files need it, 'make' decides +whether to relink 'edit'. This must be done if the file 'edit' does not +exist, or if any of the object files are newer than it. If an object +file was just recompiled, it is now newer than 'edit', so 'edit' is +relinked. + + Thus, if we change the file 'insert.c' and run 'make', 'make' will +compile that file to update 'insert.o', and then link 'edit'. If we +change the file 'command.h' and run 'make', 'make' will recompile the +object files 'kbd.o', 'command.o' and 'files.o' and then link the file +'edit'. + + +File: make.info, Node: Variables Simplify, Next: make Deduces, Prev: How Make Works, Up: Introduction + +2.4 Variables Make Makefiles Simpler +==================================== + +In our example, we had to list all the object files twice in the rule +for 'edit' (repeated here): + + edit : main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + cc -o edit main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + + Such duplication is error-prone; if a new object file is added to the +system, we might add it to one list and forget the other. We can +eliminate the risk and simplify the makefile by using a variable. +"Variables" allow a text string to be defined once and substituted in +multiple places later (*note How to Use Variables: Using Variables.). + + It is standard practice for every makefile to have a variable named +'objects', 'OBJECTS', 'objs', 'OBJS', 'obj', or 'OBJ' which is a list of +all object file names. We would define such a variable 'objects' with a +line like this in the makefile: + + objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + +Then, each place we want to put a list of the object file names, we can +substitute the variable's value by writing '$(objects)' (*note How to +Use Variables: Using Variables.). + + Here is how the complete simple makefile looks when you use a +variable for the object files: + + objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + + edit : $(objects) + cc -o edit $(objects) + main.o : main.c defs.h + cc -c main.c + kbd.o : kbd.c defs.h command.h + cc -c kbd.c + command.o : command.c defs.h command.h + cc -c command.c + display.o : display.c defs.h buffer.h + cc -c display.c + insert.o : insert.c defs.h buffer.h + cc -c insert.c + search.o : search.c defs.h buffer.h + cc -c search.c + files.o : files.c defs.h buffer.h command.h + cc -c files.c + utils.o : utils.c defs.h + cc -c utils.c + clean : + rm edit $(objects) + + +File: make.info, Node: make Deduces, Next: Combine By Prerequisite, Prev: Variables Simplify, Up: Introduction + +2.5 Letting 'make' Deduce the Recipes +===================================== + +It is not necessary to spell out the recipes for compiling the +individual C source files, because 'make' can figure them out: it has an +"implicit rule" for updating a '.o' file from a correspondingly named +'.c' file using a 'cc -c' command. For example, it will use the recipe +'cc -c main.c -o main.o' to compile 'main.c' into 'main.o'. We can +therefore omit the recipes from the rules for the object files. *Note +Using Implicit Rules: Implicit Rules. + + When a '.c' file is used automatically in this way, it is also +automatically added to the list of prerequisites. We can therefore omit +the '.c' files from the prerequisites, provided we omit the recipe. + + Here is the entire example, with both of these changes, and a +variable 'objects' as suggested above: + + objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + + edit : $(objects) + cc -o edit $(objects) + + main.o : defs.h + kbd.o : defs.h command.h + command.o : defs.h command.h + display.o : defs.h buffer.h + insert.o : defs.h buffer.h + search.o : defs.h buffer.h + files.o : defs.h buffer.h command.h + utils.o : defs.h + + .PHONY : clean + clean : + rm edit $(objects) + +This is how we would write the makefile in actual practice. (The +complications associated with 'clean' are described elsewhere. See +*note Phony Targets::, and *note Errors in Recipes: Errors.) + + Because implicit rules are so convenient, they are important. You +will see them used frequently. + + +File: make.info, Node: Combine By Prerequisite, Next: Cleanup, Prev: make Deduces, Up: Introduction + +2.6 Another Style of Makefile +============================= + +When the objects of a makefile are created only by implicit rules, an +alternative style of makefile is possible. In this style of makefile, +you group entries by their prerequisites instead of by their targets. +Here is what one looks like: + + objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + + edit : $(objects) + cc -o edit $(objects) + + $(objects) : defs.h + kbd.o command.o files.o : command.h + display.o insert.o search.o files.o : buffer.h + +Here 'defs.h' is given as a prerequisite of all the object files; +'command.h' and 'buffer.h' are prerequisites of the specific object +files listed for them. + + Whether this is better is a matter of taste: it is more compact, but +some people dislike it because they find it clearer to put all the +information about each target in one place. + + +File: make.info, Node: Cleanup, Prev: Combine By Prerequisite, Up: Introduction + +2.7 Rules for Cleaning the Directory +==================================== + +Compiling a program is not the only thing you might want to write rules +for. Makefiles commonly tell how to do a few other things besides +compiling a program: for example, how to delete all the object files and +executables so that the directory is 'clean'. + + Here is how we could write a 'make' rule for cleaning our example +editor: + + clean: + rm edit $(objects) + + In practice, we might want to write the rule in a somewhat more +complicated manner to handle unanticipated situations. We would do +this: + + .PHONY : clean + clean : + -rm edit $(objects) + +This prevents 'make' from getting confused by an actual file called +'clean' and causes it to continue in spite of errors from 'rm'. (See +*note Phony Targets::, and *note Errors in Recipes: Errors.) + +A rule such as this should not be placed at the beginning of the +makefile, because we do not want it to run by default! Thus, in the +example makefile, we want the rule for 'edit', which recompiles the +editor, to remain the default goal. + + Since 'clean' is not a prerequisite of 'edit', this rule will not run +at all if we give the command 'make' with no arguments. In order to +make the rule run, we have to type 'make clean'. *Note How to Run +'make': Running. + + +File: make.info, Node: Makefiles, Next: Rules, Prev: Introduction, Up: Top + +3 Writing Makefiles +******************* + +The information that tells 'make' how to recompile a system comes from +reading a data base called the "makefile". + +* Menu: + +* Makefile Contents:: What makefiles contain. +* Makefile Names:: How to name your makefile. +* Include:: How one makefile can use another makefile. +* MAKEFILES Variable:: The environment can specify extra makefiles. +* Remaking Makefiles:: How makefiles get remade. +* Overriding Makefiles:: How to override part of one makefile + with another makefile. +* Reading Makefiles:: How makefiles are read in. +* Parsing Makefiles:: How makefiles are parsed. +* Secondary Expansion:: How and when secondary expansion is performed. + + +File: make.info, Node: Makefile Contents, Next: Makefile Names, Prev: Makefiles, Up: Makefiles + +3.1 What Makefiles Contain +========================== + +Makefiles contain five kinds of things: "explicit rules", "implicit +rules", "variable definitions", "directives", and "comments". Rules, +variables, and directives are described at length in later chapters. + + * An "explicit rule" says when and how to remake one or more files, + called the rule's "targets". It lists the other files that the + targets depend on, called the "prerequisites" of the target, and + may also give a recipe to use to create or update the targets. + *Note Writing Rules: Rules. + + * An "implicit rule" says when and how to remake a class of files + based on their names. It describes how a target may depend on a + file with a name similar to the target and gives a recipe to create + or update such a target. *Note Using Implicit Rules: Implicit + Rules. + + * A "variable definition" is a line that specifies a text string + value for a variable that can be substituted into the text later. + The simple makefile example shows a variable definition for + 'objects' as a list of all object files (*note Variables Make + Makefiles Simpler: Variables Simplify.). + + * A "directive" is an instruction for 'make' to do something special + while reading the makefile. These include: + + * Reading another makefile (*note Including Other Makefiles: + Include.). + + * Deciding (based on the values of variables) whether to use or + ignore a part of the makefile (*note Conditional Parts of + Makefiles: Conditionals.). + + * Defining a variable from a verbatim string containing multiple + lines (*note Defining Multi-Line Variables: Multi-Line.). + + * '#' in a line of a makefile starts a "comment". It and the rest of + the line are ignored, except that a trailing backslash not escaped + by another backslash will continue the comment across multiple + lines. A line containing just a comment (with perhaps spaces + before it) is effectively blank, and is ignored. If you want a + literal '#', escape it with a backslash (e.g., '\#'). Comments may + appear on any line in the makefile, although they are treated + specially in certain situations. + + You cannot use comments within variable references or function + calls: any instance of '#' will be treated literally (rather than + as the start of a comment) inside a variable reference or function + call. + + Comments within a recipe are passed to the shell, just as with any + other recipe text. The shell decides how to interpret it: whether + or not this is a comment is up to the shell. + + Within a 'define' directive, comments are not ignored during the + definition of the variable, but rather kept intact in the value of + the variable. When the variable is expanded they will either be + treated as 'make' comments or as 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. + +Splitting Without Adding Whitespace +................................... + +If you need to split a line but do _not_ want any whitespace added, you +can utilize a subtle trick: replace your backslash/newline pairs with +the three characters dollar sign, backslash, and newline: + + var := one$\ + word + + After 'make' removes the backslash/newline and condenses the +following line into a single space, this is equivalent to: + + var := one$ word + + Then 'make' will perform variable expansion. The variable reference +'$ ' refers to a variable with the one-character name " " (space) which +does not exist, and so expands to the empty string, giving a final +assignment which is the equivalent of: + + var := oneword + + +File: make.info, Node: Makefile Names, Next: Include, Prev: Makefile Contents, Up: Makefiles + +3.2 What Name to Give Your Makefile +=================================== + +By default, when 'make' looks for the makefile, it tries the following +names, in order: 'GNUmakefile', 'makefile' and 'Makefile'. + + Normally you should call your makefile either 'makefile' or +'Makefile'. (We recommend 'Makefile' because it appears prominently +near the beginning of a directory listing, right near other important +files such as 'README'.) The first name checked, 'GNUmakefile', is not +recommended for most makefiles. You should use this name if you have a +makefile that is specific to GNU 'make', and will not be understood by +other versions of 'make'. Other 'make' programs look for 'makefile' and +'Makefile', but not 'GNUmakefile'. + + If 'make' finds none of these names, it does not use any makefile. +Then you must specify a goal with a command argument, and 'make' will +attempt to figure out how to remake it using only its built-in implicit +rules. *Note Using Implicit Rules: Implicit Rules. + + If you want to use a nonstandard name for your makefile, you can +specify the makefile name with the '-f' or '--file' option. The +arguments '-f NAME' or '--file=NAME' tell 'make' to read the file NAME +as the makefile. If you use more than one '-f' or '--file' option, you +can specify several makefiles. All the makefiles are effectively +concatenated in the order specified. The default makefile names +'GNUmakefile', 'makefile' and 'Makefile' are not checked automatically +if you specify '-f' or '--file'. + + +File: make.info, Node: Include, Next: MAKEFILES Variable, Prev: Makefile Names, Up: Makefiles + +3.3 Including Other Makefiles +============================= + +The 'include' directive tells 'make' to suspend reading the current +makefile and read one or more other makefiles before continuing. The +directive is a line in the makefile that looks like this: + + include FILENAMES... + +FILENAMES can contain shell file name patterns. If FILENAMES is empty, +nothing is included and no error is printed. + + Extra spaces are allowed and ignored at the beginning of the line, +but the first character must not be a tab (or the value of +'.RECIPEPREFIX')--if the line begins with a tab, it will be considered a +recipe line. Whitespace is required between 'include' and the file +names, and between file names; extra whitespace is ignored there and at +the end of the directive. A comment starting with '#' is allowed at the +end of the line. If the file names contain any variable or function +references, they are expanded. *Note How to Use Variables: Using +Variables. + + For example, if you have three '.mk' files, 'a.mk', 'b.mk', and +'c.mk', and '$(bar)' expands to 'bish bash', then the following +expression + + include foo *.mk $(bar) + + is equivalent to + + include foo a.mk b.mk c.mk bish bash + + When 'make' processes an 'include' directive, it suspends reading of +the containing makefile and reads from each listed file in turn. When +that is finished, 'make' resumes reading the makefile in which the +directive appears. + + One occasion for using 'include' directives is when several programs, +handled by individual makefiles in various directories, need to use a +common set of variable definitions (*note Setting Variables: Setting.) +or pattern rules (*note Defining and Redefining Pattern Rules: Pattern +Rules.). + + Another such occasion is when you want to generate prerequisites from +source files automatically; the prerequisites can be put in a file that +is included by the main makefile. This practice is generally cleaner +than that of somehow appending the prerequisites to the end of the main +makefile as has been traditionally done with other versions of 'make'. +*Note Automatic Prerequisites::. + + If the specified name does not start with a slash, and the file is +not found in the current directory, several other directories are +searched. First, any directories you have specified with the '-I' or +'--include-dir' options are searched (*note Summary of Options: Options +Summary.). Then the following directories (if they exist) are searched, +in this order: 'PREFIX/include' (normally '/usr/local/include' (1)) +'/usr/gnu/include', '/usr/local/include', '/usr/include'. + + The '.INCLUDE_DIRS' variable will contain the current list of +directories that make will search for included files. *Note Other +Special Variables: Special Variables. + + You can avoid searching in these default directories by adding the +command line option '-I' with the special value '-' (e.g., '-I-') to the +command line. This will cause 'make' to forget any already-set include +directories, including the default directories. + + If an included makefile cannot be found in any of these directories +it is not an immediately fatal error; processing of the makefile +containing the 'include' continues. Once it has finished reading +makefiles, 'make' will try to remake any that are out of date or don't +exist. *Note How Makefiles Are Remade: Remaking Makefiles. Only after +it has failed to find a rule to remake the makefile, or it found a rule +but the recipe failed, will 'make' diagnose the missing makefile as a +fatal error. + + If you want 'make' to simply ignore a makefile which does not exist +or cannot be remade, with no error message, use the '-include' directive +instead of 'include', like this: + + -include FILENAMES... + + This acts like 'include' in every way except that there is no error +(not even a warning) if any of the FILENAMES (or any prerequisites of +any of the FILENAMES) do not exist or cannot be remade. + + For compatibility with some other 'make' implementations, 'sinclude' +is another name for '-include'. + + ---------- Footnotes ---------- + + (1) GNU Make compiled for MS-DOS and MS-Windows behaves as if PREFIX +has been defined to be the root of the DJGPP tree hierarchy. + + +File: make.info, Node: MAKEFILES Variable, Next: Remaking Makefiles, Prev: Include, Up: Makefiles + +3.4 The Variable 'MAKEFILES' +============================ + +If the environment variable 'MAKEFILES' is defined, 'make' considers its +value as a list of names (separated by whitespace) of additional +makefiles to be read before the others. This works much like the +'include' directive: various directories are searched for those files +(*note Including Other Makefiles: Include.). In addition, the default +goal is never taken from one of these makefiles (or any makefile +included by them) and it is not an error if the files listed in +'MAKEFILES' are not found. + + The main use of 'MAKEFILES' is in communication between recursive +invocations of 'make' (*note Recursive Use of 'make': Recursion.). It +usually is not desirable to set the environment variable before a +top-level invocation of 'make', because it is usually better not to mess +with a makefile from outside. However, if you are running 'make' +without a specific makefile, a makefile in 'MAKEFILES' can do useful +things to help the built-in implicit rules work better, such as defining +search paths (*note Directory Search::). + + Some users are tempted to set 'MAKEFILES' in the environment +automatically on login, and program makefiles to expect this to be done. +This is a very bad idea, because such makefiles will fail to work if run +by anyone else. It is much better to write explicit 'include' +directives in the makefiles. *Note Including Other Makefiles: Include. + + +File: make.info, Node: Remaking Makefiles, Next: Overriding Makefiles, Prev: MAKEFILES Variable, Up: Makefiles + +3.5 How Makefiles Are Remade +============================ + +Sometimes makefiles can be remade from other files, such as RCS or SCCS +files. If a makefile can be remade from other files, you probably want +'make' to get an up-to-date version of the makefile to read in. + + To this end, after reading in all makefiles 'make' will consider each +as a goal target, in the order in which they were processed, and attempt +to update it. If parallel builds (*note Parallel Execution: Parallel.) +are enabled then makefiles will be rebuilt in parallel as well. + + If a makefile has a rule which says how to update it (found either in +that very makefile or in another one) or if an implicit rule applies to +it (*note Using Implicit Rules: Implicit Rules.), it will be updated if +necessary. After all makefiles have been checked, if any have actually +been changed, 'make' starts with a clean slate and reads all the +makefiles over again. (It will also attempt to update each of them over +again, but normally this will not change them again, since they are +already up to date.) Each restart will cause the special variable +'MAKE_RESTARTS' to be updated (*note Special Variables::). + + 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 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.). + + If the makefiles specify a double-colon rule to remake a file with a +recipe but no prerequisites, that file will always be remade (*note +Double-Colon::). In the case of makefiles, a makefile that has a +double-colon rule with a recipe but no prerequisites will be remade +every time 'make' is run, and then again after 'make' starts over and +reads the makefiles in again. This would cause an infinite loop: 'make' +would constantly remake the makefile and restart, and never do anything +else. So, to avoid this, 'make' will *not* attempt to remake makefiles +which are specified as targets of a double-colon rule with a recipe but +no prerequisites. + + Phony targets (*note Phony Targets::) have the same effect: they are +never considered up-to-date and so an included file marked as phony +would cause 'make' to restart continuously. To avoid this 'make' will +not attempt to remake makefiles which are marked phony. + + You can take advantage of this to optimize startup time: if you know +you don't need your 'Makefile' to be remade you can prevent make from +trying to remake it by adding either: + + .PHONY: Makefile + + or: + + Makefile:: ; + + If you do not specify any makefiles to be read with '-f' or '--file' +options, 'make' will try the default makefile names; *note What Name to +Give Your Makefile: Makefile Names. Unlike makefiles explicitly +requested with '-f' or '--file' options, 'make' is not certain that +these makefiles should exist. However, if a default makefile does not +exist but can be created by running 'make' rules, you probably want the +rules to be run so that the makefile can be used. + + Therefore, if none of the default makefiles exists, 'make' will try +to make each of them until it succeeds in making one, or it runs out of +names to try. Note that it is not an error if 'make' cannot find or +make any makefile; a makefile is not always necessary. + + When you use the '-t' or '--touch' option (*note Instead of Executing +Recipes: Instead of Execution.), you would not want to use an +out-of-date makefile to decide which targets to touch. So the '-t' +option has no effect on updating makefiles; they are really updated even +if '-t' is specified. Likewise, '-q' (or '--question') and '-n' (or +'--just-print') do not prevent updating of makefiles, because an +out-of-date makefile would result in the wrong output for other targets. +Thus, 'make -f mfile -n foo' will update 'mfile', read it in, and then +print the recipe to update 'foo' and its prerequisites without running +it. The recipe printed for 'foo' will be the one specified in the +updated contents of 'mfile'. + + However, on occasion you might actually wish to prevent updating of +even the makefiles. You can do this by specifying the makefiles as +goals in the command line as well as specifying them as makefiles. When +the makefile name is specified explicitly as a goal, the options '-t' +and so on do apply to them. + + Thus, 'make -f mfile -n mfile foo' would read the makefile 'mfile', +print the recipe needed to update it without actually running it, and +then print the recipe needed to update 'foo' without running that. The +recipe for 'foo' will be the one specified by the existing contents of +'mfile'. + + +File: make.info, Node: Overriding Makefiles, Next: Reading Makefiles, Prev: Remaking Makefiles, Up: Makefiles + +3.6 Overriding Part of Another Makefile +======================================= + +Sometimes it is useful to have a makefile that is mostly just like +another makefile. You can often use the 'include' directive to include +one in the other, and add more targets or variable definitions. +However, 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), +you can use a match-anything pattern rule to say that to remake any +target that cannot be made from the information in the containing +makefile, 'make' should look in another makefile. *Note Pattern +Rules::, for more information on pattern rules. + + For example, if you have a makefile called 'Makefile' that says how +to make the target 'foo' (and other targets), you can write a makefile +called 'GNUmakefile' that contains: + + foo: + frobnicate > foo + + %: force + @$(MAKE) -f Makefile $@ + force: ; + + If you say 'make foo', 'make' will find 'GNUmakefile', read it, and +see that to make 'foo', it needs to run the recipe 'frobnicate > foo'. +If you say 'make bar', 'make' will find no way to make 'bar' in +'GNUmakefile', so it will use the recipe from the pattern rule: 'make -f +Makefile bar'. If 'Makefile' provides a rule for updating 'bar', 'make' +will apply the rule. And likewise for any other target that +'GNUmakefile' does not say how to make. + + The way this works is that the pattern rule has a pattern of just +'%', so it matches any target whatever. The rule specifies a +prerequisite 'force', to guarantee that the recipe will be run even if +the target file already exists. We give the 'force' target an empty +recipe to prevent 'make' from searching for an implicit rule to build +it--otherwise it would apply the same match-anything rule to 'force' +itself and create a prerequisite loop! + + +File: make.info, Node: Reading Makefiles, Next: Parsing Makefiles, Prev: Overriding Makefiles, Up: Makefiles + +3.7 How 'make' Reads a Makefile +=============================== + +GNU 'make' does its work in two distinct phases. During the first phase +it reads all the makefiles, included makefiles, etc. and internalizes +all the variables and their values and implicit and explicit rules, and +builds a dependency graph of all the targets and their prerequisites. +During the second phase, 'make' uses this internalized data to determine +which targets need to be updated and run the recipes necessary to update +them. + + It's important to understand this two-phase approach because it has a +direct impact on how variable and function expansion happens; this is +often a source of some confusion when writing makefiles. Below is a +summary of the different constructs that can be found in a makefile, and +the phase in which expansion happens for each part of the construct. + + We say that expansion is "immediate" if it happens during the first +phase: 'make' will expand that part of the construct as the makefile is +parsed. We say that expansion is "deferred" if it is not immediate. +Expansion of a deferred construct part is delayed until the expansion is +used: either when it is referenced in an immediate context, or when it +is needed during the second phase. + + You may not be familiar with some of these constructs yet. You can +reference this section as you become familiar with them, in later +chapters. + +Variable Assignment +------------------- + +Variable definitions are parsed as follows: + + IMMEDIATE = DEFERRED + IMMEDIATE ?= DEFERRED + IMMEDIATE := IMMEDIATE + IMMEDIATE ::= IMMEDIATE + IMMEDIATE :::= IMMEDIATE-WITH-ESCAPE + IMMEDIATE += DEFERRED or IMMEDIATE + IMMEDIATE != IMMEDIATE + + define IMMEDIATE + DEFERRED + endef + + define IMMEDIATE = + DEFERRED + endef + + define IMMEDIATE ?= + DEFERRED + endef + + define IMMEDIATE := + IMMEDIATE + endef + + define IMMEDIATE ::= + IMMEDIATE + endef + + define IMMEDIATE :::= + IMMEDIATE-WITH-ESCAPE + 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 (':=' +or '::='), and deferred otherwise. + + For the IMMEDIATE-WITH-ESCAPE operator ':::=', the value on the +right-hand side is immediately expanded but then escaped (that is, all +instances of '$' in the result of the expansion are replaced with '$$'). + + 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 is considered a +recursively expanded variable (and will thus be re-evaluated on each +reference). + +Conditional Directives +---------------------- + +Conditional directives are parsed immediately. This means, for example, +that automatic variables cannot be used in conditional directives, as +automatic variables are not set until the recipe for that rule is +invoked. If you need to use automatic variables in a conditional +directive you _must_ move the condition into the recipe and use shell +conditional syntax instead. + +Rule Definition +--------------- + +A rule is always expanded the same way, regardless of the form: + + IMMEDIATE : IMMEDIATE ; DEFERRED + DEFERRED + + That is, the target and prerequisite sections are expanded +immediately, and the recipe used to build the target is always deferred. +This is true for explicit rules, pattern rules, suffix rules, static +pattern rules, and simple prerequisite definitions. + + +File: make.info, Node: Parsing Makefiles, Next: Secondary Expansion, Prev: Reading Makefiles, Up: Makefiles + +3.8 How Makefiles Are Parsed +============================ + +GNU 'make' parses makefiles line-by-line. Parsing proceeds using the +following steps: + + 1. Read in a full logical line, including backslash-escaped lines + (*note Splitting Long Lines: Splitting Lines.). + + 2. Remove comments (*note What Makefiles Contain: Makefile Contents.). + + 3. If the line begins with the recipe prefix character and we are in a + rule context, add the line to the current recipe and read the next + line (*note Recipe Syntax::). + + 4. Expand elements of the line which appear in an _immediate_ + expansion context (*note How 'make' Reads a Makefile: Reading + Makefiles.). + + 5. Scan the line for a separator character, such as ':' or '=', to + determine whether the line is a macro assignment or a rule (*note + Recipe Syntax::). + + 6. Internalize the resulting operation and read the next line. + + An important consequence of this is that a macro can expand to an +entire rule, _if it is one line long_. This will work: + + myrule = target : ; echo built + + $(myrule) + + However, this will not work because 'make' does not re-split lines +after it has expanded them: + + define myrule + target: + echo built + endef + + $(myrule) + + The above makefile results in the definition of a target 'target' +with prerequisites 'echo' and 'built', as if the makefile contained +'target: echo built', rather than a rule with a recipe. Newlines still +present in a line after expansion is complete are ignored as normal +whitespace. + + In order to properly expand a multi-line macro you must use the +'eval' function: this causes the 'make' parser to be run on the results +of the expanded macro (*note Eval Function::). + + +File: make.info, Node: Secondary Expansion, Prev: Parsing Makefiles, Up: Makefiles + +3.9 Secondary Expansion +======================= + +Previously we learned that GNU 'make' works in two distinct phases: a +read-in phase and a target-update phase (*note How 'make' Reads a +Makefile: Reading Makefiles.). GNU make also has the ability to enable +a _second expansion_ of the prerequisites (only) for some or all targets +defined in the makefile. In order for this second expansion to occur, +the special target '.SECONDEXPANSION' must be defined before the first +prerequisite list that makes use of this feature. + + If '.SECONDEXPANSION' is defined then when GNU 'make' needs to check +the prerequisites of a target, the prerequisites are expanded a _second +time_. In most circumstances this secondary expansion will have no +effect, since all variable and function references will have been +expanded during the initial parsing of the makefiles. In order to take +advantage of the secondary expansion phase of the parser, then, it's +necessary to _escape_ the variable or function reference in the +makefile. In this case the first expansion merely un-escapes the +reference but doesn't expand it, and expansion is left to the secondary +expansion phase. For example, consider this makefile: + + .SECONDEXPANSION: + ONEVAR = onefile + TWOVAR = twofile + myfile: $(ONEVAR) $$(TWOVAR) + + After the first expansion phase the prerequisites list of the +'myfile' target will be 'onefile' and '$(TWOVAR)'; the first (unescaped) +variable reference to ONEVAR is expanded, while the second (escaped) +variable reference is simply unescaped, without being recognized as a +variable reference. Now during the secondary expansion the first word +is expanded again but since it contains no variable or function +references it remains the value 'onefile', while the second word is now +a normal reference to the variable TWOVAR, which is expanded to the +value 'twofile'. The final result is that there are two prerequisites, +'onefile' and 'twofile'. + + Obviously, this is not a very interesting case since the same result +could more easily have been achieved simply by having both variables +appear, unescaped, in the prerequisites list. One difference becomes +apparent if the variables are reset; consider this example: + + .SECONDEXPANSION: + AVAR = top + onefile: $(AVAR) + twofile: $$(AVAR) + AVAR = bottom + + Here the prerequisite of 'onefile' will be expanded immediately, and +resolve to the value 'top', while the prerequisite of 'twofile' will not +be full expanded until the secondary expansion and yield a value of +'bottom'. + + This is marginally more exciting, but the true power of this feature +only becomes apparent when you discover that secondary expansions always +take place within the scope of the automatic variables for that target. +This means that you can use variables such as '$@', '$*', etc. during +the second expansion and they will have their expected values, just as +in the recipe. All you have to do is defer the expansion by escaping +the '$'. Also, secondary expansion occurs for both explicit and +implicit (pattern) rules. Knowing this, the possible uses for this +feature increase dramatically. For example: + + .SECONDEXPANSION: + main_OBJS := main.o try.o test.o + lib_OBJS := lib.o api.o + + main lib: $$($$@_OBJS) + + Here, after the initial expansion the prerequisites of both the +'main' and 'lib' targets will be '$($@_OBJS)'. During the secondary +expansion, the '$@' variable is set to the name of the target and so the +expansion for the 'main' target will yield '$(main_OBJS)', or 'main.o +try.o test.o', while the secondary expansion for the 'lib' target will +yield '$(lib_OBJS)', or 'lib.o api.o'. + + You can also mix in functions here, as long as they are properly +escaped: + + main_SRCS := main.c try.c test.c + lib_SRCS := lib.c api.c + + .SECONDEXPANSION: + main lib: $$(patsubst %.c,%.o,$$($$@_SRCS)) + + This version allows users to specify source files rather than object +files, but gives the same resulting prerequisites list as the previous +example. + + Evaluation of automatic variables during the secondary expansion +phase, especially of the target name variable '$$@', behaves similarly +to evaluation within recipes. However, there are some subtle +differences and "corner cases" which come into play for the different +types of rule definitions that 'make' understands. The subtleties of +using the different automatic variables are described below. + +Secondary Expansion of Explicit Rules +------------------------------------- + +During the secondary expansion of explicit rules, '$$@' and '$$%' +evaluate, respectively, to the file name of the target and, when the +target is an archive member, the target member name. The '$$<' variable +evaluates to the first prerequisite in the first rule for this target. +'$$^' and '$$+' evaluate to the list of all prerequisites of rules _that +have already appeared_ for the same target ('$$+' with repetitions and +'$$^' without). The following example will help illustrate these +behaviors: + + .SECONDEXPANSION: + + foo: foo.1 bar.1 $$< $$^ $$+ # line #1 + + foo: foo.2 bar.2 $$< $$^ $$+ # line #2 + + foo: foo.3 bar.3 $$< $$^ $$+ # line #3 + + In the first prerequisite list, all three variables ('$$<', '$$^', +and '$$+') expand to the empty string. In the second, they will have +values 'foo.1', 'foo.1 bar.1', and 'foo.1 bar.1' respectively. In the +third they will have values 'foo.1', 'foo.1 bar.1 foo.2 bar.2', and +'foo.1 bar.1 foo.2 bar.2 foo.1 foo.1 bar.1 foo.1 bar.1' respectively. + + Rules undergo secondary expansion in makefile order, except that the +rule with the recipe is always evaluated last. + + The variables '$$?' and '$$*' are not available and expand to the +empty string. + +Secondary Expansion of Static Pattern Rules +------------------------------------------- + +Rules for secondary expansion of static pattern rules are identical to +those for explicit rules, above, with one exception: for static pattern +rules the '$$*' variable is set to the pattern stem. As with explicit +rules, '$$?' is not available and expands to the empty string. + +Secondary Expansion of Implicit Rules +------------------------------------- + +As 'make' searches for an implicit rule, it substitutes the stem and +then performs secondary expansion for every rule with a matching target +pattern. The value of the automatic variables is derived in the same +fashion as for static pattern rules. As an example: + + .SECONDEXPANSION: + + foo: bar + + foo foz: fo%: bo% + + %oo: $$< $$^ $$+ $$* + + When the implicit rule is tried for target 'foo', '$$<' expands to +'bar', '$$^' expands to 'bar boo', '$$+' also expands to 'bar boo', and +'$$*' expands to 'f'. + + Note that the directory prefix (D), as described in *note Implicit +Rule Search Algorithm: Implicit Rule Search, is appended (after +expansion) to all the patterns in the prerequisites list. As an +example: + + .SECONDEXPANSION: + + /tmp/foo.o: + + %.o: $$(addsuffix /%.c,foo bar) foo.h + @echo $^ + + 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. + + +File: make.info, Node: Rules, Next: Recipes, Prev: Makefiles, Up: Top + +4 Writing Rules +*************** + +A "rule" appears in the makefile and says when and how to remake certain +files, called the rule's "targets" (most often only one per rule). It +lists the other files that are the "prerequisites" of the target, and +the "recipe" to use to create or update the target. + + The order of rules is not significant, except for determining the +"default goal": the target for 'make' to consider, if you do not +otherwise specify one. The default goal is the first target of the +first rule in the first makefile. There are two exceptions: a target +starting with a period is not a default unless it also contains one or +more slashes, '/'; and, a target that defines a pattern rule has no +effect on the default goal. (*Note Defining and Redefining Pattern +Rules: Pattern Rules.) + + Therefore, we usually write the makefile so that the first rule is +the one for compiling the entire program or all the programs described +by the makefile (often with a target called 'all'). *Note Arguments to +Specify the Goals: Goals. + +* Menu: + +* Rule Example:: An example explained. +* Rule Syntax:: General syntax explained. +* Prerequisite Types:: There are two types of prerequisites. +* 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 a recipe + or prerequisites to mark other targets + as phony. +* Empty Targets:: When only the date matters and the + files are empty. +* Special Targets:: Targets with special built-in meanings. +* Multiple Targets:: When to make use of several targets in a rule. +* Multiple Rules:: How to use several rules with the same target. +* Static Pattern:: Static pattern rules apply to multiple targets + and can vary the prerequisites according to + the target name. +* Double-Colon:: How to use a special kind of rule to allow + several independent rules for one target. +* Automatic Prerequisites:: How to automatically generate rules giving + prerequisites from source files themselves. + + +File: make.info, Node: Rule Example, Next: Rule Syntax, Prev: Rules, Up: Rules + +4.1 Rule Example +================ + +Here is an example of a rule: + + foo.o : foo.c defs.h # module for twiddling the frobs + cc -c -g foo.c + + Its target is 'foo.o' and its prerequisites are 'foo.c' and 'defs.h'. +It has one command in the recipe: 'cc -c -g foo.c'. The recipe starts +with a tab to identify it as a recipe. + + This rule says two things: + + * How to decide whether 'foo.o' is out of date: it is out of date if + it does not exist, or if either 'foo.c' or 'defs.h' is more recent + than it. + + * How to update the file 'foo.o': by running 'cc' as stated. The + recipe does not explicitly mention 'defs.h', but we presume that + 'foo.c' includes it, and that is why 'defs.h' was added to the + prerequisites. + + +File: make.info, Node: Rule Syntax, Next: Prerequisite Types, Prev: Rule Example, Up: Rules + +4.2 Rule Syntax +=============== + +In general, a rule looks like this: + + TARGETS : PREREQUISITES + RECIPE + ... + +or like this: + + TARGETS : PREREQUISITES ; RECIPE + RECIPE + ... + + The TARGETS are file names, separated by spaces. Wildcard characters +may be used (*note Using Wildcard Characters in File Names: Wildcards.) +and a name of the form 'A(M)' represents member M in archive file A +(*note Archive Members as Targets: Archive Members.). Usually there is +only one target per rule, but occasionally there is a reason to have +more (*note Multiple Targets in a Rule: Multiple Targets.). + + The RECIPE lines start with a tab character (or the first character +in the value of the '.RECIPEPREFIX' variable; *note Special +Variables::). The first recipe line may appear on the line after the +prerequisites, with a tab character, or may appear on the same line, +with a semicolon. Either way, the effect is the same. There are other +differences in the syntax of recipes. *Note Writing Recipes in Rules: +Recipes. + + Because dollar signs are used to start 'make' variable references, if +you really want a dollar sign in a target or prerequisite you must write +two of them, '$$' (*note How to Use Variables: Using Variables.). If +you have enabled secondary expansion (*note Secondary Expansion::) and +you want a literal dollar sign in the prerequisites list, you must +actually write _four_ dollar signs ('$$$$'). + + You may split a long line by inserting a backslash followed by a +newline, but this is not required, as 'make' places no limit on the +length of a line in a makefile. + + A rule tells 'make' two things: when the targets are out of date, and +how to update them when necessary. + + The criterion for being out of date is specified in terms of the +PREREQUISITES, which consist of file names separated by spaces. +(Wildcards and archive members (*note Archives::) are allowed here too.) +A target is out of date if it does not exist or if it is older than any +of the prerequisites (by comparison of last-modification times). The +idea is that the contents of the target file are computed based on +information in the prerequisites, so if any of the prerequisites +changes, the contents of the existing target file are no longer +necessarily valid. + + How to update is specified by a RECIPE. This is one or more lines to +be executed by the shell (normally 'sh'), but with some extra features +(*note Writing Recipes in Rules: Recipes.). + + +File: make.info, Node: Prerequisite Types, Next: Wildcards, Prev: Rule Syntax, Up: Rules + +4.3 Types of Prerequisites +========================== + +There are two different types of prerequisites understood by GNU 'make': +normal prerequisites, described in the previous section, and +"order-only" prerequisites. A normal prerequisite makes two statements: +first, it imposes an order in which recipes will be invoked: the recipes +for all prerequisites of a target will be completed before the recipe +for the target is started. Second, it imposes a dependency +relationship: if any prerequisite is newer than the target, then the +target is considered out-of-date and must be rebuilt. + + Normally, this is exactly what you want: if a target's prerequisite +is updated, then the target should also be updated. + + Occasionally you may want to ensure that a prerequisite is built +before a target, but _without_ forcing the target to be updated if the +prerequisite is updated. "Order-only" prerequisites are used to create +this type of relationship. Order-only prerequisites can be specified by +placing a pipe symbol ('|') in the prerequisites list: any prerequisites +to the left of the pipe symbol are normal; any prerequisites to the +right are order-only: + + TARGETS : NORMAL-PREREQUISITES | ORDER-ONLY-PREREQUISITES + + The normal prerequisites section may of course be empty. Also, you +may still declare multiple lines of prerequisites for the same target: +they are appended appropriately (normal prerequisites are appended to +the list of normal prerequisites; order-only prerequisites are appended +to the list of order-only prerequisites). Note that if you declare the +same file to be both a normal and an order-only prerequisite, the normal +prerequisite takes precedence (since they have a strict superset of the +behavior of an order-only prerequisite). + + Order-only prerequisites are never checked when determining if the +target is out of date; even order-only prerequisites marked as phony +(*note Phony Targets::) will not cause the target to be rebuilt. + + Consider an example where your targets are to be placed in a separate +directory, and that directory might not exist before 'make' is run. In +this situation, you want the directory to be created before any targets +are placed into it but, because the timestamps on directories change +whenever a file is added, removed, or renamed, we certainly don't want +to rebuild all the targets whenever the directory's timestamp changes. +One way to manage this is with order-only prerequisites: make the +directory an order-only prerequisite on all the targets: + + OBJDIR := objdir + OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o) + + $(OBJDIR)/%.o : %.c + $(COMPILE.c) $(OUTPUT_OPTION) $< + + all: $(OBJS) + + $(OBJS): | $(OBJDIR) + + $(OBJDIR): + mkdir $(OBJDIR) + + Now the rule to create the 'objdir' directory will be run, if needed, +before any '.o' is built, but no '.o' will be built because the 'objdir' +directory timestamp changed. + + +File: make.info, Node: Wildcards, Next: Directory Search, Prev: Prerequisite Types, Up: Rules + +4.4 Using Wildcard Characters in File Names +=========================================== + +A single file name can specify many files using "wildcard characters". +The wildcard characters in 'make' are '*', '?' and '[...]', the same as +in the Bourne shell. For example, '*.c' specifies a list of all the +files (in the working directory) whose names end in '.c'. + + If an expression matches multiple files than the results will be +sorted.(1) However multiple expressions will not be globally sorted. +For example, '*.c *.h' will list all the files whose names end in '.c', +sorted, followed by all the files whose names end in '.h', sorted. + + The character '~' at the beginning of a file name also has special +significance. If alone, or followed by a slash, it represents your home +directory. For example '~/bin' expands to '/home/you/bin'. If the '~' +is followed by a word, the string represents the home directory of the +user named by that word. For example '~john/bin' expands to +'/home/john/bin'. On systems which don't have a home directory for each +user (such as MS-DOS or MS-Windows), this functionality can be simulated +by setting the environment variable HOME. + + Wildcard expansion is performed by 'make' automatically in targets +and in prerequisites. In recipes, the shell is responsible for wildcard +expansion. In other contexts, wildcard expansion happens only if you +request it explicitly with the 'wildcard' function. + + The special significance of a wildcard character can be turned off by +preceding it with a backslash. Thus, 'foo\*bar' would refer to a +specific file whose name consists of 'foo', an asterisk, and 'bar'. + +* Menu: + +* Wildcard Examples:: Several examples. +* Wildcard Pitfall:: Problems to avoid. +* Wildcard Function:: How to cause wildcard expansion where + it does not normally take place. + + ---------- Footnotes ---------- + + (1) Some older versions of GNU 'make' did not sort the results of +wildcard expansion. + + +File: make.info, Node: Wildcard Examples, Next: Wildcard Pitfall, Prev: Wildcards, Up: Wildcards + +4.4.1 Wildcard Examples +----------------------- + +Wildcards can be used in the recipe of a rule, where they are expanded +by the shell. For example, here is a rule to delete all the object +files: + + clean: + rm -f *.o + + Wildcards are also useful in the prerequisites of a rule. With the +following rule in the makefile, 'make print' will print all the '.c' +files that have changed since the last time you printed them: + + print: *.c + lpr -p $? + touch print + +This rule uses 'print' as an empty target file; see *note Empty Target +Files to Record Events: Empty Targets. (The automatic variable '$?' is +used to print only those files that have changed; see *note Automatic +Variables::.) + + Wildcard expansion does not happen when you define a variable. Thus, +if you write this: + + objects = *.o + +then the value of the variable 'objects' is the actual string '*.o'. +However, if you use the value of 'objects' in a target or prerequisite, +wildcard expansion will take place there. If you use the value of +'objects' in a recipe, the shell may perform wildcard expansion when the +recipe runs. To set 'objects' to the expansion, instead use: + + objects := $(wildcard *.o) + +*Note Wildcard Function::. + + +File: make.info, Node: Wildcard Pitfall, Next: Wildcard Function, Prev: Wildcard Examples, Up: Wildcards + +4.4.2 Pitfalls of Using Wildcards +--------------------------------- + +Now here is an example of a naive way of using wildcard expansion, that +does not do what you would intend. Suppose you would like to say that +the executable file 'foo' is made from all the object files in the +directory, and you write this: + + objects = *.o + + foo : $(objects) + cc -o foo $(CFLAGS) $(objects) + +The value of 'objects' is the actual string '*.o'. Wildcard expansion +happens in the rule for 'foo', so that each _existing_ '.o' file becomes +a prerequisite of 'foo' and will be recompiled if necessary. + + But what if you delete all the '.o' files? When a wildcard matches +no files, it is left as it is, so then 'foo' will depend on the +oddly-named file '*.o'. Since no such file is likely to exist, 'make' +will give you an error saying it cannot figure out how to make '*.o'. +This is not what you want! + + Actually it is possible to obtain the desired result with wildcard +expansion, but you need more sophisticated techniques, including the +'wildcard' function and string substitution. *Note The Function +'wildcard': Wildcard Function. + + Microsoft operating systems (MS-DOS and MS-Windows) use backslashes +to separate directories in pathnames, like so: + + c:\foo\bar\baz.c + + This is equivalent to the Unix-style 'c:/foo/bar/baz.c' (the 'c:' +part is the so-called drive letter). When 'make' runs on these systems, +it supports backslashes as well as the Unix-style forward slashes in +pathnames. However, this support does _not_ include the wildcard +expansion, where backslash is a quote character. Therefore, you _must_ +use Unix-style slashes in these cases. + + +File: make.info, Node: Wildcard Function, Prev: Wildcard Pitfall, Up: Wildcards + +4.4.3 The Function 'wildcard' +----------------------------- + +Wildcard expansion happens automatically in rules. But wildcard +expansion does not normally take place when a variable is set, or inside +the arguments of a function. If you want to do wildcard expansion in +such places, you need to use the 'wildcard' function, like this: + + $(wildcard PATTERN...) + +This string, used anywhere in a makefile, is replaced by a +space-separated list of names of existing files that match one of the +given file name patterns. If no existing file name matches a pattern, +then that pattern is omitted from the output of the 'wildcard' function. +Note that this is different from how unmatched wildcards behave in +rules, where they are used verbatim rather than ignored (*note Wildcard +Pitfall::). + + As with wildcard expansion in rules, the results of the 'wildcard' +function are sorted. But again, each individual expression is sorted +separately, so '$(wildcard *.c *.h)' will expand to all files matching +'.c', sorted, followed by all files matching '.h', sorted. + + One use of the 'wildcard' function is to get a list of all the C +source files in a directory, like this: + + $(wildcard *.c) + + We can change the list of C source files into a list of object files +by replacing the '.c' suffix with '.o' in the result, like this: + + $(patsubst %.c,%.o,$(wildcard *.c)) + +(Here we have used another function, 'patsubst'. *Note Functions for +String Substitution and Analysis: Text Functions.) + + Thus, a makefile to compile all C source files in the directory and +then link them together could be written as follows: + + objects := $(patsubst %.c,%.o,$(wildcard *.c)) + + foo : $(objects) + cc -o foo $(objects) + +(This takes advantage of the implicit rule for compiling C programs, so +there is no need to write explicit rules for compiling the files. *Note +The Two Flavors of Variables: Flavors, for an explanation of ':=', which +is a variant of '='.) + + +File: make.info, Node: Directory Search, Next: Phony Targets, Prev: Wildcards, Up: Rules + +4.5 Searching Directories for Prerequisites +=========================================== + +For large systems, it is often desirable to put sources in a separate +directory from the binaries. The "directory search" features of 'make' +facilitate this by searching several directories automatically to find a +prerequisite. When you redistribute the files among directories, you do +not need to change the individual rules, just the search paths. + +* Menu: + +* General Search:: Specifying a search path that applies + to every prerequisite. +* 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 + with search paths. +* Implicit/Search:: How search paths affect implicit rules. +* Libraries/Search:: Directory search for link libraries. + + +File: make.info, Node: General Search, Next: Selective Search, Prev: Directory Search, Up: Directory Search + +4.5.1 'VPATH': Search Path for All Prerequisites +------------------------------------------------ + +The value of the 'make' variable 'VPATH' specifies a list of directories +that 'make' should search. Most often, the directories are expected to +contain prerequisite files that are not in the current directory; +however, 'make' uses 'VPATH' as a search list for both prerequisites and +targets of rules. + + Thus, if a file that is listed as a target or prerequisite does not +exist in the current directory, 'make' searches the directories listed +in 'VPATH' for a file with that name. If a file is found in one of +them, that file may become the prerequisite (see below). Rules may then +specify the names of files in the prerequisite list as if they all +existed in the current directory. *Note Writing Recipes with Directory +Search: Recipes/Search. + + In the 'VPATH' variable, directory names are separated by colons or +blanks. The order in which directories are listed is the order followed +by 'make' in its search. (On MS-DOS and MS-Windows, semi-colons are +used as separators of directory names in 'VPATH', since the colon can be +used in the pathname itself, after the drive letter.) + + For example, + + VPATH = src:../headers + +specifies a path containing two directories, 'src' and '../headers', +which 'make' searches in that order. + + With this value of 'VPATH', the following rule, + + foo.o : foo.c + +is interpreted as if it were written like this: + + foo.o : src/foo.c + +assuming the file 'foo.c' does not exist in the current directory but is +found in the directory 'src'. + + +File: make.info, Node: Selective Search, Next: Search Algorithm, Prev: General Search, Up: Directory Search + +4.5.2 The 'vpath' Directive +--------------------------- + +Similar to the 'VPATH' variable, but more selective, is the 'vpath' +directive (note lower case), which allows you to specify a search path +for a particular class of file names: those that match a particular +pattern. Thus you can supply certain search directories for one class +of file names and other directories (or none) for other file names. + + There are three forms of the 'vpath' directive: + +'vpath PATTERN DIRECTORIES' + Specify the search path DIRECTORIES for file names that match + PATTERN. + + The search path, DIRECTORIES, is a list of directories to be + searched, separated by colons (semi-colons on MS-DOS and + MS-Windows) or blanks, just like the search path used in the + 'VPATH' variable. + +'vpath PATTERN' + Clear out the search path associated with PATTERN. + +'vpath' + + Clear all search paths previously specified with 'vpath' + directives. + + A 'vpath' pattern is a string containing a '%' character. The string +must match the file name of a prerequisite that is being searched for, +the '%' character matching any sequence of zero or more characters (as +in pattern rules; *note Defining and Redefining Pattern Rules: Pattern +Rules.). For example, '%.h' matches files that end in '.h'. (If there +is no '%', the pattern must match the prerequisite exactly, which is not +useful very often.) + + '%' characters in a 'vpath' directive's pattern can be quoted with +preceding backslashes ('\'). Backslashes that would otherwise quote '%' +characters can be quoted with more backslashes. Backslashes that quote +'%' characters or other backslashes are removed from the pattern before +it is compared to file names. Backslashes that are not in danger of +quoting '%' characters go unmolested. + + When a prerequisite fails to exist in the current directory, if the +PATTERN in a 'vpath' directive matches the name of the prerequisite +file, then the DIRECTORIES in that directive are searched just like (and +before) the directories in the 'VPATH' variable. + + For example, + + vpath %.h ../headers + +tells 'make' to look for any prerequisite whose name ends in '.h' in the +directory '../headers' if the file is not found in the current +directory. + + If several 'vpath' patterns match the prerequisite file's name, then +'make' processes each matching 'vpath' directive one by one, searching +all the directories mentioned in each directive. 'make' handles +multiple 'vpath' directives in the order in which they appear in the +makefile; multiple directives with the same pattern are independent of +each other. + + Thus, + + vpath %.c foo + vpath % blish + vpath %.c bar + +will look for a file ending in '.c' in 'foo', then 'blish', then 'bar', +while + + vpath %.c foo:bar + vpath % blish + +will look for a file ending in '.c' in 'foo', then 'bar', then 'blish'. + + +File: make.info, Node: Search Algorithm, Next: Recipes/Search, Prev: Selective Search, Up: Directory Search + +4.5.3 How Directory Searches are Performed +------------------------------------------ + +When a prerequisite is found through directory search, regardless of +type (general or selective), the pathname located may not be the one +that 'make' actually provides you in the prerequisite list. Sometimes +the path discovered through directory search is thrown away. + + The algorithm 'make' uses to decide whether to keep or abandon a path +found via directory search is as follows: + + 1. If a target file does not exist at the path specified in the + makefile, directory search is performed. + + 2. If the directory search is successful, that path is kept and this + file is tentatively stored as the target. + + 3. All prerequisites of this target are examined using this same + method. + + 4. After processing the prerequisites, the target may or may not need + to be rebuilt: + + a. If the target does _not_ need to be rebuilt, the path to the + file found during directory search is used for any + prerequisite lists which contain this target. In short, if + 'make' doesn't need to rebuild the target then you use the + path found via directory search. + + b. If the target _does_ need to be rebuilt (is out-of-date), the + pathname found during directory search is _thrown away_, and + the target is rebuilt using the file name specified in the + makefile. In short, if 'make' must rebuild, then the target + is rebuilt locally, not in the directory found via directory + search. + + This algorithm may seem complex, but in practice it is quite often +exactly what you want. + + Other versions of 'make' use a simpler algorithm: if the file does +not exist, and it is found via directory search, then that pathname is +always used whether or not the target needs to be built. Thus, if the +target is rebuilt it is created at the pathname discovered during +directory search. + + If, in fact, this is the behavior you want for some or all of your +directories, you can use the 'GPATH' variable to indicate this to +'make'. + + 'GPATH' has the same syntax and format as 'VPATH' (that is, a space- +or colon-delimited list of pathnames). If an out-of-date target is +found by directory search in a directory that also appears in 'GPATH', +then that pathname is not thrown away. The target is rebuilt using the +expanded path. + + +File: make.info, Node: Recipes/Search, Next: Implicit/Search, Prev: Search Algorithm, Up: Directory Search + +4.5.4 Writing Recipes with Directory Search +------------------------------------------- + +When a prerequisite is found in another directory through directory +search, this cannot change the recipe of the rule; they will execute as +written. Therefore, you must write the recipe with care so that it will +look for the prerequisite in the directory where 'make' finds it. + + This is done with the "automatic variables" such as '$^' (*note +Automatic Variables::). For instance, the value of '$^' is a list of +all the prerequisites of the rule, including the names of the +directories in which they were found, and the value of '$@' is the +target. Thus: + + foo.o : foo.c + cc -c $(CFLAGS) $^ -o $@ + +(The variable 'CFLAGS' exists so you can specify flags for C compilation +by implicit rules; we use it here for consistency so it will affect all +C compilations uniformly; *note Variables Used by Implicit Rules: +Implicit Variables.) + + Often the prerequisites include header files as well, which you do +not want to mention in the recipe. The automatic variable '$<' is just +the first prerequisite: + + VPATH = src:../headers + foo.o : foo.c defs.h hack.h + cc -c $(CFLAGS) $< -o $@ + + +File: make.info, Node: Implicit/Search, Next: Libraries/Search, Prev: Recipes/Search, Up: Directory Search + +4.5.5 Directory Search and Implicit Rules +----------------------------------------- + +The search through the directories specified in 'VPATH' or with 'vpath' +also happens during consideration of implicit rules (*note Using +Implicit Rules: Implicit Rules.). + + For example, when a file 'foo.o' has no explicit rule, 'make' +considers implicit rules, such as the built-in rule to compile 'foo.c' +if that file exists. If such a file is lacking in the current +directory, the appropriate directories are searched for it. If 'foo.c' +exists (or is mentioned in the makefile) in any of the directories, the +implicit rule for C compilation is applied. + + The recipes of implicit rules normally use automatic variables as a +matter of necessity; consequently they will use the file names found by +directory search with no extra effort. + + +File: make.info, Node: Libraries/Search, Prev: Implicit/Search, Up: Directory Search + +4.5.6 Directory Search for Link Libraries +----------------------------------------- + +Directory search applies in a special way to libraries used with the +linker. This special feature comes into play when you write a +prerequisite whose name is of the form '-lNAME'. (You can tell +something strange is going on here because the prerequisite is normally +the name of a file, and the _file name_ of a library generally looks +like 'libNAME.a', not like '-lNAME'.) + + When a prerequisite's name has the form '-lNAME', 'make' handles it +specially by searching for the file 'libNAME.so', and, if it is not +found, for the file 'libNAME.a' in the current directory, in directories +specified by matching 'vpath' search paths and the 'VPATH' search path, +and then in the directories '/lib', '/usr/lib', and 'PREFIX/lib' +(normally '/usr/local/lib', but MS-DOS/MS-Windows versions of 'make' +behave as if PREFIX is defined to be the root of the DJGPP installation +tree). + + For example, if there is a '/usr/lib/libcurses.a' library on your +system (and no '/usr/lib/libcurses.so' file), then + + foo : foo.c -lcurses + cc $^ -o $@ + +would cause the command 'cc foo.c /usr/lib/libcurses.a -o foo' to be +executed when 'foo' is older than 'foo.c' or than +'/usr/lib/libcurses.a'. + + Although the default set of files to be searched for is 'libNAME.so' +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 file name. + + The default value for '.LIBPATTERNS' is 'lib%.so lib%.a', which +provides the default behavior described above. + + You can turn off link library expansion completely by setting this +variable to an empty value. + + +File: make.info, Node: Phony Targets, Next: Force Targets, Prev: Directory Search, Up: Rules + +4.6 Phony Targets +================= + +A phony target is one that is not really the name of a file; rather it +is just a name for a recipe to be executed when you make an explicit +request. There are two reasons to use a phony target: to avoid a +conflict with a file of the same name, and to improve performance. + + If you write a rule whose recipe will not create the target file, the +recipe will be executed every time the target comes up for remaking. +Here is an example: + + clean: + rm *.o temp + +Because the 'rm' command does not create a file named 'clean', probably +no such file will ever exist. Therefore, the 'rm' command will be +executed every time you say 'make clean'. + + In this example, the 'clean' target will not work properly if a file +named 'clean' is ever created in this directory. Since it has no +prerequisites, 'clean' would always be considered up to date and its +recipe would not be executed. To avoid this problem you can explicitly +declare the target to be phony by making it a prerequisite of the +special target '.PHONY' (*note Special Built-in Target Names: Special +Targets.) as follows: + + .PHONY: clean + clean: + rm *.o temp + +Once this is done, 'make clean' will run the recipe regardless of +whether there is a file named 'clean'. + + Prerequisites of '.PHONY' are always interpreted as literal target +names, never as patterns (even if they contain '%' characters). To +always rebuild a pattern rule consider using a "force target" (*note +Rules without Recipes or Prerequisites: Force Targets.). + + Phony targets are also useful in conjunction with recursive +invocations of 'make' (*note Recursive Use of 'make': Recursion.). In +this situation the makefile will often contain a variable which lists a +number of sub-directories to be built. A simplistic way to handle this +is to define one rule with a recipe that loops over the sub-directories, +like this: + + SUBDIRS = foo bar baz + + subdirs: + for dir in $(SUBDIRS); do \ + $(MAKE) -C $$dir; \ + done + + There are problems with this method, however. First, any error +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 +unfortunate. Second, and perhaps more importantly, you cannot take full +advantage of 'make''s ability to build targets in parallel (*note +Parallel Execution: Parallel.), since there is only one rule. Each +individual makefile's targets will be built in parallel, but only one +sub-directory will be built at a time. + + 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 + + .PHONY: subdirs $(SUBDIRS) + + subdirs: $(SUBDIRS) + + $(SUBDIRS): + $(MAKE) -C $@ + + foo: baz + + 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. + + The implicit rule search (*note Implicit Rules::) is skipped for +'.PHONY' targets. This is why declaring a target as '.PHONY' is good +for performance, even if you are not worried about the actual file +existing. + + A phony target should not be a prerequisite of a real target file; if +it is, its recipe will be run every time 'make' considers that file. As +long as a phony target is never a prerequisite of a real target, the +phony target recipe will be executed only when the phony target is a +specified goal (*note Arguments to Specify the Goals: Goals.). + + You should not declare an included makefile as phony. Phony targets +are not intended to represent real files, and because the target is +always considered out of date make will always rebuild it then +re-execute itself (*note How Makefiles Are Remade: Remaking Makefiles.). +To avoid this, 'make' will not re-execute itself if an included file +marked as phony is re-built. + + Phony targets can have prerequisites. When one directory contains +multiple programs, it is most convenient to describe all of the programs +in one makefile './Makefile'. Since the target remade by default will +be the first one in the makefile, it is common to make this a phony +target named 'all' and give it, as prerequisites, all the individual +programs. For example: + + all : prog1 prog2 prog3 + .PHONY : all + + prog1 : prog1.o utils.o + cc -o prog1 prog1.o utils.o + + prog2 : prog2.o + cc -o prog2 prog2.o + + prog3 : prog3.o sort.o utils.o + cc -o prog3 prog3.o sort.o utils.o + +Now you can say just 'make' to remake all three programs, or specify as +arguments the ones to remake (as in 'make prog1 prog3'). Phoniness is +not inherited: the prerequisites of a phony target are not themselves +phony, unless explicitly declared to be so. + + When one phony target is a prerequisite of another, it serves as a +subroutine of the other. For example, here 'make cleanall' will delete +the object files, the difference files, and the file 'program': + + .PHONY: cleanall cleanobj cleandiff + + cleanall : cleanobj cleandiff + rm program + + cleanobj : + rm *.o + + cleandiff : + rm *.diff + + +File: make.info, Node: Force Targets, Next: Empty Targets, Prev: Phony Targets, Up: Rules + +4.7 Rules without Recipes or Prerequisites +========================================== + +If a rule has no prerequisites or recipe, and the target of the rule is +a nonexistent file, then 'make' imagines this target to have been +updated whenever its rule is run. This implies that all targets +depending on this one will always have their recipe run. + + An example will illustrate this: + + clean: FORCE + rm $(objects) + FORCE: + + Here the target 'FORCE' satisfies the special conditions, so the +target 'clean' that depends on it is forced to run its recipe. There is +nothing special about the name 'FORCE', but that is one name commonly +used this way. + + As you can see, using 'FORCE' this way has the same results as using +'.PHONY: clean'. + + Using '.PHONY' is more explicit and more efficient. However, other +versions of 'make' do not support '.PHONY'; thus 'FORCE' appears in many +makefiles. *Note Phony Targets::. + + +File: make.info, Node: Empty Targets, Next: Special Targets, Prev: Force Targets, Up: Rules + +4.8 Empty Target Files to Record Events +======================================= + +The "empty target" is a variant of the phony target; it is used to hold +recipes for an action that you request explicitly from time to time. +Unlike a phony target, this target file can really exist; but the file's +contents do not matter, and usually are empty. + + The purpose of the empty target file is to record, with its +last-modification time, when the rule's recipe was last executed. It +does so because one of the commands in the recipe is a 'touch' command +to update the target file. + + The empty target file should have some prerequisites (otherwise it +doesn't make sense). When you ask to remake the empty target, the +recipe is executed if any prerequisite is more recent than the target; +in other words, if a prerequisite has changed since the last time you +remade the target. Here is an example: + + print: foo.c bar.c + lpr -p $? + touch print + +With this rule, 'make print' will execute the 'lpr' command if either +source file has changed since the last 'make print'. The automatic +variable '$?' is used to print only those files that have changed (*note +Automatic Variables::). + + +File: make.info, Node: Special Targets, Next: Multiple Targets, Prev: Empty Targets, Up: Rules + +4.9 Special Built-in Target Names +================================= + +Certain names have special meanings if they appear as targets. + +'.PHONY' + + The prerequisites of the special target '.PHONY' are considered to + be phony targets. When it is time to consider such a target, + 'make' will run its recipe unconditionally, regardless of whether a + file with that name exists or what its last-modification time is. + *Note Phony Targets: Phony Targets. + +'.SUFFIXES' + + The prerequisites of the special target '.SUFFIXES' are the list of + suffixes to be used in checking for suffix rules. *Note + Old-Fashioned Suffix Rules: Suffix Rules. + +'.DEFAULT' + + The recipe specified for '.DEFAULT' is used for any target for + which no rules are found (either explicit rules or implicit rules). + *Note Last Resort::. If a '.DEFAULT' recipe is specified, every + file mentioned as a prerequisite, but not as a target in a rule, + will have that recipe executed on its behalf. *Note Implicit Rule + Search Algorithm: Implicit Rule Search. + +'.PRECIOUS' + + The targets which '.PRECIOUS' depends on are given the following + special treatment: if 'make' is killed or interrupted during the + execution of their recipes, the target is not deleted. *Note + Interrupting or Killing 'make': Interrupts. Also, if the target is + an intermediate file, it will not be deleted after it is no longer + needed, as is normally done. *Note Chains of Implicit Rules: + Chained Rules. In this latter respect it overlaps with the + '.SECONDARY' special target. + + You can also list the target pattern of an implicit rule (such as + '%.o') as a prerequisite file of the special target '.PRECIOUS' to + preserve intermediate files created by rules whose target patterns + match that file's name. + +'.INTERMEDIATE' + + The targets which '.INTERMEDIATE' depends on are treated as + intermediate files. *Note Chains of Implicit Rules: Chained Rules. + '.INTERMEDIATE' with no prerequisites has no effect. + +'.NOTINTERMEDIATE' + + Prerequisites of the special target '.NOTINTERMEDIATE' are never + considered intermediate files. *Note Chains of Implicit Rules: + Chained Rules. '.NOTINTERMEDIATE' with no prerequisites causes all + targets to be treated as not intermediate. + + If the prerequisite is a target pattern then targets that are built + using that pattern rule are not considered intermediate. + +'.SECONDARY' + + The targets which '.SECONDARY' depends on are treated as + intermediate files, except that they are never automatically + deleted. *Note Chains of Implicit Rules: Chained Rules. + + '.SECONDARY' can be used to avoid redundant rebuilds in some + unusual situations. For example: + + hello.bin: hello.o bye.o + $(CC) -o $@ $^ + + %.o: %.c + $(CC) -c -o $@ $< + + .SECONDARY: hello.o bye.o + + Suppose 'hello.bin' is up to date in regards to the source files, + _but_ the object file 'hello.o' is missing. Without '.SECONDARY' + make would rebuild 'hello.o' then rebuild 'hello.bin' even though + the source files had not changed. By declaring 'hello.o' as + '.SECONDARY' 'make' will not need to rebuild it and won't need to + rebuild 'hello.bin' either. Of course, of one of the source files + _were_ updated then all object files would be rebuilt so that the + creation of 'hello.bin' could succeed. + + '.SECONDARY' with no prerequisites causes all targets to be treated + as secondary (i.e., no target is removed because it is considered + intermediate). + +'.SECONDEXPANSION' + + If '.SECONDEXPANSION' is mentioned as a target anywhere in the + makefile, then all prerequisite lists defined _after_ it appears + will be expanded a second time after all makefiles have been read + in. *Note Secondary Expansion: Secondary Expansion. + +'.DELETE_ON_ERROR' + + If '.DELETE_ON_ERROR' is mentioned as a target anywhere in the + makefile, then 'make' will delete the target of a rule if it has + changed and its recipe exits with a nonzero exit status, just as it + does when it receives a signal. *Note Errors in Recipes: Errors. + +'.IGNORE' + + If you specify prerequisites for '.IGNORE', then 'make' will ignore + errors in execution of the recipe for those particular files. The + recipe for '.IGNORE' (if any) is ignored. + + If mentioned as a target with no prerequisites, '.IGNORE' says to + ignore errors in execution of recipes for all files. This usage of + '.IGNORE' is supported only for historical compatibility. Since + this affects every recipe in the makefile, it is not very useful; + we recommend you use the more selective ways to ignore errors in + specific recipes. *Note Errors in Recipes: Errors. + +'.LOW_RESOLUTION_TIME' + + If you specify prerequisites for '.LOW_RESOLUTION_TIME', 'make' + assumes that these files are created by commands that generate low + resolution time stamps. The recipe for the '.LOW_RESOLUTION_TIME' + target are ignored. + + The high resolution file time stamps of many modern file systems + lessen the chance of 'make' incorrectly concluding that a file is + up to date. Unfortunately, some hosts do not provide a way to set + a high resolution file time stamp, so commands like 'cp -p' that + explicitly set a file's time stamp must discard its 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 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 + same second that 'src''s time stamp is in. + + Due to a limitation of the archive format, archive member time + stamps are always low resolution. You need not list archive + members as prerequisites of '.LOW_RESOLUTION_TIME', as 'make' does + this automatically. + +'.SILENT' + + If you specify prerequisites for '.SILENT', then 'make' will not + print the recipe used to remake those particular files before + executing them. The recipe for '.SILENT' is ignored. + + If mentioned as a target with no prerequisites, '.SILENT' says not + to print any recipes before executing them. You may also use more + selective ways to silence specific recipe command lines. *Note + Recipe Echoing: Echoing. If you want to silence all recipes for a + particular run of 'make', use the '-s' or '--silent' option (*note + Options Summary::). + +'.EXPORT_ALL_VARIABLES' + + Simply by being mentioned as a target, this tells 'make' to export + all variables to child processes by default. This is an + alternative to using 'export' with no arguments. *Note + Communicating Variables to a Sub-'make': Variables/Recursion. + +'.NOTPARALLEL' + + If '.NOTPARALLEL' is mentioned as a target with no prerequisites, + all targets in this invocation of 'make' will be run serially, even + if the '-j' option is given. Any recursively invoked 'make' + command will still run recipes in parallel (unless its makefile + also contains this target). + + If '.NOTPARALLEL' has targets as prerequisites, then all the + prerequisites of those targets will be run serially. This + implicitly adds a '.WAIT' between each prerequisite of the listed + targets. *Note Disabling Parallel Execution: Parallel Disable. + +'.ONESHELL' + + If '.ONESHELL' is mentioned as a target, then when a target is + built all lines of the recipe will be given to a single invocation + of the shell rather than each line being invoked separately. *Note + Recipe Execution: Execution. + +'.POSIX' + + If '.POSIX' is mentioned as a target, then the makefile will be + parsed and run in POSIX-conforming mode. This does _not_ mean that + only POSIX-conforming makefiles will be accepted: all advanced GNU + 'make' features are still available. Rather, this target causes + 'make' to behave as required by POSIX in those areas where 'make''s + default behavior differs. + + In particular, if this target is mentioned then recipes will be + invoked as if the shell had been passed the '-e' flag: the first + failing command in a recipe will cause the recipe to fail + immediately. + + Any defined implicit rule suffix also counts as a special target if +it appears as a target, and so does the concatenation of two suffixes, +such as '.c.o'. These targets are suffix rules, an obsolete way of +defining implicit rules (but a way still widely used). In principle, +any target name could be special in this way if you break it in two and +add both pieces to the suffix list. In practice, suffixes normally +begin with '.', so these special target names also begin with '.'. +*Note Old-Fashioned Suffix Rules: Suffix Rules. + + +File: make.info, Node: Multiple Targets, Next: Multiple Rules, Prev: Special Targets, Up: Rules + +4.10 Multiple Targets in a Rule +=============================== + +When an explicit rule has multiple targets they can be treated in one of +two possible ways: as independent targets or as grouped targets. The +manner in which they are treated is determined by the separator that +appears after the list of targets. + +Rules with Independent Targets +.............................. + +Rules that use the standard target separator, ':', define independent +targets. This is equivalent to writing the same rule once for each +target, with duplicated prerequisites and recipes. Typically, the +recipe would use automatic variables such as '$@' to specify which +target is being built. + + Rules with independent targets are useful in two cases: + + * You want just prerequisites, no recipe. For example: + + kbd.o command.o files.o: command.h + + gives an additional prerequisite to each of the three object files + mentioned. It is equivalent to writing: + + kbd.o: command.h + command.o: command.h + files.o: command.h + + * Similar recipes work for all the targets. The automatic variable + '$@' can be used to substitute the particular target to be remade + into the commands (*note Automatic Variables::). For example: + + bigoutput littleoutput : text.g + generate text.g -$(subst output,,$@) > $@ + + is equivalent to + + bigoutput : text.g + generate text.g -big > bigoutput + littleoutput : text.g + generate text.g -little > littleoutput + + Here we assume the hypothetical program 'generate' makes two types + of output, one if given '-big' and one if given '-little'. *Note + Functions for String Substitution and Analysis: Text Functions, for + an explanation of the 'subst' function. + + Suppose you would like to vary the prerequisites according to the +target, much as the variable '$@' allows you to vary the recipe. You +cannot do this with multiple targets in an ordinary rule, but you can do +it with a "static pattern rule". *Note Static Pattern Rules: Static +Pattern. + +Rules with Grouped Targets +.......................... + +If instead of independent targets you have a recipe that generates +multiple files from a single invocation, you can express that +relationship by declaring your rule to use _grouped targets_. A grouped +target rule uses the separator '&:' (the '&' here is used to imply +"all"). + + When 'make' builds any one of the grouped targets, it understands +that all the other targets in the group are also updated as a result of +the invocation of the recipe. Furthermore, if only some of the grouped +targets are out of date or missing 'make' will realize that running the +recipe will update all of the targets. Finally, if any of the grouped +targets are out of date, all the grouped targets are considered out of +date. + + As an example, this rule defines a grouped target: + + foo bar biz &: baz boz + echo $^ > foo + echo $^ > bar + echo $^ > biz + + During the execution of a grouped target's recipe, the automatic +variable '$@' is set to the name of the particular target in the group +which triggered the rule. Caution must be used if relying on this +variable in the recipe of a grouped target rule. + + Unlike independent targets, a grouped target rule _must_ include a +recipe. However, targets that are members of a grouped target may also +appear in independent target rule definitions that do not have recipes. + + Each target may have only one recipe associated with it. If a +grouped target appears in either an independent target rule or in +another grouped target rule with a recipe, you will get a warning and +the latter recipe will replace the former recipe. Additionally the +target will be removed from the previous group and appear only in the +new group. + + If you would like a target to appear in multiple groups, then you +must use the double-colon grouped target separator, '&::' when declaring +all of the groups containing that target. Grouped double-colon targets +are each considered independently, and each grouped double-colon rule's +recipe is executed at most once, if at least one of its multiple targets +requires updating. + + +File: make.info, Node: Multiple Rules, Next: Static Pattern, Prev: Multiple Targets, Up: Rules + +4.11 Multiple Rules for One Target +================================== + +One file can be the target of several rules. All the prerequisites +mentioned in all the rules are merged into one list of prerequisites for +the target. If the target is older than any prerequisite from any rule, +the recipe is executed. + + There can only be one recipe to be executed for a file. If more than +one rule gives a recipe for the same file, 'make' uses the last one +given and prints an error message. (As a special case, if the file's +name begins with a dot, no error message is printed. This odd behavior +is only for compatibility with other implementations of 'make'... you +should avoid using it). Occasionally it is useful to have the same +target invoke multiple recipes which are defined in different parts of +your makefile; you can use "double-colon rules" (*note Double-Colon::) +for this. + + An extra rule with just prerequisites can be used to give a few extra +prerequisites to many files at once. For example, makefiles often have +a variable, such as 'objects', containing a list of all the compiler +output files in the system being made. An easy way to say that all of +them must be recompiled if 'config.h' changes is to write the following: + + objects = foo.o bar.o + foo.o : defs.h + bar.o : defs.h test.h + $(objects) : config.h + + This could be inserted or taken out without changing the rules that +really specify how to make the object files, making it a convenient form +to use if you wish to add the additional prerequisite intermittently. + + Another wrinkle is that the additional prerequisites could be +specified with a variable that you set with a command line argument to +'make' (*note Overriding Variables: Overriding.). For example, + + extradeps= + $(objects) : $(extradeps) + +means that the command 'make extradeps=foo.h' will consider 'foo.h' as a +prerequisite of each object file, but plain 'make' will not. + + If none of the explicit rules for a target has a recipe, then 'make' +searches for an applicable implicit rule to find one *note Using +Implicit Rules: Implicit Rules.). + + +File: make.info, Node: Static Pattern, Next: Double-Colon, Prev: Multiple Rules, Up: Rules + +4.12 Static Pattern Rules +========================= + +"Static pattern rules" are rules which specify multiple targets and +construct the prerequisite names for each target based on the target +name. They are more general than ordinary rules with multiple targets +because the targets do not have to have identical prerequisites. Their +prerequisites must be _analogous_, but not necessarily _identical_. + +* Menu: + +* Static Usage:: The syntax of static pattern rules. +* Static versus Implicit:: When are they better than implicit rules? + + +File: make.info, Node: Static Usage, Next: Static versus Implicit, Prev: Static Pattern, Up: Static Pattern + +4.12.1 Syntax of Static Pattern Rules +------------------------------------- + +Here is the syntax of a static pattern rule: + + TARGETS ...: TARGET-PATTERN: PREREQ-PATTERNS ... + RECIPE + ... + +The TARGETS list specifies the targets that the rule applies to. The +targets can contain wildcard characters, just like the targets of +ordinary rules (*note Using Wildcard Characters in File Names: +Wildcards.). + + The TARGET-PATTERN and PREREQ-PATTERNS say how to compute the +prerequisites of each target. Each target is matched against the +TARGET-PATTERN to extract a part of the target name, called the "stem". +This stem is substituted into each of the PREREQ-PATTERNS to make the +prerequisite names (one from each PREREQ-PATTERN). + + Each pattern normally contains the character '%' just once. When the +TARGET-PATTERN matches a target, the '%' can match any part of the +target name; this part is called the "stem". The rest of the pattern +must match exactly. For example, the target 'foo.o' matches the pattern +'%.o', with 'foo' as the stem. The targets 'foo.c' and 'foo.out' do not +match that pattern. + + The prerequisite names for each target are made by substituting the +stem for the '%' in each prerequisite pattern. For example, if one +prerequisite pattern is '%.c', then substitution of the stem 'foo' gives +the prerequisite name 'foo.c'. It is legitimate to write a prerequisite +pattern that does not contain '%'; then this prerequisite is the same +for all targets. + + '%' characters in pattern rules can be quoted with preceding +backslashes ('\'). Backslashes that would otherwise quote '%' +characters can be quoted with more backslashes. Backslashes that quote +'%' characters or other backslashes are removed from the pattern before +it is compared to file names or has a stem substituted into it. +Backslashes that are not in danger of quoting '%' characters go +unmolested. For example, the pattern 'the\%weird\\%pattern\\' has +'the%weird\' preceding the operative '%' character, and 'pattern\\' +following it. The final two backslashes are left alone because they +cannot affect any '%' character. + + Here is an example, which compiles each of 'foo.o' and 'bar.o' from +the corresponding '.c' file: + + objects = foo.o bar.o + + all: $(objects) + + $(objects): %.o: %.c + $(CC) -c $(CFLAGS) $< -o $@ + +Here '$<' is the automatic variable that holds the name of the +prerequisite and '$@' is the automatic variable that holds the name of +the target; see *note Automatic Variables::. + + 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 non-matching file names (*note Functions for String +Substitution and Analysis: Text Functions.): + + files = foo.elc bar.o lose.o + + $(filter %.o,$(files)): %.o: %.c + $(CC) -c $(CFLAGS) $< -o $@ + $(filter %.elc,$(files)): %.elc: %.el + emacs -f batch-byte-compile $< + +In this example the result of '$(filter %.o,$(files))' is 'bar.o +lose.o', and the first static pattern rule causes each of these object +files to be updated by compiling the corresponding C source file. The +result of '$(filter %.elc,$(files))' is 'foo.elc', so that file is made +from 'foo.el'. + + Another example shows how to use '$*' in static pattern rules: + + bigoutput littleoutput : %output : text.g + generate text.g -$* > $@ + +When the 'generate' command is run, '$*' will expand to the stem, either +'big' or 'little'. + + +File: make.info, Node: Static versus Implicit, Prev: Static Usage, Up: Static Pattern + +4.12.2 Static Pattern Rules versus Implicit Rules +------------------------------------------------- + +A static pattern rule has much in common with an implicit rule defined +as a pattern rule (*note Defining and Redefining Pattern Rules: Pattern +Rules.). Both have a pattern for the target and patterns for +constructing the names of prerequisites. The difference is in how +'make' decides _when_ the rule applies. + + An implicit rule _can_ apply to any target that matches its pattern, +but it _does_ apply only when the target has no recipe otherwise +specified, and only when the prerequisites can be found. If more than +one implicit rule appears applicable, only one applies; the choice +depends on the order of rules. + + By contrast, a static pattern rule applies to the precise list of +targets that you specify in the rule. It cannot apply to any other +target and it invariably does apply to each of the targets specified. +If two conflicting rules apply, and both have recipes, that's an error. + + The static pattern rule can be better than an implicit rule for these +reasons: + + * You may wish to override the usual implicit rule for a few files + whose names cannot be categorized syntactically but can be given in + an explicit list. + + * If you cannot be sure of the precise contents of the directories + you are using, you may not be sure which other irrelevant files + might lead 'make' to use the wrong implicit rule. The choice might + depend on the order in which the implicit rule search is done. + With static pattern rules, there is no uncertainty: each rule + applies to precisely the targets specified. + + +File: make.info, Node: Double-Colon, Next: Automatic Prerequisites, Prev: Static Pattern, Up: Rules + +4.13 Double-Colon Rules +======================= + +"Double-colon" rules are explicit rules written with '::' instead of ':' +after the target names. They are handled differently from ordinary +rules when the same target appears in more than one rule. Pattern rules +with double-colons have an entirely different meaning (*note +Match-Anything Rules::). + + When a target appears in multiple rules, all the rules must be the +same type: all ordinary, or all double-colon. If they are double-colon, +each of them is independent of the others. Each double-colon rule's +recipe is executed if the target is older than any prerequisites of that +rule. If there are no prerequisites for that rule, its recipe is always +executed (even if the target already exists). This can result in +executing none, any, or all of the double-colon rules. + + Double-colon rules with the same target are in fact completely +separate from one another. Each double-colon rule is processed +individually, just as rules with different targets are processed. + + The double-colon rules for a target are executed in the order they +appear in the makefile. However, the cases where double-colon rules +really make sense are those where the order of executing the recipes +would not matter. + + Double-colon rules are somewhat obscure and not often very useful; +they provide a mechanism for cases in which the method used to update a +target differs depending on which prerequisite files caused the update, +and such cases are rare. + + Each double-colon rule should specify a recipe; if it does not, an +implicit rule will be used if one applies. *Note Using Implicit Rules: +Implicit Rules. + + +File: make.info, Node: Automatic Prerequisites, Prev: Double-Colon, Up: Rules + +4.14 Generating Prerequisites Automatically +=========================================== + +In the makefile for a program, many of the rules you need to write often +say only that some object file depends on some header file. For +example, if 'main.c' uses 'defs.h' via an '#include', you would write: + + main.o: defs.h + +You need this rule so that 'make' knows that it must remake 'main.o' +whenever 'defs.h' changes. You can see that for a large program you +would have to write dozens of such rules in your makefile. And, you +must always be very careful to update the makefile every time you add or +remove an '#include'. + + To avoid this hassle, most modern C compilers can write these rules +for you, by looking at the '#include' lines in the source files. +Usually this is done with the '-M' option to the compiler. For example, +the command: + + cc -M main.c + +generates the output: + + 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 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 +'make depend'. That command would create a file 'depend' containing all +the automatically-generated prerequisites; then the makefile could use +'include' to read them in (*note Include::). + + In GNU 'make', the feature of remaking makefiles makes this practice +obsolete--you need never tell 'make' explicitly to regenerate the +prerequisites, because it always regenerates any makefile that is out of +date. *Note Remaking Makefiles::. + + The practice we recommend for automatic prerequisite generation is to +have one makefile corresponding to each source file. For each source +file 'NAME.c' there is a makefile 'NAME.d' which lists what files the +object file 'NAME.o' depends on. That way only the source files that +have changed need to be rescanned to produce the new prerequisites. + + Here is the pattern rule to generate a file of prerequisites (i.e., a +makefile) called 'NAME.d' from a C source file called 'NAME.c': + + %.d: %.c + @set -e; rm -f $@; \ + $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ + rm -f $@.$$$$ + +*Note Pattern Rules::, for information on defining pattern rules. The +'-e' flag to the shell causes it to exit immediately if the '$(CC)' +command (or any other command) fails (exits with a nonzero status). + + 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)Preprocessor Options, for +details. + + The purpose of the 'sed' command is to translate (for example): + + main.o : main.c defs.h + +into: + + main.o main.d : main.c defs.h + +This makes each '.d' file depend on all the source and header files that +the corresponding '.o' file depends on. 'make' then knows it must +regenerate the prerequisites whenever any of the source or header files +changes. + + Once you've defined the rule to remake the '.d' files, you then use +the 'include' directive to read them all in. *Note Include::. For +example: + + sources = foo.c bar.c + + include $(sources:.c=.d) + +(This example uses a substitution variable reference to translate the +list of source files 'foo.c bar.c' into a list of prerequisite +makefiles, 'foo.d bar.d'. *Note Substitution Refs::, for full +information on substitution references.) Since the '.d' files are +makefiles like any others, 'make' will remake them as necessary with no +further work from you. *Note Remaking Makefiles::. + + Note that the '.d' files contain target definitions; you should be +sure to place the 'include' directive _after_ the first, default goal in +your makefiles or run the risk of having a random object file become the +default goal. *Note How Make Works::. + + +File: make.info, Node: Recipes, Next: Using Variables, Prev: Rules, Up: Top + +5 Writing Recipes in Rules +************************** + +The recipe of a rule consists of one or more shell command lines to be +executed, one at a time, in the order they appear. Typically, the +result of executing these commands is that the target of the rule is +brought up to date. + + Users use many different shell programs, but recipes in makefiles are +always interpreted by '/bin/sh' unless the makefile specifies otherwise. +*Note Recipe Execution: Execution. + +* Menu: + +* Recipe Syntax:: Recipe syntax features and pitfalls. +* Echoing:: How to control when recipes are echoed. +* Execution:: How recipes are executed. +* Parallel:: How recipes can be executed in parallel. +* Errors:: What happens after a recipe execution error. +* Interrupts:: What happens when a recipe is interrupted. +* Recursion:: Invoking 'make' from makefiles. +* Canned Recipes:: Defining canned recipes. +* Empty Recipes:: Defining useful, do-nothing recipes. + + +File: make.info, Node: Recipe Syntax, Next: Echoing, Prev: Recipes, Up: Recipes + +5.1 Recipe Syntax +================= + +Makefiles have the unusual property that there are really two distinct +syntaxes in one file. Most of the makefile uses 'make' syntax (*note +Writing Makefiles: Makefiles.). However, recipes are meant to be +interpreted by the shell and so they are written using shell syntax. +The 'make' program does not try to understand shell syntax: it performs +only a very few specific translations on the content of the recipe +before handing it to the shell. + + Each line in the recipe must start with a tab (or the first character +in the value of the '.RECIPEPREFIX' variable; *note Special +Variables::), except that the first recipe line may be attached to the +target-and-prerequisites line with a semicolon in between. _Any_ line +in the makefile that begins with a tab and appears in a "rule context" +(that is, after a rule has been started until another rule or variable +definition) will be considered part of a recipe for that rule. Blank +lines and lines of just comments may appear among the recipe lines; they +are ignored. + + Some consequences of these rules include: + + * A blank line that begins with a tab is not blank: it's an empty + recipe (*note Empty Recipes::). + + * A comment in a recipe is not a 'make' comment; it will be passed to + the shell as-is. Whether the shell treats it as a comment or not + depends on your shell. + + * A variable definition in a "rule context" which is indented by a + tab as the first character on the line, will be considered part of + a recipe, not a 'make' variable definition, and passed to the + shell. + + * A conditional expression ('ifdef', 'ifeq', etc. *note Syntax of + Conditionals: Conditional Syntax.) in a "rule context" which is + indented by a tab as the first character on the line, will be + considered part of a recipe and be passed to the shell. + +* Menu: + +* Splitting Recipe Lines:: Breaking long recipe lines for readability. +* Variables in Recipes:: Using 'make' variables in recipes. + + +File: make.info, Node: Splitting Recipe Lines, Next: Variables in Recipes, Prev: Recipe Syntax, Up: Recipe Syntax + +5.1.1 Splitting Recipe Lines +---------------------------- + +One of the few ways in which 'make' does interpret recipes is checking +for a backslash just before the newline. As in normal makefile syntax, +a single logical recipe line can be split into multiple physical lines +in the makefile by placing a backslash before each newline. A sequence +of lines like this is considered a single recipe line, and one instance +of the shell will be invoked to run it. + + However, in contrast to how they are treated in other places in a +makefile (*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: + + all : + @echo no\ + space + @echo no\ + space + @echo one \ + space + @echo one\ + space + +consists of four separate shell commands where the output is: + + nospace + nospace + one space + one space + + As a more complex example, this makefile: + + all : ; @echo 'hello \ + world' ; echo "hello \ + world" + +will invoke one shell with a command of: + + echo 'hello \ + world' ; echo "hello \ + world" + +which, according to shell quoting rules, will yield the following +output: + + hello \ + world + hello world + +Notice how the backslash/newline pair was removed inside the string +quoted with double quotes ('"..."'), but not from the string quoted with +single quotes (''...''). This is the way the default shell ('/bin/sh') +handles backslash/newline pairs. If you specify a different shell in +your makefiles it may treat them differently. + + Sometimes you want to split a long line inside of single quotes, but +you don't want the backslash/newline to appear in the quoted content. +This is often the case when passing scripts to languages such as Perl, +where extraneous backslashes inside the script can change its meaning or +even be a syntax error. One simple way of handling this is to place the +quoted string, or even the entire command, into a 'make' variable then +use the variable in the recipe. In this situation the newline quoting +rules for makefiles will be used, and the backslash/newline will be +removed. If we rewrite our example above using this method: + + HELLO = 'hello \ + world' + + all : ; @echo $(HELLO) + +we will get output like this: + + hello world + + If you like, you can also use target-specific variables (*note +Target-specific Variable Values: Target-specific.) to obtain a tighter +correspondence between the variable and the recipe that uses it. + + +File: make.info, Node: Variables in Recipes, Prev: Splitting Recipe Lines, Up: Recipe Syntax + +5.1.2 Using Variables in Recipes +-------------------------------- + +The other way in which 'make' processes recipes is by expanding any +variable references in them (*note Basics of Variable References: +Reference.). This occurs after make has finished reading all the +makefiles and the target is determined to be out of date; so, the +recipes for targets which are not rebuilt are never expanded. + + Variable and function references in recipes have identical syntax and +semantics to references elsewhere in the makefile. They also have the +same quoting rules: if you want a dollar sign to appear in your recipe, +you must double it ('$$'). For shells like the default shell, that use +dollar signs to introduce variables, it's important to keep clear in +your mind whether the variable you want to reference is a 'make' +variable (use a single dollar sign) or a shell variable (use two dollar +signs). For example: + + LIST = one two three + all: + for i in $(LIST); do \ + echo $$i; \ + done + +results in the following command being passed to the shell: + + for i in one two three; do \ + echo $i; \ + done + +which generates the expected result: + + one + two + three + + +File: make.info, Node: Echoing, Next: Execution, Prev: Recipe Syntax, Up: Recipes + +5.2 Recipe Echoing +================== + +Normally 'make' prints each line of the recipe before it is executed. +We call this "echoing" because it gives the appearance that you are +typing the lines yourself. + + When a line starts with '@', the echoing of that line is suppressed. +The '@' is discarded before the line is passed to the shell. Typically +you would use this for a command whose only effect is to print +something, such as an 'echo' command to indicate progress through the +makefile: + + @echo About to make distribution files + + When 'make' is given the flag '-n' or '--just-print' it only echoes +most recipes, without executing them. *Note Summary of Options: Options +Summary. In this case even the recipe lines starting with '@' are +printed. This flag is useful for finding out which recipes 'make' +thinks are necessary without actually doing them. + + The '-s' or '--silent' flag to 'make' prevents all echoing, as if all +recipes started with '@'. A rule in the makefile for the special target +'.SILENT' without prerequisites has the same effect (*note Special +Built-in Target Names: Special Targets.). + + +File: make.info, Node: Execution, Next: Parallel, Prev: Echoing, Up: Recipes + +5.3 Recipe Execution +==================== + +When it is time to execute recipes to update a target, they are 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 process +will not affect the following lines in the recipe.(1) If you want to +use 'cd' to affect the next statement, put both statements in a single +recipe line. Then 'make' will invoke one shell to run the entire line, +and the shell will execute the statements in sequence. For example: + + foo : bar/lose + cd $( ../$@ + +Here we use the shell AND operator ('&&') so that if the 'cd' command +fails, the script will fail without trying to invoke the 'gobble' +command in the wrong directory, which could cause problems (in this case +it would certainly cause '../foo' to be truncated, at least). + +* Menu: + +* One Shell:: One shell for all lines in a recipe. +* Choosing the Shell:: How 'make' chooses the shell used + to run recipes. + + ---------- Footnotes ---------- + + (1) On MS-DOS, the value of current working directory is *global*, so +changing it _will_ affect the following recipe lines on those systems. + + +File: make.info, Node: One Shell, Next: Choosing the Shell, Prev: Execution, Up: Execution + +5.3.1 Using One Shell +--------------------- + +Sometimes you would prefer that all the lines in the recipe be passed to +a single invocation of the shell. There are generally two situations +where this is useful: first, it can improve performance in makefiles +where recipes consist of many command lines, by avoiding extra +processes. Second, you might want newlines to be included in your +recipe command (for example perhaps you are using a very different +interpreter as your 'SHELL'). If the '.ONESHELL' special target appears +anywhere in the makefile then _all_ recipe lines for each target will be +provided to a single invocation of the shell. Newlines between recipe +lines will be preserved. For example: + + .ONESHELL: + foo : bar/lose + cd $( ../$@ + +would now work as expected even though the commands are on different +recipe lines. + + If '.ONESHELL' is provided, then only the first line of the recipe +will be checked for the special prefix characters ('@', '-', and '+'). +Subsequent lines will include the special characters in the recipe line +when the 'SHELL' is invoked. If you want your recipe to start with one +of these special characters you'll need to arrange for them to not be +the first characters on the first line, perhaps by adding a comment or +similar. For example, this would be a syntax error in Perl because the +first '@' is removed by make: + + .ONESHELL: + SHELL = /usr/bin/perl + .SHELLFLAGS = -e + show : + @f = qw(a b c); + print "@f\n"; + +However, either of these alternatives would work properly: + + .ONESHELL: + SHELL = /usr/bin/perl + .SHELLFLAGS = -e + show : + # Make sure "@" is not the first character on the first line + @f = qw(a b c); + print "@f\n"; + +or + + .ONESHELL: + SHELL = /usr/bin/perl + .SHELLFLAGS = -e + show : + my @f = qw(a b c); + print "@f\n"; + + As a special feature, if 'SHELL' is determined to be a POSIX-style +shell, the special prefix characters in "internal" recipe lines will be +_removed_ before the recipe is processed. This feature is intended to +allow existing makefiles to add the '.ONESHELL' special target and still +run properly without extensive modifications. Since the special prefix +characters are not legal at the beginning of a line in a POSIX shell +script this is not a loss in functionality. For example, this works as +expected: + + .ONESHELL: + foo : bar/lose + @cd $(@D) + @gobble $(@F) > ../$@ + + Even with this special feature, however, makefiles with '.ONESHELL' +will behave differently in ways that could be noticeable. For example, +normally if any line in the recipe fails, that causes the rule to fail +and no more recipe lines are processed. Under '.ONESHELL' a failure of +any but the final recipe line will not be noticed by 'make'. You can +modify '.SHELLFLAGS' to add the '-e' option to the shell which will +cause any failure anywhere in the command line to cause the shell to +fail, but this could itself cause your recipe to behave differently. +Ultimately you may need to harden your recipe lines to allow them to +work with '.ONESHELL'. + + +File: make.info, Node: Choosing the Shell, Prev: One Shell, Up: Execution + +5.3.2 Choosing the Shell +------------------------ + +The program used as the shell is taken from the variable 'SHELL'. If +this variable is not set in your makefile, the program '/bin/sh' is used +as the shell. The argument(s) passed to the shell are taken from the +variable '.SHELLFLAGS'. The default value of '.SHELLFLAGS' is '-c' +normally, or '-ec' in POSIX-conforming mode. + + Unlike most variables, the variable 'SHELL' is never set from the +environment. This is because the 'SHELL' environment variable is used +to specify your personal choice of shell program for interactive use. +It would be very bad for personal choices like this to affect the +functioning of makefiles. *Note Variables from the Environment: +Environment. + + Furthermore, when you do set 'SHELL' in your makefile that value is +_not_ exported in the environment to recipe lines that 'make' invokes. +Instead, the value inherited from the user's environment, if any, is +exported. You can override this behavior by explicitly exporting +'SHELL' (*note Communicating Variables to a Sub-'make': +Variables/Recursion.), forcing it to be passed in the environment to +recipe lines. + + However, on MS-DOS and MS-Windows the value of 'SHELL' in the +environment *is* used, since on those systems most users do not set this +variable, and therefore it is most likely set specifically to be used by +'make'. On MS-DOS, if the setting of 'SHELL' is not suitable for +'make', you can set the variable 'MAKESHELL' to the shell that 'make' +should use; if set it will be used as the shell instead of the value of +'SHELL'. + +Choosing a Shell in DOS and Windows +................................... + +Choosing a shell in MS-DOS and MS-Windows is much more complex than on +other systems. + + On MS-DOS, if 'SHELL' is not set, the value of the variable 'COMSPEC' +(which is always set) is used instead. + + The processing of lines that set the variable 'SHELL' in Makefiles is +different on MS-DOS. The stock shell, 'command.com', is ridiculously +limited in its functionality and many users of 'make' tend to install a +replacement shell. Therefore, on MS-DOS, 'make' examines the value of +'SHELL', and changes its behavior based on whether it points to a +Unix-style or DOS-style shell. This allows reasonable functionality +even if 'SHELL' points to 'command.com'. + + If 'SHELL' points to a Unix-style shell, 'make' on MS-DOS +additionally checks whether that shell can indeed be found; if not, it +ignores the line that sets 'SHELL'. In MS-DOS, GNU 'make' searches for +the shell in the following places: + + 1. In the precise place pointed to by the value of 'SHELL'. For + example, if the makefile specifies 'SHELL = /bin/sh', 'make' will + look in the directory '/bin' on the current drive. + + 2. In the current directory. + + 3. In each of the directories in the 'PATH' variable, in order. + + In every directory it examines, 'make' will first look for the +specific file ('sh' in the example above). If this is not found, it +will also look in that directory for that file with one of the known +extensions which identify executable files. For example '.exe', '.com', +'.bat', '.btm', '.sh', and some others. + + If any of these attempts is successful, the value of 'SHELL' will be +set to the full pathname of the shell as found. However, if none of +these is found, the value of 'SHELL' will not be changed, and thus the +line that sets it will be effectively ignored. This is so 'make' will +only support features specific to a Unix-style shell if such a shell is +actually installed on the system where 'make' runs. + + Note that this extended search for the shell is limited to the cases +where 'SHELL' is set from the Makefile; if it is set in the environment +or command line, you are expected to set it to the full pathname of the +shell, exactly as things are on Unix. + + The effect of the above DOS-specific processing is that a Makefile +that contains 'SHELL = /bin/sh' (as many Unix makefiles do), will work +on MS-DOS unaltered if you have e.g. 'sh.exe' installed in some +directory along your 'PATH'. + + +File: make.info, Node: Parallel, Next: Errors, Prev: Execution, Up: Recipes + +5.4 Parallel Execution +====================== + +GNU 'make' knows how to execute several recipes at once. Normally, +'make' will execute only one recipe at a time, waiting for it to finish +before executing the next. However, the '-j' or '--jobs' option tells +'make' to execute many recipes simultaneously. You can inhibit +parallelism for some or all targets from within the makefile (*note +Disabling Parallel Execution: Parallel Disable.). + + On MS-DOS, the '-j' option has no effect, since that system doesn't +support multi-processing. + + If the '-j' option is followed by an integer, this is the number of +recipes to execute at once; this is called the number of "job slots". +If there is nothing looking like an integer after the '-j' option, there +is no limit on the number of job slots. The default number of job slots +is one, which means serial execution (one thing at a time). + + 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 +Recipes: Errors.), the remaining recipe lines to remake the same target +will not be run. If a recipe fails and the '-k' or '--keep-going' +option was not given (*note Summary of Options: Options Summary.), +'make' aborts execution. If make terminates for any reason (including a +signal) with child processes running, it waits for them to finish before +actually exiting. + + When the system is heavily loaded, you will probably want to run +fewer jobs than when it is lightly loaded. You can use the '-l' option +to tell 'make' to limit the number of jobs to run at once, based on the +load average. The '-l' or '--max-load' option is followed by a +floating-point number. For example, + + -l 2.5 + +will not let 'make' start more than one job if the load average is above +2.5. The '-l' option with no following number removes the load limit, +if one was given with a previous '-l' option. + + More precisely, when 'make' goes to start up a job, and it already +has at least one job running, it checks the current load average; if it +is not lower than the limit given with '-l', 'make' waits until the load +average goes below that limit, or until all the other jobs finish. + + By default, there is no load limit. + +* Menu: + +* Parallel Disable:: Disabling parallel execution +* Parallel Output:: Handling output during parallel execution +* Parallel Input:: Handling input during parallel execution + + +File: make.info, Node: Parallel Disable, Next: Parallel Output, Prev: Parallel, Up: Parallel + +5.4.1 Disabling Parallel Execution +---------------------------------- + +If a makefile completely and accurately defines the dependency +relationships between all of its targets, then 'make' will correctly +build the goals regardless of whether parallel execution is enabled or +not. This is the ideal way to write makefiles. + + However, sometimes some or all of the targets in a makefile cannot be +executed in parallel and it's not feasible to add the prerequisites +needed to inform 'make'. In that case the makefile can use various +methods to disable parallel execution. + + If the '.NOTPARALLEL' special target with no prerequisites is +specified anywhere then the entire instance of 'make' will be run +serially, regardless of the parallel setting. For example: + + all: one two three + one two three: ; @sleep 1; echo $@ + + .NOTPARALLEL: + + Regardless of how 'make' is invoked, the targets 'one', 'two', and +'three' will be run serially. + + If the '.NOTPARALLEL' special target has prerequisites, then each of +those prerequisites will be considered a target and all prerequisites of +these targets will be run serially. Note that only when building this +target will the prerequisites be run serially: if some other target +lists the same prerequisites and is not in '.NOTPARALLEL' then these +prerequisites may be run in parallel. For example: + + all: base notparallel + + base: one two three + notparallel: one two three + + one two three: ; @sleep 1; echo $@ + + .NOTPARALLEL: notparallel + + Here 'make -j base' will run the targets 'one', 'two', and 'three' in +parallel, while 'make -j notparallel' will run them serially. If you +run 'make -j all' then they _will_ be run in parallel since 'base' lists +them as prerequisites and is not serialized. + + The '.NOTPARALLEL' target should not have commands. + + Finally you can control the serialization of specific prerequisites +in a fine-grained way using the '.WAIT' special target. When this +target appears in a prerequisite list and parallel execution is enabled, +'make' will not build any of the prerequisites to the _right_ of '.WAIT' +until all prerequisites to the _left_ of '.WAIT' have completed. For +example: + + all: one two .WAIT three + one two three: ; @sleep 1; echo $@ + + If parallel execution is enabled, 'make' will try to build 'one' and +'two' in parallel but will not try to build 'three' until both are +complete. + + As with targets provided to '.NOTPARALLEL', '.WAIT' takes effect only +when building the target in whose prerequisite list it appears. If the +same prerequisites are present in other targets, without '.WAIT', then +they may still be run in parallel. Because of this, neither +'.NOTPARALLEL' with targets nor '.WAIT' are as reliable for controlling +parallel execution as defining a prerequisite relationship. However +they are easy to use and may be sufficient in less complex situations. + + The '.WAIT' prerequisite will not be present in any of the automatic +variables for the rule. + + You can create an actual target '.WAIT' in your makefile for +portability but this is not required to use this feature. If a '.WAIT' +target is created it should not have prerequisites or commands. + + The '.WAIT' feature is also implemented in other versions of 'make' +and it's specified in the POSIX standard for 'make'. + + +File: make.info, Node: Parallel Output, Next: Parallel Input, Prev: Parallel Disable, Up: Parallel + +5.4.2 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.3 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 + +5.5 Errors in Recipes +===================== + +After each shell invocation returns, 'make' looks at its exit status. +If the shell completed successfully (the exit status is zero), the next +line in the recipe is executed in a new shell; after the last line is +finished, the rule is finished. + + If there is an error (the exit status is nonzero), 'make' gives up on +the current rule, and perhaps on all rules. + + Sometimes the failure of a certain recipe line does not indicate a +problem. For example, you may use the 'mkdir' command to ensure that a +directory exists. If the directory already exists, 'mkdir' will report +an error, but you probably want 'make' to continue regardless. + + To ignore errors in a recipe line, write a '-' at the beginning of +the line's text (after the initial tab). The '-' is discarded before +the line is passed to the shell for execution. + + For example, + + clean: + -rm -f *.o + +This causes 'make' to continue even if 'rm' is unable to remove a file. + + When you run 'make' with the '-i' or '--ignore-errors' flag, errors +are ignored in all recipes of all rules. A rule in the makefile for the +special target '.IGNORE' has the same effect, if there are no +prerequisites. This is less flexible but sometimes useful. + + When errors are to be ignored, because of either a '-' or the '-i' +flag, 'make' treats an error return just like success, except that it +prints out a message that tells you the status code the shell exited +with, and says that the error has been ignored. + + When an error happens that 'make' has not been told to ignore, it +implies that the current target cannot be correctly remade, and neither +can any other that depends on it either directly or indirectly. No +further recipes will be executed for these targets, since their +preconditions have not been achieved. + + Normally 'make' gives up immediately in this circumstance, returning +a nonzero status. However, if the '-k' or '--keep-going' flag is +specified, 'make' continues to consider the other prerequisites of the +pending targets, remaking them if necessary, before it gives up and +returns nonzero status. For example, after an error in compiling one +object file, 'make -k' will continue compiling other object files even +though it already knows that linking them will be impossible. *Note +Summary of Options: Options Summary. + + The usual behavior assumes that your purpose is to get the specified +targets up to date; once 'make' learns that this is impossible, it might +as well report the failure immediately. The '-k' option says that the +real purpose is to test as many of the changes made in the program as +possible, perhaps to find several independent problems so that you can +correct them all before the next attempt to compile. This is why Emacs' +'compile' command passes the '-k' flag by default. + + Usually when a recipe line fails, if it has changed the target file +at all, the file is corrupted and cannot be used--or at least it is not +completely updated. Yet the file's time stamp says that it is now up to +date, so the next time 'make' runs, it will not try to update that file. +The situation is just the same as when the shell is killed by a signal; +*note Interrupts::. So generally the right thing to do is to delete the +target file if the recipe fails after beginning to change the file. +'make' will do this if '.DELETE_ON_ERROR' appears as a target. This is +almost always what you want 'make' to do, but it is not historical +practice; so for compatibility, you must explicitly request it. + + +File: make.info, Node: Interrupts, Next: Recursion, Prev: Errors, Up: Recipes + +5.6 Interrupting or Killing 'make' +================================== + +If 'make' gets a fatal signal while a shell is executing, it may delete +the target file that the recipe was supposed to update. This is done if +the target file's last-modification time has changed since 'make' first +checked it. + + The purpose of deleting the target is to make sure that it is remade +from scratch when 'make' is next run. Why is this? Suppose you type +'Ctrl-c' while a compiler is running, and it has begun to write an +object file 'foo.o'. The 'Ctrl-c' kills the compiler, resulting in an +incomplete file whose last-modification time is newer than the source +file 'foo.c'. But 'make' also receives the 'Ctrl-c' signal and deletes +this incomplete file. If 'make' did not do this, the next invocation of +'make' would think that 'foo.o' did not require updating--resulting in a +strange error message from the linker when it tries to link an object +file half of which is missing. + + You can prevent the deletion of a target file in this way by making +the special target '.PRECIOUS' depend on it. Before remaking a target, +'make' checks to see whether it appears on the prerequisites of +'.PRECIOUS', and thereby decides whether the target should be deleted if +a signal happens. Some reasons why you might do this are that the +target is updated in some atomic fashion, or exists only to record a +modification-time (its contents do not matter), or must exist at all +times to prevent other sorts of trouble. + + Although 'make' does its best to clean up there are certain +situations in which cleanup is impossible. For example, 'make' may be +killed by an uncatchable signal. Or, one of the programs make invokes +may be killed or crash, leaving behind an up-to-date but corrupt target +file: 'make' will not realize that this failure requires the target to +be cleaned. Or 'make' itself may encounter a bug and crash. + + For these reasons it's best to write _defensive recipes_, which won't +leave behind corrupted targets even if they fail. Most commonly these +recipes create temporary files rather than updating the target directly, +then rename the temporary file to the final target name. Some compilers +already behave this way, so that you don't need to write a defensive +recipe. + + +File: make.info, Node: Recursion, Next: Canned Recipes, Prev: Interrupts, Up: Recipes + +5.7 Recursive Use of 'make' +=========================== + +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 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: + cd subdir && $(MAKE) + +or, equivalently, this (*note Summary of Options: Options Summary.): + + subsystem: + $(MAKE) -C subdir + + You can write recursive 'make' commands just by copying this example, +but there are many things to know about how they work and why, and about +how the sub-'make' relates to the top-level 'make'. You may also find +it useful to declare targets that invoke recursive 'make' commands as +'.PHONY' (for more discussion on when this is useful, see *note Phony +Targets::). + + For your convenience, when GNU 'make' starts (after it has processed +any '-C' options) it sets the variable 'CURDIR' to the pathname of the +current working directory. This value is never touched by 'make' again: +in particular note that if you include files from other directories the +value of 'CURDIR' does not change. The value has the same precedence it +would have if it were set in the makefile (by default, an environment +variable 'CURDIR' will not override this value). Note that setting this +variable has no impact on the operation of 'make' (it does not cause +'make' to change its working directory, for example). + +* Menu: + +* MAKE Variable:: The special effects of using '$(MAKE)'. +* Variables/Recursion:: How to communicate variables to a sub-'make'. +* Options/Recursion:: How to communicate options to a sub-'make'. +* -w Option:: How the '-w' or '--print-directory' option + helps debug use of recursive 'make' commands. + + +File: make.info, Node: MAKE Variable, Next: Variables/Recursion, Prev: Recursion, Up: Recursion + +5.7.1 How the 'MAKE' Variable Works +----------------------------------- + +Recursive 'make' commands should always use the variable 'MAKE', not the +explicit command name 'make', as shown here: + + subsystem: + cd subdir && $(MAKE) + + The value of this variable is the file name with which 'make' was +invoked. If this file name was '/bin/make', then the recipe executed is +'cd subdir && /bin/make'. If you use a special version of 'make' to run +the top-level makefile, the same special version will be executed for +recursive invocations. + + As a special feature, using the variable 'MAKE' in the recipe of a +rule alters the effects of the '-t' ('--touch'), '-n' ('--just-print'), +or '-q' ('--question') option. Using the 'MAKE' variable has the same +effect as using a '+' character at the beginning of the recipe line. +*Note Instead of Executing the Recipes: Instead of Execution. This +special feature is only enabled if the 'MAKE' variable appears directly +in the recipe: it does not apply if the 'MAKE' variable is referenced +through expansion of another variable. In the latter case you must use +the '+' token to get these special effects. + + Consider the command 'make -t' in the above example. (The '-t' +option marks targets as up to date without actually running any recipes; +see *note Instead of Execution::.) Following the usual definition of +'-t', a 'make -t' command in the example would create a file named +'subsystem' and do nothing else. What you really want it to do is run +'cd subdir && make -t'; but that would require executing the recipe, and +'-t' says not to execute recipes. + + The special feature makes this do what you want: whenever a recipe +line of a rule contains the variable 'MAKE', the flags '-t', '-n' and +'-q' do not apply to that line. Recipe lines containing 'MAKE' are +executed normally despite the presence of a flag that causes most +recipes not to be run. The usual 'MAKEFLAGS' mechanism passes the flags +to the sub-'make' (*note Communicating Options to a Sub-'make': +Options/Recursion.), so your request to touch the files, or print the +recipes, is propagated to the subsystem. + + +File: make.info, Node: Variables/Recursion, Next: Options/Recursion, Prev: MAKE Variable, Up: Recursion + +5.7.2 Communicating Variables to a Sub-'make' +--------------------------------------------- + +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 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 +sub-'make', in turn, uses the environment to initialize its table of +variable values. *Note Variables from the Environment: Environment. + + Except by explicit request, 'make' exports a variable only if it is +either defined in the environment initially, or if set on the command +line and its name consists only of letters, numbers, and underscores. + + The value of the 'make' variable 'SHELL' is not exported. Instead, +the value of the 'SHELL' variable from the invoking environment is +passed to the sub-'make'. You can force 'make' to export its value for +'SHELL' by using the 'export' directive, described below. *Note +Choosing the Shell::. + + The special variable 'MAKEFLAGS' is always exported (unless you +unexport it). 'MAKEFILES' is exported if you set it to anything. + + 'make' automatically passes down variable values that were defined on +the command line, by putting them in the 'MAKEFLAGS' variable. *Note +Options/Recursion::. + + Variables are _not_ normally passed down if they were created by +default by 'make' (*note Variables Used by Implicit Rules: Implicit +Variables.). The sub-'make' will define these for itself. + + If you want to export specific variables to a sub-'make', use the +'export' directive, like this: + + export VARIABLE ... + +If you want to _prevent_ a variable from being exported, use the +'unexport' directive, like this: + + unexport VARIABLE ... + +In both of these forms, the arguments to 'export' and 'unexport' are +expanded, and so could be variables or functions which expand to a (list +of) variable names to be (un)exported. + + As a convenience, you can define a variable and export it at the same +time by doing: + + export VARIABLE = value + +has the same result as: + + VARIABLE = value + export VARIABLE + +and + + export VARIABLE := value + +has the same result as: + + VARIABLE := value + export VARIABLE + + Likewise, + + export VARIABLE += value + +is just like: + + VARIABLE += value + export VARIABLE + +*Note Appending More Text to Variables: Appending. + + You may notice that the 'export' and 'unexport' directives work in +'make' in the same way they work in the shell, 'sh'. + + If you want all variables to be exported by default, you can use +'export' by itself: + + export + +This tells 'make' that variables which are not explicitly mentioned in +an 'export' or 'unexport' directive should be exported. Any variable +given in an 'unexport' directive will still _not_ be exported. + + The behavior elicited by an 'export' directive by itself was the +default in older versions of GNU 'make'. If your makefiles depend on +this behavior and you want to be compatible with old versions of 'make', +you can add the special target '.EXPORT_ALL_VARIABLES' to your makefile +instead of using the 'export' directive. This will be ignored by old +'make's, while the 'export' directive will cause a syntax error. + + When using 'export' by itself or '.EXPORT_ALL_VARIABLES' to export +variables by default, only variables whose names consist solely of +alphanumerics and underscores will be exported. To export other +variables you must specifically mention them in an 'export' directive. + + Adding a variable's value to the environment requires it to be +expanded. If expanding a variable has side-effects (such as the 'info' +or 'eval' or similar functions) then these side-effects will be seen +every time a command is invoked. You can avoid this by ensuring that +such variables have names which are not exportable by default. However, +a better solution is to _not_ use this "export by default" facility at +all, and instead explicitly 'export' the relevant variables by name. + + You can use 'unexport' by itself to tell 'make' _not_ to export +variables by default. Since this is the default behavior, you would +only need to do this if 'export' had been used by itself earlier (in an +included makefile, perhaps). You *cannot* use 'export' and 'unexport' +by themselves to have variables exported for some recipes and not for +others. The last 'export' or 'unexport' directive that appears by +itself determines the behavior for the entire run of 'make'. + + As a special feature, the variable 'MAKELEVEL' is changed when it is +passed down from level to level. This variable's value is a string +which is the depth of the level as a decimal number. The value is '0' +for the top-level 'make'; '1' for a sub-'make', '2' for a +sub-sub-'make', and so on. The incrementation happens when 'make' sets +up the environment for a recipe. + + The main use of 'MAKELEVEL' is to test it in a conditional directive +(*note Conditional Parts of Makefiles: Conditionals.); this way you can +write a makefile that behaves one way if run recursively and another way +if run directly by you. + + You can use the variable 'MAKEFILES' to cause all sub-'make' commands +to use additional makefiles. The value of 'MAKEFILES' is a +whitespace-separated list of file names. This variable, if defined in +the outer-level makefile, is passed down through the environment; then +it serves as a list of extra makefiles for the sub-'make' to read before +the usual or specified ones. *Note The Variable 'MAKEFILES': MAKEFILES +Variable. + + +File: make.info, Node: Options/Recursion, Next: -w Option, Prev: Variables/Recursion, Up: Recursion + +5.7.3 Communicating Options to a Sub-'make' +------------------------------------------- + +Flags such as '-s' and '-k' are passed automatically to the sub-'make' +through the variable 'MAKEFLAGS'. This variable is set up automatically +by 'make' to contain the flag letters that 'make' received. Thus, if +you do 'make -ks' then 'MAKEFLAGS' gets the value 'ks'. + + As a consequence, every sub-'make' gets a value for 'MAKEFLAGS' in +its environment. In response, it takes the flags from that value and +processes them as if they had been given as arguments. *Note Summary of +Options: Options Summary. + + The value of 'MAKEFLAGS' is a possibly empty group of characters +representing single-letter options that take no argument, followed by a +space and any options that take arguments or which have long option +names. If an option has both single-letter and long options, the +single-letter option is always preferred. If there are no single-letter +options on the command line, then the value of 'MAKEFLAGS' starts with a +space. + + Likewise variables defined on the command line are passed to the +sub-'make' through 'MAKEFLAGS'. Words in the value of 'MAKEFLAGS' that +contain '=', 'make' treats as variable definitions just as if they +appeared on the command line. *Note Overriding Variables: Overriding. + + The options '-C', '-f', '-o', and '-W' are not put into 'MAKEFLAGS'; +these options are not passed down. + + The '-j' option is a special case (*note Parallel Execution: +Parallel.). If you set it to some numeric value 'N' and your operating +system supports it (most any UNIX system will; others typically won't), +the parent 'make' and all the sub-'make's will communicate to ensure +that there are only 'N' jobs running at the same time between them all. +Note that any job that is marked recursive (*note Instead of Executing +Recipes: Instead of Execution.) doesn't count against the total jobs +(otherwise we could get 'N' sub-'make's running and have no slots left +over for any real work!) + + If your operating system doesn't support the above communication, +then no '-j' is added to 'MAKEFLAGS', so that sub-'make's run in +non-parallel mode. If the '-j' option were passed down to sub-'make's +you would get many more jobs running in parallel than you asked for. If +you give '-j' with no numeric argument, meaning to run as many jobs as +possible in parallel, this is passed down, since multiple infinities are +no more than one. + + If you do not want to pass the other flags down, you must change the +value of 'MAKEFLAGS', for example like this: + + subsystem: + cd subdir && $(MAKE) MAKEFLAGS= + + The command line variable definitions really appear in the variable +'MAKEOVERRIDES', and 'MAKEFLAGS' contains a reference to this variable. +If you do want to pass flags down normally, but don't want to pass down +the command line variable definitions, you can reset 'MAKEOVERRIDES' to +empty, like this: + + MAKEOVERRIDES = + +This is not usually useful to do. However, some systems have a small +fixed limit on the size of the environment, and putting so much +information into the value of 'MAKEFLAGS' can exceed it. If you see the +error message 'Arg list too long', this may be the problem. (For strict +compliance with POSIX.2, changing 'MAKEOVERRIDES' does not affect +'MAKEFLAGS' if the special target '.POSIX' appears in the makefile. You +probably do not care about this.) + + A similar variable 'MFLAGS' exists also, for historical +compatibility. It has the same value as 'MAKEFLAGS' except that it does +not contain the command line variable definitions, and it always begins +with a hyphen unless it is empty ('MAKEFLAGS' begins with a hyphen only +when it begins with an option that has no single-letter version, such as +'--warn-undefined-variables'). 'MFLAGS' was traditionally used +explicitly in the recursive 'make' command, like this: + + subsystem: + cd subdir && $(MAKE) $(MFLAGS) + +but now 'MAKEFLAGS' makes this usage redundant. If you want your +makefiles to be compatible with old 'make' programs, use this technique; +it will work fine with more modern 'make' versions too. + + The 'MAKEFLAGS' variable can also be useful if you want to have +certain options, such as '-k' (*note Summary of Options: Options +Summary.), set each time you run 'make'. You simply put a value for +'MAKEFLAGS' in your environment. You can also set 'MAKEFLAGS' in a +makefile, to specify additional flags that should also be in effect for +that makefile. (Note that you cannot use 'MFLAGS' this way. That +variable is set only for compatibility; 'make' does not interpret a +value you set for it in any way.) + + When 'make' interprets the value of 'MAKEFLAGS' (either from the +environment or from a makefile), it first prepends a hyphen if the value +does not already begin with one. Then it chops the value into words +separated by blanks, and parses these words as if they were options +given on the command line (except that '-C', '-f', '-h', '-o', '-W', and +their long-named versions are ignored; and there is no error for an +invalid option). + + If you do put 'MAKEFLAGS' in your environment, you should be sure not +to include any options that will drastically affect the actions of +'make' and undermine the purpose of makefiles and of 'make' itself. 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 + +5.7.4 The '--print-directory' Option +------------------------------------ + +If you use several levels of recursive 'make' invocations, the '-w' or +'--print-directory' option can make the output a lot easier to +understand by showing each directory as 'make' starts processing it and +as 'make' finishes processing it. For example, if 'make -w' is run in +the directory '/u/gnu/make', 'make' will print a line of the form: + + make: Entering directory `/u/gnu/make'. + +before doing anything else, and a line of the form: + + make: Leaving directory `/u/gnu/make'. + +when processing is completed. + + Normally, you do not need to specify this option because 'make' does +it for you: '-w' is turned on automatically when you use the '-C' +option, and in sub-'make's. 'make' will not automatically turn on '-w' +if you also use '-s', which says to be silent, or if you use +'--no-print-directory' to explicitly disable it. + + +File: make.info, Node: Canned Recipes, Next: Empty Recipes, Prev: Recursion, Up: Recipes + +5.8 Defining Canned Recipes +=========================== + +When the same sequence of commands is useful in making various targets, +you can define it as a canned sequence with the 'define' directive, and +refer to the canned sequence from the recipes for those targets. The +canned sequence is actually a variable, so the name must not conflict +with other variable names. + + Here is an example of defining a canned recipe: + + define run-yacc = + yacc $(firstword $^) + mv y.tab.c $@ + endef + +Here 'run-yacc' is the name of the variable being defined; 'endef' marks +the end of the definition; the lines in between are the commands. The +'define' directive does not expand variable references and function +calls in the canned sequence; the '$' characters, parentheses, variable +names, and so on, all become part of the value of the variable you are +defining. *Note Defining Multi-Line Variables: Multi-Line, for a +complete explanation of 'define'. + + The first command in this example runs Yacc on the first prerequisite +of whichever rule uses the canned sequence. The output file from Yacc +is always named 'y.tab.c'. The second command moves the output to the +rule's target file name. + + To use the canned sequence, substitute the variable into the recipe +of a rule. You can substitute it like any other variable (*note Basics +of Variable References: Reference.). Because variables defined by +'define' are recursively expanded variables, all the variable references +you wrote inside the 'define' are expanded now. For example: + + foo.c : foo.y + $(run-yacc) + +'foo.y' will be substituted for the variable '$^' when it occurs in +'run-yacc''s value, and 'foo.c' for '$@'. + + This is a realistic example, but this particular one is not needed in +practice because 'make' has an implicit rule to figure out these +commands based on the file names involved (*note Using Implicit Rules: +Implicit Rules.). + + In 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 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: + + define frobnicate = + @echo "frobnicating target $@" + frob-step-1 $< -o $@-step-1 + frob-step-2 $@-step-1 -o $@ + endef + +'make' will not echo the first line, the 'echo' command. But it _will_ +echo the following two recipe lines. + + On the other hand, prefix characters on the recipe line that refers +to a canned sequence apply to every line in the sequence. So the rule: + + frob.out: frob.in + @$(frobnicate) + +does not echo _any_ recipe lines. (*Note Recipe Echoing: Echoing, for a +full explanation of '@'.) + + +File: make.info, Node: Empty Recipes, Prev: Canned Recipes, Up: Recipes + +5.9 Using Empty Recipes +======================= + +It is sometimes useful to define recipes which do nothing. This is done +simply by giving a recipe that consists of nothing but whitespace. For +example: + + target: ; + +defines an empty recipe for 'target'. You could also use a line +beginning with a recipe prefix character to define an empty recipe, but +this would be confusing because such a line looks empty. + + You may be wondering why you would want to define a recipe that does +nothing. One reason this is useful is to prevent a target from getting +implicit recipes (from implicit rules or the '.DEFAULT' special target; +*note Implicit Rules:: and *note Defining Last-Resort Default Rules: +Last Resort.). + + Empty recipes can also be used to avoid errors for targets that will +be created as a side-effect of another recipe: if the target does not +exist the empty recipe ensures that 'make' won't complain that it +doesn't know how to build the target, and 'make' will assume the target +is out of date. + + You may be inclined to define empty recipes for targets that are not +actual files, but only exist so that their prerequisites can be remade. +However, this is not the best way to do that, because the prerequisites +may not be remade properly if the target file actually does exist. +*Note Phony Targets: Phony Targets, for a better way to do this. + + +File: make.info, Node: Using Variables, Next: Conditionals, Prev: Recipes, Up: Top + +6 How to Use Variables +********************** + +A "variable" is a name defined in a makefile to represent a string of +text, called the variable's "value". These values are substituted by +explicit request into targets, prerequisites, recipes, and other parts +of the makefile. (In some other versions of 'make', variables are +called "macros".) + + Variables and functions in all parts of a makefile are expanded when +read, except for in recipes, the right-hand sides of variable +definitions using '=', and the bodies of variable definitions using the +'define' directive. The value a variable expands to is that of its most +recent definition at the time of expansion. In other words, variables +are dynamically scoped. + + 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 ':', +'#', '=', 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. + + It is traditional to use upper case letters in variable names, but we +recommend using lower case letters for variable names that serve +internal purposes in the makefile, and reserving upper case for +parameters that control implicit rules or for parameters that the user +should override with command options (*note Overriding Variables: +Overriding.). + + A few variables have names that are a single punctuation character or +just a few characters. These are the "automatic variables", and they +have particular specialized uses. *Note Automatic Variables::. + +* Menu: + +* Reference:: How to use the value of a variable. +* Flavors:: Variables come in two flavors. +* Advanced:: Advanced features for referencing a variable. +* Values:: All the ways variables get their values. +* Setting:: How to set a variable in the makefile. +* Appending:: How to append more text to the old value + of a variable. +* Override Directive:: How to set a variable in the makefile even if + 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. +* Pattern-specific:: Target-specific variable values can be applied + to a group of targets that match a pattern. +* Suppressing Inheritance:: Suppress inheritance of variables. +* Special Variables:: Variables with special meaning or behavior. + + +File: make.info, Node: Reference, Next: Flavors, Prev: Using Variables, Up: Using Variables + +6.1 Basics of Variable References +================================= + +To substitute a variable's value, write a dollar sign followed by the +name of the variable in parentheses or braces: either '$(foo)' or +'${foo}' is a valid reference to the variable 'foo'. This special +significance of '$' is why you must write '$$' to have the effect of a +single dollar sign in a file name or recipe. + + Variable references can be used in any context: targets, +prerequisites, recipes, most directives, and new variable values. Here +is an example of a common case, where a variable holds the names of all +the object files in a program: + + objects = program.o foo.o utils.o + program : $(objects) + cc -o program $(objects) + + $(objects) : defs.h + + Variable references work by strict textual substitution. Thus, the +rule + + foo = c + prog.o : prog.$(foo) + $(foo)$(foo) -$(foo) prog.$(foo) + +could be used to compile a C program 'prog.c'. Since spaces before the +variable value are ignored in variable assignments, the value of 'foo' +is precisely 'c'. (Don't actually write your makefiles this way!) + + A dollar sign followed by a character other than a dollar sign, +open-parenthesis or open-brace treats that single character as the +variable name. Thus, you could reference the variable 'x' with '$x'. +However, this practice can lead to confusion (e.g., '$foo' refers to the +variable 'f' followed by the string 'oo') so we recommend using +parentheses or braces around all variables, even single-letter +variables, unless omitting them gives significant readability +improvements. One place where readability is often improved is +automatic variables (*note Automatic Variables::). + + +File: make.info, Node: Flavors, Next: Advanced, Prev: Reference, Up: Using Variables + +6.2 The Two Flavors of Variables +================================ + +There are different ways that a variable in GNU 'make' can get a value; +we call them the "flavors" of variables. The flavors are distinguished +in how they handle the values they are assigned in the makefile, and in +how those values are managed when the variable is later used and +expanded. + +* Menu: + +* Recursive Assignment:: Setting recursively expanded variables. +* Simple Assignment:: Setting simply expanded variables. +* Immediate Assignment:: Setting immediately expanded variables. +* Conditional Assignment:: Assigning variable values conditionally. + + +File: make.info, Node: Recursive Assignment, Next: Simple Assignment, Prev: Flavors, Up: Flavors + +6.2.1 Recursively Expanded Variable Assignment +---------------------------------------------- + +The first flavor of variable is a "recursively expanded" variable. +Variables of this sort are defined by lines using '=' (*note Setting +Variables: Setting.) or by the 'define' directive (*note Defining +Multi-Line Variables: Multi-Line.). The value you specify is installed +verbatim; if it contains references to other variables, these references +are expanded whenever this variable is substituted (in the course of +expanding some other string). When this happens, it is called +"recursive expansion". + + For example, + + foo = $(bar) + bar = $(ugh) + ugh = Huh? + + all:;echo $(foo) + +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 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 + +will do what was intended: when 'CFLAGS' is expanded in a recipe, it +will expand to '-Ifoo -Ibar -O'. A major disadvantage is that you +cannot append something on the end of a variable, as in + + CFLAGS = $(CFLAGS) -O + +because it will cause an infinite loop in the variable expansion. +(Actually 'make' detects the infinite loop and reports an error.) + + Another disadvantage is that any functions (*note Functions for +Transforming Text: Functions.) referenced in the definition will be +executed every time the variable is expanded. This makes 'make' run +slower; worse, it causes the 'wildcard' and 'shell' functions to give +unpredictable results because you cannot easily control when they are +called, or even how many times. + + +File: make.info, Node: Simple Assignment, Next: Immediate Assignment, Prev: Recursive Assignment, Up: Flavors + +6.2.2 Simply Expanded Variable Assignment +----------------------------------------- + +To avoid the problems and inconveniences of recursively expanded +variables, there is another flavor: simply expanded variables. + + "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 '::=' is added to the POSIX standard for POSIX Issue 8). + + The value of a simply expanded variable is scanned once, expanding +any references to other variables and functions, when the variable is +defined. Once that expansion is complete the value of the variable is +never expanded again: when the variable is used the value is copied +verbatim as the expansion. If the value contained variable references +the result of the expansion will contain their values _as of the time +this variable was defined_. Therefore, + + x := foo + y := $(x) bar + x := later + +is equivalent to + + y := foo bar + x := later + + Here is a somewhat more complicated example, illustrating the use of +':=' in conjunction with the 'shell' function. (*Note The 'shell' +Function: Shell Function.) This example also shows use of the variable +'MAKELEVEL', which is changed when it is passed down from level to +level. (*Note Communicating Variables to a Sub-'make': +Variables/Recursion, for information about 'MAKELEVEL'.) + + ifeq (0,${MAKELEVEL}) + whoami := $(shell whoami) + host-type := $(shell arch) + MAKE := ${MAKE} host-type=${host-type} whoami=${whoami} + endif + +An advantage of this use of ':=' is that a typical 'descend into a +directory' recipe then looks like this: + + ${subdirs}: + ${MAKE} -C $@ all + + Simply expanded variables generally make complicated makefile +programming more predictable because they work like variables in most +programming languages. They allow you to redefine a variable using its +own value (or its value processed in some way by one of the expansion +functions) and to use the expansion functions much more efficiently +(*note Functions for Transforming Text: Functions.). + + You can also use them to introduce controlled leading whitespace into +variable values. Leading whitespace characters are discarded from your +input before substitution of variable references and function calls; +this means you can include leading spaces in a variable value by +protecting them with variable references, like this: + + nullstring := + space := $(nullstring) # end of the line + +Here the value of the variable 'space' is precisely one space. The +comment '# end of the line' is included here just for clarity. Since +trailing space characters are _not_ stripped from variable values, just +a space at the end of the line would have the same effect (but be rather +hard to read). If you put whitespace at the end of a variable value, it +is a good idea to put a comment like that at the end of the line to make +your intent clear. Conversely, if you do _not_ want any whitespace +characters at the end of your variable value, you must remember not to +put a random comment on the end of the line after some whitespace, such +as this: + + dir := /foo/bar # directory to put the frobs in + +Here the value of the variable 'dir' is '/foo/bar ' (with four +trailing spaces), which was probably not the intention. (Imagine +something like '$(dir)/file' with this definition!) + + +File: make.info, Node: Immediate Assignment, Next: Conditional Assignment, Prev: Simple Assignment, Up: Flavors + +6.2.3 Immediately Expanded Variable Assignment +---------------------------------------------- + +Another form of assignment allows for immediate expansion, but unlike +simple assignment the resulting variable is recursive: it will be +re-expanded again on every use. In order to avoid unexpected results, +after the value is immediately expanded it will automatically be quoted: +all instances of '$' in the value after expansion will be converted into +'$$'. This type of assignment uses the ':::=' operator. For example, + + var = first + OUT :::= $(var) + var = second + +results in the 'OUT' variable containing the text 'first', while here: + + var = one$$two + OUT :::= $(var) + var = three$$four + +results in the 'OUT' variable containing the text 'one$$two'. The value +is expanded when the variable is assigned, so the result is the +expansion of the first value of 'var', 'one$two'; then the value is +re-escaped before the assignment is complete giving the final result of +'one$$two'. + + The variable 'OUT' is thereafter considered a recursive variable, so +it will be re-expanded when it is used. + + This seems functionally equivalent to the ':=' / '::=' operators, but +there are a few differences: + + First, after assignment the variable is a normal recursive variable; +when you append to it with '+=' the value on the right-hand side is not +expanded immediately. If you prefer the '+=' operator to expand the +right-hand side immediately you should use the ':=' / '::=' assignment +instead. + + Second, these variables are slightly less efficient than simply +expanded variables since they do need to be re-expanded when they are +used, rather than merely copied. However since all variable references +are escaped this expansion simply un-escapes the value, it won't expand +any variables or run any functions. + + Here is another example: + + var = one$$two + OUT :::= $(var) + OUT += $(var) + var = three$$four + + After this, the value of 'OUT' is the text 'one$$two $(var)'. When +this variable is used it will be expanded and the result will be +'one$two three$four'. + + This style of assignment is equivalent to the traditional BSD 'make' +':=' operator; as you can see it works slightly differently than the GNU +'make' ':=' operator. The ':::=' operator is added to the POSIX +specification in Issue 8 to provide portability. + + +File: make.info, Node: Conditional Assignment, Prev: Immediate Assignment, Up: Flavors + +6.2.4 Conditional Variable Assignment +------------------------------------- + +There is another assignment operator for variables, '?='. This is +called a conditional variable assignment operator, because it only has +an effect if the variable is not yet defined. This statement: + + FOO ?= bar + +is exactly equivalent to this (*note The 'origin' Function: Origin +Function.): + + ifeq ($(origin FOO), undefined) + FOO = bar + endif + + Note that a variable set to an empty value is still defined, so '?=' +will not set that variable. + + +File: make.info, Node: Advanced, Next: Values, Prev: Flavors, Up: Using Variables + +6.3 Advanced Features for Reference to Variables +================================================ + +This section describes some advanced features you can use to reference +variables in more flexible ways. + +* Menu: + +* Substitution Refs:: Referencing a variable with + substitutions on the value. +* Computed Names:: Computing the name of the variable to refer to. + + +File: make.info, Node: Substitution Refs, Next: Computed Names, Prev: Advanced, Up: Advanced + +6.3.1 Substitution References +----------------------------- + +A "substitution reference" substitutes the value of a variable with +alterations that you specify. It has the form '$(VAR:A=B)' (or +'${VAR:A=B}') and its meaning is to take the value of the variable VAR, +replace every A at the end of a word with B in that value, and +substitute the resulting string. + + When we say "at the end of a word", we mean that A must appear either +followed by whitespace or at the end of the value in order to be +replaced; other occurrences of A in the value are unaltered. For +example: + + foo := a.o b.o l.a c.o + bar := $(foo:.o=.c) + +sets 'bar' to 'a.c b.c l.a c.c'. *Note Setting Variables: Setting. + + A substitution reference is shorthand for the 'patsubst' expansion +function (*note Functions for String Substitution and Analysis: Text +Functions.): '$(VAR:A=B)' is equivalent to '$(patsubst %A,%B,VAR)'. We +provide substitution references as well as 'patsubst' for compatibility +with other implementations of 'make'. + + Another type of substitution reference lets you use the full power of +the 'patsubst' function. It has the same form '$(VAR:A=B)' described +above, except that now A must contain a single '%' character. This case +is equivalent to '$(patsubst A,B,$(VAR))'. *Note Functions for String +Substitution and Analysis: Text Functions, for a description of the +'patsubst' function. For example: + + foo := a.o b.o l.a c.o + bar := $(foo:%.o=%.c) + +sets 'bar' to 'a.c b.c l.a c.c'. + + +File: make.info, Node: Computed Names, Prev: Substitution Refs, Up: Advanced + +6.3.2 Computed Variable Names +----------------------------- + +Computed variable names are an advanced concept, very useful in more +sophisticated makefile programming. In simple situations you need not +consider them, but they can be extremely useful. + + Variables may be referenced inside the name of a variable. This is +called a "computed variable name" or a "nested variable reference". For +example, + + x = y + y = z + a := $($(x)) + +defines 'a' as 'z': the '$(x)' inside '$($(x))' expands to 'y', so +'$($(x))' expands to '$(y)' which in turn expands to 'z'. Here the name +of the variable to reference is not stated explicitly; it is computed by +expansion of '$(x)'. The reference '$(x)' here is nested within the +outer variable reference. + + The previous example shows two levels of nesting, but any number of +levels is possible. For example, here are three levels: + + x = y + y = z + z = u + a := $($($(x))) + +Here the innermost '$(x)' expands to 'y', so '$($(x))' expands to '$(y)' +which in turn expands to 'z'; now we have '$(z)', which becomes 'u'. + + References to recursively-expanded variables within a variable name +are re-expanded in the usual fashion. For example: + + x = $(y) + y = z + z = Hello + a := $($(x)) + +defines 'a' as 'Hello': '$($(x))' becomes '$($(y))' which becomes '$(z)' +which becomes 'Hello'. + + Nested variable references can also contain modified references and +function invocations (*note Functions for Transforming Text: +Functions.), just like any other reference. For example, using the +'subst' function (*note Functions for String Substitution and Analysis: +Text Functions.): + + x = variable1 + variable2 := Hello + y = $(subst 1,2,$(x)) + z = y + a := $($($(z))) + +eventually defines 'a' as 'Hello'. It is doubtful that anyone would +ever want to write a nested reference as convoluted as this one, but it +works: '$($($(z)))' expands to '$($(y))' which becomes '$($(subst +1,2,$(x)))'. This gets the value 'variable1' from 'x' and changes it by +substitution to 'variable2', so that the entire string becomes +'$(variable2)', a simple variable reference whose value is 'Hello'. + + A computed variable name need not consist entirely of a single +variable reference. It can contain several variable references, as well +as some invariant text. For example, + + a_dirs := dira dirb + 1_dirs := dir1 dir2 + + a_files := filea fileb + 1_files := file1 file2 + + ifeq "$(use_a)" "yes" + a1 := a + else + a1 := 1 + endif + + ifeq "$(use_dirs)" "yes" + df := dirs + else + df := files + endif + + dirs := $($(a1)_$(df)) + +will give 'dirs' the same value as 'a_dirs', '1_dirs', 'a_files' or +'1_files' depending on the settings of 'use_a' and 'use_dirs'. + + Computed variable names can also be used in substitution references: + + a_objects := a.o b.o c.o + 1_objects := 1.o 2.o 3.o + + sources := $($(a1)_objects:.o=.c) + +defines 'sources' as either 'a.c b.c c.c' or '1.c 2.c 3.c', depending on +the value of 'a1'. + + The only restriction on this sort of use of nested variable +references is that they cannot specify part of the name of a function to +be called. This is because the test for a recognized function name is +done before the expansion of nested references. For example, + + ifdef do_sort + func := sort + else + func := strip + endif + + bar := a d b g q c + + foo := $($(func) $(bar)) + +attempts to give 'foo' the value of the variable 'sort a d b g q c' or +'strip a d b g q c', rather than giving 'a d b g q c' as the argument to +either the 'sort' or the 'strip' function. This restriction could be +removed in the future if that change is shown to be a good idea. + + You can also use computed variable names in the left-hand side of a +variable assignment, or in a 'define' directive, as in: + + dir = foo + $(dir)_sources := $(wildcard $(dir)/*.c) + define $(dir)_print = + lpr $($(dir)_sources) + endef + +This example defines the variables 'dir', 'foo_sources', and +'foo_print'. + + Note that "nested variable references" are quite different from +"recursively expanded variables" (*note The Two Flavors of Variables: +Flavors.), though both are used together in complex ways when doing +makefile programming. + + +File: make.info, Node: Values, Next: Setting, Prev: Advanced, Up: Using Variables + +6.4 How Variables Get Their Values +================================== + +Variables can get values in several different ways: + + * You can specify an overriding value when you run 'make'. *Note + Overriding Variables: Overriding. + + * You can specify a value in the makefile, either with an assignment + (*note Setting Variables: Setting.) or with a verbatim definition + (*note Defining Multi-Line Variables: Multi-Line.). + + * You can specify a short-lived value with the 'let' function (*note + Let Function::) or with the 'foreach' function (*note Foreach + Function::). + + * Variables in the environment become 'make' variables. *Note + Variables from the Environment: Environment. + + * Several "automatic" variables are given new values for each rule. + Each of these has a single conventional use. *Note Automatic + Variables::. + + * Several variables have constant initial values. *Note Variables + Used by Implicit Rules: Implicit Variables. + + +File: make.info, Node: Setting, Next: Appending, Prev: Values, Up: Using Variables + +6.5 Setting Variables +===================== + +To set a variable from the makefile, write a line starting with the +variable name followed by one of the assignment operators '=', ':=', +'::=', or ':::='. Whatever follows the operator and any initial +whitespace on the line becomes the value. For example, + + objects = main.o foo.o bar.o utils.o + +defines a variable named 'objects' to contain the value 'main.o foo.o +bar.o utils.o'. Whitespace around the variable name and immediately +after the '=' is ignored. + + Variables defined with '=' are "recursively expanded" variables. +Variables defined with ':=' or '::=' are "simply expanded" variables; +these definitions can contain variable references which will be expanded +before the definition is made. Variables defined with ':::=' are +"immediately expanded" variables. The different assignment operators +are described in *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 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 +initial values that are not empty, but you can set them in the usual +ways (*note Variables Used by Implicit Rules: Implicit Variables.). +Several special variables are set automatically to a new value for each +rule; these are called the "automatic" variables (*note Automatic +Variables::). + + If you'd like a variable to be set to a value only if it's not +already set, then you can use the shorthand operator '?=' instead of +'='. These two settings of the variable 'FOO' are identical (*note The +'origin' Function: Origin Function.): + + FOO ?= bar + +and + + ifeq ($(origin FOO), undefined) + FOO = bar + endif + + The shell assignment operator '!=' can be used to execute a shell +script 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") + + As with the 'shell' function, the exit status of the just-invoked +shell script is stored in the '.SHELLSTATUS' variable. + + +File: make.info, Node: Appending, Next: Override Directive, Prev: Setting, Up: Using Variables + +6.6 Appending More Text to Variables +==================================== + +Often it is useful to add more text to the value of a variable already +defined. You do this with a line containing '+=', like this: + + objects += another.o + +This takes the value of the variable 'objects', and adds the text +'another.o' to it (preceded by a single space, if it has a value +already). Thus: + + objects = main.o foo.o bar.o utils.o + objects += another.o + +sets 'objects' to 'main.o foo.o bar.o utils.o another.o'. + + Using '+=' is similar to: + + objects = main.o foo.o bar.o utils.o + objects := $(objects) another.o + +but differs in ways that become important when you use more complex +values. + + When the variable in question has not been defined before, '+=' acts +just like normal '=': it defines a recursively-expanded variable. +However, when there _is_ a previous definition, exactly what '+=' does +depends on what flavor of variable you defined originally. *Note The +Two Flavors of Variables: Flavors, for an explanation of the two 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 ':=' 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 + +is exactly equivalent to: + + variable := value + variable := $(variable) more + + On the other hand, when you use '+=' with a variable that you defined +first to be recursively-expanded using plain '=' or ':::=', 'make' +appends the un-expanded text to the existing value, whatever it is. +This means that + + variable = value + variable += more + +is roughly equivalent to: + + temp = value + variable = $(temp) more + +except that of course it never defines a variable called 'temp'. The +importance of this comes when the variable's old value contains variable +references. Take this common example: + + CFLAGS = $(includes) -O + ... + CFLAGS += -pg # enable profiling + +The first line defines the 'CFLAGS' variable with a reference to another +variable, 'includes'. ('CFLAGS' is used by the rules for C compilation; +*note Catalogue of Built-In Rules: Catalogue of Rules.) Using '=' for +the definition makes 'CFLAGS' a recursively-expanded variable, meaning +'$(includes) -O' is _not_ expanded when 'make' processes the definition +of 'CFLAGS'. Thus, 'includes' need not be defined yet for its value to +take effect. It only has to be defined before any reference to +'CFLAGS'. If we tried to append to the value of 'CFLAGS' without using +'+=', we might do it like this: + + CFLAGS := $(CFLAGS) -pg # enable profiling + +This is pretty close, but not quite what we want. Using ':=' redefines +'CFLAGS' as a simply-expanded variable; this means 'make' expands the +text '$(CFLAGS) -pg' before setting the variable. If 'includes' is not +yet defined, we get ' -O -pg', and a later definition of 'includes' will +have no effect. Conversely, by using '+=' we set 'CFLAGS' to the +_unexpanded_ value '$(includes) -O -pg'. Thus we preserve the reference +to 'includes', so if that variable gets defined at any later point, a +reference like '$(CFLAGS)' still uses its value. + + +File: make.info, Node: Override Directive, Next: Multi-Line, Prev: Appending, Up: Using Variables + +6.7 The 'override' Directive +============================ + +If a variable has been set with a command argument (*note Overriding +Variables: Overriding.), then ordinary assignments in the makefile are +ignored. If you want to set the variable in the makefile even though it +was set with a command argument, you can use an 'override' directive, +which is a line that looks like this: + + override VARIABLE = VALUE + +or + + override VARIABLE := VALUE + + To append more text to a variable defined on the command line, use: + + override VARIABLE += MORE TEXT + +*Note Appending More Text to Variables: Appending. + + Variable assignments marked with the 'override' flag have a higher +priority than all other assignments, except another 'override'. +Subsequent assignments or appends to this variable which are not marked +'override' will be ignored. + + The 'override' directive was not invented for escalation in the war +between makefiles and command arguments. It was invented so you can +alter and add to values that the user specifies with command arguments. + + For example, suppose you always want the '-g' switch when you run the +C compiler, but you would like to allow the user to specify the other +switches with a command argument just as usual. You could use this +'override' directive: + + override CFLAGS += -g + + You can also use 'override' directives with 'define' directives. +This is done as you might expect: + + override define foo = + bar + endef + +*Note Defining Multi-Line Variables: Multi-Line. + + +File: make.info, Node: Multi-Line, Next: Undefine Directive, Prev: Override Directive, Up: Using Variables + +6.8 Defining Multi-Line Variables +================================= + +Another way to set the value of a variable is to use the 'define' +directive. This directive has an unusual syntax which allows newline +characters to be included in the value, which is convenient for defining +both canned sequences of commands (*note Defining Canned Recipes: Canned +Recipes.), and also sections of makefile syntax to use with 'eval' +(*note Eval Function::). + + The 'define' directive is followed on the same line by the name of +the variable being defined and an (optional) assignment operator, and +nothing more. The value to give the variable appears on the following +lines. The end of the value is marked by a line containing just the +word 'endef'. + + Aside from this difference in syntax, 'define' works just like any +other variable definition. The variable name may contain function and +variable references, which are expanded when the directive is read to +find the actual variable name to use. + + The final newline before the 'endef' is not included in the value; if +you want your value to contain a trailing newline you must include a +blank line. For example in order to define a variable that contains a +newline character you must use _two_ empty lines, not one: + + define newline + + + endef + + You may omit the variable assignment operator if you prefer. If +omitted, 'make' assumes it to be '=' and creates a recursively-expanded +variable (*note The Two Flavors of Variables: Flavors.). When using a +'+=' operator, the value is appended to the previous value as with any +other append operation: with a single space separating the old and new +values. + + You may nest 'define' directives: 'make' will keep track of nested +directives and report an error if they are not all properly closed with +'endef'. Note that lines beginning with the recipe prefix character are +considered part of a recipe, so any 'define' or 'endef' strings +appearing on such a line will not be considered 'make' directives. + + define two-lines + echo foo + echo $(bar) + endef + + When used in a recipe, the previous example is functionally +equivalent to this: + + two-lines = echo foo; echo $(bar) + +since two commands separated by semicolon behave much like two separate +shell commands. However, note that using two separate lines means +'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 +'override' directive together with 'define': + + override define two-lines = + foo + $(bar) + endef + +*Note The 'override' Directive: Override Directive. + + +File: make.info, Node: Undefine Directive, Next: Environment, Prev: Multi-Line, Up: Using Variables + +6.9 Undefining Variables +======================== + +If you want to clear a variable, setting its value to empty is usually +sufficient. Expanding such a variable will yield the same result (empty +string) regardless of whether it was set or not. However, if you are +using the 'flavor' (*note Flavor Function::) and 'origin' (*note Origin +Function::) functions, there is a difference between a variable that was +never set and a variable with an empty value. In such situations you +may want to use the 'undefine' directive to make a variable appear as if +it was never set. For example: + + foo := foo + bar = bar + + undefine foo + undefine bar + + $(info $(origin foo)) + $(info $(flavor bar)) + + This example will print "undefined" for both variables. + + If you want to undefine a command-line variable definition, you can +use the 'override' directive together with 'undefine', similar to how +this is done for variable definitions: + + override undefine CFLAGS + + +File: make.info, Node: Environment, Next: Target-specific, Prev: Undefine Directive, Up: Using Variables + +6.10 Variables from the Environment +=================================== + +Variables in 'make' can come from the environment in which 'make' is +run. Every environment variable that 'make' sees when it starts up is +transformed into a 'make' variable with the same name and value. +However, an explicit assignment in the makefile, or with a command +argument, overrides the environment. (If the '-e' flag is specified, +then values from the environment override assignments in the makefile. +*Note Summary of Options: Options Summary. But this is not recommended +practice.) + + Thus, by setting the variable 'CFLAGS' in your environment, you can +cause all C compilations in most makefiles to use the compiler switches +you prefer. This is safe for variables with standard or conventional +meanings because you know that no makefile will use them for other +things. (Note this is not totally reliable; some makefiles set 'CFLAGS' +explicitly and therefore are not affected by the value in the +environment.) + + When 'make' runs a recipe, some variables defined in the makefile are +placed into the environment of each command 'make' invokes. By default, +only variables that came from the 'make''s environment or set on its +command line are placed into the environment of the commands. You can +use the 'export' directive to pass other variables. *Note Communicating +Variables to a Sub-'make': Variables/Recursion, for full details. + + Other use of variables from the environment is not recommended. It +is not wise for makefiles to depend for their functioning on environment +variables set up outside their control, since this would cause different +users to get different results from the same makefile. This is against +the whole purpose of most makefiles. + + Such problems would be especially likely with the variable 'SHELL', +which is normally present in the environment to specify the user's +choice of interactive shell. It would be very undesirable for this +choice to affect 'make'; so, 'make' handles the 'SHELL' environment +variable in a special way; see *note Choosing the Shell::. + + +File: make.info, Node: Target-specific, Next: Pattern-specific, Prev: Environment, Up: Using Variables + +6.11 Target-specific Variable Values +==================================== + +Variable values in 'make' are usually global; that is, they are the same +regardless of where they are evaluated (unless they're reset, of +course). Exceptions to that are variables defined with the 'let' +function (*note Let Function::) or the 'foreach' function (*note Foreach +Function::, and automatic variables (*note Automatic Variables::). + + Another exception are "target-specific variable values". This +feature allows you to define different values for the same variable, +based on the target that 'make' is currently building. As with +automatic variables, these values are only available within the context +of a target's recipe (and in other target-specific assignments). + + Set a target-specific variable value like this: + + TARGET ... : VARIABLE-ASSIGNMENT + + Target-specific variable assignments can be prefixed with any or all +of the special keywords 'export', 'unexport', 'override', or 'private'; +these apply their normal behavior to this instance of the variable only. + + Multiple TARGET values create a target-specific variable value for +each member of the target list individually. + + The VARIABLE-ASSIGNMENT can be any valid form of assignment; +recursive ('='), simple (':=' or '::='), immediate ('::='), 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 +environment if the '-e' option is in force) will take precedence. +Specifying the 'override' directive will allow the target-specific +variable value to be preferred. + + There is one more special feature of target-specific variables: when +you define a target-specific variable that variable value is also in +effect for all prerequisites of this target, and all their +prerequisites, etc. (unless those prerequisites override that variable +with their own target-specific variable value). So, for example, a +statement like this: + + prog : CFLAGS = -g + prog : prog.o foo.o bar.o + +will set 'CFLAGS' to '-g' in the recipe for 'prog', but it will also set +'CFLAGS' to '-g' in the recipes that create 'prog.o', 'foo.o', and +'bar.o', and any recipes which create their prerequisites. + + Be aware that a given prerequisite will only be built once per +invocation of make, at most. If the same file is a prerequisite of +multiple targets, and each of those targets has a different value for +the same target-specific variable, then the first target to be built +will cause that prerequisite to be built and the prerequisite will +inherit the target-specific value from the first target. It will ignore +the target-specific values from any other targets. + + +File: make.info, Node: Pattern-specific, Next: Suppressing Inheritance, Prev: Target-specific, Up: Using Variables + +6.12 Pattern-specific Variable Values +===================================== + +In addition to target-specific variable values (*note Target-specific +Variable Values: Target-specific.), GNU 'make' supports pattern-specific +variable values. In this form, the variable is defined for any target +that matches the pattern specified. + + Set a pattern-specific variable value like this: + + PATTERN ... : VARIABLE-ASSIGNMENT + where PATTERN is a %-pattern. As with target-specific variable +values, multiple PATTERN values create a pattern-specific variable value +for each pattern individually. The VARIABLE-ASSIGNMENT can be any valid +form of assignment. Any command line variable setting will take +precedence, unless 'override' is specified. + + For example: + + %.o : CFLAGS = -O + +will assign 'CFLAGS' the value of '-O' for all targets matching the +pattern '%.o'. + + If a target matches more than one pattern, the matching +pattern-specific variables with longer stems are interpreted first. +This results in more specific variables taking precedence over the more +generic ones, for example: + + %.o: %.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ + + lib/%.o: CFLAGS := -fPIC -g + %.o: CFLAGS := -g + + all: foo.o lib/bar.o + + In this example the first definition of the 'CFLAGS' variable will be +used to update 'lib/bar.o' even though the second one also applies to +this target. Pattern-specific variables which result in the same stem +length are considered in the order in which they were defined in the +makefile. + + Pattern-specific variables are searched after any target-specific +variables defined explicitly for that target, and before target-specific +variables defined for the parent target. + + +File: make.info, Node: Suppressing Inheritance, Next: Special Variables, Prev: Pattern-specific, Up: Using Variables + +6.13 Suppressing Inheritance +============================ + +As described in previous sections, 'make' variables are inherited by +prerequisites. This capability allows you to modify the behavior of a +prerequisite based on which targets caused it to be rebuilt. For +example, you might set a target-specific variable on a 'debug' target, +then running 'make debug' will cause that variable to be inherited by +all prerequisites of 'debug', while just running 'make all' (for +example) would not have that assignment. + + Sometimes, however, you may not want a variable to be inherited. For +these situations, 'make' provides the 'private' modifier. Although this +modifier can be used with any variable assignment, it makes the most +sense with target- and pattern-specific variables. Any variable marked +'private' will be visible to its local target but will not be inherited +by prerequisites of that target. A global variable marked 'private' +will be visible in the global scope but will not be inherited by any +target, and hence will not be visible in any recipe. + + As an example, consider this makefile: + EXTRA_CFLAGS = + + prog: private EXTRA_CFLAGS = -L/usr/local/lib + prog: a.o b.o + + Due to the 'private' modifier, 'a.o' and 'b.o' will not inherit the +'EXTRA_CFLAGS' variable assignment from the 'prog' target. + + +File: make.info, Node: Special Variables, Prev: Suppressing Inheritance, Up: Using Variables + +6.14 Other Special Variables +============================ + +GNU 'make' supports some variables that have special properties. + +'MAKEFILE_LIST' + Contains the name of each makefile that is parsed by 'make', in the + order in which it was parsed. The name is appended just before + 'make' begins to parse the makefile. Thus, if the first thing a + makefile does is examine the last word in this variable, it will be + the name of the current makefile. Once the current makefile has + used 'include', however, the last word will be the just-included + makefile. + + If a makefile named 'Makefile' has this content: + + name1 := $(lastword $(MAKEFILE_LIST)) + + include inc.mk + + name2 := $(lastword $(MAKEFILE_LIST)) + + all: + @echo name1 = $(name1) + @echo name2 = $(name2) + + then you would expect to see this output: + + name1 = Makefile + name2 = inc.mk + +'.DEFAULT_GOAL' + Sets the default goal to be used if no targets were specified on + the command line (*note Arguments to Specify the Goals: Goals.). + The '.DEFAULT_GOAL' variable allows you to discover the current + default goal, restart the default goal selection algorithm by + clearing its value, or to explicitly set the default goal. The + following example illustrates these cases: + + # Query the default goal. + ifeq ($(.DEFAULT_GOAL),) + $(warning no default goal is set) + endif + + .PHONY: foo + foo: ; @echo $@ + + $(warning default goal is $(.DEFAULT_GOAL)) + + # Reset the default goal. + .DEFAULT_GOAL := + + .PHONY: bar + bar: ; @echo $@ + + $(warning default goal is $(.DEFAULT_GOAL)) + + # Set our own. + .DEFAULT_GOAL := foo + + This makefile prints: + + no default goal is set + default goal is foo + default goal is bar + foo + + Note that assigning more than one target name to '.DEFAULT_GOAL' is + invalid and will result in an error. + +'MAKE_RESTARTS' + This variable is set only if this instance of 'make' has restarted + (*note How Makefiles Are Remade: Remaking Makefiles.): it will + contain the number of times this instance has restarted. Note this + is not the same as recursion (counted by the 'MAKELEVEL' variable). + You should not set, modify, or export this variable. + +'MAKE_TERMOUT' +'MAKE_TERMERR' + When 'make' starts it will check whether stdout and stderr will + show their output on a terminal. If so, it will set 'MAKE_TERMOUT' + and 'MAKE_TERMERR', respectively, to the name of the terminal + device (or 'true' if this cannot be determined). If set these + variables will be marked for export. These variables will not be + changed by 'make' and they will not be modified if already set. + + These values can be used (particularly in combination with output + synchronization (*note Output During Parallel Execution: Parallel + Output.) to determine whether 'make' itself is writing to a + terminal; they can be tested to decide whether to force recipe + commands to generate colorized output for example. + + If you invoke a sub-'make' and redirect its stdout or stderr it is + your responsibility to reset or unexport these variables as well, + if your makefiles rely on them. + +'.RECIPEPREFIX' + The first character of the value of this variable is used as the + character make assumes is introducing a recipe line. If the + variable is empty (as it is by default) that character is the + standard tab character. For example, this is a valid makefile: + + .RECIPEPREFIX = > + all: + > @echo Hello, world + + The value of '.RECIPEPREFIX' can be changed multiple times; once + set it stays in effect for all rules parsed until it is modified. + +'.VARIABLES' + Expands to a list of the _names_ of all global variables defined so + far. This includes variables which have empty values, as well as + built-in variables (*note Variables Used by Implicit Rules: + Implicit Variables.), but does not include any variables which are + only defined in a target-specific context. Note that any value you + assign to this variable will be ignored; it will always return its + special value. + +'.FEATURES' + Expands to a list of special features supported by this version of + 'make'. Possible values include, but are not limited to: + + 'archives' + Supports 'ar' (archive) files using special file name syntax. + *Note Using 'make' to Update Archive Files: Archives. + + 'check-symlink' + Supports the '-L' ('--check-symlink-times') flag. *Note + Summary of Options: Options Summary. + + 'else-if' + Supports "else if" non-nested conditionals. *Note Syntax of + Conditionals: Conditional Syntax. + + 'extra-prereqs' + Supports the '.EXTRA_PREREQS' special target. + + 'grouped-target' + Supports grouped target syntax for explicit rules. *Note + Multiple Targets in a Rule: Multiple Targets. + + 'guile' + Has GNU Guile available as an embedded extension language. + *Note GNU Guile Integration: Guile Integration. + + 'jobserver' + Supports "job server" enhanced parallel builds. *Note + Parallel Execution: Parallel. + + 'jobserver-fifo' + Supports "job server" enhanced parallel builds using named + pipes. *Note Integrating GNU 'make': Integrating make. + + 'load' + Supports dynamically loadable objects for creating custom + extensions. *Note Loading Dynamic Objects: Loading Objects. + + 'notintermediate' + Supports the '.NOTINTERMEDIATE' special target. *Note + Integrating GNU 'make': Integrating make. + + 'oneshell' + Supports the '.ONESHELL' special target. *Note Using One + Shell: One Shell. + + 'order-only' + Supports order-only prerequisites. *Note Types of + Prerequisites: Prerequisite Types. + + 'output-sync' + Supports the '--output-sync' command line option. *Note + Summary of Options: Options Summary. + + 'second-expansion' + Supports secondary expansion of prerequisite lists. + + 'shell-export' + Supports exporting 'make' variables to 'shell' functions. + + '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::. + +'.INCLUDE_DIRS' + Expands to a list of directories that 'make' searches for included + makefiles (*note Including Other Makefiles: Include.). Note that + modifying this variable's value does not change the list of + directories which are searched. + +'.EXTRA_PREREQS' + Each word in this variable is a new prerequisite which is added to + targets for which it is set. These prerequisites differ from + normal prerequisites in that they do not appear in any of the + automatic variables (*note Automatic Variables::). This allows + prerequisites to be defined which do not impact the recipe. + + Consider a rule to link a program: + + myprog: myprog.o file1.o file2.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) + + Now suppose you want to enhance this makefile to ensure that + updates to the compiler cause the program to be re-linked. You can + add the compiler as a prerequisite, but you must ensure that it's + not passed as an argument to link command. You'll need something + like this: + + myprog: myprog.o file1.o file2.o $(CC) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ \ + $(filter-out $(CC),$^) $(LDLIBS) + + Then consider having multiple extra prerequisites: they would all + have to be filtered out. Using '.EXTRA_PREREQS' and + target-specific variables provides a simpler solution: + + myprog: myprog.o file1.o file2.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) + myprog: .EXTRA_PREREQS = $(CC) + + This feature can also be useful if you want to add prerequisites to + a makefile you cannot easily modify: you can create a new file such + as 'extra.mk': + + myprog: .EXTRA_PREREQS = $(CC) + + then invoke 'make -f extra.mk -f Makefile'. + + Setting '.EXTRA_PREREQS' globally will cause those prerequisites to + be added to all targets (which did not themselves override it with + a target-specific value). Note 'make' is smart enough not to add a + prerequisite listed in '.EXTRA_PREREQS' as a prerequisite to + itself. + + +File: make.info, Node: Conditionals, Next: Functions, Prev: Using Variables, Up: Top + +7 Conditional Parts of Makefiles +******************************** + +A "conditional" directive causes part of a makefile to be obeyed or +ignored depending on the values of variables. Conditionals can compare +the value of one variable to another, or the value of a variable to a +constant string. Conditionals control what 'make' actually "sees" in +the makefile, so they _cannot_ be used to control recipes at the time of +execution. + +* Menu: + +* Conditional Example:: Example of a conditional +* Conditional Syntax:: The syntax of conditionals. +* Testing Flags:: Conditionals that test flags. + + +File: make.info, Node: Conditional Example, Next: Conditional Syntax, Prev: Conditionals, Up: Conditionals + +7.1 Example of a Conditional +============================ + +The following example of a conditional tells 'make' to use one set of +libraries if the 'CC' variable is 'gcc', and a different set of +libraries otherwise. It works by controlling which of two recipe lines +will be used for the rule. The result is that 'CC=gcc' as an argument +to 'make' changes not only which compiler is used but also which +libraries are linked. + + libs_for_gcc = -lgnu + normal_libs = + + foo: $(objects) + ifeq ($(CC),gcc) + $(CC) -o foo $(objects) $(libs_for_gcc) + else + $(CC) -o foo $(objects) $(normal_libs) + endif + + This conditional uses three directives: one 'ifeq', one 'else' and +one 'endif'. + + The 'ifeq' directive begins the conditional, and specifies the +condition. It contains two arguments, separated by a comma and +surrounded by parentheses. Variable substitution is performed on both +arguments and then they are compared. The lines of the makefile +following the 'ifeq' are obeyed if the two arguments match; otherwise +they are ignored. + + The 'else' directive causes the following lines to be obeyed if the +previous conditional failed. In the example above, this means that the +second alternative linking command is used whenever the first +alternative is not used. It is optional to have an 'else' in a +conditional. + + The 'endif' directive ends the conditional. Every conditional must +end with an 'endif'. Unconditional makefile text follows. + + As this example illustrates, conditionals work at the textual level: +the lines of the conditional are treated as part of the makefile, or +ignored, according to the condition. This is why the larger syntactic +units of the makefile, such as rules, may cross the beginning or the end +of the conditional. + + When the variable 'CC' has the value 'gcc', the above example has +this effect: + + foo: $(objects) + $(CC) -o foo $(objects) $(libs_for_gcc) + +When the variable 'CC' has any other value, the effect is this: + + foo: $(objects) + $(CC) -o foo $(objects) $(normal_libs) + + Equivalent results can be obtained in another way by conditionalizing +a variable assignment and then using the variable unconditionally: + + libs_for_gcc = -lgnu + normal_libs = + + ifeq ($(CC),gcc) + libs=$(libs_for_gcc) + else + libs=$(normal_libs) + endif + + foo: $(objects) + $(CC) -o foo $(objects) $(libs) + + +File: make.info, Node: Conditional Syntax, Next: Testing Flags, Prev: Conditional Example, Up: Conditionals + +7.2 Syntax of Conditionals +========================== + +The syntax of a simple conditional with no 'else' is as follows: + + CONDITIONAL-DIRECTIVE + TEXT-IF-TRUE + endif + +The TEXT-IF-TRUE may be any lines of text, to be considered as part of +the makefile if the condition is true. If the condition is false, no +text is used instead. + + The syntax of a complex conditional is as follows: + + CONDITIONAL-DIRECTIVE + TEXT-IF-TRUE + else + TEXT-IF-FALSE + endif + + or: + + CONDITIONAL-DIRECTIVE-ONE + TEXT-IF-ONE-IS-TRUE + else CONDITIONAL-DIRECTIVE-TWO + TEXT-IF-TWO-IS-TRUE + else + TEXT-IF-ONE-AND-TWO-ARE-FALSE + endif + +There can be as many "'else' CONDITIONAL-DIRECTIVE" clauses as +necessary. Once a given condition is true, TEXT-IF-TRUE is used and no +other clause is used; if no condition is true then TEXT-IF-FALSE is +used. The TEXT-IF-TRUE and TEXT-IF-FALSE can be any number of lines of +text. + + The syntax of the CONDITIONAL-DIRECTIVE is the same whether the +conditional is simple or complex; after an 'else' or not. There are +four different directives that test different conditions. Here is a +table of them: + +'ifeq (ARG1, ARG2)' +'ifeq 'ARG1' 'ARG2'' +'ifeq "ARG1" "ARG2"' +'ifeq "ARG1" 'ARG2'' +'ifeq 'ARG1' "ARG2"' + Expand all variable references in ARG1 and ARG2 and compare them. + If they are identical, the TEXT-IF-TRUE is effective; otherwise, + the TEXT-IF-FALSE, if any, is effective. + + Often you want to test if a variable has a non-empty value. When + the value results from complex expansions of variables and + functions, expansions you would consider empty may actually contain + whitespace characters and thus are not seen as empty. However, you + can use the 'strip' function (*note Text Functions::) to avoid + interpreting whitespace as a non-empty value. For example: + + ifeq ($(strip $(foo)),) + TEXT-IF-EMPTY + endif + + will evaluate TEXT-IF-EMPTY even if the expansion of '$(foo)' + contains whitespace characters. + +'ifneq (ARG1, ARG2)' +'ifneq 'ARG1' 'ARG2'' +'ifneq "ARG1" "ARG2"' +'ifneq "ARG1" 'ARG2'' +'ifneq 'ARG1' "ARG2"' + Expand all variable references in ARG1 and ARG2 and compare them. + If they are different, the TEXT-IF-TRUE is effective; otherwise, + the TEXT-IF-FALSE, if any, is effective. + +'ifdef VARIABLE-NAME' + The 'ifdef' form takes the _name_ of a variable as its argument, + not a reference to a variable. If the value of that variable has a + non-empty value, the TEXT-IF-TRUE is effective; otherwise, the + TEXT-IF-FALSE, if any, is effective. Variables that have never + been defined have an empty value. The text VARIABLE-NAME is + expanded, so it could be a variable or function that expands to the + name of a variable. For example: + + bar = true + foo = bar + ifdef $(foo) + frobozz = yes + endif + + The variable reference '$(foo)' is expanded, yielding 'bar', which + is considered to be the name of a variable. The variable 'bar' is + not expanded, but its value is examined to determine if it is + non-empty. + + Note that 'ifdef' only tests whether a variable has a value. It + does not expand the variable to see if that value is nonempty. + Consequently, tests using 'ifdef' return true for all definitions + except those like 'foo ='. To test for an empty value, use + 'ifeq ($(foo),)'. For example, + + bar = + foo = $(bar) + ifdef foo + frobozz = yes + else + frobozz = no + endif + + sets 'frobozz' to 'yes', while: + + foo = + ifdef foo + frobozz = yes + else + frobozz = no + endif + + sets 'frobozz' to 'no'. + +'ifndef VARIABLE-NAME' + If the variable VARIABLE-NAME has an empty value, the TEXT-IF-TRUE + is effective; otherwise, the TEXT-IF-FALSE, if any, is effective. + The rules for expansion and testing of VARIABLE-NAME are identical + to the 'ifdef' directive. + + Extra spaces are allowed and ignored at the beginning of the +conditional directive line, but a tab is not allowed. (If the line +begins with a tab, it will be considered part of a recipe for a rule.) +Aside from this, extra spaces or tabs may be inserted with no effect +anywhere except within the directive name or within an argument. A +comment starting with '#' may appear at the end of the line. + + The other two directives that play a part in a conditional are 'else' +and 'endif'. Each of these directives is written as one word, with no +arguments. Extra spaces are allowed and ignored at the beginning of the +line, and spaces or tabs at the end. A comment starting with '#' may +appear at the end of the line. + + Conditionals affect which lines of the makefile 'make' uses. If the +condition is true, 'make' reads the lines of the TEXT-IF-TRUE as part of +the makefile; if the condition is false, 'make' ignores those lines +completely. It follows that syntactic units of the makefile, such as +rules, may safely be split across the beginning or the end of the +conditional. + + 'make' evaluates conditionals when it reads a makefile. +Consequently, you cannot use automatic variables in the tests of +conditionals because they are not defined until recipes are run (*note +Automatic Variables::). + + To prevent intolerable confusion, it is not permitted to start a +conditional in one makefile and end it in another. However, you may +write an 'include' directive within a conditional, provided you do not +attempt to terminate the conditional inside the included file. + + +File: make.info, Node: Testing Flags, Prev: Conditional Syntax, Up: Conditionals + +7.3 Conditionals that Test Flags +================================ + +You can write a conditional that tests 'make' command flags such as '-t' +by using the variable 'MAKEFLAGS' together with the 'findstring' +function (*note Functions for String Substitution and Analysis: Text +Functions.). This is useful when 'touch' is not enough to make a file +appear up to date. + + Recall that 'MAKEFLAGS' will put all single-letter options (such as +'-t') into the first word, and that word will be empty if no +single-letter options were given. To work with this, it's helpful to +add a value at the start to ensure there's a word: for example +'-$(MAKEFLAGS)'. + + The 'findstring' function determines whether one string appears as a +substring of another. If you want to test for the '-t' flag, use 't' as +the first string and the first word of 'MAKEFLAGS' as the other. + + For example, here is how to arrange to use 'ranlib -t' to finish +marking an archive file up to date: + + archive.a: ... + ifneq (,$(findstring t,$(word 1,-$(MAKEFLAGS)))) + +touch archive.a + +ranlib -t archive.a + else + ranlib archive.a + endif + +The '+' prefix marks those recipe lines as "recursive" so that they will +be executed despite use of the '-t' flag. *Note Recursive Use of +'make': Recursion. + + +File: make.info, Node: Functions, Next: Running, Prev: Conditionals, Up: Top + +8 Functions for Transforming Text +********************************* + +"Functions" allow you to do text processing in the makefile to compute +the files to operate on or the commands to use in recipes. You use a +function in a "function call", where you give the name of the function +and some text (the "arguments") for the function to operate on. The +result of the function's processing is substituted into the makefile at +the point of the call, just as a variable might be substituted. + +* Menu: + +* Syntax of Functions:: How to write a function call. +* Text Functions:: General-purpose text manipulation functions. +* File Name Functions:: Functions for manipulating file names. +* Conditional Functions:: Functions that implement conditions. +* Let Function:: Local variables. +* 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. +* 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 + +8.1 Function Call Syntax +======================== + +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) + +or like this: + + ${FUNCTION ARGUMENTS} + + 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' 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 +more than one argument, then they are separated by commas. Such +whitespace and commas are not part of an argument's value. The +delimiters which you use to surround the function call, whether +parentheses or braces, can appear in an argument only in matching pairs; +the other kind of delimiters may appear singly. If the arguments +themselves contain other function calls or variable references, it is +wisest to use the same kind of delimiters for all the references; write +'$(subst a,b,$(x))', not '$(subst a,b,${x})'. This is because it is +clearer, and because only one type of delimiter is matched to find the +end of the reference. + + Each argument is expanded before the function is invoked, unless +otherwise noted below. The substitution is done in the order in which +the arguments appear. + +Special Characters +.................. + +When using characters that are special to 'make' as function arguments, +you may need to hide them. GNU 'make' doesn't support escaping +characters with backslashes or other escape sequences; however, because +arguments are split before they are expanded you can hide them by +putting them into variables. + + Characters you may need to hide include: + + * Commas + * Initial whitespace in the first argument + * Unmatched open parenthesis or brace + * An open parenthesis or brace if you don't want it to start a + matched pair + + For example, you can define variables 'comma' and 'space' whose +values are isolated comma and space characters, then substitute these +variables where such characters are wanted, like this: + + comma:= , + empty:= + space:= $(empty) $(empty) + foo:= a b c + bar:= $(subst $(space),$(comma),$(foo)) + # bar is now 'a,b,c'. + +Here the 'subst' function replaces each space with a comma, through the +value of 'foo', and substitutes the result. + + +File: make.info, Node: Text Functions, Next: File Name Functions, Prev: Syntax of Functions, Up: Functions + +8.2 Functions for String Substitution and Analysis +================================================== + +Here are some functions that operate on strings: + +'$(subst FROM,TO,TEXT)' + Performs a textual replacement on the text TEXT: each occurrence of + FROM is replaced by TO. The result is substituted for the function + call. For example, + + $(subst ee,EE,feet on the street) + + produces the value 'fEEt on the strEEt'. + +'$(patsubst PATTERN,REPLACEMENT,TEXT)' + Finds whitespace-separated words in TEXT that match PATTERN and + replaces them with REPLACEMENT. Here PATTERN may contain a '%' + which acts as a wildcard, matching any number of any characters + within a word. If REPLACEMENT also contains a '%', the '%' is + replaced by the text that matched the '%' in PATTERN. Words that + do not match the pattern are kept without change in the output. + Only the first '%' in the PATTERN and REPLACEMENT is treated this + way; any subsequent '%' is unchanged. + + '%' characters in 'patsubst' function invocations can be quoted + with preceding backslashes ('\'). Backslashes that would otherwise + quote '%' characters can be quoted with more backslashes. + Backslashes that quote '%' characters or other backslashes are + removed from the pattern before it is compared file names or has a + stem substituted into it. Backslashes that are not in danger of + quoting '%' characters go unmolested. For example, the pattern + 'the\%weird\\%pattern\\' has 'the%weird\' preceding the operative + '%' character, and 'pattern\\' following it. The final two + backslashes are left alone because they cannot affect any '%' + character. + + Whitespace between words is folded into single space characters; + leading and trailing whitespace is discarded. + + For example, + + $(patsubst %.c,%.o,x.c.c bar.c) + + produces the value 'x.c.o bar.o'. + + Substitution references (*note Substitution References: + Substitution Refs.) are a simpler way to get the effect of the + 'patsubst' function: + + $(VAR:PATTERN=REPLACEMENT) + + is equivalent to + + $(patsubst PATTERN,REPLACEMENT,$(VAR)) + + The second shorthand simplifies one of the most common uses of + 'patsubst': replacing the suffix at the end of file names. + + $(VAR:SUFFIX=REPLACEMENT) + + is equivalent to + + $(patsubst %SUFFIX,%REPLACEMENT,$(VAR)) + + For example, you might have a list of object files: + + objects = foo.o bar.o baz.o + + To get the list of corresponding source files, you could simply + write: + + $(objects:.o=.c) + + instead of using the general form: + + $(patsubst %.o,%.c,$(objects)) + +'$(strip STRING)' + Removes leading and trailing whitespace from STRING and replaces + each internal sequence of one or more whitespace characters with a + single space. Thus, '$(strip a b c )' results in 'a b c'. + + The function 'strip' can be very useful when used in conjunction + with conditionals. When comparing something with the empty string + '' using 'ifeq' or 'ifneq', you usually want a string of just + whitespace to match the empty string (*note Conditionals::). + + Thus, the following may fail to have the desired results: + + .PHONY: all + ifneq "$(needs_made)" "" + all: $(needs_made) + else + all:;@echo 'Nothing to make!' + endif + + Replacing the variable reference '$(needs_made)' with the function + call '$(strip $(needs_made))' in the 'ifneq' directive would make + it more robust. + +'$(findstring FIND,IN)' + Searches IN for an occurrence of FIND. If it occurs, the value is + FIND; otherwise, the value is empty. You can use this function in + a conditional to test for the presence of a specific substring in a + given string. Thus, the two examples, + + $(findstring a,a b c) + $(findstring a,b c) + + produce the values 'a' and '' (the empty string), respectively. + *Note Testing Flags::, for a practical application of 'findstring'. + +'$(filter PATTERN...,TEXT)' + Returns all whitespace-separated words in TEXT that _do_ match any + of the PATTERN words, removing any words that _do not_ match. The + patterns are written using '%', just like the patterns used in the + 'patsubst' function above. + + The 'filter' function can be used to separate out different types + of strings (such as file names) in a variable. For example: + + sources := foo.c bar.c baz.s ugh.h + foo: $(sources) + cc $(filter %.c %.s,$(sources)) -o foo + + says that 'foo' depends of 'foo.c', 'bar.c', 'baz.s' and 'ugh.h' + but only 'foo.c', 'bar.c' and 'baz.s' should be specified in the + command to the compiler. + +'$(filter-out PATTERN...,TEXT)' + Returns all whitespace-separated words in TEXT that _do not_ match + any of the PATTERN words, removing the words that _do_ match one or + more. This is the exact opposite of the 'filter' function. + + For example, given: + + objects=main1.o foo.o main2.o bar.o + mains=main1.o main2.o + + the following generates a list which contains all the object files + not in 'mains': + + $(filter-out $(mains),$(objects)) + +'$(sort LIST)' + Sorts the words of LIST in lexical order, removing duplicate words. + The output is a list of words separated by single spaces. Thus, + + $(sort foo bar lose) + + returns the value 'bar foo lose'. + + Incidentally, since 'sort' removes duplicate words, you can use it + for this purpose even if you don't care about the sort order. + +'$(word N,TEXT)' + Returns the Nth word of TEXT. The legitimate values of N start + from 1. If N is bigger than the number of words in TEXT, the value + is empty. For example, + + $(word 2, foo bar baz) + + returns 'bar'. + +'$(wordlist S,E,TEXT)' + Returns the list of words in TEXT starting with word S and ending + with word E (inclusive). The legitimate values of S start from 1; + E may start from 0. If S is bigger than the number of words in + TEXT, the value is empty. If E is bigger than the number of words + in TEXT, words up to the end of TEXT are returned. If S is greater + than E, nothing is returned. For example, + + $(wordlist 2, 3, foo bar baz) + + returns 'bar baz'. + +'$(words TEXT)' + Returns the number of words in TEXT. Thus, the last word of TEXT + is '$(word $(words TEXT),TEXT)'. + +'$(firstword NAMES...)' + The argument NAMES is regarded as a series of names, separated by + whitespace. The value is the first name in the series. The rest + of the names are ignored. + + For example, + + $(firstword foo bar) + + produces the result 'foo'. Although '$(firstword TEXT)' is the + same as '$(word 1,TEXT)', the 'firstword' function is retained for + its simplicity. + +'$(lastword NAMES...)' + The argument NAMES is regarded as a series of names, separated by + whitespace. The value is the last name in the series. + + For example, + + $(lastword foo bar) + + produces the result 'bar'. Although '$(lastword TEXT)' is the same + as '$(word $(words TEXT),TEXT)', the 'lastword' function was added + for its simplicity and better performance. + + Here is a realistic example of the use of 'subst' and 'patsubst'. +Suppose that a makefile uses the 'VPATH' variable to specify a list of +directories that 'make' should search for prerequisite files (*note +'VPATH' Search Path for All Prerequisites: General Search.). This +example shows how to tell the C compiler to search for header files in +the same list of directories. + + The value of 'VPATH' is a list of directories separated by colons, +such as 'src:../headers'. First, the 'subst' function is used to change +the colons to spaces: + + $(subst :, ,$(VPATH)) + +This produces 'src ../headers'. Then 'patsubst' is used to turn each +directory name into a '-I' flag. These can be added to the value of the +variable 'CFLAGS', which is passed automatically to the C compiler, like +this: + + override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH))) + +The effect is to append the text '-Isrc -I../headers' to the previously +given value of 'CFLAGS'. The 'override' directive is used so that the +new value is assigned even if the previous value of 'CFLAGS' was +specified with a command argument (*note The 'override' Directive: +Override Directive.). + + +File: make.info, Node: File Name Functions, Next: Conditional Functions, Prev: Text Functions, Up: Functions + +8.3 Functions for File Names +============================ + +Several of the built-in expansion functions relate specifically to +taking apart file names or lists of file names. + + Each of the following functions performs a specific transformation on +a file name. The argument of the function is regarded as a series of +file names, separated by whitespace. (Leading and trailing whitespace +is ignored.) Each file name in the series is transformed in the same +way and the results are concatenated with single spaces between them. + +'$(dir NAMES...)' + Extracts the directory-part of each file name in NAMES. The + directory-part of the file name is everything up through (and + including) the last slash in it. If the file name contains no + slash, the directory part is the string './'. For example, + + $(dir src/foo.c hacks) + + produces the result 'src/ ./'. + +'$(notdir NAMES...)' + Extracts all but the directory-part of each file name in NAMES. If + the file name contains no slash, it is left unchanged. Otherwise, + everything through the last slash is removed from it. + + A file name that ends with a slash becomes an empty string. This + is unfortunate, because it means that the result does not always + have the same number of whitespace-separated file names as the + argument had; but we do not see any other valid alternative. + + For example, + + $(notdir src/foo.c hacks) + + produces the result 'foo.c hacks'. + +'$(suffix NAMES...)' + Extracts the suffix of each file name in NAMES. If the file name + contains a period, the suffix is everything starting with the last + period. Otherwise, the suffix is the empty string. This + frequently means that the result will be empty when NAMES is not, + and if NAMES contains multiple file names, the result may contain + fewer file names. + + For example, + + $(suffix src/foo.c src-1.0/bar.c hacks) + + produces the result '.c .c'. + +'$(basename NAMES...)' + Extracts all but the suffix of each file name in NAMES. If the + file name contains a period, the basename is everything starting up + to (and not including) the last period. Periods in the directory + part are ignored. If there is no period, the basename is the + entire file name. For example, + + $(basename src/foo.c src-1.0/bar hacks) + + produces the result 'src/foo src-1.0/bar hacks'. + +'$(addsuffix SUFFIX,NAMES...)' + The argument NAMES is regarded as a series of names, separated by + whitespace; SUFFIX is used as a unit. The value of SUFFIX is + appended to the end of each individual name and the resulting + larger names are concatenated with single spaces between them. For + example, + + $(addsuffix .c,foo bar) + + produces the result 'foo.c bar.c'. + +'$(addprefix PREFIX,NAMES...)' + The argument NAMES is regarded as a series of names, separated by + whitespace; PREFIX is used as a unit. The value of PREFIX is + prepended to the front of each individual name and the resulting + larger names are concatenated with single spaces between them. For + example, + + $(addprefix src/,foo bar) + + produces the result 'src/foo src/bar'. + +'$(join LIST1,LIST2)' + Concatenates the two arguments word by word: the two first words + (one from each argument) concatenated form the first word of the + result, the two second words form the second word of the result, + and so on. So the Nth word of the result comes from the Nth word + of each argument. If one argument has more words that the other, + the extra words are copied unchanged into the result. + + For example, '$(join a b,.c .o)' produces 'a.c b.o'. + + Whitespace between the words in the lists is not preserved; it is + replaced with a single space. + + This function can merge the results of the 'dir' and 'notdir' + functions, to produce the original list of files which was given to + those two functions. + +'$(wildcard PATTERN)' + The argument PATTERN is a file name pattern, typically containing + wildcard characters (as in shell file name patterns). The result + of 'wildcard' is a space-separated list of the names of existing + files that match the pattern. *Note Using Wildcard Characters in + File Names: Wildcards. + +'$(realpath NAMES...)' + For each file name in NAMES return the canonical absolute name. A + canonical name does not contain any '.' or '..' components, nor any + repeated path separators ('/') or symlinks. In case of a failure + the empty string is returned. Consult the 'realpath(3)' + documentation for a list of possible failure causes. + +'$(abspath NAMES...)' + For each file name in NAMES return an absolute name that does not + contain any '.' or '..' components, nor any repeated path + separators ('/'). Note that, in contrast to 'realpath' function, + 'abspath' does not resolve symlinks and does not require the file + names to refer to an existing file or directory. Use the + 'wildcard' function to test for existence. + + +File: make.info, Node: Conditional Functions, Next: Let Function, Prev: File Name Functions, Up: Functions + +8.4 Functions for Conditionals +============================== + +There are four functions that provide conditional expansion. A key +aspect of these functions is that not all of the arguments are expanded +initially. Only those arguments which need to be expanded, will be +expanded. + +'$(if CONDITION,THEN-PART[,ELSE-PART])' + The 'if' function provides support for conditional expansion in a + functional context (as opposed to the GNU 'make' makefile + conditionals such as 'ifeq' (*note Syntax of Conditionals: + Conditional Syntax.)). + + The first argument, CONDITION, first has all preceding and trailing + whitespace stripped, then is expanded. If it expands to any + non-empty string, then the condition is considered to be true. If + it expands to an empty string, the condition is considered to be + false. + + If the condition is true then the second argument, THEN-PART, is + evaluated and this is used as the result of the evaluation of the + entire 'if' function. + + If the condition is false then the third argument, ELSE-PART, is + evaluated and this is the result of the 'if' function. If there is + no third argument, the 'if' function evaluates to nothing (the + empty string). + + Note that only one of the THEN-PART or the ELSE-PART will be + evaluated, never both. Thus, either can contain side-effects (such + as 'shell' function calls, etc.) + +'$(or CONDITION1[,CONDITION2[,CONDITION3...]])' + The 'or' function provides a "short-circuiting" OR operation. Each + argument is expanded, in order. If an argument expands to a + non-empty string the processing stops and the result of the + expansion is that string. If, after all arguments are expanded, + all of them are false (empty), then the result of the expansion is + the empty string. + +'$(and CONDITION1[,CONDITION2[,CONDITION3...]])' + The 'and' function provides a "short-circuiting" AND operation. + Each argument is expanded, in order. If an argument expands to an + empty string the processing stops and the result of the expansion + is the empty string. If all arguments expand to a non-empty string + then the result of the expansion is the expansion of the last + argument. + +'$(intcmp LHS,RHS[,LT-PART[,EQ-PART[,GT-PART]]])' + The 'intcmp' function provides support for numerical comparison of + integers. This function has no counterpart among the GNU 'make' + makefile conditionals. + + The left-hand side, LHS, and right-hand side, RHS, are expanded and + parsed as integral numbers in base 10. Expansion of the remaining + arguments is controlled by how the numerical left-hand side + compares to the numerical right-hand side. + + If there are no further arguments, then the function expands to + empty if the left-hand side and right-hand side do not compare + equal, or to their numerical value if they do compare equal. + + Else if the left-hand side is strictly less than the right-hand + side, the 'intcmp' function evaluates to the expansion of the third + argument, LT-PART. If both sides compare equal, then the 'intcmp' + function evaluates to the expansion of the fourth argument, + EQ-PART. If the left-hand side is strictly greater than the + right-hand side, then the 'intcmp' function evaluates to the + expansion of the fifth argument, GT-PART. + + If GT-PART is missing, it defaults to EQ-PART. If EQ-PART is + missing, it defaults to the empty string. Thus both '$(intcmp + 9,7,hello)' and '$(intcmp 9,7,hello,world,)' evaluate to the empty + string, while '$(intcmp 9,7,hello,world)' (notice the absence of a + comma after 'world') evaluates to 'world'. + + +File: make.info, Node: Let Function, Next: Foreach Function, Prev: Conditional Functions, Up: Functions + +8.5 The 'let' Function +====================== + +The 'let' function provides a means to limit the scope of a variable. +The assignment of the named variables in a 'let' expression is in effect +only within the text provided by the 'let' expression, and this +assignment doesn't impact that named variable in any outer scope. + + Additionally, the 'let' function enables list unpacking by assigning +all unassigned values to the last named variable. + + The syntax of the 'let' function is: + + $(let VAR [VAR ...],[LIST],TEXT) + +The first two arguments, VAR and LIST, are expanded before anything else +is done; note that the last argument, TEXT, is *not* expanded at the +same time. Next, each word of the expanded value of LIST is bound to +each of the variable names, VAR, in turn, with the final variable name +being bound to the remainder of the expanded LIST. In other words, the +first word of LIST is bound to the first variable VAR, the second word +to the second variable VAR, and so on. + + If there are more variable names in VAR than there are words in LIST, +the remaining VAR variable names are set to the empty string. If there +are fewer VARs than words in LIST then the last VAR is set to all +remaining words in LIST. + + The variables in VAR are assigned as simply-expanded variables during +the execution of 'let'. *Note The Two Flavors of Variables: Flavors. + + After all variables are thus bound, TEXT is expanded to provide the +result of the 'let' function. + + For example, this macro reverses the order of the words in the list +that it is given as its first argument: + + reverse = $(let first rest,$1,\ + $(if $(rest),$(call reverse,$(rest)) )$(first)) + + all: ; @echo $(call reverse,d c b a) + +will print 'a b c d'. When first called, 'let' will expand $1 to 'd c b +a'. It will then assign FIRST to 'd' and assign REST to 'c b a'. It +will then expand the if-statement, where '$(rest)' is not empty so we +recursively invoke the REVERSE function with the value of REST which is +now 'c b a'. The recursive invocation of 'let' assigns FIRST to 'c' and +REST to 'b a'. The recursion continues until 'let' is called with just +a single value, 'a'. Here FIRST is 'a' and REST is empty, so we do not +recurse but simply expand '$(first)' to 'a' and return, which adds ' b', +etc. + + After the REVERSE call is complete, the FIRST and REST variables are +no longer set. If variables by those names existed beforehand, they are +not affected by the expansion of the 'reverse' macro. + + +File: make.info, Node: Foreach Function, Next: File Function, Prev: Let Function, Up: Functions + +8.6 The 'foreach' Function +========================== + +The 'foreach' function is similar to the 'let' function, but very +different from other functions. It causes one piece of text to be used +repeatedly, each time with a different substitution performed on it. +The 'foreach' function resembles the 'for' command in the shell 'sh' and +the 'foreach' command in the C-shell 'csh'. + + The syntax of the 'foreach' function is: + + $(foreach VAR,LIST,TEXT) + +The first two arguments, VAR and LIST, are expanded before anything else +is done; note that the last argument, TEXT, is *not* expanded at the +same time. Then for each word of the expanded value of LIST, the +variable named by the expanded value of VAR is set to that word, and +TEXT is expanded. Presumably TEXT contains references to that variable, +so its expansion will be different each time. + + The result is that TEXT is expanded as many times as there are +whitespace-separated words in LIST. The multiple expansions of TEXT are +concatenated, with spaces between them, to make the result of 'foreach'. + + This simple example sets the variable 'files' to the list of all +files in the directories in the list 'dirs': + + dirs := a b c d + files := $(foreach dir,$(dirs),$(wildcard $(dir)/*)) + + Here TEXT is '$(wildcard $(dir)/*)'. The first repetition finds the +value 'a' for 'dir', so it produces the same result as '$(wildcard +a/*)'; the second repetition produces the result of '$(wildcard b/*)'; +and the third, that of '$(wildcard c/*)'. + + This example has the same result (except for setting 'dirs') as the +following example: + + files := $(wildcard a/* b/* c/* d/*) + + When TEXT is complicated, you can improve readability by giving it a +name, with an additional variable: + + find_files = $(wildcard $(dir)/*) + dirs := a b c d + files := $(foreach dir,$(dirs),$(find_files)) + +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 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'. + + Like the 'let' function, the 'foreach' function has no permanent +effect on the variable VAR; its value and flavor after the 'foreach' +function call are the same as they were beforehand. The other values +which are taken from LIST are in effect only temporarily, during the +execution of 'foreach'. The variable VAR is a simply-expanded variable +during the execution of 'foreach'. If VAR was undefined before the +'foreach' function call, it is undefined after the call. *Note The Two +Flavors of Variables: Flavors. + + You must take care when using complex variable expressions that +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)) + +might be useful if the value of 'find_files' references the variable +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: File Function, Next: Call Function, Prev: Foreach Function, Up: Functions + +8.7 The 'file' Function +======================= + +The 'file' function allows the makefile to write to or read from 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 both cases the file is created if it does not +exist. It is a fatal error if the file cannot be opened for writing, or +if the write operation fails. The 'file' function expands to the empty +string when writing to a file. + + When reading from a file, the 'file' function expands to the verbatim +contents of the file, except that the final newline (if there is one) +will be stripped. Attempting to read from a non-existent file expands +to the empty string. + + The syntax of the 'file' function is: + + $(file OP FILENAME[,TEXT]) + + When the 'file' function is evaluated all its arguments are expanded +first, then the file indicated by FILENAME will be opened in the mode +described by OP. + + The operator OP can be '>' to indicate the file will be overwritten +with new content, '>>' to indicate the current contents of the file will +be appended to, or '<' to indicate the contents of the file will be read +in. The FILENAME specifies the file to be written to or read from. +There may optionally be whitespace between the operator and the file +name. + + When reading files, it is an error to provide a TEXT value. + + When writing files, TEXT will be written to the file. If TEXT does +not already end in a newline a final newline will be written (even if +TEXT is the empty string). If the TEXT argument is not given at all, +nothing will be written. + + 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.8 The 'call' Function +======================= + +The 'call' function is unique in that it can be used to create new +parameterized functions. You can write a complex expression as the +value of a variable, then use 'call' to expand it with different values. + + The syntax of the 'call' function is: + + $(call VARIABLE,PARAM,PARAM,...) + + When 'make' expands this function, it assigns each PARAM to temporary +variables '$(1)', '$(2)', etc. The variable '$(0)' will contain +VARIABLE. There is no maximum number of parameter arguments. There is +no minimum, either, but it doesn't make sense to use 'call' with no +parameters. + + Then VARIABLE is expanded as a 'make' variable in the context of +these temporary assignments. Thus, any reference to '$(1)' in the value +of VARIABLE will resolve to the first PARAM in the invocation of 'call'. + + 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.) + + 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 built-in functions that have special expansion rules, like +'foreach' or 'if', may not work as you expect. + + Some examples may make this clearer. + + This macro simply reverses its arguments: + + reverse = $(2) $(1) + + foo = $(call reverse,a,b) + +Here 'foo' will contain 'b a'. + + This one is slightly more interesting: it defines a macro to search +for the first instance of a program in 'PATH': + + pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH))))) + + LS := $(call pathsearch,ls) + +Now the variable 'LS' contains '/bin/ls' or similar. + + The 'call' function can be nested. Each recursive invocation gets +its own local values for '$(1)', etc. that mask the values of +higher-level 'call'. For example, here is an implementation of a "map" +function: + + map = $(foreach a,$(2),$(call $(1),$(a))) + + Now you can 'map' a function that normally takes only one argument, +such as 'origin', to multiple values in one step: + + o = $(call map,origin,o map MAKE) + + and end up with 'o' containing something like 'file file default'. + + A final caution: be careful when adding whitespace to the arguments +to 'call'. As with other functions, any whitespace contained in the +second and subsequent arguments is kept; this can cause strange effects. +It's generally safest to remove all extraneous whitespace when providing +parameters to 'call'. + + +File: make.info, Node: Value Function, Next: Eval Function, Prev: Call Function, Up: Functions + +8.9 The 'value' Function +======================== + +The 'value' function provides a way for you to use the value of a +variable _without_ having it expanded. Please note that this does not +undo expansions which have already occurred; for example if you create a +simply expanded variable its value is expanded during the definition; in +that case the 'value' function will return the same result as using the +variable directly. + + The syntax of the 'value' function is: + + $(value VARIABLE) + + 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.) + + The result of this function is a string containing the value of +VARIABLE, without any expansion occurring. For example, in this +makefile: + + FOO = $PATH + + all: + @echo $(FOO) + @echo $(value FOO) + +The first output line would be 'ATH', since the "$P" would be expanded +as a 'make' variable, while the second output line would be the current +value of your '$PATH' environment variable, since the 'value' function +avoided the expansion. + + The 'value' function is most often used in conjunction with the +'eval' function (*note Eval Function::). + + +File: make.info, Node: Eval Function, Next: Origin Function, Prev: Value Function, Up: Functions + +8.10 The 'eval' Function +======================== + +The 'eval' function is very special: it allows you to define new +makefile constructs that are not constant; which are the result of +evaluating other variables and functions. The argument to the 'eval' +function is expanded, then the results of that expansion are parsed as +makefile syntax. The expanded results can define new 'make' variables, +targets, implicit or explicit rules, etc. + + The result of the 'eval' function is always the empty string; thus, +it can be placed virtually anywhere in a makefile without causing syntax +errors. + + It's important to realize that the 'eval' argument is expanded +_twice_; first by the 'eval' function, then the results of that +expansion are expanded again when they are parsed as makefile syntax. +This means you may need to provide extra levels of escaping for "$" +characters when using 'eval'. The 'value' function (*note Value +Function::) can sometimes be useful in these situations, to circumvent +unwanted expansions. + + Here is an example of how 'eval' can be used; this example combines a +number of concepts and other functions. Although it might seem overly +complex to use 'eval' in this example, rather than just writing out the +rules, consider two things: first, the template definition (in +'PROGRAM_template') could need to be much more complex than it is here; +and second, you might put the complex, "generic" part of this example +into another makefile, then include it in all the individual makefiles. +Now your individual makefiles are quite straightforward. + + PROGRAMS = server client + + server_OBJS = server.o server_priv.o server_access.o + server_LIBS = priv protocol + + client_OBJS = client.o client_api.o client_mem.o + client_LIBS = protocol + + # Everything after this is generic + + .PHONY: all + all: $(PROGRAMS) + + define PROGRAM_template = + $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%) + ALL_OBJS += $$($(1)_OBJS) + endef + + $(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog)))) + + $(PROGRAMS): + $(LINK.o) $^ $(LDLIBS) -o $@ + + clean: + rm -f $(ALL_OBJS) $(PROGRAMS) + + +File: make.info, Node: Origin Function, Next: Flavor Function, Prev: Eval Function, Up: Functions + +8.11 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_ a +variable. Specifically, it tells you where it came from. + + The syntax of the 'origin' function is: + + $(origin VARIABLE) + + Note that VARIABLE is the _name_ of a variable to inquire about, not +a _reference_ to that variable. Therefore you would not normally use a +'$' or parentheses when writing it. (You can, however, use a variable +reference in the name if you want the name not to be a constant.) + + The result of this function is a string telling you how the variable +VARIABLE was defined: + +'undefined' + + if VARIABLE was never defined. + +'default' + + if VARIABLE has a default definition, as is usual with 'CC' and so + on. *Note Variables Used by Implicit Rules: Implicit Variables. + Note that if you have redefined a default variable, the 'origin' + function will return the origin of the later definition. + +'environment' + + if VARIABLE was inherited from the environment provided to 'make'. + +'environment override' + + if VARIABLE was inherited from the environment provided to 'make', + and is overriding a setting for VARIABLE in the makefile as a + result of the '-e' option (*note Summary of Options: Options + Summary.). + +'file' + + if VARIABLE was defined in a makefile. + +'command line' + + if VARIABLE was defined on the command line. + +'override' + + if VARIABLE was defined with an 'override' directive in a makefile + (*note The 'override' Directive: Override Directive.). + +'automatic' + + if VARIABLE is an automatic variable defined for the execution of + the recipe for each rule (*note Automatic Variables::). + + This information is primarily useful (other than for your curiosity) +to determine if you want to believe the value of a variable. For +example, suppose you have a makefile 'foo' that includes another +makefile 'bar'. You want a variable 'bletch' to be defined in 'bar' if +you run the command 'make -f bar', even if the environment contains a +definition of 'bletch'. However, if 'foo' defined 'bletch' before +including 'bar', you do not want to override that definition. This +could be done by using an 'override' directive in 'foo', giving that +definition precedence over the later definition in 'bar'; unfortunately, +the 'override' directive would also override any command line +definitions. So, 'bar' could include: + + ifdef bletch + ifeq "$(origin bletch)" "environment" + bletch = barf, gag, etc. + endif + endif + +If 'bletch' has been defined from the environment, this will redefine +it. + + If you want to override a previous definition of 'bletch' if it came +from the environment, even under '-e', you could instead write: + + ifneq "$(findstring environment,$(origin bletch))" "" + bletch = barf, gag, etc. + endif + + Here the redefinition takes place if '$(origin bletch)' returns +either 'environment' or 'environment override'. *Note Functions for +String Substitution and Analysis: Text Functions. + + +File: make.info, Node: Flavor Function, Next: Make Control Functions, Prev: Origin Function, Up: Functions + +8.12 The 'flavor' Function +========================== + +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 +a _reference_ to that variable. Therefore you would not normally use a +'$' or parentheses when writing it. (You can, however, use a variable +reference in the name if you want the name not to be a constant.) + + The result of this function is a string that identifies the flavor of +the variable VARIABLE: + +'undefined' + + if VARIABLE was never defined. + +'recursive' + + if VARIABLE is a recursively expanded variable. + +'simple' + + if VARIABLE is a simply expanded variable. + + +File: make.info, Node: Make Control Functions, Next: Shell Function, Prev: Flavor Function, Up: Functions + +8.13 Functions That Control Make +================================ + +These functions control the way make runs. Generally, they are used to +provide information to the user of the makefile or to cause make to stop +if some sort of environmental error is detected. + +'$(error TEXT...)' + Generates a fatal error where the message is TEXT. Note that the + error is generated whenever this function is evaluated. So, if you + put it inside a recipe or on the right side of a recursive variable + assignment, it won't be evaluated until later. The TEXT will be + expanded before the error is generated. + + For example, + + ifdef ERROR1 + $(error error is $(ERROR1)) + endif + + will generate a fatal error during the read of the makefile if the + 'make' variable 'ERROR1' is defined. Or, + + ERR = $(error found an error!) + + .PHONY: err + err: ; $(ERR) + + will generate a fatal error while 'make' is running, if the 'err' + target is invoked. + +'$(warning TEXT...)' + This function works similarly to the 'error' function, above, + except that 'make' doesn't exit. Instead, TEXT is expanded and the + resulting message is displayed, but processing of the makefile + continues. + + The result of the expansion of this function is the empty string. + +'$(info TEXT...)' + This function does nothing more than print its (expanded) + argument(s) to standard output. No makefile name or line number is + added. The result of the expansion of this function is the empty + string. + diff --git a/local/recipes/dev/gnu-make/source/doc/make.info-2 b/local/recipes/dev/gnu-make/source/doc/make.info-2 new file mode 100644 index 0000000000..186be0babb --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make.info-2 @@ -0,0 +1,6852 @@ +This is make.info, produced by makeinfo version 6.7 from make.texi. + +This file documents the GNU 'make' utility, which determines +automatically which pieces of a large program need to be recompiled, and +issues the commands to recompile them. + + This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make +Manual', for GNU 'make' version 4.4. + + Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, +1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, +2022 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.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 + "GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: "You have the freedom to copy and + modify this GNU manual. Buying copies from the FSF supports it in + developing GNU and promoting software freedom." +INFO-DIR-SECTION Software development +START-INFO-DIR-ENTRY +* Make: (make). Remake files automatically. +END-INFO-DIR-ENTRY + + +File: make.info, Node: Shell Function, Next: Guile Function, Prev: Make Control Functions, Up: Functions + +8.14 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 provides for 'make' the same facility that +backquotes ('`') provide in most shells: it does "command expansion". +This means that it takes as an argument a shell command and expands 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.). + + An alternative to the 'shell' function is the '!=' assignment +operator; it provides a similar behavior but has subtle differences +(*note Setting Variables: Setting.). The '!=' assignment operator is +included in newer POSIX standards. + + After the 'shell' function or '!=' assignment operator is used, its +exit status is placed in the '.SHELLSTATUS' variable. + + 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). + + All variables that are marked as 'export' will also be passed to the +shell started by the 'shell' function. It is possible to create a +variable expansion loop: consider this 'makefile': + + export HI = $(shell echo hi) + all: ; @echo $$HI + + When 'make' wants to run the recipe it must add the variable HI to +the environment; to do so it must be expanded. The value of this +variable requires an invocation of the 'shell' function, and to invoke +it we must create its environment. Since HI is exported, we need to +expand it to create its environment. And so on. In this obscure case +'make' will use the value of the variable from the environment provided +to 'make', or else the empty string if there was none, rather than +looping or issuing an error. This is often what you want; for example: + + export PATH = $(shell echo /usr/local/bin:$$PATH) + + However, it would be simpler and more efficient to use a +simply-expanded variable here (':=') in the first place. + + +File: make.info, Node: Guile Function, Prev: Shell Function, Up: Functions + +8.15 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' +******************* + +A makefile that says how to recompile a program can be used in more than +one way. The simplest use is to recompile every file that is out of +date. Usually, makefiles are written so that if you run 'make' with no +arguments, it does just that. + + But you might want to update only some of the files; you might want +to use a different compiler or different compiler options; you might +want just to find out which files are out of date without changing them. + + By giving arguments when you run 'make', you can do any of these +things and many others. + + The exit status of 'make' is always one of three values: +'0' + The exit status is zero if 'make' is successful. +'2' + The exit status is two if 'make' encounters any errors. It will + print messages describing the particular errors. +'1' + The exit status is one if you use the '-q' flag and 'make' + determines that some target is not already up to date. *Note + Instead of Executing Recipes: Instead of Execution. + +* Menu: + +* Makefile Arguments:: How to specify which makefile to use. +* Goals:: How to use goal arguments to specify which + parts of the makefile to use. +* Instead of Execution:: How to use mode flags to specify what + kind of thing to do with the recipes + in the makefile other than simply + execute them. +* Avoiding Compilation:: How to avoid recompiling certain files. +* Overriding:: How to override a variable to specify + an alternate compiler and other things. +* Testing:: How to proceed past some errors, to + test compilation. +* Temporary Files:: Where 'make' keeps its temporary files. +* Options Summary:: Summary of Options + + +File: make.info, Node: Makefile Arguments, Next: Goals, Prev: Running, Up: Running + +9.1 Arguments to Specify the Makefile +===================================== + +The way to specify the name of the makefile is with the '-f' or '--file' +option ('--makefile' also works). For example, '-f altmake' says to use +the file 'altmake' as the makefile. + + If you use the '-f' flag several times and follow each '-f' with an +argument, all the specified files are used jointly as makefiles. + + If you do not use the '-f' or '--file' flag, the default is to try +'GNUmakefile', 'makefile', and 'Makefile', in that order, and use the +first of these three which exists or can be made (*note Writing +Makefiles: Makefiles.). + + +File: make.info, Node: Goals, Next: Instead of Execution, Prev: Makefile Arguments, Up: Running + +9.2 Arguments to Specify the Goals +================================== + +The "goals" are the targets that 'make' should strive ultimately to +update. Other targets are updated as well if they appear as +prerequisites of goals, or prerequisites of prerequisites of goals, etc. + + By default, the goal is the first target in the makefile (not +counting targets that start with a period). Therefore, makefiles are +usually written so that the first target is for compiling the entire +program or programs they describe. If the first rule in the makefile +has several targets, only the first target in the rule becomes the +default goal, not the whole list. You can manage the selection of the +default goal from within your makefile using the '.DEFAULT_GOAL' +variable (*note Other Special Variables: Special Variables.). + + You can also specify a different goal or goals with command line +arguments to 'make'. Use the name of the goal as an argument. If you +specify several goals, 'make' processes each of them in turn, in the +order you name them. + + Any target in the makefile may be specified as a goal (unless it +starts with '-' or contains an '=', in which case it will be parsed as a +switch or variable definition, respectively). Even targets not in the +makefile may be specified, if 'make' can find implicit rules that say +how to make them. + + 'Make' will set the special variable 'MAKECMDGOALS' to the list of +goals you specified on the command line. If no goals were given on the +command line, this variable is empty. Note that this variable should be +used only in special circumstances. + + An example of appropriate use is to avoid including '.d' files during +'clean' rules (*note Automatic Prerequisites::), so 'make' won't create +them only to immediately remove them again: + + sources = foo.c bar.c + + ifeq (,$(filter clean,$(MAKECMDGOALS)) + include $(sources:.c=.d) + endif + + One use of specifying a goal is if you want to compile only a part of +the program, or only one of several programs. Specify as a goal each +file that you wish to remake. For example, consider a directory +containing several programs, with a makefile that starts like this: + + .PHONY: all + all: size nm ld ar as + + If you are working on the program 'size', you might want to say +'make size' so that only the files of that program are recompiled. + + Another use of specifying a goal is to make files that are not +normally made. For example, there may be a file of debugging output, or +a version of the program that is compiled specially for testing, which +has a rule in the makefile but is not a prerequisite of the default +goal. + + Another use of specifying a goal is to run the recipe associated with +a phony target (*note Phony Targets::) or empty target (*note Empty +Target Files to Record Events: Empty Targets.). Many makefiles contain +a phony target named 'clean' which deletes everything except source +files. Naturally, this is done only if you request it explicitly with +'make clean'. Following is a list of typical phony and empty target +names. *Note Standard Targets::, for a detailed list of all the +standard target names which GNU software packages use. + +'all' + Make all the top-level targets the makefile knows about. + +'clean' + Delete all files that are normally created by running 'make'. + +'mostlyclean' + Like 'clean', but may refrain from deleting a few files that people + normally don't want to recompile. For example, the 'mostlyclean' + target for GCC does not delete 'libgcc.a', because recompiling it + is rarely necessary and takes a lot of time. + +'distclean' +'realclean' +'clobber' + Any of these targets might be defined to delete _more_ files than + 'clean' does. For example, this would delete configuration files + or links that you would normally create as preparation for + compilation, even if the makefile itself cannot create these files. + +'install' + Copy the executable file into a directory that users typically + search for commands; copy any auxiliary files that the executable + uses into the directories where it will look for them. + +'print' + Print listings of the source files that have changed. + +'tar' + Create a tar file of the source files. + +'shar' + Create a shell archive (shar file) of the source files. + +'dist' + Create a distribution file of the source files. This might be a + tar file, or a shar file, or a compressed version of one of the + above, or even more than one of the above. + +'TAGS' + Update a tags table for this program. + +'check' +'test' + Perform self tests on the program this makefile builds. + + +File: make.info, Node: Instead of Execution, Next: Avoiding Compilation, Prev: Goals, Up: Running + +9.3 Instead of Executing Recipes +================================ + +The makefile tells 'make' how to tell whether a target is up to date, +and how to update each target. But updating the targets is not always +what you want. Certain options specify other activities for 'make'. + +'-n' +'--just-print' +'--dry-run' +'--recon' + + "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". 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". 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' +'--assume-new=FILE' +'--new-file=FILE' + + "What if". Each '-W' flag is followed by a file name. The given + files' modification times are recorded by 'make' as being the + present time, although the actual modification times remain the + same. You can use the '-W' flag in conjunction with the '-n' flag + to see what would happen if you were to modify specific files. + + With the '-n' flag, 'make' prints the recipe that it would normally +execute but usually does not execute it. + + With the '-t' flag, 'make' ignores the recipes in the rules and uses +(in effect) the command 'touch' for each target that needs to be remade. +The 'touch' command is also printed, unless '-s' or '.SILENT' is used. +For speed, 'make' does not actually invoke the program 'touch'. It does +the work directly. + + With the '-q' flag, 'make' prints nothing and executes no recipes, +but the exit status code it returns is zero if and only if the targets +to be considered are already up to date. If the exit status is one, +then some updating needs to be done. If 'make' encounters an error, the +exit status is two, so you can distinguish an error from a target that +is not up to date. + + It is an error to use more than one of these three flags in the same +invocation of 'make'. + + The '-n', '-t', and '-q' options do not affect recipe lines that +begin with '+' characters or contain the strings '$(MAKE)' or '${MAKE}'. +Note that only the line containing the '+' character or the strings +'$(MAKE)' or '${MAKE}' is run regardless of these options. Other lines +in the same rule are not run unless they too begin with '+' or contain +'$(MAKE)' or '${MAKE}' (*Note How the 'MAKE' Variable Works: MAKE +Variable.) + + The '-t' flag prevents phony targets (*note Phony Targets::) from +being updated, unless there are recipe lines beginning with '+' or +containing '$(MAKE)' or '${MAKE}'. + + The '-W' flag provides two features: + + * If you also use the '-n' or '-q' flag, you can see what 'make' + would do if you were to modify some files. + + * Without the '-n' or '-q' flag, when 'make' is actually executing + recipes, the '-W' flag can direct 'make' to act as if some files + had been modified, without actually running the recipes for those + files. + + Note that the options '-p' and '-v' allow you to obtain other +information about 'make' or about the makefiles in use (*note Summary of +Options: Options Summary.). + + +File: make.info, Node: Avoiding Compilation, Next: Overriding, Prev: Instead of Execution, Up: Running + +9.4 Avoiding Recompilation of Some Files +======================================== + +Sometimes you may have changed a source file but you do not want to +recompile all the files that depend on it. For example, suppose you add +a macro or a declaration to a header file that many other files depend +on. Being conservative, 'make' assumes that any change in the header +file requires recompilation of all dependent files, but you know that +they do not need to be recompiled and you would rather not waste the +time waiting for them to compile. + + If you anticipate the problem before changing the header file, you +can use the '-t' flag. This flag tells 'make' not to run the recipes in +the rules, but rather to mark the target up to date by changing its +last-modification date. You would follow this procedure: + + 1. Use the command 'make' to recompile the source files that really + need recompilation, ensuring that the object files are up-to-date + before you begin. + + 2. Make the changes in the header files. + + 3. Use the command 'make -t' to mark all the object files as up to + date. The next time you run 'make', the changes in the header + files will not cause any recompilation. + + If you have already changed the header file at a time when some files +do need recompilation, it is too late to do this. Instead, you can use +the '-o FILE' flag, which marks a specified file as "old" (*note Summary +of Options: Options Summary.). This means that the file itself will not +be remade, and nothing else will be remade on its account. Follow this +procedure: + + 1. Recompile the source files that need compilation for reasons + independent of the particular header file, with 'make -o + HEADERFILE'. If several header files are involved, use a separate + '-o' option for each header file. + + 2. Touch all the object files with 'make -t'. + + +File: make.info, Node: Overriding, Next: Testing, Prev: Avoiding Compilation, Up: Running + +9.5 Overriding Variables +======================== + +An argument that contains '=' specifies the value of a variable: 'V=X' +sets the value of the variable V to X. If you specify a value in this +way, all ordinary assignments of the same variable in the makefile are +ignored; we say they have been "overridden" by the command line +argument. + + The most common way to use this facility is to pass extra flags to +compilers. For example, in a properly written makefile, the variable +'CFLAGS' is included in each recipe that runs the C compiler, so a file +'foo.c' would be compiled something like this: + + cc -c $(CFLAGS) foo.c + + Thus, whatever value you set for 'CFLAGS' affects each compilation +that occurs. The makefile probably specifies the usual value for +'CFLAGS', like this: + + CFLAGS=-g + + Each time you run 'make', you can override this value if you wish. +For example, if you say 'make CFLAGS='-g -O'', each C compilation will +be done with 'cc -c -g -O'. (This also illustrates how you can use +quoting in the shell to enclose spaces and other special characters in +the value of a variable when you override it.) + + The variable 'CFLAGS' is only one of many standard variables that +exist just so that you can change them this way. *Note Variables Used +by Implicit Rules: Implicit Variables, for a complete list. + + You can also program the makefile to look at additional variables of +your own, giving the user the ability to control other aspects of how +the makefile works by changing the variables. + + When you override a variable with a command 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 ':=' 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 +line that looks like this: 'override VARIABLE = VALUE' (*note The +'override' Directive: Override Directive.). + + +File: make.info, Node: Testing, Next: Temporary Files, Prev: Overriding, Up: Running + +9.6 Testing the Compilation of a Program +======================================== + +Normally, when an error happens in executing a shell command, 'make' +gives up immediately, returning a nonzero status. No further recipes +are executed for any target. The error implies that the goal cannot be +correctly remade, and 'make' reports this as soon as it knows. + + When you are compiling a program that you have just changed, this is +not what you want. Instead, you would rather that 'make' try compiling +every file that can be tried, to show you as many compilation errors as +possible. + + On these occasions, you should use the '-k' or '--keep-going' flag. +This tells 'make' to continue to consider the other prerequisites of the +pending targets, remaking them if necessary, before it gives up and +returns nonzero status. For example, after an error in compiling one +object file, 'make -k' will continue compiling other object files even +though it already knows that linking them will be impossible. In +addition to continuing after failed shell commands, 'make -k' will +continue as much as possible after discovering that it does not know how +to make a target or prerequisite file. This will always cause an error +message, but without '-k', it is a fatal error (*note Summary of +Options: Options Summary.). + + The usual behavior of 'make' assumes that your purpose is to get the +goals up to date; once 'make' learns that this is impossible, it might +as well report the failure immediately. The '-k' flag says that the +real purpose is to test as much as possible of the changes made in the +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: Temporary Files, Next: Options Summary, Prev: Testing, Up: Running + +9.7 Temporary Files +=================== + +In some situations, 'make' will need to create its own temporary files. +These files must not be disturbed while 'make' is running, including all +recursively-invoked instances of 'make'. + + If the environment variable 'MAKE_TMPDIR' is set then all temporary +files created by 'make' will be placed there. + + If 'MAKE_TMPDIR' is not set, then the standard location for temporary +files for the current operating system will be used. For POSIX systems +this will be the location set in the 'TMPDIR' environment variable, or +else the system's default location (e.g., '/tmp') is used. On Windows, +first 'TMP' then 'TEMP' will be checked, then 'TMPDIR', and finally the +system default temporary file location will be used. + + Note that this directory must already exist or 'make' will fail: +'make' will not attempt to create it. + + These variables _cannot_ be set from within a makefile: GNU 'make' +must have access to this location before it begins reading the +makefiles. + + +File: make.info, Node: Options Summary, Prev: Temporary Files, Up: Running + +9.8 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. + + 'p (print)' + Prints the recipe to be executed, even when the recipe is + normally silent (due to '.SILENT' or '@'). Also prints the + makefile name and line number where the recipe was defined. + + 'w (why)' + Explains why each target must be remade by showing which + prerequisites are more up to date than the target. + + '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. + +'-E STRING' +'--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. If the directory DIR is a single dash + ('-') then any already-specified directories up to that point + (including the default directory paths) will be discarded. You can + examine the current list of directories to be searched via the + '.INCLUDE_DIRS' variable. + +'-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. + +'--jobserver-style=[STYLE]' + Chooses the style of jobserver to use. This option only has effect + if parallel builds are enabled (*note Parallel Execution: + Parallel.). On POSIX systems STYLE can be one of 'fifo' (the + default) or 'pipe'. On Windows the only acceptable STYLE is 'sem' + (the default). This option is useful if you need to use an older + versions of GNU 'make', or a different tool that requires a + specific jobserver style. + +'-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. + +'--shuffle[=MODE]' + + This option enables a form of fuzz-testing of prerequisite + relationships. When parallelism is enabled ('-j') the order in + which targets are built becomes less deterministic. If + prerequisites are not fully declared in the makefile this can lead + to intermittent and hard-to-track-down build failures. + + The '--shuffle' option forces 'make' to purposefully reorder goals + and prerequisites so target/prerequisite relationships still hold, + but ordering of prerequisites of a given target are reordered as + described below. + + The order in which prerequisites are listed in automatic variables + is not changed by this option. + + The '.NOTPARALLEL' pseudo-target disables shuffling for that + makefile. Also any prerequisite list which contains '.WAIT' will + not be shuffled. *Note Disabling Parallel Execution: Parallel + Disable. + + The '--shuffle=' option accepts these values: + + 'random' + Choose a random seed for the shuffle. This is the default if + no mode is specified. The chosen seed is also provided to + sub-'make' commands. The seed is included in error messages + so that it can be re-used in future runs to reproduce the + problem or verify that it has been resolved. + + 'reverse' + Reverse the order of goals and prerequisites, rather than a + random shuffle. + + 'SEED' + Use 'random' shuffle initialized with the specified seed + value. The SEED is an integer. + + 'none' + Disable shuffling. This negates any previous '--shuffle' + options. + +'-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. Using '--trace' is + shorthand for '--debug=print,why'. + +'-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 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 Built-In 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 Built-In +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 Built-In Rules +================================ + +Here is a catalogue of predefined implicit rules which are always +available unless the makefile explicitly overrides or cancels them. +*Note Canceling Implicit Rules: Canceling Rules, for information on +canceling or overriding an implicit rule. The '-r' or +'--no-builtin-rules' option cancels all predefined rules. + + This manual only documents the default rules available on POSIX-based +operating systems. Other operating systems, such as VMS, Windows, OS/2, +etc. may have different sets of default rules. To see the full list of +default rules and variables available in your version of GNU 'make', run +'make -p' in a directory with no makefile. + + Not all of these rules will always be defined, even when the '-r' +option is not given. Many of the predefined implicit rules are +implemented in 'make' as suffix rules, so which ones will be defined +depends on the "suffix list" (the list of prerequisites of the special +target '.SUFFIXES'). The default suffix list is: '.out', '.a', '.ln', +'.o', '.c', '.cc', '.C', '.cpp', '.p', '.f', '.F', '.m', '.r', '.y', +'.l', '.ym', '.lm', '.s', '.S', '.mod', '.sym', '.def', '.h', '.info', +'.dvi', '.tex', '.texinfo', '.texi', '.txinfo', '.w', '.ch' '.web', +'.sh', '.elc', '.el'. All of the implicit rules described below whose +prerequisites have one of these suffixes are actually suffix rules. If +you modify the suffix list, the only predefined suffix rules in effect +will be those named by one or two of the suffixes that are on the list +you specify; rules whose suffixes fail to be on the list are disabled. +*Note Old-Fashioned Suffix Rules: Suffix Rules, for full details on +suffix rules. + +Compiling C programs + 'N.o' is made automatically from 'N.c' with a recipe of the form + '$(CC) $(CPPFLAGS) $(CFLAGS) -c'. + +Compiling C++ programs + 'N.o' is made automatically from 'N.cc', 'N.cpp', or 'N.C' with a + recipe of the form '$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c'. We + encourage you to use the suffix '.cc' or '.cpp' for C++ source + files instead of '.C' to better support case-insensitive file + systems. + +Compiling Pascal programs + 'N.o' is made automatically from 'N.p' with the recipe '$(PC) + $(PFLAGS) -c'. + +Compiling Fortran and Ratfor programs + 'N.o' is made automatically from 'N.r', 'N.F' or 'N.f' by running + the Fortran compiler. The precise recipe used is as follows: + + '.f' + '$(FC) $(FFLAGS) -c'. + '.F' + '$(FC) $(FFLAGS) $(CPPFLAGS) -c'. + '.r' + '$(FC) $(FFLAGS) $(RFLAGS) -c'. + +Preprocessing Fortran and Ratfor programs + 'N.f' is made automatically from 'N.r' or 'N.F'. This rule runs + just the preprocessor to convert a Ratfor or preprocessable Fortran + program into a strict Fortran program. The precise recipe used is + as follows: + + '.F' + '$(FC) $(CPPFLAGS) $(FFLAGS) -F'. + '.r' + '$(FC) $(FFLAGS) $(RFLAGS) -F'. + +Compiling Modula-2 programs + 'N.sym' is made from 'N.def' with a recipe of the form + '$(M2C) $(M2FLAGS) $(DEFFLAGS)'. 'N.o' is made from 'N.mod'; the + form is: '$(M2C) $(M2FLAGS) $(MODFLAGS)'. + +Assembling and preprocessing assembler programs + 'N.o' is made automatically from 'N.s' by running the assembler, + 'as'. The precise recipe is '$(AS) $(ASFLAGS)'. + + 'N.s' is made automatically from 'N.S' by running the C + preprocessor, 'cpp'. The precise recipe is '$(CPP) $(CPPFLAGS)'. + +Linking a single object file + 'N' is made automatically from 'N.o' by running the C compiler to + link the program. The precise recipe used is + '$(CC) $(LDFLAGS) N.o $(LOADLIBES) $(LDLIBS)'. + + This rule does the right thing for a simple program with only one + source file. It will also do the right thing if there are multiple + object files (presumably coming from various other source files), + one of which has a name matching that of the executable file. + Thus, + + x: y.o z.o + + when 'x.c', 'y.c' and 'z.c' all exist will execute: + + cc -c x.c -o x.o + cc -c y.c -o y.o + cc -c z.c -o z.o + cc x.o y.o z.o -o x + rm -f x.o + rm -f y.o + rm -f z.o + + In more complicated cases, such as when there is no object file + whose name derives from the executable file name, you must write an + explicit recipe for linking. + + Each kind of file automatically made into '.o' object files will be + automatically linked by using the compiler ('$(CC)', '$(FC)' or + '$(PC)'; the C compiler '$(CC)' is used to assemble '.s' files) + without the '-c' option. This could be done by using the '.o' + object files as intermediates, but it is faster to do the compiling + and linking in one step, so that's how it's done. + +Yacc for C programs + 'N.c' is made automatically from 'N.y' by running Yacc with the + recipe '$(YACC) $(YFLAGS)'. + +Lex for C programs + 'N.c' is made automatically from 'N.l' by running Lex. The actual + recipe is '$(LEX) $(LFLAGS)'. + +Lex for Ratfor programs + 'N.r' is made automatically from 'N.l' by running Lex. The actual + recipe is '$(LEX) $(LFLAGS)'. + + The convention of using the same suffix '.l' for all Lex files + regardless of whether they produce C code or Ratfor code makes it + impossible for 'make' to determine automatically which of the two + languages you are using in any particular case. If 'make' is + called upon to remake an object file from a '.l' file, it must + guess which compiler to use. It will guess the C compiler, because + that is more common. If you are using Ratfor, make sure 'make' + knows this by mentioning 'N.r' in the makefile. Or, if you are + using Ratfor exclusively, with no C files, remove '.c' from the + list of implicit rule suffixes with: + + .SUFFIXES: + .SUFFIXES: .o .r .f .l ... + +Making Lint Libraries from C, Yacc, or Lex programs + 'N.ln' is made from 'N.c' by running 'lint'. The precise recipe is + '$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i'. The same recipe is used on + the C code produced from 'N.y' or 'N.l'. + +TeX and Web + 'N.dvi' is made from 'N.tex' with the recipe '$(TEX)'. 'N.tex' is + made from 'N.web' with '$(WEAVE)', or from 'N.w' (and from 'N.ch' + if it exists or can be made) with '$(CWEAVE)'. 'N.p' is made from + 'N.web' with '$(TANGLE)' and 'N.c' is made from 'N.w' (and from + 'N.ch' if it exists or can be made) with '$(CTANGLE)'. + +Texinfo and Info + 'N.dvi' is made from 'N.texinfo', 'N.texi', or 'N.txinfo', with the + recipe '$(TEXI2DVI) $(TEXI2DVI_FLAGS)'. 'N.info' is made from + 'N.texinfo', 'N.texi', or 'N.txinfo', with the recipe + '$(MAKEINFO) $(MAKEINFO_FLAGS)'. + +RCS + Any file 'N' is extracted if necessary from an RCS file named + either 'N,v' or 'RCS/N,v'. The precise recipe used is + '$(CO) $(COFLAGS)'. 'N' will not be extracted from RCS if it + already exists, even if the RCS file is newer. The rules for RCS + are terminal (*note Match-Anything Pattern Rules: Match-Anything + Rules.), so RCS files cannot be generated from another source; they + must actually exist. + +SCCS + Any file 'N' is extracted if necessary from an SCCS file named + either 's.N' or 'SCCS/s.N'. The precise recipe used is + '$(GET) $(GFLAGS)'. The rules for SCCS are terminal (*note + Match-Anything Pattern Rules: Match-Anything Rules.), so SCCS files + cannot be generated from another source; they must actually exist. + + For the benefit of SCCS, a file 'N' is copied from 'N.sh' and made + executable (by everyone). This is for shell scripts that are + checked into SCCS. Since RCS preserves the execution permission of + a file, you do not need to use this feature with RCS. + + We recommend that you avoid using of SCCS. RCS is widely held to be + superior, and is also free. By choosing free software in place of + comparable (or inferior) proprietary software, you support the free + software movement. + + Usually, you want to change only the variables listed in the table +above, which are documented in the following section. + + However, the recipes in built-in implicit rules actually use +variables such as 'COMPILE.c', 'LINK.p', and 'PREPROCESS.S', whose +values contain the recipes listed above. + + 'make' follows the convention that the rule to compile a '.X' source +file uses the variable 'COMPILE.X'. Similarly, the rule to produce an +executable from a '.X' file uses 'LINK.X'; and the rule to preprocess a +'.X' file uses 'PREPROCESS.X'. + + Every rule that produces an object file uses the variable +'OUTPUT_OPTION'. 'make' defines this variable either to contain '-o +$@', or to be empty, depending on a compile-time option. You need the +'-o' option to ensure that the output goes into the right file when the +source file is in a different directory, as when using 'VPATH' (*note +Directory Search::). However, compilers on some systems do not accept a +'-o' switch for object files. If you use such a system, and use +'VPATH', some compilations will put their output in the wrong place. A +possible workaround for this problem is to give 'OUTPUT_OPTION' the +value '; mv $*.o $@'. + + +File: make.info, Node: Implicit Variables, Next: Chained Rules, Prev: Catalogue of Rules, Up: Implicit Rules + +10.3 Variables Used by Implicit Rules +===================================== + +The recipes in built-in implicit rules make liberal use of certain +predefined variables. You can alter the values of these variables in +the makefile, with arguments to 'make', or in the environment to alter +how the implicit rules work without redefining the rules themselves. +You can cancel all variables used by implicit rules with the '-R' or +'--no-builtin-variables' option. + + For example, the recipe used to compile a C source file actually says +'$(CC) -c $(CFLAGS) $(CPPFLAGS)'. The default values of the variables +used are 'cc' and nothing, resulting in the command 'cc -c'. By +redefining 'CC' to 'ncc', you could cause 'ncc' to be used for all C +compilations performed by the implicit rule. By redefining 'CFLAGS' to +be '-g', you could pass the '-g' option to each compilation. _All_ +implicit rules that do C compilation use '$(CC)' to get the program name +for the compiler and _all_ include '$(CFLAGS)' among the arguments given +to the compiler. + + The variables used in implicit rules fall into two classes: those +that are names of programs (like 'CC') and those that contain arguments +for the programs (like 'CFLAGS'). (The "name of a program" may also +contain some command arguments, but it must start with an actual +executable program name.) If a variable value contains more than one +argument, separate them with spaces. + + The following tables describe of some of the more commonly-used +predefined variables. This list is not exhaustive, and the default +values shown here may not be what 'make' selects for your environment. +To see the complete list of predefined variables for your instance of +GNU 'make' you can run 'make -p' in a directory with no makefiles. + + Here is a table of some of the more common variables used as names of +programs in built-in rules: + +'AR' + Archive-maintaining program; default 'ar'. + +'AS' + Program for compiling assembly files; default 'as'. + +'CC' + Program for compiling C programs; default 'cc'. + +'CXX' + Program for compiling C++ programs; default 'g++'. + +'CPP' + Program for running the C preprocessor, with results to standard + output; default '$(CC) -E'. + +'FC' + Program for compiling or preprocessing Fortran and Ratfor programs; + default 'f77'. + +'M2C' + Program to use to compile Modula-2 source code; default 'm2c'. + +'PC' + Program for compiling Pascal programs; default 'pc'. + +'CO' + Program for extracting a file from RCS; default 'co'. + +'GET' + Program for extracting a file from SCCS; default 'get'. + +'LEX' + Program to use to turn Lex grammars into source code; default + 'lex'. + +'YACC' + Program to use to turn Yacc grammars into source code; default + 'yacc'. + +'LINT' + Program to use to run lint on source code; default 'lint'. + +'MAKEINFO' + Program to convert a Texinfo source file into an Info file; default + 'makeinfo'. + +'TEX' + Program to make TeX DVI files from TeX source; default 'tex'. + +'TEXI2DVI' + Program to make TeX DVI files from Texinfo source; default + 'texi2dvi'. + +'WEAVE' + Program to translate Web into TeX; default 'weave'. + +'CWEAVE' + Program to translate C Web into TeX; default 'cweave'. + +'TANGLE' + Program to translate Web into Pascal; default 'tangle'. + +'CTANGLE' + Program to translate C Web into C; default 'ctangle'. + +'RM' + Command to remove a file; default 'rm -f'. + + Here is a table of variables whose values are additional arguments +for the programs above. The default values for all of these is the +empty string, unless otherwise noted. + +'ARFLAGS' + Flags to give the archive-maintaining program; default 'rv'. + +'ASFLAGS' + Extra flags to give to the assembler (when explicitly invoked on a + '.s' or '.S' file). + +'CFLAGS' + Extra flags to give to the C compiler. + +'CXXFLAGS' + Extra flags to give to the C++ compiler. + +'COFLAGS' + Extra flags to give to the RCS 'co' program. + +'CPPFLAGS' + Extra flags to give to the C preprocessor and programs that use it + (the C and Fortran compilers). + +'FFLAGS' + Extra flags to give to the Fortran compiler. + +'GFLAGS' + Extra flags to give to the SCCS 'get' program. + +'LDFLAGS' + Extra flags to give to compilers when they are supposed to invoke + the linker, 'ld', 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. + +'YFLAGS' + Extra flags to give to Yacc. + +'PFLAGS' + Extra flags to give to the Pascal compiler. + +'RFLAGS' + Extra flags to give to the Fortran compiler for Ratfor programs. + +'LINTFLAGS' + Extra flags to give to lint. + + +File: make.info, Node: Chained Rules, Next: Pattern Rules, Prev: Implicit Variables, Up: Implicit Rules + +10.4 Chains of Implicit Rules +============================= + +Sometimes a file can be made by a sequence of implicit rules. For +example, a file 'N.o' could be made from 'N.y' by running first Yacc and +then 'cc'. Such a sequence is called a "chain". + + If the file 'N.c' exists, or is mentioned in the makefile, no special +searching is required: 'make' finds that the object file can be made by +C compilation from 'N.c'; later on, when considering how to make 'N.c', +the rule for running Yacc is used. Ultimately both 'N.c' and 'N.o' are +updated. + + However, even if 'N.c' does not exist and is not mentioned, 'make' +knows how to envision it as the missing link between 'N.o' and 'N.y'! +In this case, 'N.c' is called an "intermediate file". Once 'make' has +decided to use the intermediate file, it is entered in the data base as +if it had been mentioned in the makefile, along with the implicit rule +that says how to create it. + + Intermediate files are remade using their rules just like all other +files. But intermediate files are treated differently in two ways. + + The first difference is what happens if the intermediate file does +not exist. If an ordinary file B does not exist, and 'make' considers a +target that depends on B, it invariably creates B and then updates the +target from B. But if B is an intermediate file, then 'make' can leave +well enough alone: it won't create B unless one of its prerequisites is +out of date. This means the target depending on B won't be rebuilt +either, unless there is some other reason to update that target: for +example the target doesn't exist or a different prerequisite is newer +than the target. + + The second difference is that if 'make' _does_ create B in order to +update something else, it deletes B later on after it is no longer +needed. Therefore, an intermediate file which did not exist before +'make' also does not exist after 'make'. 'make' reports the deletion to +you by printing a 'rm' command showing which file it is deleting. + + You can explicitly mark a file as intermediate by listing it as a +prerequisite of the special target '.INTERMEDIATE'. This takes effect +even if the file is mentioned explicitly in some other way. + + A file cannot be intermediate if it is mentioned in the makefile as a +target or prerequisite, so one way to avoid the deletion of intermediate +files is by adding it as a prerequisite to some target. However, doing +so can cause make to do extra work when searching pattern rules (*note +Implicit Rule Search Algorithm: Implicit Rule Search.). + + As an alternative, listing a file as a prerequisite of the special +target '.NOTINTERMEDIATE' forces it to not be considered intermediate +(just as any other mention of the file will do). Also, listing the +target pattern of a pattern rule as a prerequisite of '.NOTINTERMEDIATE' +ensures that no targets generated using that pattern rule are considered +intermediate. + + You can disable intermediate files completely in your makefile by +providing '.NOTINTERMEDIATE' as a target with no prerequisites: in that +case it applies to every file in the makefile. + + If you do not want 'make' to create a file merely because it does not +already exist, but you also do not want 'make' to automatically delete +the file, you can mark it as a "secondary" file. To do this, list it as +a prerequisite of the special target '.SECONDARY'. Marking a file as +secondary also marks it as intermediate. + + A chain can involve more than two implicit rules. For example, it is +possible to make a file 'foo' from 'RCS/foo.y,v' by running RCS, Yacc +and 'cc'. Then both 'foo.y' and 'foo.c' are intermediate files that are +deleted at the end. + + No single implicit rule can appear more than once in a chain. This +means that 'make' will not even consider such a ridiculous thing as +making 'foo' from 'foo.o.o' by running the linker twice. This +constraint has the added benefit of preventing any infinite loop in the +search for an implicit rule chain. + + There are some special implicit rules to optimize certain cases that +would otherwise be handled by rule chains. For example, making 'foo' +from 'foo.c' could be handled by compiling and linking with separate +chained rules, using 'foo.o' as an intermediate file. But what actually +happens is that a special rule for this case does the compilation and +linking with a single 'cc' command. The optimized rule is used in +preference to the step-by-step chain because it comes earlier in the +ordering of rules. + + Finally, for performance reasons 'make' will not consider +non-terminal match-anything rules (i.e., '%:') when searching for a rule +to build a prerequisite of an implicit rule (*note Match-Anything +Rules::). + + +File: make.info, Node: Pattern Rules, Next: Last Resort, Prev: Chained Rules, Up: Implicit Rules + +10.5 Defining and Redefining Pattern Rules +========================================== + +You define an implicit rule by writing a "pattern rule". A pattern rule +looks like an ordinary rule, except that its target contains the +character '%' (exactly one of them). The target is considered a pattern +for matching file names; the '%' can match any nonempty substring, while +other characters match only themselves. The prerequisites likewise use +'%' to show how their names relate to the target name. + + Thus, a pattern rule '%.o : %.c' says how to make any file 'STEM.o' +from another file 'STEM.c'. + + Note that expansion using '%' in pattern rules occurs *after* any +variable or function expansions, which take place when the makefile is +read. *Note How to Use Variables: Using Variables, and *note Functions +for Transforming Text: Functions. + +* Menu: + +* Pattern Intro:: An introduction to pattern rules. +* Pattern Examples:: Examples of pattern rules. +* Automatic Variables:: How to use automatic variables in the + recipe of implicit rules. +* Pattern Match:: How patterns match. +* Match-Anything Rules:: Precautions you should take prior to + defining rules that can match any + target file whatever. +* Canceling Rules:: How to override or cancel built-in rules. + + +File: make.info, Node: Pattern Intro, Next: Pattern Examples, Prev: Pattern Rules, Up: Pattern Rules + +10.5.1 Introduction to Pattern Rules +------------------------------------ + +A pattern rule contains the character '%' (exactly one of them) in the +target; otherwise, it looks exactly like an ordinary rule. The target +is a pattern for matching file names; the '%' matches any nonempty +substring, while other characters match only themselves. + + For example, '%.c' as a pattern matches any file name that ends in +'.c'. 's.%.c' as a pattern matches any file name that starts with 's.', +ends in '.c' and is at least five characters long. (There must be at +least one character to match the '%'.) The substring that the '%' +matches is called the "stem". + + '%' in a prerequisite of a pattern rule stands for the same stem that +was matched by the '%' in the target. In order for the pattern rule to +apply, its target pattern must match the file name under consideration +and all of its prerequisites (after pattern substitution) must name +files that exist or can be made. These files become prerequisites of +the target. + + Thus, a rule of the form + + %.o : %.c ; RECIPE... + +specifies how to make a file 'N.o', with another file 'N.c' as its +prerequisite, provided that 'N.c' exists or can be made. + + There may also be prerequisites that do not use '%'; such a +prerequisite attaches to every file made by this pattern rule. These +unvarying prerequisites are useful occasionally. + + A pattern rule need not have any prerequisites that contain '%', or +in fact any prerequisites at all. Such a rule is effectively a general +wildcard. It provides a way to make any file that matches the target +pattern. *Note Last Resort::. + + More than one pattern rule may match a target. In this case 'make' +will choose the "best fit" rule. *Note How Patterns Match: Pattern +Match. + + Pattern rules may have more than one target; however, every target +must contain a '%' character. Multiple target patterns in pattern rules +are always treated as grouped targets (*note Multiple Targets in a Rule: +Multiple Targets.) regardless of whether they use the ':' or '&:' +separator. + + There is one exception: if a pattern target is out of date or does +not exist and the makefile does not need to build it, then it will not +cause the other targets to be considered out of date. Note that this +historical exception will be removed in future versions of GNU 'make' +and should not be relied on. If this situation is detected 'make' will +generate a warning _pattern recipe did not update peer target_; however, +'make' cannot detect all such situations. Please be sure that your +recipe updates _all_ the target patterns when it runs. + + +File: make.info, Node: Pattern Examples, Next: Automatic Variables, Prev: Pattern Intro, Up: Pattern Rules + +10.5.2 Pattern Rule Examples +---------------------------- + +Here are some examples of pattern rules actually predefined in 'make'. +First, the rule that compiles '.c' files into '.o' files: + + %.o : %.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ + +defines a rule that can make any file 'X.o' from 'X.c'. The recipe uses +the automatic variables '$@' and '$<' to substitute the names of the +target file and the source file in each case where the rule applies +(*note Automatic Variables::). + + Here is a second built-in rule: + + % :: RCS/%,v + $(CO) $(COFLAGS) $< + +defines a rule that can make any file 'X' whatsoever from a +corresponding file 'X,v' in the 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 +file (*note Match-Anything Pattern Rules: Match-Anything Rules.). + + This pattern rule has two targets: + + %.tab.c %.tab.h: %.y + bison -d $< + +This tells 'make' that the recipe 'bison -d X.y' will make both +'X.tab.c' and 'X.tab.h'. If the file 'foo' depends on the files +'parse.tab.o' and 'scan.o' and the file 'scan.o' depends on the file +'parse.tab.h', when 'parse.y' is changed, the recipe 'bison -d parse.y' +will be executed only once, and the prerequisites of both 'parse.tab.o' +and 'scan.o' will be satisfied. (Presumably the file 'parse.tab.o' will +be recompiled from 'parse.tab.c' and the file 'scan.o' from 'scan.c', +while 'foo' is linked from 'parse.tab.o', 'scan.o', and its other +prerequisites, and it will execute happily ever after.) + + +File: make.info, Node: Automatic Variables, Next: Pattern Match, Prev: Pattern Examples, Up: Pattern Rules + +10.5.3 Automatic Variables +-------------------------- + +Suppose you are writing a pattern rule to compile a '.c' file into a +'.o' file: how do you write the 'cc' command so that it operates on the +right source file name? You cannot write the name in the recipe, +because the name is different each time the implicit rule is applied. + + What you do is use a special feature of 'make', the "automatic +variables". These variables have values computed afresh for each rule +that is executed, based on the target and prerequisites of the rule. In +this example, you would use '$@' for the object file name and '$<' for +the source file name. + + It's very important that you recognize the limited scope in which +automatic variable values are available: they only have values within +the recipe. In particular, you cannot use them anywhere within the +target list of a rule; they have no value there and will expand to the +empty string. Also, they cannot be accessed directly within the +prerequisite list of a rule. A common mistake is attempting to use '$@' +within the prerequisites list; this will not work. However, there is a +special feature of GNU 'make', secondary expansion (*note Secondary +Expansion::), which will allow automatic variable values to be used in +prerequisite lists. + + Here is a table of automatic variables: + +'$@' + The file name of the target of the rule. If the target is an + archive member, then '$@' is the name of the archive file. In a + pattern rule that has multiple targets (*note Introduction to + Pattern Rules: Pattern Intro.), '$@' is the name of whichever + target caused the rule's recipe to be run. + +'$%' + The target member name, when the target is an archive member. + *Note Archives::. For example, if the target is 'foo.a(bar.o)' + then '$%' is 'bar.o' and '$@' is 'foo.a'. '$%' is empty when the + target is not an archive member. + +'$<' + The name of the first prerequisite. If the target got its recipe + from an implicit rule, this will be the first prerequisite added by + the implicit rule (*note Implicit Rules::). + +'$?' + The names of all the prerequisites that are newer than the target, + with spaces between them. If the target does not exist, all + prerequisites will be included. For prerequisites which are + archive members, only the named member is used (*note Archives::). + + '$?' is useful even in explicit rules when you wish to operate on + only the prerequisites that have changed. For example, suppose + that an archive named 'lib' is supposed to contain copies of + several object files. This rule copies just the changed object + files into the archive: + + lib: foo.o bar.o lose.o win.o + ar r lib $? + +'$^' + The names of all the prerequisites, with spaces between them. For + prerequisites which are archive members, only the named member is + used (*note Archives::). A target has only one prerequisite on + each other file it depends on, no matter how many times each file + is listed as a prerequisite. So if you list a prerequisite more + than once for a target, the value of '$^' contains just one copy of + the name. This list does *not* contain any of the order-only + prerequisites; for those see the '$|' variable, below. + +'$+' + This is like '$^', but prerequisites listed more than once are + duplicated in the order they were listed in the makefile. This is + primarily useful for use in linking commands where it is meaningful + to repeat library file names in a particular order. + +'$|' + The names of all the order-only prerequisites, with spaces between + them. + +'$*' + The stem with which an implicit rule matches (*note How Patterns + Match: Pattern Match.). If the target is 'dir/a.foo.b' and the + target pattern is 'a.%.b' then the stem is 'dir/foo'. The stem is + useful for constructing names of related files. + + In a static pattern rule, the stem is part of the file name that + matched the '%' in the target pattern. + + In an explicit rule, there is no stem; so '$*' cannot be determined + in that way. Instead, if the target name ends with a recognized + suffix (*note Old-Fashioned Suffix Rules: Suffix Rules.), '$*' is + set to the target name minus the suffix. For example, if the + target name is 'foo.c', then '$*' is set to 'foo', since '.c' is a + suffix. GNU 'make' does this bizarre thing only for compatibility + with other implementations of 'make'. You should generally avoid + using '$*' except in implicit rules or static pattern rules. + + If the target name in an explicit rule does not end with a + recognized suffix, '$*' is set to the empty string for that rule. + + Of the variables listed above, four have values that are single file +names, and three have values that are lists of file names. These seven +have variants that get just the file's directory name or just the file +name within the directory. The variant variables' names are formed by +appending 'D' or 'F', respectively. The functions 'dir' and 'notdir' +can be used to obtain a similar effect (*note Functions for File Names: +File Name Functions.). Note, however, that the 'D' variants all omit +the trailing slash which always appears in the output of the 'dir' +function. Here is a table of the variants: + +'$(@D)' + The directory part of the file name of the target, with the + trailing slash removed. If the value of '$@' is 'dir/foo.o' then + '$(@D)' is 'dir'. This value is '.' if '$@' does not contain a + slash. + +'$(@F)' + The file-within-directory part of the file name of the target. If + the value of '$@' is 'dir/foo.o' then '$(@F)' is 'foo.o'. '$(@F)' + is equivalent to '$(notdir $@)'. + +'$(*D)' +'$(*F)' + The directory part and the file-within-directory part of the stem; + 'dir' and 'foo' in this example. + +'$(%D)' +'$(%F)' + The directory part and the file-within-directory part of the target + archive member name. This makes sense only for archive member + targets of the form 'ARCHIVE(MEMBER)' and is useful only when + MEMBER may contain a directory name. (*Note Archive Members as + Targets: Archive Members.) + +'$( + #include + #include + #include + #include + + #include + + 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 (const gmk_floc *floc) + { + printf ("mk_temp plugin loaded from %s:%lu\n", floc->filenm, floc->lineno); + /* 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 + mk_temp plugin loaded from Makefile:4 + cc -shared -fPIC -o mk_temp.so mk_temp.c + Temporary filename: tmpfile.A7JEwd + + +File: make.info, Node: Integrating make, Next: Features, Prev: Extending make, Up: Top + +13 Integrating GNU 'make' +************************* + +GNU 'make' is often one component in a larger system of tools, including +integrated development environments, compiler toolchains, and others. +The role of 'make' is to start commands and determine whether they +succeeded or not: no special integration is needed to accomplish that. +However, sometimes it is convenient to bind 'make' more tightly with +other parts of the system, both higher-level (tools that invoke 'make') +and lower-level (tools that 'make' invokes). + +* Menu: + +* Job Slots:: Share job slots with GNU 'make'. +* Terminal Output:: Control output to terminals. + + +File: make.info, Node: Job Slots, Next: Terminal Output, Prev: Integrating make, Up: Integrating make + +13.1 Sharing Job Slots with GNU 'make' +====================================== + +GNU 'make' has the ability to run multiple recipes in parallel (*note +Parallel Execution: Parallel.) and to cap the total number of parallel +jobs even across recursive invocations of 'make' (*note Communicating +Options to a Sub-'make': Options/Recursion.). Tools that 'make' invokes +which are also able to run multiple operations in parallel, either using +multiple threads or multiple processes, can be enhanced to participate +in GNU 'make''s job management facility to ensure that the total number +of active threads/processes running on the system does not exceed the +maximum number of slots provided to GNU 'make'. + + GNU 'make' uses a method called the "jobserver" to control the number +of active jobs across recursive invocations. The actual implementation +of the jobserver varies across different operating systems, but some +fundamental aspects are always true. + + First, 'make' will provide information necessary for accessing the +jobserver through the environment to its children, in the 'MAKEFLAGS' +environment variable. Tools which want to participate in the jobserver +protocol will need to parse this environment variable and find the word +starting with '--jobserver-auth='. The value of this option will +describe how to communicate with the jobserver. The interpretation of +this value is described in the sections below. + + Be aware that the 'MAKEFLAGS' variable may contain multiple instances +of the '--jobserver-auth=' option. Only the _last_ instance is +relevant. + + Second, every command 'make' starts has one implicit job slot +reserved for it before it starts. Any tool which wants to participate +in the jobserver protocol should assume it can always run one job +without having to contact the jobserver at all. + + Finally, it's critical that tools that participate in the jobserver +protocol return the exact number of slots they obtained from the +jobserver back to the jobserver before they exit, even under error +conditions. Remember that the implicit job slot should *not* be +returned to the jobserver! Returning too few slots means that those +slots will be lost for the rest of the build process; returning too many +slots means that extra slots will be available. The top-level 'make' +command will print an error message at the end of the build if it +detects an incorrect number of slots available in the jobserver. + + As an example, suppose you are implementing a linker which provides +for multithreaded operation. You would like to enhance the linker so +that if it is invoked by GNU 'make' it can participate in the jobserver +protocol to control how many threads are used during link. First you +will need to modify the linker to determine if the 'MAKEFLAGS' +environment variable is set. Next you will need to parse the value of +that variable to determine if the jobserver is available, and how to +access it. If it is available then you can access it to obtain job +slots controlling how much parallelism your tool can use. Once done +your tool must return those job slots back to the jobserver. + +* Menu: + +* POSIX Jobserver:: Using the jobserver on POSIX systems. +* Windows Jobserver:: Using the jobserver on Windows systems. + + +File: make.info, Node: POSIX Jobserver, Next: Windows Jobserver, Prev: Job Slots, Up: Job Slots + +13.1.1 POSIX Jobserver Interaction +---------------------------------- + +On POSIX systems the jobserver is implemented in one of two ways: on +systems that support it, GNU 'make' will create a named pipe and use +that for the jobserver. In this case the auth option will have the form +'--jobserver-auth=fifo:PATH' where 'PATH' is the pathname of the named +pipe. To access the jobserver you should open the named pipe path and +read/write to it as described below. + + If the system doesn't support named pipes, or if the user provided +the '--jobserver-style' option and specified 'pipe', then the jobserver +will be implemented as a simple UNIX pipe. In this case the auth option +will have the form '--jobserver-auth=R,W' where 'R' and 'W' are +non-negative integers representing file descriptors: 'R' is the read +file descriptor and 'W' is the write file descriptor. If either or both +of these file descriptors are negative, it means the jobserver is +disabled for this process. + + When using a simple pipe, only command lines that 'make' understands +to be recursive invocations of 'make' (*note How the 'MAKE' Variable +Works: MAKE Variable.) will have access to the jobserver. When writing +makefiles you must be sure to mark the command as recursive (most +commonly by prefixing the command line with the '+' indicator (*note +Recursive Use of 'make': Recursion.). Note that the read side of the +jobserver pipe is set to "blocking" mode. This should not be changed. + + In both implementations of the jobserver, the pipe will be pre-loaded +with one single-character token for each available job. To obtain an +extra slot you must read a single character from the jobserver; to +release a slot you must write a single character back into the +jobserver. + + It's important that when you release the job slot, you write back the +same character you read. Don't assume that all tokens are the same +character; different characters may have different meanings to GNU +'make'. The order is not important, since 'make' has no idea in what +order jobs will complete anyway. + + There are various error conditions you must consider to ensure your +implementation is robust: + + * If you have a command-line argument controlling the parallel + operation of your tool, consider whether your tool should detect + situations where both the jobserver and the command-line argument + are specified, and how it should react. + + * If your tool does not recognize the format of the + '--jobserver-auth' string, it should assume the jobserver is using + a different style and it cannot connect. + + * If your tool determines that the '--jobserver-auth' option + references a simple pipe but that the file descriptors specified + are closed, this means that the calling 'make' process did not + think that your tool was a recursive 'make' invocation (e.g., the + command line was not prefixed with a '+' character). You should + notify your users of this situation. + + * Your tool should be sure to write back the tokens it read, even + under error conditions. This includes not only errors in your tool + but also outside influences such as interrupts ('SIGINT'), etc. + You may want to install signal handlers to manage this write-back. + + * Your tool may also examine the first word of the 'MAKEFLAGS' + variable and look for the character 'n'. If this character is + present then 'make' was invoked with the '-n' option and your tool + may want to stop without performing any operations. + + +File: make.info, Node: Windows Jobserver, Prev: POSIX Jobserver, Up: Job Slots + +13.1.2 Windows Jobserver Interaction +------------------------------------ + +On Windows systems the jobserver is implemented as a named semaphore. +The semaphore will be set with an initial count equal to the number of +available slots; to obtain a slot you must wait on the semaphore (with +or without a timeout). To release a slot, release the semaphore. + + To access the semaphore you must parse the 'MAKEFLAGS' variable and +look for the argument string '--jobserver-auth=NAME' where 'NAME' is the +name of the named semaphore. Use this name with 'OpenSemaphore' to +create a handle to the semaphore. + + The only valid style for '--jobserver-style' is 'sem'. + + There are various error conditions you must consider to ensure your +implementation is robust: + + * Usually you will have a command-line argument controlling the + parallel operation of your tool. Consider whether your tool should + detect situations where both the jobserver and the command-line + argument are specified, and how it should react. + + * Your tool should be sure to release the semaphore for the tokens it + read, even under error conditions. This includes not only errors + in your tool but also outside influences such as interrupts + ('SIGINT'), etc. You may want to install signal handlers to manage + this write-back. + + +File: make.info, Node: Terminal Output, Prev: Job Slots, Up: Integrating make + +13.2 Synchronized Terminal Output +================================= + +Normally GNU 'make' will invoke all commands with access to the same +standard and error outputs that 'make' itself was started with. A +number of tools will detect whether the output is a terminal or +not-a-terminal, and use this information to change the output style. +For example if the output goes to a terminal the tool may add control +characters that set color, or even change the location of the cursor. +If the output is not going to a terminal then these special control +characters are not emitted so that they don't corrupt log files, etc. + + The '--output-sync' (*note Output During Parallel Execution: Parallel +Output.) option will defeat the terminal detection. When output +synchronization is enabled GNU 'make' arranges for all command output to +be written to a file, so that its output can be written as a block +without interference from other commands. This means that all tools +invoked by 'make' will believe that their output is not going to be +displayed on a terminal, even when it will be (because 'make' will +display it there after the command is completed). + + In order to facilitate tools which would like to determine whether or +not their output will be displayed on a terminal, GNU 'make' will set +the 'MAKE_TERMOUT' and 'MAKE_TERMERR' environment variables before +invoking any commands. Tools which would like to determine whether +standard or error output (respectively) will be displayed on a terminal +can check these environment variables to determine if they exist and +contain a non-empty value. If so the tool can assume that the output +will (eventually) be displayed on a terminal. If the variables are not +set or have an empty value, then the tool should fall back to its normal +methods of detecting whether output is going to a terminal or not. + + The content of the variables can be parsed to determine the type of +terminal which will be used to display the output. + + Similarly, environments which invoke 'make' and would like to capture +the output and eventually display it on a terminal (or some display +which can interpret terminal control characters) can set these variables +before invoking 'make'. GNU 'make' will not modify these environment +variables if they already exist when it starts. + + +File: make.info, Node: Features, Next: Missing, Prev: Integrating make, Up: Top + +14 Features of GNU 'make' +************************* + +Here is a summary of the features of GNU 'make', for comparison with and +credit to other versions of 'make'. We consider the features of 'make' +in 4.2 BSD systems as a baseline. If you are concerned with writing +portable makefiles, you should not use the features of 'make' listed +here, nor the ones in *note Missing::. + + Many features come from the version of 'make' in System V. + + * The 'VPATH' variable and its special meaning. *Note Searching + Directories for Prerequisites: Directory Search. This feature + exists in System V 'make', but is undocumented. It is documented + in 4.3 BSD 'make' (which says it mimics System V's 'VPATH' + feature). + + * Included makefiles. *Note Including Other Makefiles: Include. + Allowing multiple files to be included with a single directive is a + GNU extension. + + * Variables are read from and communicated via the environment. + *Note Variables from the Environment: Environment. + + * Options passed through the variable 'MAKEFLAGS' to recursive + invocations of 'make'. *Note Communicating Options to a + Sub-'make': Options/Recursion. + + * The automatic variable '$%' is set to the member name in an archive + reference. *Note Automatic Variables::. + + * The automatic variables '$@', '$*', '$<', '$%', and '$?' have + corresponding forms like '$(@F)' and '$(@D)'. We have generalized + this to '$^' as an obvious extension. *Note Automatic Variables::. + + * Substitution variable references. *Note Basics of Variable + References: Reference. + + * The command line options '-b' and '-m', accepted and ignored. In + System V 'make', these options actually do something. + + * Execution of recursive commands to run 'make' via the variable + 'MAKE' even if '-n', '-q' or '-t' is specified. *Note Recursive + Use of 'make': Recursion. + + * Support for suffix '.a' in suffix rules. *Note Archive Suffix + Rules::. This feature is obsolete in GNU 'make', because the + general feature of rule chaining (*note Chains of Implicit Rules: + 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 + recipes is retained when the recipes are printed, so they appear as + they do in the makefile, except for the stripping of initial + whitespace. + + The following features were inspired by various other versions of +'make'. In some cases it is unclear exactly which versions inspired +which others. + + * Pattern rules using '%'. This has been implemented in several + versions of 'make'. We're not sure who invented it first, but it's + been spread around a bit. *Note Defining and Redefining Pattern + Rules: Pattern Rules. + + * Rule chaining and implicit intermediate files. This was + implemented by Stu Feldman in his version of 'make' for AT&T Eighth + Edition Research Unix, and later by Andrew Hume of AT&T Bell Labs + in his 'mk' program (where he terms it "transitive closure"). We + do not really know if we got this from either of them or thought it + up ourselves at the same time. *Note Chains of Implicit Rules: + Chained Rules. + + * The automatic variable '$^' containing a list of all prerequisites + of the current target. We did not invent this, but we have no idea + who did. *Note Automatic Variables::. The automatic variable '$+' + is a simple extension of '$^'. + + * The "what if" flag ('-W' in GNU 'make') was (as far as we know) + invented by Andrew Hume in 'mk'. *Note Instead of Executing + Recipes: Instead of Execution. + + * The concept of doing several things at once (parallelism) exists in + many incarnations of 'make' and similar programs, though not in the + System V or BSD implementations. *Note 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' function + before the alternate syntax was implemented for compatibility with + SunOS 4. It is not altogether clear who inspired whom, since GNU + 'make' had 'patsubst' before SunOS 4 was released. + + * The special significance of '+' characters preceding recipe lines + (*note Instead of Executing Recipes: Instead of Execution.) is + mandated by 'IEEE Standard 1003.2-1992' (POSIX.2). + + * The '+=' syntax to append to the value of a variable comes from + SunOS 4 'make'. *Note Appending More Text to Variables: Appending. + + * The syntax 'ARCHIVE(MEM1 MEM2...)' to list multiple members in a + single archive file comes from SunOS 4 'make'. *Note Archive + Members::. + + * The '-include' directive to include makefiles with no error for a + nonexistent file comes from SunOS 4 'make'. (But note that SunOS 4 + 'make' does not allow multiple makefiles to be specified in one + '-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 + information. + + * Use the '-h' or '--help' option to summarize the options to 'make'. + + * Simply-expanded variables. *Note The Two Flavors of Variables: + Flavors. + + * Pass command line variable assignments automatically through the + variable 'MAKE' to recursive 'make' invocations. *Note Recursive + Use of 'make': Recursion. + + * Use the '-C' or '--directory' command option to change directory. + *Note Summary of Options: Options Summary. + + * Make verbatim variable definitions with 'define'. *Note Defining + Multi-Line Variables: Multi-Line. + + * Declare phony targets with the special target '.PHONY'. + + Andrew Hume of AT&T Bell Labs implemented a similar feature with a + different syntax in his 'mk' program. This seems to be a case of + parallel discovery. *Note Phony Targets: Phony Targets. + + * Manipulate text by calling functions. *Note Functions for + Transforming Text: Functions. + + * Use the '-o' or '--old-file' option to pretend a file's + modification-time is old. *Note Avoiding Recompilation of Some + Files: Avoiding Compilation. + + * Conditional execution. + + This feature has been implemented numerous times in various + versions of 'make'; it seems a natural extension derived from the + features of the C preprocessor and similar macro languages and is + not a revolutionary concept. *Note Conditional Parts of Makefiles: + Conditionals. + + * Specify a search path for included makefiles. *Note Including + Other Makefiles: Include. + + * Specify extra makefiles to read with an environment variable. + *Note The Variable 'MAKEFILES': MAKEFILES Variable. + + * Strip leading sequences of './' from file names, so that './FILE' + and 'FILE' are considered to be the same file. + + * Use a special search method for library prerequisites written in + the form '-lNAME'. *Note Directory Search for Link Libraries: + Libraries/Search. + + * Allow suffixes for suffix rules (*note Old-Fashioned Suffix Rules: + Suffix Rules.) to contain any characters. In other versions of + 'make', they must begin with '.' and not contain any '/' + characters. + + * Keep track of the current level of 'make' recursion using the + variable 'MAKELEVEL'. *Note Recursive Use of 'make': Recursion. + + * Provide any goals given on the command line in the variable + 'MAKECMDGOALS'. *Note Arguments to Specify the Goals: Goals. + + * Specify static pattern rules. *Note Static Pattern Rules: Static + Pattern. + + * Provide selective 'vpath' search. *Note Searching Directories for + Prerequisites: Directory Search. + + * Provide computed variable references. *Note Basics of Variable + References: Reference. + + * Update makefiles. *Note How Makefiles Are Remade: Remaking + Makefiles. System V 'make' has a very, very limited form of this + functionality in that it will check out SCCS files for makefiles. + + * Various new built-in implicit rules. *Note Catalogue of Built-In + Rules: Catalogue of Rules. + + * 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 + +15 Incompatibilities and Missing Features +***************************************** + +The 'make' programs in various other systems support a few features that +are not implemented in GNU 'make'. The POSIX.2 standard ('IEEE Standard +1003.2-1992') which specifies 'make' does not require any of these +features. + + * A target of the form 'FILE((ENTRY))' stands for a member of archive + file FILE. The member is chosen, not by name, but by being an + object file which defines the linker symbol ENTRY. + + This feature was not put into GNU 'make' because of the + non-modularity of putting knowledge into 'make' of the internal + format of archive file symbol tables. *Note Updating Archive + Symbol Directories: Archive Symbols. + + * Suffixes (used in suffix rules) that end with the character '~' + have a special meaning to System V 'make'; they refer to the SCCS + file that corresponds to the file one would get without the '~'. + For example, the suffix rule '.c~.o' would make the file 'N.o' from + the SCCS file 's.N.c'. For complete coverage, a whole series of + such suffix rules is required. *Note Old-Fashioned Suffix Rules: + Suffix Rules. + + In GNU 'make', this entire series of cases is handled by two + pattern rules for extraction from SCCS, in combination with the + general feature of rule chaining. *Note Chains of Implicit Rules: + Chained Rules. + + * In System V and 4.3 BSD 'make', files found by 'VPATH' search + (*note Searching Directories for Prerequisites: Directory Search.) + have their names changed inside recipes. We feel it is much + cleaner to always use automatic variables and thus make this + feature unnecessary. + + * In some Unix 'make's, the automatic variable '$*' appearing in the + prerequisites of a rule has the amazingly strange "feature" of + expanding to the full name of the _target of that rule_. We cannot + imagine what went on in the minds of Unix 'make' developers to do + this; it is utterly inconsistent with the normal definition of + '$*'. + + * In some Unix 'make's, implicit rule search (*note Using Implicit + Rules: Implicit Rules.) is apparently done for _all_ targets, not + just those without recipes. This means you can do: + + foo.o: + cc -c foo.c + + and Unix 'make' will intuit that 'foo.o' depends on 'foo.c'. + + We feel that such usage is broken. The prerequisite properties of + 'make' are well-defined (for GNU 'make', at least), and doing such + a thing simply does not fit the model. + + * GNU 'make' does not include any built-in implicit rules for + compiling or preprocessing EFL programs. If we hear of anyone who + is using EFL, we will gladly add them. + + * It appears that in SVR4 'make', a suffix rule can be specified with + no recipe, and it is treated as if it had an empty recipe (*note + Empty Recipes::). For example: + + .c.a: + + will override the built-in '.c.a' suffix rule. + + We feel that it is cleaner for a rule without a recipe to always + simply add to the prerequisite list for the target. The above + example can be easily rewritten to get the desired behavior in GNU + 'make': + + .c.a: ; + + * Some versions of 'make' invoke the shell with the '-e' flag, except + under '-k' (*note Testing the Compilation of a Program: Testing.). + The '-e' flag tells the shell to exit as soon as any program it + runs returns a nonzero status. We feel it is cleaner to write each + line of the recipe to stand on its own and not require this special + treatment. + + +File: make.info, Node: Makefile Conventions, Next: Quick Reference, Prev: Missing, Up: Top + +16 Makefile Conventions +*********************** + +This node describes conventions for writing the Makefiles for GNU +programs. Using Automake will help you write a Makefile that follows +these conventions. For more information on portable Makefiles, see +POSIX and *note Portable Make Programming: (autoconf)Portable Make. + +* Menu: + +* Makefile Basics:: General conventions for Makefiles. +* Utilities in Makefiles:: Utilities to be used in Makefiles. +* Command Variables:: Variables for specifying commands. +* DESTDIR:: Supporting staged installs. +* Directory Variables:: Variables for installation directories. +* Standard Targets:: Standard targets for users. +* Install Command Categories:: Three categories of commands in the 'install' + rule: normal, pre-install and post-install. + + +File: make.info, Node: Makefile Basics, Next: Utilities in Makefiles, Up: Makefile Conventions + +16.1 General Conventions for Makefiles +====================================== + +Every Makefile should contain this line: + + SHELL = /bin/sh + +to avoid trouble on systems where the 'SHELL' variable might be +inherited from the environment. (This is never a problem with GNU +'make'.) + + Different 'make' programs have incompatible suffix lists and implicit +rules, and this sometimes creates confusion or misbehavior. So it is a +good idea to set the suffix list explicitly using only the suffixes you +need in the particular Makefile, like this: + + .SUFFIXES: + .SUFFIXES: .c .o + +The first line clears out the suffix list, the second introduces all +suffixes which may be subject to implicit rules in this Makefile. + + Don't assume that '.' is in the path for command execution. When you +need to run programs that are a part of your package during the make, +please make sure that it uses './' if the program is built as part of +the make or '$(srcdir)/' if the file is an unchanging part of the source +code. Without one of these prefixes, the current search path is used. + + The distinction between './' (the "build directory") and '$(srcdir)/' +(the "source directory") is important because users can build in a +separate directory using the '--srcdir' option to 'configure'. A rule +of the form: + + foo.1 : foo.man sedscript + sed -f sedscript foo.man > foo.1 + +will fail when the build directory is not the source directory, because +'foo.man' and 'sedscript' are in the source directory. + + When using GNU 'make', relying on 'VPATH' to find the source file +will work in the case where there is a single dependency file, since the +'make' automatic variable '$<' will represent the source file wherever +it is. (Many versions of 'make' set '$<' only in implicit rules.) A +Makefile target like + + foo.o : bar.c + $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o + +should instead be written as + + foo.o : bar.c + $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@ + +in order to allow 'VPATH' to work correctly. When the target has +multiple dependencies, using an explicit '$(srcdir)' is the easiest way +to make the rule work well. For example, the target above for 'foo.1' +is best written as: + + foo.1 : foo.man sedscript + sed -f $(srcdir)/sedscript $(srcdir)/foo.man > $@ + + GNU distributions usually contain some files which are not source +files--for example, Info files, and the output from Autoconf, Automake, +Bison or Flex. Since these files normally appear in the source +directory, they should always appear in the source directory, not in the +build directory. So Makefile rules to update them should put the +updated files in the source directory. + + However, if a file does not appear in the distribution, then the +Makefile should not put it in the source directory, because building a +program in ordinary circumstances should not modify the source directory +in any way. + + Try to make the build and installation targets, at least (and all +their subtargets) work correctly with a parallel 'make'. + + +File: make.info, Node: Utilities in Makefiles, Next: Command Variables, Prev: Makefile Basics, Up: Makefile Conventions + +16.2 Utilities in Makefiles +=========================== + +Write the Makefile commands (and any shell scripts, such as 'configure') +to run under 'sh' (both the traditional Bourne shell and the POSIX +shell), not 'csh'. Don't use any special features of 'ksh' or 'bash', +or POSIX features not widely supported in traditional Bourne 'sh'. + + The 'configure' script and the Makefile rules for building and +installation should not use any utilities directly except these: + + awk cat cmp cp diff echo egrep expr false grep install-info ln ls + mkdir mv printf pwd rm rmdir sed sleep sort tar test touch tr true + + Compression programs such as 'gzip' can be used in the 'dist' rule. + + Generally, stick to the widely-supported (usually POSIX-specified) +options and features of these programs. For example, don't use 'mkdir +-p', convenient as it may be, because a few systems don't support it at +all and with others, it is not safe for parallel execution. For a list +of known incompatibilities, see *note Portable Shell Programming: +(autoconf)Portable Shell. + + It is a good idea to avoid creating symbolic links in makefiles, +since a few file systems don't support them. + + The Makefile rules for building and installation can also use +compilers and related programs, but should do so via 'make' variables so +that the user can substitute alternatives. Here are some of the +programs we mean: + + ar bison cc flex install ld ldconfig lex + make makeinfo ranlib texi2dvi yacc + + Use the following 'make' variables to run those programs: + + $(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX) + $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC) + + When you use 'ranlib' or 'ldconfig', you should make sure nothing bad +happens if the system does not have the program in question. Arrange to +ignore an error from that command, and print a message before the +command to tell the user that failure of this command does not mean a +problem. (The Autoconf 'AC_PROG_RANLIB' macro can help with this.) + + If you use symbolic links, you should implement a fallback for +systems that don't have symbolic links. + + Additional utilities that can be used via Make variables are: + + chgrp chmod chown mknod + + It is ok to use other utilities in Makefile portions (or scripts) +intended only for particular systems where you know those utilities +exist. + + +File: make.info, Node: Command Variables, Next: DESTDIR, Prev: Utilities in Makefiles, Up: Makefile Conventions + +16.3 Variables for Specifying Commands +====================================== + +Makefiles should provide variables for overriding certain commands, +options, and so on. + + In particular, you should run most utility programs via variables. +Thus, if you use Bison, have a variable named 'BISON' whose default +value is set with 'BISON = bison', and refer to it with '$(BISON)' +whenever you need to use Bison. + + File management utilities such as 'ln', 'rm', 'mv', and so on, need +not be referred to through variables in this way, since users don't need +to replace them with other programs. + + Each program-name variable should come with an options variable that +is used to supply options to the program. Append 'FLAGS' to the +program-name variable name to get the options variable name--for +example, 'BISONFLAGS'. (The names 'CFLAGS' for the C compiler, 'YFLAGS' +for yacc, and 'LFLAGS' for lex, are exceptions to this rule, but we keep +them because they are standard.) Use 'CPPFLAGS' in any compilation +command that runs the preprocessor, and use 'LDFLAGS' in any compilation +command that does linking as well as in any direct use of 'ld'. + + If there are C compiler options that _must_ be used for proper +compilation of certain files, do not include them in 'CFLAGS'. Users +expect to be able to specify 'CFLAGS' freely themselves. Instead, +arrange to pass the necessary options to the C compiler independently of +'CFLAGS', by writing them explicitly in the compilation commands or by +defining an implicit rule, like this: + + CFLAGS = -g + ALL_CFLAGS = -I. $(CFLAGS) + .c.o: + $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< + + Do include the '-g' option in 'CFLAGS', because that is not +_required_ for proper compilation. You can consider it a default that +is only recommended. If the package is set up so that it is compiled +with GCC by default, then you might as well include '-O' in the default +value of 'CFLAGS' as well. + + Put 'CFLAGS' last in the compilation command, after other variables +containing compiler options, so the user can use 'CFLAGS' to override +the others. + + 'CFLAGS' should be used in every invocation of the C compiler, both +those which do compilation and those which do linking. + + Every Makefile should define the variable 'INSTALL', which is the +basic command for installing a file into the system. + + Every Makefile should also define the variables 'INSTALL_PROGRAM' and +'INSTALL_DATA'. (The default for 'INSTALL_PROGRAM' should be +'$(INSTALL)'; the default for 'INSTALL_DATA' should be '${INSTALL} -m +644'.) Then it should use those variables as the commands for actual +installation, for executables and non-executables respectively. Minimal +use of these variables is as follows: + + $(INSTALL_PROGRAM) foo $(bindir)/foo + $(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a + + However, it is preferable to support a 'DESTDIR' prefix on the target +files, as explained in the next section. + + It is acceptable, but not required, to install multiple files in one +command, with the final argument being a directory, as in: + + $(INSTALL_PROGRAM) foo bar baz $(bindir) + + +File: make.info, Node: DESTDIR, Next: Directory Variables, Prev: Command Variables, Up: Makefile Conventions + +16.4 'DESTDIR': Support for Staged Installs +=========================================== + +'DESTDIR' is a variable prepended to each installed target file, like +this: + + $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo + $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a + + The 'DESTDIR' variable is specified by the user on the 'make' command +line as an absolute file name. For example: + + make DESTDIR=/tmp/stage install + +'DESTDIR' should be supported only in the 'install*' and 'uninstall*' +targets, as those are the only targets where it is useful. + + If your installation step would normally install '/usr/local/bin/foo' +and '/usr/local/lib/libfoo.a', then an installation invoked as in the +example above would install '/tmp/stage/usr/local/bin/foo' and +'/tmp/stage/usr/local/lib/libfoo.a' instead. + + Prepending the variable 'DESTDIR' to each target in this way provides +for "staged installs", where the installed files are not placed directly +into their expected location but are instead copied into a temporary +location ('DESTDIR'). However, installed files maintain their relative +directory structure and any embedded file names will not be modified. + + You should not set the value of 'DESTDIR' in your 'Makefile' at all; +then the files are installed into their expected locations by default. +Also, specifying 'DESTDIR' should not change the operation of the +software in any way, so its value should not be included in any file +contents. + + 'DESTDIR' support is commonly used in package creation. It is also +helpful to users who want to understand what a given package will +install where, and to allow users who don't normally have permissions to +install into protected areas to build and install before gaining those +permissions. Finally, it can be useful with tools such as 'stow', where +code is installed in one place but made to appear to be installed +somewhere else using symbolic links or special mount operations. So, we +strongly recommend GNU packages support 'DESTDIR', though it is not an +absolute requirement. + + +File: make.info, Node: Directory Variables, Next: Standard Targets, Prev: DESTDIR, Up: Makefile Conventions + +16.5 Variables for Installation Directories +=========================================== + +Installation directories should always be named by variables, so it is +easy to install in a nonstandard place. The standard names for these +variables and the values they should have in GNU packages are described +below. They are based on a standard file system layout; variants of it +are used in GNU/Linux and other modern operating systems. + + Installers are expected to override these values when calling 'make' +(e.g., 'make prefix=/usr install') or 'configure' (e.g., 'configure +--prefix=/usr'). GNU packages should not try to guess which value +should be appropriate for these variables on the system they are being +installed onto: use the default settings specified here so that all GNU +packages behave identically, allowing the installer to achieve any +desired layout. + + All installation directories, and their parent directories, should be +created (if necessary) before they are installed into. + + These first two variables set the root for the installation. All the +other installation directories should be subdirectories of one of these +two, and nothing should be directly installed into these two +directories. + +'prefix' + A prefix used in constructing the default values of the variables + listed below. The default value of 'prefix' should be + '/usr/local'. When building the complete GNU system, the prefix + will be empty and '/usr' will be a symbolic link to '/'. (If you + are using Autoconf, write it as '@prefix@'.) + + Running 'make install' with a different value of 'prefix' from the + one used to build the program should _not_ recompile the program. + +'exec_prefix' + A prefix used in constructing the default values of some of the + variables listed below. The default value of 'exec_prefix' should + be '$(prefix)'. (If you are using Autoconf, write it as + '@exec_prefix@'.) + + Generally, '$(exec_prefix)' is used for directories that contain + machine-specific files (such as executables and subroutine + libraries), while '$(prefix)' is used directly for other + directories. + + Running 'make install' with a different value of 'exec_prefix' from + the one used to build the program should _not_ recompile the + program. + + Executable programs are installed in one of the following +directories. + +'bindir' + The directory for installing executable programs that users can + run. This should normally be '/usr/local/bin', but write it as + '$(exec_prefix)/bin'. (If you are using Autoconf, write it as + '@bindir@'.) + +'sbindir' + The directory for installing executable programs that can be run + from the shell, but are only generally useful to system + administrators. This should normally be '/usr/local/sbin', but + write it as '$(exec_prefix)/sbin'. (If you are using Autoconf, + write it as '@sbindir@'.) + +'libexecdir' + The directory for installing executable programs to be run by other + programs rather than by users. This directory should normally be + '/usr/local/libexec', but write it as '$(exec_prefix)/libexec'. + (If you are using Autoconf, write it as '@libexecdir@'.) + + The definition of 'libexecdir' is the same for all packages, so you + should install your data in a subdirectory thereof. Most packages + install their data under '$(libexecdir)/PACKAGE-NAME/', possibly + within additional subdirectories thereof, such as + '$(libexecdir)/PACKAGE-NAME/MACHINE/VERSION'. + + Data files used by the program during its execution are divided into +categories in two ways. + + * Some files are normally modified by programs; others are never + normally modified (though users may edit some of these). + + * Some files are architecture-independent and can be shared by all + machines at a site; some are architecture-dependent and can be + shared only by machines of the same kind and operating system; + others may never be shared between two machines. + + This makes for six different possibilities. However, we want to +discourage the use of architecture-dependent files, aside from object +files and libraries. It is much cleaner to make other data files +architecture-independent, and it is generally not hard. + + Here are the variables Makefiles should use to specify directories to +put these various kinds of files in: + +'datarootdir' + The root of the directory tree for read-only + architecture-independent data files. This should normally be + '/usr/local/share', but write it as '$(prefix)/share'. (If you are + using Autoconf, write it as '@datarootdir@'.) 'datadir''s default + value is based on this variable; so are 'infodir', 'mandir', and + others. + +'datadir' + The directory for installing idiosyncratic read-only + architecture-independent data files for this program. This is + usually the same place as 'datarootdir', but we use the two + separate variables so that you can move these program-specific + files without altering the location for Info files, man pages, etc. + + This should normally be '/usr/local/share', but write it as + '$(datarootdir)'. (If you are using Autoconf, write it as + '@datadir@'.) + + The definition of 'datadir' is the same for all packages, so you + should install your data in a subdirectory thereof. Most packages + install their data under '$(datadir)/PACKAGE-NAME/'. + +'sysconfdir' + The directory for installing read-only data files that pertain to a + single machine-that is to say, files for configuring a host. + Mailer and network configuration files, '/etc/passwd', and so forth + belong here. All the files in this directory should be ordinary + ASCII text files. This directory should normally be + '/usr/local/etc', but write it as '$(prefix)/etc'. (If you are + using Autoconf, write it as '@sysconfdir@'.) + + Do not install executables here in this directory (they probably + belong in '$(libexecdir)' or '$(sbindir)'). Also do not install + files that are modified in the normal course of their use (programs + whose purpose is to change the configuration of the system + excluded). Those probably belong in '$(localstatedir)'. + +'sharedstatedir' + The directory for installing architecture-independent data files + which the programs modify while they run. This should normally be + '/usr/local/com', but write it as '$(prefix)/com'. (If you are + using Autoconf, write it as '@sharedstatedir@'.) + +'localstatedir' + The directory for installing data files which the programs modify + while they run, and that pertain to one specific machine. Users + should never need to modify files in this directory to configure + the package's operation; put such configuration information in + separate files that go in '$(datadir)' or '$(sysconfdir)'. + '$(localstatedir)' should normally be '/usr/local/var', but write + 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 'libdir' +or 'lispdir'. + +'includedir' + The directory for installing header files to be included by user + programs with the C '#include' preprocessor directive. This should + normally be '/usr/local/include', but write it as + '$(prefix)/include'. (If you are using Autoconf, write it as + '@includedir@'.) + + Most compilers other than GCC do not look for header files in + directory '/usr/local/include'. So installing the header files + this way is only useful with GCC. Sometimes this is not a problem + because some libraries are only really intended to work with GCC. + But some libraries are intended to work with other compilers. They + should install their header files in two places, one specified by + 'includedir' and one specified by 'oldincludedir'. + +'oldincludedir' + The directory for installing '#include' header files for use with + compilers other than GCC. This should normally be '/usr/include'. + (If you are using Autoconf, you can write it as '@oldincludedir@'.) + + The Makefile commands should check whether the value of + 'oldincludedir' is empty. If it is, they should not try to use it; + they should cancel the second installation of the header files. + + A package should not replace an existing header in this directory + unless the header came from the same package. Thus, if your Foo + package provides a header file 'foo.h', then it should install the + header file in the 'oldincludedir' directory if either (1) there is + no 'foo.h' there or (2) the 'foo.h' that exists came from the Foo + package. + + To tell whether 'foo.h' came from the Foo package, put a magic + string in the file--part of a comment--and 'grep' for that string. + +'docdir' + The directory for installing documentation files (other than Info) + for this package. By default, it should be + '/usr/local/share/doc/YOURPKG', but it should be written as + '$(datarootdir)/doc/YOURPKG'. (If you are using Autoconf, write it + as '@docdir@'.) The YOURPKG subdirectory, which may include a + version number, prevents collisions among files with common names, + such as 'README'. + +'infodir' + The directory for installing the Info files for this package. By + default, it should be '/usr/local/share/info', but it should be + written as '$(datarootdir)/info'. (If you are using Autoconf, + write it as '@infodir@'.) 'infodir' is separate from 'docdir' for + compatibility with existing practice. + +'htmldir' +'dvidir' +'pdfdir' +'psdir' + Directories for installing documentation files in the particular + format. They should all be set to '$(docdir)' by default. (If you + are using Autoconf, write them as '@htmldir@', '@dvidir@', etc.) + Packages which supply several translations of their documentation + should install them in '$(htmldir)/'LL, '$(pdfdir)/'LL, etc. where + LL is a locale abbreviation such as 'en' or 'pt_BR'. + +'libdir' + The directory for object files and libraries of object code. Do + not install executables here, they probably ought to go in + '$(libexecdir)' instead. The value of 'libdir' should normally be + '/usr/local/lib', but write it as '$(exec_prefix)/lib'. (If you + are using Autoconf, write it as '@libdir@'.) + +'lispdir' + The directory for installing any Emacs Lisp files in this package. + By default, it should be '/usr/local/share/emacs/site-lisp', but it + should be written as '$(datarootdir)/emacs/site-lisp'. + + If you are using Autoconf, write the default as '@lispdir@'. In + order to make '@lispdir@' work, you need the following lines in + your 'configure.ac' file: + + lispdir='${datarootdir}/emacs/site-lisp' + AC_SUBST(lispdir) + +'localedir' + The directory for installing locale-specific message catalogs for + this package. By default, it should be '/usr/local/share/locale', + but it should be written as '$(datarootdir)/locale'. (If you are + using Autoconf, write it as '@localedir@'.) This directory usually + has a subdirectory per locale. + + Unix-style man pages are installed in one of the following: + +'mandir' + The top-level directory for installing the man pages (if any) for + this package. It will normally be '/usr/local/share/man', but you + should write it as '$(datarootdir)/man'. (If you are using + Autoconf, write it as '@mandir@'.) + +'man1dir' + The directory for installing section 1 man pages. Write it as + '$(mandir)/man1'. +'man2dir' + The directory for installing section 2 man pages. Write it as + '$(mandir)/man2' +'...' + + *Don't make the primary documentation for any GNU software be a man + page. Write a manual in Texinfo instead. Man pages are just for + the sake of people running GNU software on Unix, which is a + secondary application only.* + +'manext' + The file name extension for the installed man page. This should + contain a period followed by the appropriate digit; it should + normally be '.1'. + +'man1ext' + The file name extension for installed section 1 man pages. +'man2ext' + The file name extension for installed section 2 man pages. +'...' + Use these names instead of 'manext' if the package needs to install + man pages in more than one section of the manual. + + And finally, you should set the following variable: + +'srcdir' + The directory for the sources being compiled. The value of this + variable is normally inserted by the 'configure' shell script. (If + you are using Autoconf, use 'srcdir = @srcdir@'.) + + For example: + + # Common prefix for installation directories. + # NOTE: This directory must exist when you start the install. + prefix = /usr/local + datarootdir = $(prefix)/share + datadir = $(datarootdir) + exec_prefix = $(prefix) + # Where to put the executable for the command 'gcc'. + bindir = $(exec_prefix)/bin + # Where to put the directories used by the compiler. + libexecdir = $(exec_prefix)/libexec + # Where to put the Info files. + infodir = $(datarootdir)/info + + If your program installs a large number of files into one of the +standard user-specified directories, it might be useful to group them +into a subdirectory particular to that program. If you do this, you +should write the 'install' rule to create these subdirectories. + + Do not expect the user to include the subdirectory name in the value +of any of the variables listed above. The idea of having a uniform set +of variable names for installation directories is to enable the user to +specify the exact same values for several different GNU packages. In +order for this to be useful, all the packages must be designed so that +they will work sensibly when the user does so. + + At times, not all of these variables may be implemented in the +current release of Autoconf and/or Automake; but as of Autoconf 2.60, we +believe all of them are. When any are missing, the descriptions here +serve as specifications for what Autoconf will implement. As a +programmer, you can either use a development version of Autoconf or +avoid using these variables until a stable release is made which +supports them. + + +File: make.info, Node: Standard Targets, Next: Install Command Categories, Prev: Directory Variables, Up: Makefile Conventions + +16.6 Standard Targets for Users +=============================== + +All GNU programs should have the following targets in their Makefiles: + +'all' + Compile the entire program. This should be the default target. + This target need not rebuild any documentation files; Info files + should normally be included in the distribution, and DVI (and other + documentation format) files should be made only when explicitly + asked for. + + By default, the Make rules should compile and link with '-g', so + that executable programs have debugging symbols. 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 + to 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. 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, + provided 'make all' has just been done. This is convenient for + building the program under one user name and installing it under + another. + + The commands should create all the directories in which files are + to be installed, if they don't already exist. This includes the + directories specified as the values of the variables 'prefix' and + 'exec_prefix', as well as all subdirectories that are needed. One + way to do this is by means of an 'installdirs' target as described + below. + + Use '-' before any command for installing a man page, so that + 'make' will ignore any errors. This is in case there are systems + that don't have the Unix man page documentation system installed. + + The way to install Info files is to copy them into '$(infodir)' + with '$(INSTALL_DATA)' (*note Command Variables::), and then run + the 'install-info' program if it is present. 'install-info' is a + program that edits the Info 'dir' file to add or update the menu + entry for the given Info file; it is part of the Texinfo package. + + Here is a sample rule to install an Info file that also tries to + handle some additional situations, such as 'install-info' not being + present. + + do-install-info: foo.info installdirs + $(NORMAL_INSTALL) + # Prefer an info file in . to one in srcdir. + if test -f foo.info; then d=.; \ + else d="$(srcdir)"; fi; \ + $(INSTALL_DATA) $$d/foo.info \ + "$(DESTDIR)$(infodir)/foo.info" + # Run install-info only if it exists. + # Use 'if' instead of just prepending '-' to the + # line so we notice real errors from install-info. + # Use '$(SHELL) -c' because some shells do not + # fail gracefully when there is an unknown command. + $(POST_INSTALL) + if $(SHELL) -c 'install-info --version' \ + >/dev/null 2>&1; then \ + install-info --dir-file="$(DESTDIR)$(infodir)/dir" \ + "$(DESTDIR)$(infodir)/foo.info"; \ + else true; fi + + When writing the 'install' target, you must classify all the + commands into three categories: normal ones, "pre-installation" + commands and "post-installation" commands. *Note Install Command + Categories::. + +'install-html' +'install-dvi' +'install-pdf' +'install-ps' + These targets install documentation in formats other than Info; + they're intended to be called explicitly by the person installing + the package, if that format is desired. GNU prefers Info files, so + these must be installed by the 'install' target. + + When you have many documentation files to install, we recommend + that you avoid collisions and clutter by arranging for these + targets to install in subdirectories of the appropriate + installation directory, such as 'htmldir'. As one example, if your + package has multiple manuals, and you wish to install HTML + documentation with many files (such as the "split" mode output by + 'makeinfo --html'), you'll certainly want to use subdirectories, or + two nodes with the same name in different manuals will overwrite + each other. + + Please make these 'install-FORMAT' targets invoke the commands for + the FORMAT target, for example, by making FORMAT a dependency. + +'uninstall' + Delete all the installed files--the copies that the 'install' and + 'install-*' targets create. + + This rule should not modify the directories where compilation is + done, only the directories where files are installed. + + The uninstallation commands are divided into three categories, just + like the installation commands. *Note Install Command + Categories::. + +'install-strip' + Like 'install', but strip the executable files while installing + them. In simple cases, this target can use the 'install' target in + a simple way: + + install-strip: + $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ + install + + But if the package installs scripts as well as real executables, + the 'install-strip' target can't just refer to the 'install' + target; it has to strip the executables but not the scripts. + + 'install-strip' should not strip the executables in the build + directory which are being copied for installation. It should only + strip the copies that are installed. + + Normally we do not recommend stripping an executable unless you are + sure 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. + +'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 record the configuration. Also preserve files that could be + made by building, but normally aren't because the distribution + comes with them. There is no need to delete parent directories + that were created with 'mkdir -p', since they could have existed + anyway. + + Delete '.dvi' files here if they are not part of the distribution. + +'distclean' + Delete all files in the current directory (or created by this + makefile) that are created by configuring or building the program. + If you have unpacked the source and built the program without + creating any other files, 'make distclean' should leave only the + files that were in the distribution. However, there is no need to + delete parent directories that were created with 'mkdir -p', since + they could have existed anyway. + +'mostlyclean' + Like 'clean', but may refrain from deleting a few files that people + normally don't want to recompile. For example, the 'mostlyclean' + target for GCC does not delete 'libgcc.a', because recompiling it + is rarely necessary and takes a lot of time. + +'maintainer-clean' + Delete almost everything that can be reconstructed with this + Makefile. This typically includes everything deleted by + 'distclean', plus more: C source files produced by Bison, tags + tables, Info files, and so on. + + The reason we say "almost everything" is that running the command + 'make maintainer-clean' should not delete 'configure' even if + 'configure' can be remade using a rule in the Makefile. More + generally, 'make maintainer-clean' should not delete anything that + needs to exist in order to run 'configure' and then begin to build + the program. Also, there is no need to delete parent directories + that were created with 'mkdir -p', since they could have existed + anyway. These are the only exceptions; 'maintainer-clean' should + delete everything else that can be rebuilt. + + The 'maintainer-clean' target is intended to be used by a + maintainer of the package, not by ordinary users. You may need + special tools to reconstruct some of the files that 'make + maintainer-clean' deletes. Since these files are normally included + in the distribution, we don't take care to make them easy to + reconstruct. If you find you need to unpack the full distribution + again, don't blame us. + + To help make users aware of this, the commands for the special + 'maintainer-clean' target should start with these two: + + @echo 'This command is intended for maintainers to use; it' + @echo 'deletes files that may need special tools to rebuild.' + +'TAGS' + Update a tags table for this program. + +'info' + Generate any Info files needed. The best way to write the rules is + as follows: + + info: foo.info + + foo.info: foo.texi chap1.texi chap2.texi + $(MAKEINFO) $(srcdir)/foo.texi + + You must define the variable 'MAKEINFO' in the Makefile. It should + run the 'makeinfo' program, which is part of the Texinfo + distribution. + + Normally a GNU distribution comes with Info files, and that means + the Info files are present in the source directory. Therefore, the + Make rule for an info file should update it in the source + directory. When users build the package, ordinarily Make will not + update the Info files because they will already be up to date. + +'dvi' +'html' +'pdf' +'ps' + Generate documentation files in the given format. These targets + should always exist, but any or all can be a no-op if the given + output format cannot be generated. These targets should not be + dependencies of the 'all' target; the user must manually invoke + them. + + Here's an example rule for generating DVI files from Texinfo: + + dvi: foo.dvi + + 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. ('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: + + html: foo.html + + foo.html: foo.texi chap1.texi chap2.texi + $(TEXI2HTML) $(srcdir)/foo.texi + + Again, you would define the variable 'TEXI2HTML' in the Makefile; + for example, it might run 'makeinfo --no-split --html' ('makeinfo' + is part of the Texinfo distribution). + +'dist' + Create a distribution tar file for this program. The tar file + should be set up so that the file names in the tar file start with + a subdirectory name which is the name of the package it is a + distribution for. This name can include the version number. + + For example, the distribution tar file of GCC version 1.40 unpacks + into a subdirectory named 'gcc-1.40'. + + The easiest way to do this is to create a subdirectory + appropriately named, use 'ln' or 'cp' to install the proper files + in it, and then 'tar' that subdirectory. + + Compress the tar file with 'gzip'. For example, the actual + distribution file for GCC version 1.40 is called 'gcc-1.40.tar.gz'. + It is ok to support other free compression formats as well. + + The 'dist' target should explicitly depend on all non-source files + that are in the distribution, to make sure they are up to date in + the distribution. *Note Making Releases: (standards)Releases. + +'check' + Perform self-tests (if any). The user must build the program + before running the tests, but need not install the program; you + should write the self-tests so that they work when the program is + built but not installed. + + The following targets are suggested as conventional names, for +programs in which they are useful. + +'installcheck' + Perform installation tests (if any). The user must build and + install the program before running the tests. You should not + assume that '$(bindir)' is in the search path. + +'installdirs' + It's useful to add a target named 'installdirs' to create the + directories where files are installed, and their parent + directories. There is a script called 'mkinstalldirs' which is + convenient for this; you can find it in the Gnulib package. You + can use a rule like this: + + # Make sure all installation directories (e.g. $(bindir)) + # actually exist by making them if necessary. + installdirs: mkinstalldirs + $(srcdir)/mkinstalldirs $(bindir) $(datadir) \ + $(libdir) $(infodir) \ + $(mandir) + + or, if you wish to support 'DESTDIR' (strongly encouraged), + + # Make sure all installation directories (e.g. $(bindir)) + # actually exist by making them if necessary. + installdirs: mkinstalldirs + $(srcdir)/mkinstalldirs \ + $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \ + $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \ + $(DESTDIR)$(mandir) + + This rule should not modify the directories where compilation is + done. It should do nothing but create installation directories. + + +File: make.info, Node: Install Command Categories, Prev: Standard Targets, Up: Makefile Conventions + +16.7 Install Command Categories +=============================== + +When writing the 'install' target, you must classify all the commands +into three categories: normal ones, "pre-installation" commands and +"post-installation" commands. + + Normal commands move files into their proper places, and set their +modes. They may not alter any files except the ones that come entirely +from the package they belong to. + + Pre-installation and post-installation commands may alter other +files; in particular, they can edit global configuration files or data +bases. + + Pre-installation commands are typically executed before the normal +commands, and post-installation commands are typically run after the +normal commands. + + The most common use for a post-installation command is to run +'install-info'. This cannot be done with a normal command, since it +alters a file (the Info directory) which does not come entirely and +solely from the package being installed. It is a post-installation +command because it needs to be done after the normal command which +installs the package's Info files. + + Most programs don't need any pre-installation commands, but we have +the feature just in case it is needed. + + To classify the commands in the 'install' rule into these three +categories, insert "category lines" among them. A category line +specifies the category for the commands that follow. + + A category line consists of a tab and a reference to a special Make +variable, plus an optional comment at the end. There are three +variables you can use, one for each category; the variable name +specifies the category. Category lines are no-ops in ordinary execution +because these three Make variables are normally undefined (and you +_should not_ define them in the makefile). + + Here are the three possible category lines, each with a comment that +explains what it means: + + $(PRE_INSTALL) # Pre-install commands follow. + $(POST_INSTALL) # Post-install commands follow. + $(NORMAL_INSTALL) # Normal commands follow. + + If you don't use a category line at the beginning of the 'install' +rule, all the commands are classified as normal until the first category +line. If you don't use any category lines, all the commands are +classified as normal. + + These are the category lines for 'uninstall': + + $(PRE_UNINSTALL) # Pre-uninstall commands follow. + $(POST_UNINSTALL) # Post-uninstall commands follow. + $(NORMAL_UNINSTALL) # Normal commands follow. + + Typically, a pre-uninstall command would be used for deleting entries +from the Info directory. + + If the 'install' or 'uninstall' target has any dependencies which act +as subroutines of installation, then you should start _each_ +dependency's commands with a category line, and start the main target's +commands with a category line also. This way, you can ensure that each +command is placed in the right category regardless of which of the +dependencies actually run. + + Pre-installation and post-installation commands should not run any +programs except for these: + + [ basename bash cat chgrp chmod chown cmp cp dd diff echo + egrep expand expr false fgrep find getopt grep gunzip gzip + hostname install install-info kill ldconfig ln ls md5sum + mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee + test touch true uname xargs yes + + The reason for distinguishing the commands in this way is for the +sake of making binary packages. Typically a binary package contains all +the executables and other files that need to be installed, and has its +own method of installing them--so it does not need to run the normal +installation commands. But installing the binary package does need to +execute the pre-installation and post-installation commands. + + Programs to build binary packages work by extracting the +pre-installation and post-installation commands. Here is one way of +extracting the pre-installation commands (the '-s' option to 'make' is +needed to silence messages about entering subdirectories): + + make -s -n install -o all \ + PRE_INSTALL=pre-install \ + POST_INSTALL=post-install \ + NORMAL_INSTALL=normal-install \ + | gawk -f pre-install.awk + +where the file 'pre-install.awk' could contain this: + + $0 ~ /^(normal-install|post-install)[ \t]*$/ {on = 0} + on {print $0} + $0 ~ /^pre-install[ \t]*$/ {on = 1} + + +File: make.info, Node: Quick Reference, Next: Error Messages, Prev: Makefile Conventions, Up: Top + +Appendix A Quick Reference +************************** + +This appendix summarizes the directives, text manipulation functions, +and special variables which GNU 'make' understands. *Note Special +Targets::, *note Catalogue of Built-In Rules: Catalogue of Rules, and +*note Summary of Options: Options Summary, for other summaries. + + Here is a summary of the directives GNU 'make' recognizes: + +'define VARIABLE' +'define VARIABLE =' +'define VARIABLE :=' +'define VARIABLE ::=' +'define VARIABLE :::=' +'define VARIABLE +=' +'define VARIABLE ?=' +'endef' + Define multi-line variables. + *Note Multi-Line::. + +'undefine VARIABLE' + Undefining variables. + *Note Undefine Directive::. + +'ifdef VARIABLE' +'ifndef VARIABLE' +'ifeq (A,B)' +'ifeq "A" "B"' +'ifeq 'A' 'B'' +'ifneq (A,B)' +'ifneq "A" "B"' +'ifneq 'A' 'B'' +'else' +'endif' + Conditionally evaluate part of the makefile. + *Note Conditionals::. + +'include FILE' +'-include FILE' +'sinclude FILE' + Include another makefile. + *Note Including Other Makefiles: Include. + +'override VARIABLE-ASSIGNMENT' + Define a variable, overriding any previous definition, even one + from the command line. + *Note The 'override' Directive: Override Directive. + +'export' + Tell 'make' to export all variables to child processes by default. + *Note Communicating Variables to a Sub-'make': Variables/Recursion. + +'export VARIABLE' +'export VARIABLE-ASSIGNMENT' +'unexport VARIABLE' + Tell 'make' whether or not to export a particular variable to child + processes. + *Note Communicating Variables to a Sub-'make': Variables/Recursion. + +'private VARIABLE-ASSIGNMENT' + Do not allow this variable assignment to be inherited by + prerequisites. + *Note Suppressing Inheritance::. + +'vpath PATTERN PATH' + Specify a search path for files matching a '%' pattern. + *Note The 'vpath' Directive: Selective Search. + +'vpath PATTERN' + Remove all search paths previously specified for PATTERN. + +'vpath' + Remove all search paths previously specified in any 'vpath' + directive. + + Here is a summary of the built-in functions (*note Functions::): + +'$(subst FROM,TO,TEXT)' + Replace FROM with TO in TEXT. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(patsubst PATTERN,REPLACEMENT,TEXT)' + Replace words matching PATTERN with REPLACEMENT in TEXT. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(strip STRING)' + Remove excess whitespace characters from STRING. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(findstring FIND,TEXT)' + Locate FIND in TEXT. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(filter PATTERN...,TEXT)' + Select words in TEXT that match one of the PATTERN words. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(filter-out PATTERN...,TEXT)' + Select words in TEXT that _do not_ match any of the PATTERN words. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(sort LIST)' + Sort the words in LIST lexicographically, removing duplicates. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(word N,TEXT)' + Extract the Nth word (one-origin) of TEXT. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(words TEXT)' + Count the number of words in TEXT. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(wordlist S,E,TEXT)' + Returns the list of words in TEXT from S to E. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(firstword NAMES...)' + Extract the first word of NAMES. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(lastword NAMES...)' + Extract the last word of NAMES. + *Note Functions for String Substitution and Analysis: Text + Functions. + +'$(dir NAMES...)' + Extract the directory part of each file name. + *Note Functions for File Names: File Name Functions. + +'$(notdir NAMES...)' + Extract the non-directory part of each file name. + *Note Functions for File Names: File Name Functions. + +'$(suffix NAMES...)' + Extract the suffix (the last '.' and following characters) of each + file name. + *Note Functions for File Names: File Name Functions. + +'$(basename NAMES...)' + Extract the base name (name without suffix) of each file name. + *Note Functions for File Names: File Name Functions. + +'$(addsuffix SUFFIX,NAMES...)' + Append SUFFIX to each word in NAMES. + *Note Functions for File Names: File Name Functions. + +'$(addprefix PREFIX,NAMES...)' + Prepend PREFIX to each word in NAMES. + *Note Functions for File Names: File Name Functions. + +'$(join LIST1,LIST2)' + Join two parallel lists of words. + *Note Functions for File Names: File Name Functions. + +'$(wildcard PATTERN...)' + Find file names matching a shell file name pattern (_not_ a '%' + pattern). + *Note The Function 'wildcard': Wildcard Function. + +'$(realpath NAMES...)' + For each file name in NAMES, expand to an absolute name that does + not contain any '.', '..', nor symlinks. + *Note Functions for File Names: File Name Functions. + +'$(abspath NAMES...)' + For each file name in NAMES, expand to an absolute name that does + not contain any '.' or '..' components, but preserves symlinks. + *Note Functions for File Names: File Name Functions. + +'$(error TEXT...)' + When this function is evaluated, 'make' generates a fatal error + with the message TEXT. + *Note Functions That Control Make: Make Control Functions. + +'$(warning TEXT...)' + When this function is evaluated, 'make' generates a warning with + the message TEXT. + *Note Functions That Control Make: Make Control Functions. + +'$(shell COMMAND)' + Execute a shell command and return its output. + *Note The 'shell' Function: Shell Function. + +'$(origin VARIABLE)' + Return a string describing how the 'make' variable VARIABLE was + defined. + *Note The 'origin' Function: Origin Function. + +'$(flavor VARIABLE)' + Return a string describing the flavor of the 'make' variable + VARIABLE. + *Note The 'flavor' Function: Flavor Function. + +'$(let VAR [VAR ...],WORDS,TEXT)' + Evaluate TEXT with the VARs bound to the words in WORDS. + *Note The 'let' Function: Let Function. + +'$(foreach VAR,WORDS,TEXT)' + Evaluate TEXT with VAR bound to each word in WORDS, and concatenate + the results. + *Note The 'foreach' Function: Foreach Function. + +'$(if CONDITION,THEN-PART[,ELSE-PART])' + Evaluate the condition CONDITION; if it's non-empty substitute the + expansion of the THEN-PART otherwise substitute the expansion of + the ELSE-PART. + *Note Functions for Conditionals: Conditional Functions. + +'$(or CONDITION1[,CONDITION2[,CONDITION3...]])' + Evaluate each condition CONDITIONN one at a time; substitute the + first non-empty expansion. If all expansions are empty, substitute + the empty string. + *Note Functions for Conditionals: Conditional Functions. + +'$(and CONDITION1[,CONDITION2[,CONDITION3...]])' + Evaluate each condition CONDITIONN one at a time; if any expansion + results in the empty string substitute the empty string. If all + expansions result in a non-empty string, substitute the expansion + of the last CONDITION. + *Note Functions for Conditionals: Conditional Functions. + +'$(intcmp LHS,RHS[,LT-PART[,EQ-PART[,GT-PART]]])' + Compare LHS and RHS numerically; substitute the expansion of + LT-PART, EQ-PART, or GT-PART depending on whether the left-hand + side is less-than, equal-to, or greater-than the right-hand side, + respectively. + *Note Functions for Conditionals: Conditional Functions. + +'$(call VAR,PARAM,...)' + Evaluate the variable VAR replacing any references to '$(1)', + '$(2)' with the first, second, etc. PARAM values. + *Note The 'call' Function: Call Function. + +'$(eval TEXT)' + Evaluate TEXT then read the results as makefile commands. Expands + 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. + *Note The 'value' Function: Value Function. + + Here is a summary of the automatic variables. *Note Automatic +Variables::, for full information. + +'$@' + The file name of the target. + +'$%' + The target member name, when the target is an archive member. + +'$<' + The name of the first prerequisite. + +'$?' + The names of all the prerequisites that are newer than the target, + with spaces between them. For prerequisites which are archive + members, only the named member is used (*note Archives::). + +'$^' +'$+' + The names of all the prerequisites, with spaces between them. For + prerequisites which are archive members, only the named member is + used (*note Archives::). The value of '$^' omits duplicate + prerequisites, while '$+' retains them and preserves their order. + +'$*' + The stem with which an implicit rule matches (*note How Patterns + Match: Pattern Match.). + +'$(@D)' +'$(@F)' + The directory part and the file-within-directory part of '$@'. + +'$(*D)' +'$(*F)' + The directory part and the file-within-directory part of '$*'. + +'$(%D)' +'$(%F)' + The directory part and the file-within-directory part of '$%'. + +'$( tar-`sed -e '/version_string/!d' \ + -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \ + -e q + version.c`.shar.Z + + .PHONY: dist + dist: $(SRCS) $(AUX) + echo tar-`sed \ + -e '/version_string/!d' \ + -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \ + -e q + version.c` > .fname + -rm -rf `cat .fname` + mkdir `cat .fname` + ln $(SRCS) $(AUX) `cat .fname` + tar chZf `cat .fname`.tar.Z `cat .fname` + -rm -rf `cat .fname` .fname + + tar.zoo: $(SRCS) $(AUX) + -rm -rf tmp.dir + -mkdir tmp.dir + -rm tar.zoo + for X in $(SRCS) $(AUX) ; do \ + echo $$X ; \ + sed 's/$$/^M/' $$X \ + > tmp.dir/$$X ; done + cd tmp.dir ; zoo aM ../tar.zoo * + -rm -rf tmp.dir + + +File: make.info, Node: GNU Free Documentation License, Next: Concept Index, Prev: Complex Makefile, Up: Top + +Appendix D GNU Free Documentation License +***************************************** + + Version 1.3, 3 November 2008 + + Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. We + recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it can + be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + "Document", below, refers to any such manual or work. Any member + of the public is a licensee, and is addressed as "you". You accept + the license if you copy, modify or distribute the work in a way + requiring permission under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in the + notice that says that the Document is released under this License. + If a section does not fit the above definition of Secondary then it + is not allowed to be designated as Invariant. The Document may + contain zero Invariant Sections. If the Document does not identify + any Invariant Sections then there are none. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + that says that the Document is released under this License. A + Front-Cover Text may be at most 5 words, and a Back-Cover Text may + be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images composed + of pixels) generic paint programs or (for drawings) some widely + available drawing editor, and that is suitable for input to text + formatters or for automatic translation to a variety of formats + suitable for input to text formatters. A copy made in an otherwise + Transparent file format whose markup, or absence of markup, has + been arranged to thwart or discourage subsequent modification by + readers is not Transparent. An image format is not Transparent if + used for any substantial amount of text. A copy that is not + "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and standard-conforming + simple HTML, PostScript or PDF designed for human modification. + Examples of transparent image formats include PNG, XCF and JPG. + Opaque formats include proprietary formats that can be read and + edited only by proprietary word processors, SGML or XML for which + the DTD and/or processing tools are not generally available, and + the machine-generated HTML, PostScript or PDF produced by some word + processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + The "publisher" means any person or entity that distributes copies + of the Document to the public. + + A section "Entitled XYZ" means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + "Acknowledgements", "Dedications", "Endorsements", or "History".) + To "Preserve the Title" of such a section when you modify the + Document means that it remains a section "Entitled XYZ" according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow the + conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document's license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the title + equally prominent and visible. You may add other material on the + covers in addition. Copying with changes limited to the covers, as + long as they preserve the title of the Document and satisfy these + conditions, can be treated as verbatim copying in other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a machine-readable + Transparent copy along with each Opaque copy, or state in or with + each Opaque copy a computer-network location from which the general + network-using public has access to download using public-standard + network protocols a complete Transparent copy of the Document, free + of added material. If you use the latter option, you must take + reasonably prudent steps, when you begin distribution of Opaque + copies in quantity, to ensure that this Transparent copy will + remain thus accessible at the stated location until at least one + year after the last time you distribute an Opaque copy (directly or + through your agents or retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of copies, + to give them a chance to provide you with an updated version of the + Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with the + Modified Version filling the role of the Document, thus licensing + distribution and modification of the Modified Version to whoever + possesses a copy of it. In addition, you must do these things in + the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of previous + versions (which should, if there were any, be listed in the + History section of the Document). You may use the same title + as a previous version if the original publisher of that + version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled "History", Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on the + Title Page. If there is no section Entitled "History" in the + Document, create one stating the title, year, authors, and + publisher of the Document as given on its Title Page, then add + an item describing the Modified Version as stated in the + previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in the + "History" section. You may omit a network location for a work + that was published at least four years before the Document + itself, or if the original publisher of the version it refers + to gives permission. + + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section + all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, unaltered + in their text and in their titles. Section numbers or the + equivalent are not considered part of the section titles. + + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + "Endorsements" or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option designate + some or all of these sections as invariant. To do this, add their + titles to the list of Invariant Sections in the Modified Version's + license notice. These titles must be distinct from any other + section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + + You may add a passage of up to five words as a Front-Cover Text, + and a passage of up to 25 words as a Back-Cover Text, to the end of + the list of Cover Texts in the Modified Version. Only one passage + of Front-Cover Text and one of Back-Cover Text may be added by (or + through arrangements made by) any one entity. If the Document + already includes a cover text for the same cover, previously added + by you or by arrangement made by the same entity you are acting on + behalf of, you may not add another; but you may replace the old + one, on explicit permission from the previous publisher that added + the old one. + + The author(s) and publisher(s) of the Document do not by this + License give permission to use their names for publicity for or to + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination all + of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + by adding at the end of it, in parentheses, the name of the + original author or publisher of that section if known, or else a + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + "History" in the various original documents, forming one section + Entitled "History"; likewise combine any sections Entitled + "Acknowledgements", and any sections Entitled "Dedications". You + must delete all sections Entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the documents + in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow this + License in all other respects regarding verbatim copying of that + document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of a + storage or distribution medium, is called an "aggregate" if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation's users beyond what the individual + works permit. When the Document is included in an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one half + of the entire aggregate, the Document's Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warranty Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense, or distribute it is void, + and will automatically terminate your rights under this License. + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the + copyright holder fails to notify you of the violation by some + reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from + that copyright holder, and you cure the violation prior to 30 days + after your receipt of the notice. + + Termination of your rights under this section does not terminate + the licenses of parties who have received copies or rights from you + under this License. If your rights have been terminated and not + permanently reinstated, receipt of a copy of some or all of the + same material does not give you any rights to use it. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + . + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If the + Document does not specify a version number of this License, you may + choose any version ever published (not as a draft) by the Free + Software Foundation. If the Document specifies that a proxy can + decide which future versions of this License can be used, that + proxy's public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + + 11. RELICENSING + + "Massive Multiauthor Collaboration Site" (or "MMC Site") means any + World Wide Web server that publishes copyrightable works and also + provides prominent facilities for anybody to edit those works. A + public wiki that anybody can edit is an example of such a server. + A "Massive Multiauthor Collaboration" (or "MMC") contained in the + site means any set of copyrightable works thus published on the MMC + site. + + "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 + license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license + published by that same organization. + + "Incorporate" means to publish or republish a Document, in whole or + in part, as part of another Document. + + An MMC is "eligible for relicensing" if it is licensed under this + License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently + incorporated in whole or in part into the MMC, (1) had no cover + texts or invariant sections, and (2) were thus incorporated prior + to November 1, 2008. + + The operator of an MMC Site may republish an MMC contained in the + site under CC-BY-SA on the same site at any time before August 1, + 2009, provided the MMC is eligible for relicensing. + +ADDENDUM: How to use this License for your documents +==================================================== + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and license +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. + + If you have Invariant Sections, Front-Cover Texts and Back-Cover +Texts, replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + + If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of free +software license, such as the GNU General Public License, to permit +their use in free software. + + +File: make.info, Node: Concept Index, Next: Name Index, Prev: GNU Free Documentation License, Up: Top + +Index of Concepts +***************** + +[index] +* Menu: + +* !=: Setting. (line 6) +* !=, expansion: Reading Makefiles. (line 34) +* # (comments), in makefile: Makefile Contents. (line 41) +* # (comments), in recipes: Recipe Syntax. (line 29) +* #include: Automatic Prerequisites. + (line 16) +* $, in function call: Syntax of Functions. (line 6) +* $, in rules: Rule Syntax. (line 33) +* $, in variable name: Computed Names. (line 6) +* $, in variable reference: Reference. (line 6) +* %, in pattern rules: Pattern Intro. (line 9) +* %, quoting in patsubst: Text Functions. (line 27) +* %, quoting in static pattern: Static Usage. (line 37) +* %, quoting in vpath: Selective Search. (line 39) +* %, quoting with \ (backslash): Selective Search. (line 39) +* %, quoting with \ (backslash) <1>: Static Usage. (line 37) +* %, quoting with \ (backslash) <2>: Text Functions. (line 27) +* * (wildcard character): Wildcards. (line 6) +* +, and define: Canned Recipes. (line 49) +* +, and recipe execution: Instead of Execution. + (line 67) +* +, and recipes: MAKE Variable. (line 18) +* +=: Appending. (line 6) +* +=, expansion: Reading Makefiles. (line 34) +* +=, expansion <1>: Reading Makefiles. (line 34) +* ,v (RCS file extension): Catalogue of Rules. (line 167) +* - (in recipes): Errors. (line 19) +* -, and define: Canned Recipes. (line 49) +* --always-make: Options Summary. (line 15) +* --assume-new: Instead of Execution. + (line 41) +* --assume-new <1>: Options Summary. (line 346) +* --assume-new, and recursion: Options/Recursion. (line 30) +* --assume-old: Avoiding Compilation. + (line 6) +* --assume-old <1>: Options Summary. (line 186) +* --assume-old, and recursion: Options/Recursion. (line 30) +* --check-symlink-times: Options Summary. (line 167) +* --debug: Options Summary. (line 43) +* --directory: Recursion. (line 20) +* --directory <1>: Options Summary. (line 26) +* --directory, and --print-directory: -w Option. (line 20) +* --directory, and recursion: Options/Recursion. (line 30) +* --dry-run: Echoing. (line 18) +* --dry-run <1>: Instead of Execution. + (line 14) +* --dry-run <2>: Options Summary. (line 177) +* --environment-overrides: Options Summary. (line 94) +* --eval: Options Summary. (line 99) +* --file: Makefile Names. (line 23) +* --file <1>: Makefile Arguments. (line 6) +* --file <2>: Options Summary. (line 107) +* --file, and recursion: Options/Recursion. (line 30) +* --help: Options Summary. (line 113) +* --ignore-errors: Errors. (line 30) +* --ignore-errors <1>: Options Summary. (line 118) +* --include-dir: Include. (line 53) +* --include-dir <1>: Options Summary. (line 123) +* --jobs: Parallel. (line 6) +* --jobs <1>: Options Summary. (line 134) +* --jobs, and recursion: Options/Recursion. (line 33) +* --jobserver-auth: Job Slots. (line 21) +* --jobserver-style: Options Summary. (line 142) +* --jobserver-style <1>: POSIX Jobserver. (line 13) +* --jobserver-style for Windows: Windows Jobserver. (line 16) +* --just-print: Echoing. (line 18) +* --just-print <1>: Instead of Execution. + (line 14) +* --just-print <2>: Options Summary. (line 176) +* --keep-going: Errors. (line 46) +* --keep-going <1>: Testing. (line 16) +* --keep-going <2>: Options Summary. (line 152) +* --load-average: Parallel. (line 35) +* --load-average <1>: Options Summary. (line 159) +* --makefile: Makefile Names. (line 23) +* --makefile <1>: Makefile Arguments. (line 6) +* --makefile <2>: Options Summary. (line 108) +* --max-load: Parallel. (line 35) +* --max-load <1>: Options Summary. (line 160) +* --new-file: Instead of Execution. + (line 41) +* --new-file <1>: Options Summary. (line 345) +* --new-file, and recursion: Options/Recursion. (line 30) +* --no-builtin-rules: Options Summary. (line 232) +* --no-builtin-variables: Options Summary. (line 245) +* --no-keep-going: Options Summary. (line 261) +* --no-print-directory: -w Option. (line 20) +* --no-print-directory <1>: Options Summary. (line 337) +* --old-file: Avoiding Compilation. + (line 6) +* --old-file <1>: Options Summary. (line 185) +* --old-file, and recursion: Options/Recursion. (line 30) +* --output-sync: Parallel Output. (line 11) +* --output-sync <1>: Options Summary. (line 194) +* --print-data-base: Options Summary. (line 210) +* --print-directory: Options Summary. (line 329) +* --print-directory, and --directory: -w Option. (line 20) +* --print-directory, and recursion: -w Option. (line 20) +* --print-directory, disabling: -w Option. (line 20) +* --question: Instead of Execution. + (line 32) +* --question <1>: Options Summary. (line 224) +* --quiet: Echoing. (line 24) +* --quiet <1>: Options Summary. (line 255) +* --recon: Echoing. (line 18) +* --recon <1>: Instead of Execution. + (line 14) +* --recon <2>: Options Summary. (line 178) +* --shuffle: Options Summary. (line 269) +* --silent: Echoing. (line 24) +* --silent <1>: Options Summary. (line 254) +* --stop: Options Summary. (line 262) +* --touch: Instead of Execution. + (line 24) +* --touch <1>: Options Summary. (line 312) +* --touch, and recursion: MAKE Variable. (line 35) +* --trace: Options Summary. (line 319) +* --version: Options Summary. (line 324) +* --warn-undefined-variables: Options Summary. (line 354) +* --what-if: Instead of Execution. + (line 41) +* --what-if <1>: Options Summary. (line 344) +* -b: Options Summary. (line 9) +* -B: Options Summary. (line 14) +* -C: Recursion. (line 20) +* -C <1>: Options Summary. (line 25) +* -C, and -w: -w Option. (line 20) +* -C, and recursion: Options/Recursion. (line 30) +* -d: Options Summary. (line 33) +* -e: Options Summary. (line 93) +* -E: Options Summary. (line 98) +* -e (shell flag): Automatic Prerequisites. + (line 65) +* -f: Makefile Names. (line 23) +* -f <1>: Makefile Arguments. (line 6) +* -f <2>: Options Summary. (line 106) +* -f, and recursion: Options/Recursion. (line 30) +* -h: Options Summary. (line 112) +* -I: Include. (line 53) +* -i: Errors. (line 30) +* -i <1>: Options Summary. (line 117) +* -I <1>: Options Summary. (line 122) +* -j: Parallel. (line 6) +* -j <1>: Options Summary. (line 133) +* -j, and archive update: Archive Pitfalls. (line 6) +* -j, and recursion: Options/Recursion. (line 33) +* -k: Errors. (line 46) +* -k <1>: Testing. (line 16) +* -k <2>: Options Summary. (line 151) +* -l: Options Summary. (line 158) +* -L: Options Summary. (line 166) +* -l (library search): Libraries/Search. (line 6) +* -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 67) +* -n: Echoing. (line 18) +* -n <1>: Instead of Execution. + (line 14) +* -n <2>: Options Summary. (line 175) +* -O: Parallel Output. (line 11) +* -o: Avoiding Compilation. + (line 6) +* -o <1>: Options Summary. (line 184) +* -O <1>: Options Summary. (line 193) +* -o, and recursion: Options/Recursion. (line 30) +* -p: Options Summary. (line 209) +* -q: Instead of Execution. + (line 32) +* -q <1>: Options Summary. (line 223) +* -r: Options Summary. (line 231) +* -R: Options Summary. (line 244) +* -s: Echoing. (line 24) +* -s <1>: Options Summary. (line 253) +* -S: Options Summary. (line 260) +* -t: Instead of Execution. + (line 24) +* -t <1>: Options Summary. (line 311) +* -t, and recursion: MAKE Variable. (line 35) +* -v: Options Summary. (line 323) +* -W: Instead of Execution. + (line 41) +* -w: Options Summary. (line 328) +* -W <1>: Options Summary. (line 343) +* -w, and -C: -w Option. (line 20) +* -W, and recursion: Options/Recursion. (line 30) +* -w, and recursion: -w Option. (line 20) +* -w, disabling: -w Option. (line 20) +* .a (archives): Archive Suffix Rules. + (line 6) +* .c: Catalogue of Rules. (line 35) +* .C: Catalogue of Rules. (line 39) +* .cc: Catalogue of Rules. (line 39) +* .ch: Catalogue of Rules. (line 153) +* .cpp: Catalogue of Rules. (line 39) +* .d: Automatic Prerequisites. + (line 80) +* .def: Catalogue of Rules. (line 73) +* .dvi: Catalogue of Rules. (line 153) +* .f: Catalogue of Rules. (line 51) +* .F: Catalogue of Rules. (line 51) +* .info: Catalogue of Rules. (line 160) +* .l: Catalogue of Rules. (line 125) +* .LIBPATTERNS, and link libraries: Libraries/Search. (line 6) +* .ln: Catalogue of Rules. (line 147) +* .mod: Catalogue of Rules. (line 73) +* .NOTPARALLEL special target: Parallel Disable. (line 16) +* .o: Catalogue of Rules. (line 35) +* .o <1>: Catalogue of Rules. (line 86) +* .ONESHELL, use of: One Shell. (line 6) +* .p: Catalogue of Rules. (line 47) +* .r: Catalogue of Rules. (line 51) +* .s: Catalogue of Rules. (line 79) +* .S: Catalogue of Rules. (line 82) +* .sh: Catalogue of Rules. (line 182) +* .SHELLFLAGS, value of: Choosing the Shell. (line 6) +* .sym: Catalogue of Rules. (line 73) +* .tex: Catalogue of Rules. (line 153) +* .texi: Catalogue of Rules. (line 160) +* .texinfo: Catalogue of Rules. (line 160) +* .txinfo: Catalogue of Rules. (line 160) +* .w: Catalogue of Rules. (line 153) +* .WAIT special target: Parallel Disable. (line 51) +* .web: Catalogue of Rules. (line 153) +* .y: Catalogue of Rules. (line 121) +* :: rules (double-colon): Double-Colon. (line 6) +* :::=: Immediate Assignment. + (line 6) +* :::= <1>: Setting. (line 6) +* ::=: Simple Assignment. (line 9) +* ::= <1>: Setting. (line 6) +* :=: Simple Assignment. (line 9) +* := <1>: Setting. (line 6) +* =: Recursive Assignment. + (line 6) +* = <1>: Setting. (line 6) +* =, expansion: Reading Makefiles. (line 34) +* ? (wildcard character): Wildcards. (line 6) +* ?=: Conditional Assignment. + (line 6) +* ?= <1>: Setting. (line 6) +* ?=, expansion: Reading Makefiles. (line 34) +* @ (in recipes): Echoing. (line 6) +* @, and define: Canned Recipes. (line 49) +* [...] (wildcard characters): Wildcards. (line 6) +* \ (backslash), for continuation lines: Simple Makefile. (line 41) +* \ (backslash), in recipes: Splitting Recipe Lines. + (line 6) +* \ (backslash), to quote %: Selective Search. (line 39) +* \ (backslash), to quote % <1>: Static Usage. (line 37) +* \ (backslash), to quote % <2>: Text Functions. (line 27) +* __.SYMDEF: Archive Symbols. (line 6) +* ~ (tilde): Wildcards. (line 16) +* abspath: File Name Functions. (line 120) +* algorithm for directory search: Search Algorithm. (line 6) +* all (standard target): Goals. (line 73) +* appending to variables: Appending. (line 6) +* ar: Implicit Variables. (line 40) +* archive: Archives. (line 6) +* archive member targets: Archive Members. (line 6) +* archive symbol directory updating: Archive Symbols. (line 6) +* archive, and -j: Archive Pitfalls. (line 6) +* archive, and parallel execution: Archive Pitfalls. (line 6) +* archive, suffix rule for: Archive Suffix Rules. + (line 6) +* Arg list too long: Options/Recursion. (line 66) +* arguments of functions: Syntax of Functions. (line 6) +* as: Catalogue of Rules. (line 79) +* as <1>: Implicit Variables. (line 43) +* assembly, rule to compile: Catalogue of Rules. (line 79) +* automatic generation of prerequisites: Include. (line 51) +* automatic generation of prerequisites <1>: Automatic Prerequisites. + (line 6) +* 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 41) +* backslash (\), in recipes: Splitting Recipe Lines. + (line 6) +* backslash (\), to quote %: Selective Search. (line 39) +* backslash (\), to quote % <1>: Static Usage. (line 37) +* backslash (\), to quote % <2>: Text Functions. (line 27) +* backslash (\), to quote newlines: Splitting Lines. (line 6) +* backslashes in pathnames and wildcard expansion: Wildcard Pitfall. + (line 31) +* basename: File Name Functions. (line 56) +* binary packages: Install Command Categories. + (line 80) +* 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) +* C, rule to compile: Catalogue of Rules. (line 35) +* canned recipes: Canned Recipes. (line 6) +* cc: Catalogue of Rules. (line 35) +* cc <1>: Implicit Variables. (line 46) +* cd (shell command): Execution. (line 12) +* cd (shell command) <1>: MAKE Variable. (line 16) +* chains of rules: Chained Rules. (line 6) +* check (standard target): Goals. (line 115) +* clean (standard target): Goals. (line 76) +* clean target: Simple Makefile. (line 85) +* clean target <1>: Cleanup. (line 11) +* cleaning up: Cleanup. (line 6) +* clobber (standard target): Goals. (line 87) +* co: Catalogue of Rules. (line 167) +* co <1>: Implicit Variables. (line 66) +* combining rules by prerequisite: Combine By Prerequisite. + (line 6) +* command expansion: Shell Function. (line 6) +* command line variable definitions, and recursion: Options/Recursion. + (line 25) +* command line variables: Overriding. (line 6) +* commands, sequences of: Canned Recipes. (line 6) +* comments, in makefile: Makefile Contents. (line 41) +* comments, in recipes: Recipe Syntax. (line 29) +* compatibility: Features. (line 6) +* compatibility in exporting: Variables/Recursion. (line 94) +* compilation, testing: Testing. (line 6) +* computed variable name: Computed Names. (line 6) +* conditional expansion: Conditional Functions. + (line 6) +* conditional variable assignment: Conditional Assignment. + (line 6) +* conditionals: Conditionals. (line 6) +* 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: Catalogue of Rules. (line 153) +* ctangle <1>: Implicit Variables. (line 103) +* cweave: Catalogue of Rules. (line 153) +* cweave <1>: Implicit Variables. (line 97) +* data base of make rules: Options Summary. (line 210) +* deducing recipes (implicit rules): make Deduces. (line 6) +* default directories for included makefiles: Include. (line 53) +* default goal: How Make Works. (line 12) +* default goal <1>: Rules. (line 11) +* default makefile name: Makefile Names. (line 6) +* default rules, last-resort: Last Resort. (line 6) +* define, expansion: Reading Makefiles. (line 34) +* defining variables verbatim: Multi-Line. (line 6) +* deletion of target files: Errors. (line 63) +* deletion of target files <1>: Interrupts. (line 6) +* directive: Makefile Contents. (line 28) +* directories, creating installation: Directory Variables. (line 20) +* directories, printing them: -w Option. (line 6) +* directories, updating archive symbol: Archive Symbols. (line 6) +* directory part: File Name Functions. (line 16) +* directory search (VPATH): Directory Search. (line 6) +* directory search (VPATH), and implicit rules: Implicit/Search. + (line 6) +* directory search (VPATH), and link libraries: Libraries/Search. + (line 6) +* directory search (VPATH), and recipes: Recipes/Search. (line 6) +* directory search algorithm: Search Algorithm. (line 6) +* directory search, traditional (GPATH): Search Algorithm. (line 42) +* disabling parallel execution: Parallel Disable. (line 6) +* dist (standard target): Goals. (line 107) +* distclean (standard target): Goals. (line 85) +* dollar sign ($), in function call: Syntax of Functions. (line 6) +* dollar sign ($), in rules: Rule Syntax. (line 33) +* dollar sign ($), in variable name: Computed Names. (line 6) +* dollar sign ($), in variable reference: Reference. (line 6) +* DOS, choosing a shell in: Choosing the Shell. (line 38) +* double-colon rules: Double-Colon. (line 6) +* duplicate words, removing: Text Functions. (line 156) +* E2BIG: Options/Recursion. (line 66) +* echoing of recipes: Echoing. (line 6) +* editor: Introduction. (line 22) +* Emacs (M-x compile): Errors. (line 61) +* empty recipes: Empty Recipes. (line 6) +* empty targets: Empty Targets. (line 6) +* environment: Environment. (line 6) +* environment, and recursion: Variables/Recursion. (line 6) +* environment, SHELL in: Choosing the Shell. (line 12) +* error, stopping on: Make Control Functions. + (line 11) +* 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) +* execution, of recipes: Execution. (line 6) +* exit status (errors): Errors. (line 6) +* exit status of make: Running. (line 18) +* expansion, secondary: Secondary Expansion. (line 6) +* explicit rule, definition of: Makefile Contents. (line 10) +* explicit rule, expansion: Reading Makefiles. (line 103) +* explicit rules, secondary expansion of: Secondary Expansion. + (line 103) +* 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: Catalogue of Rules. (line 51) +* f77 <1>: Implicit Variables. (line 57) +* FDL, GNU Free Documentation License: GNU Free Documentation License. + (line 6) +* features of GNU make: Features. (line 6) +* features, missing: Missing. (line 6) +* file name functions: File Name Functions. (line 6) +* file name of makefile: Makefile Names. (line 6) +* file name of makefile, how to specify: Makefile Names. (line 31) +* file name prefix, adding: File Name Functions. (line 78) +* file name suffix: File Name Functions. (line 42) +* file name suffix, adding: File Name Functions. (line 67) +* file name with wildcards: Wildcards. (line 6) +* file name, abspath of: File Name Functions. (line 120) +* file name, basename of: File Name Functions. (line 56) +* file name, directory part: File Name Functions. (line 16) +* file name, nondirectory part: File Name Functions. (line 26) +* file name, realpath of: File Name Functions. (line 113) +* file, reading from: File Function. (line 6) +* file, writing to: File Function. (line 6) +* files, assuming new: Instead of Execution. + (line 41) +* files, assuming old: Avoiding Compilation. + (line 6) +* files, avoiding recompilation of: Avoiding Compilation. + (line 6) +* files, intermediate: Chained Rules. (line 16) +* filtering out words: Text Functions. (line 134) +* filtering words: Text Functions. (line 116) +* finding strings: Text Functions. (line 105) +* flags: Options Summary. (line 6) +* flags for compilers: Implicit Variables. (line 6) +* flavor of variable: Flavor Function. (line 6) +* flavors of variables: Flavors. (line 6) +* FORCE: Force Targets. (line 6) +* force targets: Force Targets. (line 6) +* Fortran, rule to compile: Catalogue of Rules. (line 51) +* function arguments, special characters in: Syntax of Functions. + (line 40) +* functions: Functions. (line 6) +* functions, for controlling make: Make Control Functions. + (line 6) +* functions, for file names: File Name Functions. (line 6) +* functions, for text: Text Functions. (line 6) +* functions, syntax of: Syntax of Functions. (line 6) +* functions, user defined: Call Function. (line 6) +* g++: Catalogue of Rules. (line 39) +* g++ <1>: Implicit Variables. (line 49) +* gcc: Catalogue of Rules. (line 35) +* generating prerequisites automatically: Include. (line 51) +* generating prerequisites automatically <1>: Automatic Prerequisites. + (line 6) +* get: Catalogue of Rules. (line 176) +* get <1>: Implicit Variables. (line 69) +* globbing (wildcards): Wildcards. (line 6) +* goal: How Make Works. (line 12) +* goal, default: How Make Works. (line 12) +* goal, default <1>: Rules. (line 11) +* goal, how to specify: Goals. (line 6) +* grouped targets: Multiple Targets. (line 61) +* Guile: Guile Function. (line 6) +* Guile <1>: Guile Integration. (line 6) +* Guile example: Guile Example. (line 6) +* guile, conversion of types: Guile Types. (line 6) +* home directory: Wildcards. (line 16) +* IEEE Standard 1003.2: Overview. (line 13) +* ifdef, expansion: Reading Makefiles. (line 93) +* ifeq, expansion: Reading Makefiles. (line 93) +* ifndef, expansion: Reading Makefiles. (line 93) +* ifneq, expansion: Reading Makefiles. (line 93) +* immediate variable assignment: Immediate Assignment. + (line 6) +* 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 103) +* implicit rule, how to use: Using Implicit. (line 6) +* implicit rule, introduction to: make Deduces. (line 6) +* implicit rule, predefined: Catalogue of Rules. (line 6) +* implicit rule, search algorithm: Implicit Rule Search. + (line 6) +* implicit rules, secondary expansion of: Secondary Expansion. + (line 143) +* included makefiles, default directories: Include. (line 53) +* including (MAKEFILES variable): MAKEFILES Variable. (line 6) +* including (MAKEFILE_LIST variable): Special Variables. (line 8) +* including other makefiles: Include. (line 6) +* incompatibilities: Missing. (line 6) +* independent targets: Multiple Targets. (line 14) +* Info, rule to format: Catalogue of Rules. (line 160) +* inheritance, suppressing: Suppressing Inheritance. + (line 6) +* input during parallel execution: Parallel Input. (line 6) +* install (standard target): Goals. (line 93) +* 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 63) +* intermediate targets, explicit: Special Targets. (line 48) +* interrupt: Interrupts. (line 6) +* job slots: Parallel. (line 6) +* job slots, and recursion: Options/Recursion. (line 33) +* job slots, sharing: Job Slots. (line 6) +* jobs, limiting based on load: Parallel. (line 35) +* jobserver: Job Slots. (line 16) +* jobserver on POSIX: POSIX Jobserver. (line 6) +* jobserver on Windows: Windows Jobserver. (line 6) +* joining lists of words: File Name Functions. (line 89) +* killing (interruption): Interrupts. (line 6) +* last-resort default rules: Last Resort. (line 6) +* ld: Catalogue of Rules. (line 86) +* lex: Catalogue of Rules. (line 125) +* lex <1>: Implicit Variables. (line 73) +* Lex, rule to run: Catalogue of Rules. (line 125) +* 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 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) +* lint: Catalogue of Rules. (line 147) +* lint <1>: Implicit Variables. (line 80) +* lint, rule to run: Catalogue of Rules. (line 147) +* list of all prerequisites: Automatic Variables. (line 71) +* list of changed prerequisites: Automatic Variables. (line 62) +* 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 31) +* 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: Recursive Assignment. + (line 40) +* lpr (shell command): Wildcard Examples. (line 21) +* lpr (shell command) <1>: Empty Targets. (line 25) +* m2c: Catalogue of Rules. (line 73) +* m2c <1>: Implicit Variables. (line 60) +* macro: Using Variables. (line 10) +* make depend: Automatic Prerequisites. + (line 37) +* make extensions: Extending make. (line 6) +* make integration: Integrating 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 31) +* makefile rule parts: Rule Introduction. (line 6) +* makefile syntax, evaluating: Eval Function. (line 6) +* makefile, and MAKEFILES variable: MAKEFILES Variable. (line 6) +* makefile, conventions for: Makefile Conventions. + (line 6) +* makefile, how make processes: How Make Works. (line 6) +* makefile, how to write: Makefiles. (line 6) +* makefile, including: Include. (line 6) +* makefile, overriding: Overriding Makefiles. + (line 6) +* makefile, reading: Reading Makefiles. (line 6) +* makefile, remaking of: Remaking Makefiles. (line 6) +* makefile, simple: Simple Makefile. (line 6) +* makefiles, and MAKEFILE_LIST variable: Special Variables. (line 8) +* makefiles, and special variables: Special Variables. (line 6) +* makefiles, parsing: Parsing Makefiles. (line 6) +* makeinfo: Catalogue of Rules. (line 160) +* makeinfo <1>: Implicit Variables. (line 84) +* MAKE_TMPDIR: Temporary Files. (line 10) +* match-anything rule: Match-Anything Rules. + (line 6) +* match-anything rule, used to override: Overriding Makefiles. + (line 12) +* missing features: Missing. (line 6) +* mistakes with wildcards: Wildcard Pitfall. (line 6) +* modified variable reference: Substitution Refs. (line 6) +* Modula-2, rule to compile: Catalogue of Rules. (line 73) +* mostlyclean (standard target): Goals. (line 79) +* multi-line variable definition: Multi-Line. (line 6) +* multiple rules for one target: Multiple Rules. (line 6) +* multiple rules for one target (::): Double-Colon. (line 6) +* multiple targets: Multiple Targets. (line 6) +* multiple targets, in pattern rule: Pattern Intro. (line 44) +* name of makefile: Makefile Names. (line 6) +* name of makefile, how to specify: Makefile Names. (line 31) +* nested variable reference: Computed Names. (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 26) +* normal prerequisites: Prerequisite Types. (line 6) +* not intermediate targets, explicit: Special Targets. (line 54) +* obj: Variables Simplify. (line 20) +* OBJ: Variables Simplify. (line 20) +* objects: Variables Simplify. (line 14) +* OBJECTS: Variables Simplify. (line 20) +* objects, loaded: Loading Objects. (line 6) +* objs: Variables Simplify. (line 20) +* OBJS: Variables Simplify. (line 20) +* old-fashioned suffix rules: Suffix Rules. (line 6) +* options: Options Summary. (line 6) +* options, and recursion: Options/Recursion. (line 6) +* options, setting from environment: Options/Recursion. (line 89) +* options, setting in makefiles: Options/Recursion. (line 89) +* 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: Parallel Output. (line 6) +* output during parallel execution <1>: Options Summary. (line 194) +* 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, disabling: Parallel Disable. (line 6) +* parallel execution, input during: Parallel Input. (line 6) +* parallel execution, output during: Parallel Output. (line 6) +* parallel execution, output during <1>: Options Summary. (line 194) +* parallel execution, overriding: Special Targets. (line 172) +* parallel output to terminal: Terminal Output. (line 6) +* parsing makefiles: Parsing Makefiles. (line 6) +* parts of makefile rule: Rule Introduction. (line 6) +* Pascal, rule to compile: Catalogue of Rules. (line 47) +* pattern rule: Pattern Intro. (line 6) +* pattern rule, expansion: Reading Makefiles. (line 103) +* pattern rules, order of: Pattern Match. (line 30) +* pattern rules, static (not implicit): Static Pattern. (line 6) +* pattern rules, static, syntax of: Static Usage. (line 6) +* pattern-specific variables: Pattern-specific. (line 6) +* pc: Catalogue of Rules. (line 47) +* pc <1>: Implicit Variables. (line 63) +* phony targets: Phony Targets. (line 6) +* phony targets and recipe execution: Instead of Execution. + (line 75) +* pitfalls of wildcards: Wildcard Pitfall. (line 6) +* plugin_is_GPL_compatible: Loaded Object API. (line 31) +* portability: Features. (line 6) +* POSIX: Overview. (line 13) +* POSIX <1>: Options/Recursion. (line 69) +* POSIX-conforming mode, setting: Special Targets. (line 192) +* post-installation commands: Install Command Categories. + (line 6) +* pre-installation commands: Install Command Categories. + (line 6) +* precious targets: Special Targets. (line 32) +* predefined rules and variables, printing: Options Summary. (line 210) +* prefix, adding: File Name Functions. (line 78) +* 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 103) +* prerequisites: Rule Syntax. (line 47) +* prerequisites, and automatic variables: Automatic Variables. + (line 17) +* prerequisites, automatic generation: Include. (line 51) +* prerequisites, automatic generation <1>: Automatic Prerequisites. + (line 6) +* prerequisites, introduction to: Rule Introduction. (line 8) +* prerequisites, list of all: Automatic Variables. (line 71) +* prerequisites, list of changed: Automatic Variables. (line 62) +* prerequisites, normal: Prerequisite Types. (line 6) +* prerequisites, order-only: Prerequisite Types. (line 6) +* prerequisites, varying (static pattern): Static Pattern. (line 6) +* preserving intermediate files: Chained Rules. (line 63) +* preserving with .PRECIOUS: Special Targets. (line 32) +* preserving with .SECONDARY: Special Targets. (line 64) +* print (standard target): Goals. (line 98) +* print target: Wildcard Examples. (line 21) +* print target <1>: Empty Targets. (line 25) +* printing directories: -w Option. (line 6) +* printing messages: Make Control Functions. + (line 43) +* printing of recipes: Echoing. (line 6) +* printing user warnings: Make Control Functions. + (line 35) +* problems and bugs, reporting: Bugs. (line 6) +* problems with wildcards: Wildcard Pitfall. (line 6) +* processing a makefile: How Make Works. (line 6) +* question mode: Instead of Execution. + (line 32) +* quoting %, in patsubst: Text Functions. (line 27) +* quoting %, in static pattern: Static Usage. (line 37) +* quoting %, in vpath: Selective Search. (line 39) +* 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 51) +* RCS, rule to extract from: Catalogue of Rules. (line 167) +* reading from a file: File Function. (line 6) +* reading makefiles: Reading Makefiles. (line 6) +* README: Makefile Names. (line 9) +* realclean (standard target): Goals. (line 86) +* realpath: File Name Functions. (line 113) +* recipe: Simple Makefile. (line 74) +* recipe execution, single invocation: Special Targets. (line 185) +* recipe lines, single shell: One Shell. (line 6) +* recipe syntax: Recipe Syntax. (line 6) +* recipe, execution: Execution. (line 6) +* recipes: Rule Syntax. (line 25) +* recipes <1>: Recipes. (line 6) +* recipes setting shell variables: Execution. (line 12) +* recipes, and directory search: Recipes/Search. (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) +* recipes, empty: Empty Recipes. (line 6) +* recipes, errors in: Errors. (line 6) +* recipes, execution in parallel: Parallel. (line 6) +* recipes, how to write: Recipes. (line 6) +* recipes, instead of executing: Instead of Execution. + (line 6) +* recipes, introduction to: Rule Introduction. (line 8) +* recipes, quoting newlines in: Splitting Recipe Lines. + (line 6) +* recipes, splitting: Splitting Recipe Lines. + (line 6) +* recipes, using variables in: Variables in Recipes. + (line 6) +* recompilation: Introduction. (line 22) +* recompilation, avoiding: Avoiding Compilation. + (line 6) +* recording events with empty targets: Empty Targets. (line 6) +* recursion: Recursion. (line 6) +* recursion, and -C: Options/Recursion. (line 30) +* recursion, and -f: Options/Recursion. (line 30) +* recursion, and -j: Options/Recursion. (line 33) +* recursion, and -o: Options/Recursion. (line 30) +* recursion, and -t: MAKE Variable. (line 35) +* recursion, and -W: Options/Recursion. (line 30) +* recursion, and -w: -w Option. (line 20) +* recursion, and command line variable definitions: Options/Recursion. + (line 25) +* recursion, and environment: Variables/Recursion. (line 6) +* recursion, and MAKE variable: MAKE Variable. (line 6) +* recursion, and MAKEFILES variable: MAKEFILES Variable. (line 15) +* recursion, and options: Options/Recursion. (line 6) +* recursion, and printing directories: -w Option. (line 6) +* recursion, and variables: Variables/Recursion. (line 6) +* recursion, level of: Variables/Recursion. (line 122) +* recursive variable expansion: Using Variables. (line 6) +* recursive variable expansion <1>: Flavors. (line 6) +* recursively expanded variables: Flavors. (line 6) +* reference to variables: Reference. (line 6) +* reference to variables <1>: Advanced. (line 6) +* relinking: How Make Works. (line 47) +* remaking loaded objects: Remaking Loaded Objects. + (line 6) +* remaking makefiles: Remaking Makefiles. (line 6) +* removal of target files: Errors. (line 63) +* removal of target files <1>: Interrupts. (line 6) +* removing duplicate words: Text Functions. (line 156) +* removing targets on failure: Special Targets. (line 101) +* removing whitespace from split lines: Splitting Lines. (line 40) +* removing, to clean up: Cleanup. (line 6) +* reporting bugs: Bugs. (line 6) +* rm: Implicit Variables. (line 106) +* rm (shell command): Simple Makefile. (line 85) +* rm (shell command) <1>: Wildcard Examples. (line 12) +* rm (shell command) <2>: Phony Targets. (line 20) +* rm (shell command) <3>: Errors. (line 27) +* rule prerequisites: Rule Syntax. (line 47) +* rule syntax: Rule Syntax. (line 6) +* rule targets: Rule Syntax. (line 18) +* rule, double-colon (::): Double-Colon. (line 6) +* rule, explicit, definition of: Makefile Contents. (line 10) +* rule, how to write: Rules. (line 6) +* rule, implicit: Implicit Rules. (line 6) +* rule, implicit, and directory search: Implicit/Search. (line 6) +* rule, implicit, and VPATH: Implicit/Search. (line 6) +* rule, implicit, chains of: Chained Rules. (line 6) +* rule, implicit, definition of: Makefile Contents. (line 16) +* rule, implicit, how to use: Using Implicit. (line 6) +* rule, implicit, introduction to: make Deduces. (line 6) +* rule, implicit, predefined: Catalogue of Rules. (line 6) +* rule, introduction to: Rule Introduction. (line 6) +* rule, multiple for one target: Multiple Rules. (line 6) +* rule, no recipe or prerequisites: Force Targets. (line 6) +* rule, pattern: Pattern Intro. (line 6) +* rule, static pattern: Static Pattern. (line 6) +* rule, static pattern versus implicit: Static versus Implicit. + (line 6) +* rule, with multiple targets: Multiple Targets. (line 6) +* rules, and $: Rule Syntax. (line 33) +* s. (SCCS file prefix): Catalogue of Rules. (line 176) +* SCCS, rule to extract from: Catalogue of Rules. (line 176) +* search algorithm, implicit rule: Implicit Rule Search. + (line 6) +* search path for prerequisites (VPATH): Directory Search. (line 6) +* search path for prerequisites (VPATH), and implicit rules: Implicit/Search. + (line 6) +* search path for prerequisites (VPATH), and link libraries: Libraries/Search. + (line 6) +* searching for strings: Text Functions. (line 105) +* secondary expansion: Secondary Expansion. (line 6) +* secondary expansion and explicit rules: Secondary Expansion. + (line 103) +* secondary expansion and implicit rules: Secondary Expansion. + (line 143) +* secondary expansion and static pattern rules: Secondary Expansion. + (line 135) +* secondary files: Chained Rules. (line 63) +* secondary targets: Special Targets. (line 64) +* sed (shell command): Automatic Prerequisites. + (line 72) +* selecting a word: Text Functions. (line 160) +* selecting word lists: Text Functions. (line 169) +* sequences of commands: Canned Recipes. (line 6) +* setting options from environment: Options/Recursion. (line 89) +* setting options in makefiles: Options/Recursion. (line 89) +* setting variables: Setting. (line 6) +* several rules for one target: Multiple Rules. (line 6) +* several targets in a rule: Multiple Targets. (line 6) +* shar (standard target): Goals. (line 104) +* shell command, function for: Shell Function. (line 6) +* shell file name pattern (in include): Include. (line 13) +* shell variables, setting in recipes: Execution. (line 12) +* shell wildcards (in include): Include. (line 13) +* shell, choosing the: Choosing the Shell. (line 6) +* SHELL, exported value: Variables/Recursion. (line 21) +* SHELL, import from environment: Environment. (line 36) +* shell, in DOS and Windows: Choosing the Shell. (line 38) +* SHELL, MS-DOS specifics: Choosing the Shell. (line 44) +* SHELL, value of: Choosing the Shell. (line 6) +* signal: Interrupts. (line 6) +* silent operation: Echoing. (line 6) +* simple makefile: Simple Makefile. (line 6) +* simple variable expansion: Using Variables. (line 6) +* simplifying with variables: Variables Simplify. (line 6) +* simply expanded variables: Simple Assignment. (line 9) +* sorting words: Text Functions. (line 148) +* spaces, in variable values: Simple Assignment. (line 57) +* spaces, stripping: Text Functions. (line 81) +* special characters in function arguments: Syntax of Functions. + (line 40) +* special targets: Special Targets. (line 6) +* special variables: Special Variables. (line 6) +* specifying makefile name: Makefile Names. (line 31) +* splitting long lines: Splitting Lines. (line 6) +* splitting recipes: Splitting Recipe Lines. + (line 6) +* staged installs: DESTDIR. (line 6) +* standard input: Parallel Input. (line 6) +* standards conformance: Overview. (line 13) +* standards for makefiles: Makefile Conventions. + (line 6) +* static pattern rule: Static Pattern. (line 6) +* static pattern rule, syntax of: Static Usage. (line 6) +* static pattern rule, versus implicit: Static versus Implicit. + (line 6) +* static pattern rules, secondary expansion of: Secondary Expansion. + (line 135) +* stem: Static Usage. (line 17) +* stem <1>: Pattern Match. (line 6) +* stem, shortest: Pattern Match. (line 39) +* stem, variable for: Automatic Variables. (line 87) +* stopping make: Make Control Functions. + (line 11) +* strings, searching for: Text Functions. (line 105) +* stripping whitespace: Text Functions. (line 81) +* sub-make: Variables/Recursion. (line 6) +* subdirectories, recursion for: Recursion. (line 6) +* substitution variable reference: Substitution Refs. (line 6) +* suffix rule: Suffix Rules. (line 6) +* suffix rule, for archive: Archive Suffix Rules. + (line 6) +* suffix, adding: File Name Functions. (line 67) +* suffix, function to find: File Name Functions. (line 42) +* suffix, substituting in variables: Substitution Refs. (line 6) +* suppressing inheritance: Suppressing Inheritance. + (line 6) +* switches: Options Summary. (line 6) +* symbol directories, updating archive: Archive Symbols. (line 6) +* syntax of recipe: Recipe Syntax. (line 6) +* syntax of rules: Rule Syntax. (line 6) +* tab character (in commands): Rule Syntax. (line 25) +* tabs in rules: Rule Introduction. (line 21) +* TAGS (standard target): Goals. (line 112) +* tangle: Catalogue of Rules. (line 153) +* tangle <1>: Implicit Variables. (line 100) +* tar (standard target): Goals. (line 101) +* target: Rules. (line 6) +* target pattern, implicit: Pattern Intro. (line 9) +* target pattern, static (not implicit): Static Usage. (line 17) +* target, deleting on error: Errors. (line 63) +* target, deleting on interrupt: Interrupts. (line 6) +* target, expansion: Reading Makefiles. (line 103) +* target, multiple in pattern rule: Pattern Intro. (line 44) +* target, multiple rules for one: Multiple Rules. (line 6) +* target, touching: Instead of Execution. + (line 24) +* target-specific variables: Target-specific. (line 6) +* targets: Rule Syntax. (line 18) +* targets without a file: Phony Targets. (line 6) +* targets, built-in special: Special Targets. (line 6) +* targets, empty: Empty Targets. (line 6) +* targets, force: Force Targets. (line 6) +* targets, grouped: Multiple Targets. (line 61) +* targets, independent: Multiple Targets. (line 14) +* targets, introduction to: Rule Introduction. (line 8) +* targets, multiple: Multiple Targets. (line 6) +* targets, phony: Phony Targets. (line 6) +* TEMP: Temporary Files. (line 13) +* temporary files: Temporary Files. (line 6) +* terminal rule: Match-Anything Rules. + (line 6) +* terminal, output to: Terminal Output. (line 6) +* test (standard target): Goals. (line 116) +* testing compilation: Testing. (line 6) +* tex: Catalogue of Rules. (line 153) +* tex <1>: Implicit Variables. (line 87) +* TeX, rule to run: Catalogue of Rules. (line 153) +* texi2dvi: Catalogue of Rules. (line 160) +* texi2dvi <1>: Implicit Variables. (line 91) +* Texinfo, rule to format: Catalogue of Rules. (line 160) +* tilde (~): Wildcards. (line 16) +* TMP: Temporary Files. (line 13) +* TMPDIR: Temporary Files. (line 13) +* tools, sharing job slots: Job Slots. (line 6) +* touch (shell command): Wildcard Examples. (line 21) +* touch (shell command) <1>: Empty Targets. (line 25) +* touching files: Instead of Execution. + (line 24) +* traditional directory search (GPATH): Search Algorithm. (line 42) +* types of prerequisites: Prerequisite Types. (line 6) +* types, conversion of: Guile Types. (line 6) +* undefined variables, warning message: Options Summary. (line 354) +* 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) +* value, how a variable gets it: Values. (line 6) +* variable: Using Variables. (line 6) +* variable definition: Makefile Contents. (line 22) +* variable references in recipes: Variables in Recipes. + (line 6) +* variables: Variables Simplify. (line 6) +* variables, $ in name: Computed Names. (line 6) +* variables, and implicit rule: Automatic Variables. (line 6) +* variables, appending to: Appending. (line 6) +* variables, automatic: Automatic Variables. (line 6) +* variables, command line: Overriding. (line 6) +* variables, command line, and recursion: Options/Recursion. (line 25) +* variables, computed names: Computed Names. (line 6) +* variables, conditional assignment: Conditional Assignment. + (line 6) +* variables, defining verbatim: Multi-Line. (line 6) +* variables, environment: Variables/Recursion. (line 6) +* variables, environment <1>: Environment. (line 6) +* variables, exporting: Variables/Recursion. (line 6) +* variables, flavor of: Flavor Function. (line 6) +* variables, flavors: Flavors. (line 6) +* variables, how they get their values: Values. (line 6) +* variables, how to reference: Reference. (line 6) +* variables, immediate assignment: Immediate Assignment. + (line 6) +* variables, local: Let Function. (line 6) +* variables, loops in expansion: Recursive Assignment. + (line 40) +* variables, modified reference: Substitution Refs. (line 6) +* variables, multi-line: Multi-Line. (line 6) +* variables, nested references: Computed Names. (line 6) +* variables, origin of: Origin Function. (line 6) +* variables, overriding: Override Directive. (line 6) +* variables, overriding with arguments: Overriding. (line 6) +* variables, pattern-specific: Pattern-specific. (line 6) +* variables, recursively expanded: Flavors. (line 6) +* variables, setting: Setting. (line 6) +* variables, simply expanded: Simple Assignment. (line 9) +* variables, spaces in values: Simple Assignment. (line 57) +* 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 354) +* varying prerequisites: Static Pattern. (line 6) +* verbatim variable definition: Multi-Line. (line 6) +* vpath: Directory Search. (line 6) +* VPATH, and implicit rules: Implicit/Search. (line 6) +* VPATH, and link libraries: Libraries/Search. (line 6) +* warnings, printing: Make Control Functions. + (line 35) +* weave: Catalogue of Rules. (line 153) +* weave <1>: Implicit Variables. (line 94) +* Web, rule to run: Catalogue of Rules. (line 153) +* what if: Instead of Execution. + (line 41) +* whitespace, avoiding on line split: Splitting Lines. (line 40) +* whitespace, in variable values: Simple Assignment. (line 57) +* whitespace, stripping: Text Functions. (line 81) +* wildcard: Wildcards. (line 6) +* wildcard pitfalls: Wildcard Pitfall. (line 6) +* wildcard, function: File Name Functions. (line 106) +* wildcard, in archive member: Archive Members. (line 36) +* wildcard, in include: Include. (line 13) +* wildcards and MS-DOS/MS-Windows backslashes: Wildcard Pitfall. + (line 31) +* Windows, choosing a shell in: Choosing the Shell. (line 38) +* word, selecting a: Text Functions. (line 160) +* words, extracting first: Text Functions. (line 186) +* words, extracting last: Text Functions. (line 199) +* words, filtering: Text Functions. (line 116) +* words, filtering out: Text Functions. (line 134) +* words, finding number: Text Functions. (line 181) +* words, iterating over: Foreach Function. (line 6) +* words, joining lists: File Name Functions. (line 89) +* words, removing duplicates: Text Functions. (line 156) +* words, selecting lists of: Text Functions. (line 169) +* writing recipes: Recipes. (line 6) +* writing rules: Rules. (line 6) +* writing to a file: File Function. (line 6) +* yacc: Catalogue of Rules. (line 121) +* yacc <1>: Implicit Variables. (line 77) +* yacc <2>: Canned Recipes. (line 18) +* Yacc, rule to run: Catalogue of Rules. (line 121) + diff --git a/local/recipes/dev/gnu-make/source/doc/make.info-3 b/local/recipes/dev/gnu-make/source/doc/make.info-3 new file mode 100644 index 0000000000..d10e16b5e4 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/doc/make.info-3 differ diff --git a/local/recipes/dev/gnu-make/source/doc/make.texi b/local/recipes/dev/gnu-make/source/doc/make.texi new file mode 100644 index 0000000000..e3a3ade460 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/make.texi @@ -0,0 +1,13722 @@ +\input texinfo @c -*- Texinfo -*- +@c %**start of header +@setfilename make.info + +@include version.texi +@set EDITION 0.76 + +@settitle GNU @code{make} +@setchapternewpage odd +@c Combine the variable and function indices: +@syncodeindex vr fn +@c Combine the program and concept indices: +@syncodeindex pg cp +@c FSF publishers: format makebook.texi instead of using this file directly. +@c ISBN confirmed by Jasimin Huang on 25 Mar 2009 +@set ISBN 1-882114-83-3 +@c %**end of header + +@copying +This file documents the GNU @code{make} utility, which determines +automatically which pieces of a large program need to be recompiled, +and issues the commands to recompile them. + +This is Edition @value{EDITION}, last updated @value{UPDATED}, +of @cite{The GNU Make Manual}, for GNU @code{make} version @value{VERSION}. + +Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, +1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, +2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, +2020, 2021, 2022 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.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 ``GNU Free Documentation +License.'' + +(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and +modify this GNU manual. Buying copies from the FSF supports it in +developing GNU and promoting software freedom.'' +@end quotation +@end copying + +@c finalout + +@c ISPELL CHECK: done, 10 June 1993 --roland +@c ISPELL CHECK: done, 2000-06-25 --Martin Buchholz + + +@dircategory Software development +@direntry +* Make: (make). Remake files automatically. +@end direntry + +@iftex +@shorttitlepage GNU Make +@end iftex +@titlepage +@title GNU Make +@subtitle A Program for Directing Recompilation +@subtitle GNU @code{make} Version @value{VERSION} +@subtitle @value{UPDATED-MONTH} +@author Richard M. Stallman, Roland McGrath, Paul D. Smith +@page +@vskip 0pt plus 1filll +@insertcopying +@sp 2 +Published by the Free Software Foundation @* +51 Franklin St. -- Fifth Floor @* +Boston, MA 02110-1301 USA @* +ISBN @value{ISBN} @* +@sp 2 +Cover art by Etienne Suvasa. +@end titlepage + +@summarycontents +@contents + +@ifnottex +@node Top, Overview, (dir), (dir) +@top GNU @code{make} + +@insertcopying +@end ifnottex + +@menu +* Overview:: Overview of @code{make}. +* Introduction:: An introduction to @code{make}. +* Makefiles:: Makefiles tell @code{make} what to do. +* Rules:: Rules describe when a file must be remade. +* Recipes:: Recipes say how to remake a file. +* Using Variables:: You can use variables to avoid repetition. +* Conditionals:: Use or ignore parts of the makefile based + on the values of variables. +* Functions:: Many powerful ways to manipulate text. +* Invoking make: Running. How to invoke @code{make} on the command line. +* 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}. +* Integrating make:: Integrating @code{make} with other tools. +* 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 + GNU programs. +* Quick Reference:: A quick reference for experienced users. +* Error Messages:: A list of common errors generated by @code{make}. +* 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. + +@detailmenu + --- The Detailed Node Listing --- + +Overview of @code{make} + +* 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 recipes. +* Combine By Prerequisite:: Another style of makefile. +* Cleanup:: Rules for cleaning the directory. + +Writing Makefiles + +* Makefile Contents:: What makefiles contain. +* Makefile Names:: How to name your makefile. +* Include:: How one makefile can use another makefile. +* MAKEFILES Variable:: The environment can specify extra makefiles. +* Remaking Makefiles:: How makefiles get remade. +* Overriding Makefiles:: How to override part of one makefile + with another makefile. +* Reading Makefiles:: How makefiles are read in. +* Parsing 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. +* Rule Syntax:: General syntax explained. +* Prerequisite Types:: There are two types of prerequisites. +* 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 a recipe + or prerequisites to mark other targets + as phony. +* Empty Targets:: When only the date matters and the + files are empty. +* Special Targets:: Targets with special built-in meanings. +* Multiple Targets:: When to make use of several targets in a rule. +* Multiple Rules:: How to use several rules with the same target. +* Static Pattern:: Static pattern rules apply to multiple targets + and can vary the prerequisites according to + the target name. +* Double-Colon:: How to use a special kind of rule to allow + several independent rules for one target. +* Automatic Prerequisites:: How to automatically generate rules giving + prerequisites from source files themselves. + +Using Wildcard Characters in File Names + +* Wildcard Examples:: Several examples. +* Wildcard Pitfall:: Problems to avoid. +* Wildcard Function:: How to cause wildcard expansion where + it does not normally take place. + +Searching Directories for Prerequisites + +* General Search:: Specifying a search path that applies + to every prerequisite. +* 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 + with search paths. +* Implicit/Search:: How search paths affect implicit rules. +* Libraries/Search:: Directory search for link libraries. + +Static Pattern Rules + +* Static Usage:: The syntax of static pattern rules. +* Static versus Implicit:: When are they better than implicit rules? + +Writing Recipes in Rules + +* Recipe Syntax:: Recipe syntax features and pitfalls. +* Echoing:: How to control when recipes are echoed. +* Execution:: How recipes are executed. +* Parallel:: How recipes can be executed in parallel. +* Errors:: What happens after a recipe execution error. +* Interrupts:: What happens when a recipe is interrupted. +* Recursion:: Invoking @code{make} from makefiles. +* Canned Recipes:: Defining canned recipes. +* Empty Recipes:: Defining useful, do-nothing recipes. + +Recipe Syntax + +* 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 Disable:: Disabling 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)}. +* Variables/Recursion:: How to communicate variables to a sub-@code{make}. +* Options/Recursion:: How to communicate options to a sub-@code{make}. +* -w Option:: How the @samp{-w} or @samp{--print-directory} option + helps debug use of recursive @code{make} commands. + +How to Use Variables + +* Reference:: How to use the value of a variable. +* Flavors:: Variables come in two flavors. +* Advanced:: Advanced features for referencing a variable. +* Values:: All the ways variables get their values. +* Setting:: How to set a variable in the makefile. +* Appending:: How to append more text to the old value + of a variable. +* Override Directive:: How to set a variable in the makefile even if + 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. +* Pattern-specific:: Target-specific variable values can be applied + to a group of targets that match a pattern. +* Suppressing Inheritance:: Suppress inheritance of variables. +* Special Variables:: Variables with special meaning or behavior. + +The Two Flavors of Variables + +* Recursive Assignment:: Setting recursively expanded variables. +* Simple Assignment:: Setting simply expanded variables. +* Immediate Assignment:: Setting immediately expanded variables. +* Conditional Assignment:: Assigning variable values conditionally. + +Advanced Features for Reference to Variables + +* Substitution Refs:: Referencing a variable with + substitutions on the value. +* Computed Names:: Computing the name of the variable to refer to. + +Conditional Parts of Makefiles + +* Conditional Example:: Example of a conditional +* Conditional Syntax:: The syntax of conditionals. +* Testing Flags:: Conditionals that test flags. + +Functions for Transforming Text + +* Syntax of Functions:: How to write a function call. +* Text Functions:: General-purpose text manipulation functions. +* File Name Functions:: Functions for manipulating file names. +* Conditional Functions:: Functions that implement conditions. +* Let Function:: Local variables. +* 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. +* 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} + +* Makefile Arguments:: How to specify which makefile to use. +* Goals:: How to use goal arguments to specify which + parts of the makefile to use. +* Instead of Execution:: How to use mode flags to specify what + kind of thing to do with the recipes + in the makefile other than simply + execute them. +* Avoiding Compilation:: How to avoid recompiling certain files. +* Overriding:: How to override a variable to specify + an alternate compiler and other things. +* Testing:: How to proceed past some errors, to + test compilation. +* Temporary Files:: Where @code{make} keeps its temporary files. +* Options Summary:: Summary of Options + +Using Implicit Rules + +* 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 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. + +Defining and Redefining Pattern Rules + +* Pattern Intro:: An introduction to pattern rules. +* Pattern Examples:: Examples of pattern rules. +* Automatic Variables:: How to use automatic variables in the + recipe of implicit rules. +* Pattern Match:: How patterns match. +* Match-Anything Rules:: Precautions you should take prior to + defining rules that can match any + target file whatever. +* Canceling Rules:: How to override or cancel built-in rules. + +Using @code{make} to Update Archive Files + +* Archive Members:: Archive members as targets. +* Archive Update:: The implicit rule for archive member targets. +* Archive Pitfalls:: Dangers to watch out for when using archives. +* Archive Suffix Rules:: You can write a special kind of suffix rule + for updating archives. + +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 + +Integrating GNU @code{make} + +* Job Slots:: Share job slots with GNU @code{make}. +* Terminal Output:: Control output to terminals. + +Sharing Job Slots with GNU @code{make} + +* POSIX Jobserver:: Using the jobserver on POSIX systems. +* Windows Jobserver:: Using the jobserver on Windows systems. + +@end detailmenu +@end menu + +@node Overview, Introduction, Top, Top +@comment node-name, next, previous, up +@chapter Overview of @code{make} + +The @code{make} utility automatically determines which pieces of a large +program need to be recompiled, and issues commands to recompile them. +This manual describes GNU @code{make}, which was implemented by Richard +Stallman and Roland McGrath. Development since Version 3.76 has been +handled by Paul D. Smith. + +GNU @code{make} conforms to section 6.2 of @cite{IEEE Standard +1003.2-1992} (POSIX.2). +@cindex POSIX +@cindex IEEE Standard 1003.2 +@cindex standards conformance + +Our examples show C programs, since they are most common, but you can use +@code{make} with any programming language whose compiler can be run with a +shell command. Indeed, @code{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. + +@menu +* Preparing:: Preparing and running @code{make}. +* Reading:: On reading this text. +* Bugs:: Problems and bugs. +@end menu + +@node Preparing, Reading, Overview, Overview +@ifnottex +@heading Preparing and Running Make +@end ifnottex + +To prepare to use @code{make}, you must write a file called +the @dfn{makefile} that describes the relationships among files +in your program and provides 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. + +Once a suitable makefile exists, each time you change some source files, +this simple shell command: + +@example +make +@end example + +@noindent +suffices to perform all necessary recompilations. The @code{make} program +uses the makefile data base and the last-modification times of the files to +decide which of the files need to be updated. For each of those files, it +issues the recipes recorded in the data base. + +You can provide command line arguments to @code{make} to control which +files should be recompiled, or how. @xref{Running, ,How to Run +@code{make}}. + +@node Reading, Bugs, Preparing, Overview +@section How to Read This Manual + +If you are new to @code{make}, or are looking for a general +introduction, read the first few sections of each chapter, skipping the +later sections. In each chapter, the first few sections contain +introductory or general information and the later sections contain +specialized or technical information. +@ifnottex +The exception is the second chapter, @ref{Introduction, ,An +Introduction to Makefiles}, all of which is introductory. +@end ifnottex +@iftex +The exception is @ref{Introduction, ,An Introduction to Makefiles}, +all of which is introductory. +@end iftex + +If you are familiar with other @code{make} programs, see @ref{Features, +,Features of GNU @code{make}}, which lists the enhancements GNU +@code{make} has, and @ref{Missing, ,Incompatibilities and Missing +Features}, which explains the few things GNU @code{make} lacks that +others have. + +For a quick summary, see @ref{Options Summary}, @ref{Quick Reference}, +and @ref{Special Targets}. + +@node Bugs, , Reading, Overview +@section Problems and Bugs +@cindex reporting bugs +@cindex bugs, reporting +@cindex problems and bugs, reporting + +If you have problems with GNU @code{make} or think you've found a bug, +please report it to the developers; we cannot promise to do anything but +we might well want to fix it. + +Before reporting a bug, make sure you've actually found a real bug. +Carefully reread the documentation and see if it really says you can do +what you're trying to do. If it's not clear whether you should be able +to do something or not, report that too; it's a bug in the +documentation! + +Before reporting a bug or trying to fix it yourself, try to isolate it +to the smallest possible makefile that reproduces the problem. Then +send us the makefile and the exact results @code{make} gave you, +including any error or warning messages. Please don't paraphrase +these messages: it's best to cut and paste them into your report. +When generating this small makefile, be sure to not use any non-free +or unusual tools in your recipes: you can almost always emulate what +such a tool would do with simple shell commands. Finally, be sure to +explain what you expected to occur; this will help us decide whether +the problem was really in the documentation. + +Once you have a precise problem you can report it in one of two ways. +Either send electronic mail to: + +@example + bug-make@@gnu.org +@end example + +@noindent +or use our Web-based project management tool, at: + +@example + https://savannah.gnu.org/projects/make/ +@end example + +@noindent +In addition to the information above, please be careful to include the +version number of @code{make} you are using. You can get this +information with the command @samp{make --version}. Be sure also to +include the type of machine and operating system you are using. One +way to obtain this information is by looking at the final lines of +output from the command @samp{make --help}. + +If you have a code change you'd like to submit, see the @file{README} file +section ``Submitting Patches'' for information. + +@node Introduction, Makefiles, Overview, Top +@comment node-name, next, previous, up +@chapter An Introduction to Makefiles + +You need a file called a @dfn{makefile} to tell @code{make} what to do. +Most often, the makefile tells @code{make} how to compile and link a +program. +@cindex makefile + +In this chapter, we will discuss a simple makefile that describes how to +compile and link a text editor which consists of eight C source files +and three header files. The makefile can also tell @code{make} how to +run miscellaneous commands when explicitly asked (for example, to remove +certain files as a clean-up operation). To see a more complex example +of a makefile, see @ref{Complex Makefile}. + +When @code{make} recompiles the editor, each changed C source file +must be recompiled. If a header file has changed, each C source file +that includes the header file must be recompiled to be safe. Each +compilation produces an object file corresponding to the source file. +Finally, if any source file has been recompiled, all the object files, +whether newly made or saved from previous compilations, must be linked +together to produce the new executable editor. +@cindex recompilation +@cindex 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. +@end menu + +@node Rule Introduction, Simple Makefile, Introduction, Introduction +@comment node-name, next, previous, up +@section What a Rule Looks Like +@cindex rule, introduction to +@cindex makefile rule parts +@cindex parts of makefile rule + +A simple makefile consists of ``rules'' with the following shape: + +@cindex targets, introduction to +@cindex prerequisites, introduction to +@cindex recipes, introduction to +@example +@group +@var{target} @dots{} : @var{prerequisites} @dots{} + @var{recipe} + @dots{} + @dots{} +@end group +@end example + +A @dfn{target} is usually the name of a file that is generated by a +program; examples of targets are executable or object files. A target +can also be the name of an action to carry out, such as @samp{clean} +(@pxref{Phony Targets}). + +A @dfn{prerequisite} is a file that is used as input to create the +target. A target often depends on several files. + +@cindex tabs in rules +A @dfn{recipe} is an action that @code{make} carries out. A recipe +may have more than one command, either on the same line or each on its +own line. @strong{Please note:} you need to put a tab character at +the beginning of every recipe line! This is an obscurity that catches +the unwary. If you prefer to prefix your recipes with a character +other than tab, you can set the @code{.RECIPEPREFIX} variable to an +alternate character (@pxref{Special Variables}). + +Usually a recipe is in a rule with prerequisites and serves to create a +target file if any of the prerequisites change. However, the rule that +specifies a recipe for the target need not have prerequisites. For +example, the rule containing the delete command associated with the +target @samp{clean} does not have prerequisites. + +A @dfn{rule}, then, explains how and when to remake certain files +which are the targets of the particular rule. @code{make} carries out +the recipe on the prerequisites to create or update the target. A +rule can also explain how and when to carry out an action. +@xref{Rules, , Writing Rules}. + +A makefile may contain other text besides rules, but a simple makefile +need only contain rules. Rules may look somewhat more complicated +than shown in this template, but all fit the pattern more or less. + +@node Simple Makefile, How Make Works, Rule Introduction, Introduction +@section A Simple Makefile +@cindex simple makefile +@cindex makefile, simple + +Here is a straightforward makefile that describes the way an +executable file called @code{edit} depends on eight object files +which, in turn, depend on eight C source and three header files. + +In this example, all the C files include @file{defs.h}, but only those +defining editing commands include @file{command.h}, and only low +level files that change the editor buffer include @file{buffer.h}. + +@example +@group +edit : main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + cc -o edit main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + +main.o : main.c defs.h + cc -c main.c +kbd.o : kbd.c defs.h command.h + cc -c kbd.c +command.o : command.c defs.h command.h + cc -c command.c +display.o : display.c defs.h buffer.h + cc -c display.c +insert.o : insert.c defs.h buffer.h + cc -c insert.c +search.o : search.c defs.h buffer.h + cc -c search.c +files.o : files.c defs.h buffer.h command.h + cc -c files.c +utils.o : utils.c defs.h + cc -c utils.c +clean : + rm edit main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o +@end group +@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. @xref{Splitting Lines, +, Splitting Long Lines}. +@cindex continuation lines +@cindex @code{\} (backslash), for continuation lines +@cindex backslash (@code{\}), for continuation lines +@cindex quoting newline, in makefile +@cindex newline, quoting, in makefile + +To use this makefile to create the executable file called @file{edit}, +type: + +@example +make +@end example + +To use this makefile to delete the executable file and all the object +files from the directory, type: + +@example +make clean +@end example + +In the example makefile, the targets include the executable file +@samp{edit}, and the object files @samp{main.o} and @samp{kbd.o}. The +prerequisites are files such as @samp{main.c} and @samp{defs.h}. +In fact, each @samp{.o} file is both a target and a prerequisite. +Recipes include @w{@samp{cc -c main.c}} and @w{@samp{cc -c kbd.c}}. + +When a target is a file, it needs to be recompiled or relinked if any +of its prerequisites change. In addition, any prerequisites that are +themselves automatically generated should be updated first. In this +example, @file{edit} depends on each of the eight object files; the +object file @file{main.o} depends on the source file @file{main.c} and +on the header file @file{defs.h}. + +A recipe may follow each line that contains a target and +prerequisites. These recipes say how to update the target file. A +tab character (or whatever character is specified by the +@code{.RECIPEPREFIX} variable; @pxref{Special Variables}) must come at +the beginning of every line in the recipe to distinguish recipes from +other lines in the makefile. (Bear in mind that @code{make} does not +know anything about how the recipes work. It is up to you to supply +recipes that will update the target file properly. All @code{make} +does is execute the recipe you have specified when the target file +needs to be updated.) +@cindex recipe + +The target @samp{clean} is not a file, but merely the name of an +action. Since you normally do not want to carry out the actions in +this rule, @samp{clean} is not a prerequisite of any other rule. +Consequently, @code{make} never does anything with it unless you tell +it specifically. Note that this rule not only is not a prerequisite, +it also does not have any prerequisites, so the only purpose of the +rule is to run the specified recipe. Targets that do not refer to +files but are just actions are called @dfn{phony targets}. +@xref{Phony Targets}, for information about this kind of target. +@xref{Errors, , Errors in Recipes}, to see how to cause @code{make} +to ignore errors from @code{rm} or any other command. +@cindex @code{clean} target +@cindex @code{rm} (shell command) + +@node How Make Works, Variables Simplify, Simple Makefile, Introduction +@comment node-name, next, previous, up +@section How @code{make} Processes a Makefile +@cindex processing a makefile +@cindex makefile, how @code{make} processes + +By default, @code{make} starts with the first target (not targets whose names +start with @samp{.} unless they also contain one or more @samp{/}). This is +called the @dfn{default goal}. (@dfn{Goals} are the targets that @code{make} +strives ultimately to update. You can override this behavior using the +command line (@pxref{Goals, , Arguments to Specify the Goals}) or with the +@code{.DEFAULT_GOAL} special variable (@pxref{Special Variables, , Other +Special Variables}). +@cindex default goal +@cindex goal, default +@cindex goal + +In the simple example of the previous section, the default goal is to +update the executable program @file{edit}; therefore, we put that rule +first. + +Thus, when you give the command: + +@example +make +@end example + +@noindent +@code{make} reads the makefile in the current directory and begins by +processing the first rule. In the example, this rule is for relinking +@file{edit}; but before @code{make} can fully process this rule, it +must process the rules for the files that @file{edit} depends on, +which in this case are the object files. Each of these files is +processed according to its own rule. These rules say to update each +@samp{.o} file by compiling its source file. The recompilation must +be done if the source file, or any of the header files named as +prerequisites, is more recent than the object file, or if the object +file does not exist. + +The other rules are processed because their targets appear as +prerequisites of the goal. If some other rule is not depended on by the +goal (or anything it depends on, etc.), that rule is not processed, +unless you tell @code{make} to do so (with a command such as +@w{@code{make clean}}). + +Before recompiling an object file, @code{make} considers updating its +prerequisites, the source file and header files. This makefile does not +specify anything to be done for them---the @samp{.c} and @samp{.h} files +are not the targets of any rules---so @code{make} does nothing for these +files. But @code{make} would update automatically generated C programs, +such as those made by Bison or Yacc, by their own rules at this time. + +After recompiling whichever object files need it, @code{make} decides +whether to relink @file{edit}. This must be done if the file +@file{edit} does not exist, or if any of the object files are newer than +it. If an object file was just recompiled, it is now newer than +@file{edit}, so @file{edit} is relinked. +@cindex relinking + +Thus, if we change the file @file{insert.c} and run @code{make}, +@code{make} will compile that file to update @file{insert.o}, and then +link @file{edit}. If we change the file @file{command.h} and run +@code{make}, @code{make} will recompile the object files @file{kbd.o}, +@file{command.o} and @file{files.o} and then link the file @file{edit}. + +@node Variables Simplify, make Deduces, How Make Works, Introduction +@section Variables Make Makefiles Simpler +@cindex variables +@cindex simplifying with variables + +In our example, we had to list all the object files twice in the rule for +@file{edit} (repeated here): + +@example +@group +edit : main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + cc -o edit main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o +@end group +@end example + +@cindex @code{objects} +Such duplication is error-prone; if a new object file is added to the +system, we might add it to one list and forget the other. We can eliminate +the risk and simplify the makefile by using a variable. @dfn{Variables} +allow a text string to be defined once and substituted in multiple places +later (@pxref{Using Variables, ,How to Use Variables}). + +@cindex @code{OBJECTS} +@cindex @code{objs} +@cindex @code{OBJS} +@cindex @code{obj} +@cindex @code{OBJ} +It is standard practice for every makefile to have a variable named +@code{objects}, @code{OBJECTS}, @code{objs}, @code{OBJS}, @code{obj}, +or @code{OBJ} which is a list of all object file names. We would +define such a variable @code{objects} with a line like this in the +makefile: + +@example +@group +objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o +@end group +@end example + +@noindent +Then, each place we want to put a list of the object file names, we can +substitute the variable's value by writing @samp{$(objects)} +(@pxref{Using Variables, ,How to Use Variables}). + +Here is how the complete simple makefile looks when you use a variable +for the object files: + +@example +@group +objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + +edit : $(objects) + cc -o edit $(objects) +main.o : main.c defs.h + cc -c main.c +kbd.o : kbd.c defs.h command.h + cc -c kbd.c +command.o : command.c defs.h command.h + cc -c command.c +display.o : display.c defs.h buffer.h + cc -c display.c +insert.o : insert.c defs.h buffer.h + cc -c insert.c +search.o : search.c defs.h buffer.h + cc -c search.c +files.o : files.c defs.h buffer.h command.h + cc -c files.c +utils.o : utils.c defs.h + cc -c utils.c +clean : + rm edit $(objects) +@end group +@end example + +@node make Deduces, Combine By Prerequisite, Variables Simplify, Introduction +@section Letting @code{make} Deduce the Recipes +@cindex deducing recipes (implicit rules) +@cindex implicit rule, introduction to +@cindex rule, implicit, introduction to + +It is not necessary to spell out the recipes for compiling the individual +C source files, because @code{make} can figure them out: it has an +@dfn{implicit rule} for updating a @samp{.o} file from a correspondingly +named @samp{.c} file using a @samp{cc -c} command. For example, it will +use the recipe @samp{cc -c main.c -o main.o} to compile @file{main.c} into +@file{main.o}. We can therefore omit the recipes from the rules for the +object files. @xref{Implicit Rules, ,Using Implicit Rules}. + +When a @samp{.c} file is used automatically in this way, it is also +automatically added to the list of prerequisites. We can therefore omit +the @samp{.c} files from the prerequisites, provided we omit the recipe. + +Here is the entire example, with both of these changes, and a variable +@code{objects} as suggested above: + +@example +@group +objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + +edit : $(objects) + cc -o edit $(objects) + +main.o : defs.h +kbd.o : defs.h command.h +command.o : defs.h command.h +display.o : defs.h buffer.h +insert.o : defs.h buffer.h +search.o : defs.h buffer.h +files.o : defs.h buffer.h command.h +utils.o : defs.h + +.PHONY : clean +clean : + rm edit $(objects) +@end group +@end example + +@noindent +This is how we would write the makefile in actual practice. (The +complications associated with @samp{clean} are described elsewhere. +See @ref{Phony Targets}, and @ref{Errors, ,Errors in Recipes}.) + +Because implicit rules are so convenient, they are important. You +will see them used frequently. + +@node Combine By Prerequisite, Cleanup, make Deduces, Introduction +@section Another Style of Makefile +@cindex combining rules by prerequisite + +When the objects of a makefile are created only by implicit rules, an +alternative style of makefile is possible. In this style of makefile, +you group entries by their prerequisites instead of by their targets. +Here is what one looks like: + +@example +@group +objects = main.o kbd.o command.o display.o \ + insert.o search.o files.o utils.o + +edit : $(objects) + cc -o edit $(objects) + +$(objects) : defs.h +kbd.o command.o files.o : command.h +display.o insert.o search.o files.o : buffer.h +@end group +@end example + +@noindent +Here @file{defs.h} is given as a prerequisite of all the object files; +@file{command.h} and @file{buffer.h} are prerequisites of the specific +object files listed for them. + +Whether this is better is a matter of taste: it is more compact, but some +people dislike it because they find it clearer to put all the information +about each target in one place. + +@node Cleanup, , Combine By Prerequisite, Introduction +@section Rules for Cleaning the Directory +@cindex cleaning up +@cindex removing, to clean up + +Compiling a program is not the only thing you might want to write rules +for. Makefiles commonly tell how to do a few other things besides +compiling a program: for example, how to delete all the object files +and executables so that the directory is @samp{clean}. + +@cindex @code{clean} target +Here is how we +could write a @code{make} rule for cleaning our example editor: + +@example +@group +clean: + rm edit $(objects) +@end group +@end example + +In practice, we might want to write the rule in a somewhat more +complicated manner to handle unanticipated situations. We would do this: + +@example +@group +.PHONY : clean +clean : + -rm edit $(objects) +@end group +@end example + +@noindent +This prevents @code{make} from getting confused by an actual file +called @file{clean} and causes it to continue in spite of errors from +@code{rm}. (See @ref{Phony Targets}, and @ref{Errors, ,Errors in +Recipes}.) + +@noindent +A rule such as this should not be placed at the beginning of the +makefile, because we do not want it to run by default! Thus, in the +example makefile, we want the rule for @code{edit}, which recompiles +the editor, to remain the default goal. + +Since @code{clean} is not a prerequisite of @code{edit}, this rule will not +run at all if we give the command @samp{make} with no arguments. In +order to make the rule run, we have to type @samp{make clean}. +@xref{Running, ,How to Run @code{make}}. + +@node Makefiles, Rules, Introduction, Top +@chapter Writing Makefiles + +@cindex makefile, how to write +The information that tells @code{make} how to recompile a system comes from +reading a data base called the @dfn{makefile}. + +@menu +* Makefile Contents:: What makefiles contain. +* Makefile Names:: How to name your makefile. +* Include:: How one makefile can use another makefile. +* MAKEFILES Variable:: The environment can specify extra makefiles. +* Remaking Makefiles:: How makefiles get remade. +* Overriding Makefiles:: How to override part of one makefile + with another makefile. +* Reading Makefiles:: How makefiles are read in. +* Parsing Makefiles:: How makefiles are parsed. +* Secondary Expansion:: How and when secondary expansion is performed. +@end menu + +@node Makefile Contents, Makefile Names, Makefiles, Makefiles +@section What Makefiles Contain + +Makefiles contain five kinds of things: @dfn{explicit rules}, +@dfn{implicit rules}, @dfn{variable definitions}, @dfn{directives}, +and @dfn{comments}. Rules, variables, and directives are described at +length in later chapters. + +@itemize @bullet +@cindex rule, explicit, definition of +@cindex explicit rule, definition of +@item +An @dfn{explicit rule} says when and how to remake one or more files, +called the rule's @dfn{targets}. It lists the other files that the +targets depend on, called the @dfn{prerequisites} of the target, and +may also give a recipe to use to create or update the targets. +@xref{Rules, ,Writing Rules}. + +@cindex rule, implicit, definition of +@cindex implicit rule, definition of +@item +An @dfn{implicit rule} says when and how to remake a class of files +based on their names. It describes how a target may depend on a file +with a name similar to the target and gives a recipe to create or +update such a target. @xref{Implicit Rules, ,Using Implicit Rules}. + +@cindex variable definition +@item +A @dfn{variable definition} is a line that specifies a text string +value for a variable that can be substituted into the text later. The +simple makefile example shows a variable definition for @code{objects} +as a list of all object files (@pxref{Variables Simplify, , Variables +Make Makefiles Simpler}). + +@cindex directive +@item +A @dfn{directive} is an instruction for @code{make} to do something +special while reading the makefile. These include: + +@itemize @bullet +@item +Reading another makefile (@pxref{Include, ,Including Other Makefiles}). + +@item +Deciding (based on the values of variables) whether to use or +ignore a part of the makefile (@pxref{Conditionals, ,Conditional Parts of Makefiles}). + +@item +Defining a variable from a verbatim string containing multiple lines +(@pxref{Multi-Line, ,Defining Multi-Line Variables}). +@end itemize + +@cindex comments, in makefile +@cindex @code{#} (comments), in makefile +@item +@samp{#} in a line of a makefile starts a @dfn{comment}. It and the +rest of the line are ignored, except that a trailing backslash not +escaped by another backslash will continue the comment across multiple +lines. A line containing just a comment (with perhaps spaces before +it) is effectively blank, and is ignored. If you want a literal +@code{#}, escape it with a backslash (e.g., @code{\#}). Comments may +appear on any line in the makefile, although they are treated +specially in certain situations. + +You cannot use comments within variable references or function calls: +any instance of @code{#} will be treated literally (rather than as the +start of a comment) inside a variable reference or function call. + +Comments within a recipe are passed to the shell, just as with any +other recipe text. The shell decides how to interpret it: whether or +not this is a comment is up to the shell. + +Within a @code{define} directive, comments are not ignored during the +definition of the variable, but rather kept intact in the value of the +variable. When the variable is expanded they will either be treated +as @code{make} comments or as 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. + +@subsubheading Splitting Without Adding Whitespace +@cindex whitespace, avoiding on line split +@cindex removing whitespace from split lines + +If you need to split a line but do @emph{not} want any whitespace +added, you can utilize a subtle trick: replace your backslash/newline +pairs with the three characters dollar sign, backslash, and newline: + +@example +var := one$\ + word +@end example + +After @code{make} removes the backslash/newline and condenses the +following line into a single space, this is equivalent to: + +@example +var := one$ word +@end example + +Then @code{make} will perform variable expansion. The variable +reference @samp{$ } refers to a variable with the one-character name +`` '' (space) which does not exist, and so expands to the empty +string, giving a final assignment which is the equivalent of: + +@example +var := oneword +@end example + + +@node Makefile Names, Include, Makefile Contents, Makefiles +@section What Name to Give Your Makefile +@cindex makefile name +@cindex name of makefile +@cindex default makefile name +@cindex file name of makefile + +@c following paragraph rewritten to avoid overfull hbox +By default, when @code{make} looks for the makefile, it tries the +following names, in order: @file{GNUmakefile}, @file{makefile} +and @file{Makefile}. +@findex Makefile +@findex GNUmakefile +@findex makefile + +@cindex @code{README} +Normally you should call your makefile either @file{makefile} or +@file{Makefile}. (We recommend @file{Makefile} because it appears +prominently near the beginning of a directory listing, right near other +important files such as @file{README}.) The first name checked, +@file{GNUmakefile}, is not recommended for most makefiles. You should +use this name if you have a makefile that is specific to GNU +@code{make}, and will not be understood by other versions of +@code{make}. Other @code{make} programs look for @file{makefile} and +@file{Makefile}, but not @file{GNUmakefile}. + +If @code{make} finds none of these names, it does not use any makefile. +Then you must specify a goal with a command argument, and @code{make} +will attempt to figure out how to remake it using only its built-in +implicit rules. @xref{Implicit Rules, ,Using Implicit Rules}. + +@cindex @code{-f} +@cindex @code{--file} +@cindex @code{--makefile} +If you want to use a nonstandard name for your makefile, you can specify +the makefile name with the @samp{-f} or @samp{--file} option. The +arguments @w{@samp{-f @var{name}}} or @w{@samp{--file=@var{name}}} tell +@code{make} to read the file @var{name} as the makefile. If you use +more than one @samp{-f} or @samp{--file} option, you can specify several +makefiles. All the makefiles are effectively concatenated in the order +specified. The default makefile names @file{GNUmakefile}, +@file{makefile} and @file{Makefile} are not checked automatically if you +specify @samp{-f} or @samp{--file}. +@cindex specifying makefile name +@cindex makefile name, how to specify +@cindex name of makefile, how to specify +@cindex file name of makefile, how to specify + +@node Include, MAKEFILES Variable, Makefile Names, Makefiles +@section Including Other Makefiles +@cindex including other makefiles +@cindex makefile, including + +@findex include +The @code{include} directive tells @code{make} to suspend reading the +current makefile and read one or more other makefiles before continuing. +The directive is a line in the makefile that looks like this: + +@example +include @var{filenames}@dots{} +@end example + +@noindent +@var{filenames} can contain shell file name patterns. If +@var{filenames} is empty, nothing is included and no error is printed. +@cindex shell file name pattern (in @code{include}) +@cindex shell wildcards (in @code{include}) +@cindex wildcard, in @code{include} + +Extra spaces are allowed and ignored at the beginning of the line, but +the first character must not be a tab (or the value of +@code{.RECIPEPREFIX})---if the line begins with a tab, it will be +considered a recipe line. Whitespace is required between +@code{include} and the file names, and between file names; extra +whitespace is ignored there and at the end of the directive. A +comment starting with @samp{#} is allowed at the end of the line. If +the file names contain any variable or function references, they are +expanded. @xref{Using Variables, ,How to Use Variables}. + +For example, if you have three @file{.mk} files, @file{a.mk}, +@file{b.mk}, and @file{c.mk}, and @code{$(bar)} expands to +@code{bish bash}, then the following expression + +@example +include foo *.mk $(bar) +@end example + +is equivalent to + +@example +include foo a.mk b.mk c.mk bish bash +@end example + +When @code{make} processes an @code{include} directive, it suspends +reading of the containing makefile and reads from each listed file in +turn. When that is finished, @code{make} resumes reading the +makefile in which the directive appears. + +One occasion for using @code{include} directives is when several programs, +handled by individual makefiles in various directories, need to use a +common set of variable definitions +(@pxref{Setting, ,Setting Variables}) or pattern rules +(@pxref{Pattern Rules, ,Defining and Redefining Pattern Rules}). + +Another such occasion is when you want to generate prerequisites from +source files automatically; the prerequisites can be put in a file that +is included by the main makefile. This practice is generally cleaner +than that of somehow appending the prerequisites to the end of the main +makefile as has been traditionally done with other versions of +@code{make}. @xref{Automatic Prerequisites}. +@cindex prerequisites, automatic generation +@cindex automatic generation of prerequisites +@cindex generating prerequisites automatically + +@cindex @code{-I} +@cindex @code{--include-dir} +@cindex included makefiles, default directories +@cindex default directories for included makefiles +@findex /usr/gnu/include +@findex /usr/local/include +@findex /usr/include +If the specified name does not start with a slash, and the file is not +found in the current directory, several other directories are searched. +First, any directories you have specified with the @samp{-I} or +@samp{--include-dir} options are searched +(@pxref{Options Summary, ,Summary of Options}). +Then the following directories (if they exist) +are searched, in this order: +@file{@var{prefix}/include} (normally @file{/usr/local/include} +@footnote{GNU Make compiled for MS-DOS and MS-Windows behaves as if +@var{prefix} has been defined to be the root of the DJGPP tree +hierarchy.}) +@file{/usr/gnu/include}, +@file{/usr/local/include}, @file{/usr/include}. + +The @code{.INCLUDE_DIRS} variable will contain the current list of +directories that make will search for included files. @xref{Special +Variables, ,Other Special Variables}. + +You can avoid searching in these default directories by adding the +command line option @code{-I} with the special value @code{-} (e.g., +@code{-I-}) to the command line. This will cause @code{make} to +forget any already-set include directories, including the default +directories. + +If an included makefile cannot be found in any of these directories it is not +an immediately fatal error; processing of the makefile containing the +@code{include} continues. Once it has finished reading makefiles, @code{make} +will try to remake any that are out of date or don't exist. @xref{Remaking +Makefiles, ,How Makefiles Are Remade}. Only after it has failed to find a +rule to remake the makefile, or it found a rule but the recipe failed, will +@code{make} diagnose the missing makefile as a fatal error. + +If you want @code{make} to simply ignore a makefile which does not exist +or cannot be remade, with no error message, use the @w{@code{-include}} +directive instead of @code{include}, like this: + +@example +-include @var{filenames}@dots{} +@end example + +This acts like @code{include} in every way except that there is no +error (not even a warning) if any of the @var{filenames} (or any +prerequisites of any of the @var{filenames}) do not exist or cannot be +remade. + +For compatibility with some other @code{make} implementations, +@code{sinclude} is another name for @w{@code{-include}}. + +@node MAKEFILES Variable, Remaking Makefiles, Include, Makefiles +@section The Variable @code{MAKEFILES} +@cindex makefile, and @code{MAKEFILES} variable +@cindex including (@code{MAKEFILES} variable) + +@vindex MAKEFILES +If the environment variable @code{MAKEFILES} is defined, @code{make} +considers its value as a list of names (separated by whitespace) of +additional makefiles to be read before the others. This works much +like the @code{include} directive: various directories are searched +for those files (@pxref{Include, ,Including Other Makefiles}). In +addition, the default goal is never taken from one of these makefiles +(or any makefile included by them) and it is not an error if the files +listed in @code{MAKEFILES} are not found. + +@cindex recursion, and @code{MAKEFILES} variable +The main use of @code{MAKEFILES} is in communication between recursive +invocations of @code{make} (@pxref{Recursion, ,Recursive Use of +@code{make}}). It usually is not desirable to set the environment +variable before a top-level invocation of @code{make}, because it is +usually better not to mess with a makefile from outside. However, if +you are running @code{make} without a specific makefile, a makefile in +@code{MAKEFILES} can do useful things to help the built-in implicit +rules work better, such as defining search paths (@pxref{Directory Search}). + +Some users are tempted to set @code{MAKEFILES} in the environment +automatically on login, and program makefiles to expect this to be done. +This is a very bad idea, because such makefiles will fail to work if run by +anyone else. It is much better to write explicit @code{include} directives +in the makefiles. @xref{Include, , Including Other Makefiles}. + +@node Remaking Makefiles, Overriding Makefiles, MAKEFILES Variable, Makefiles +@section How Makefiles Are Remade +@cindex updating makefiles +@cindex remaking makefiles +@cindex makefile, remaking of +Sometimes makefiles can be remade from other files, such as RCS or SCCS +files. If a makefile can be remade from other files, you probably want +@code{make} to get an up-to-date version of the makefile to read in. + +To this end, after reading in all makefiles @code{make} will consider +each as a goal target, in the order in which they were processed, and +attempt to update it. If parallel builds (@pxref{Parallel, ,Parallel +Execution}) are enabled then makefiles will be rebuilt in parallel as +well. + +If a makefile has a rule which says how to update it (found either in +that very makefile or in another one) or if an implicit rule applies +to it (@pxref{Implicit Rules, ,Using Implicit Rules}), it will be +updated if necessary. After all makefiles have been checked, if any +have actually been changed, @code{make} starts with a clean slate and +reads all the makefiles over again. (It will also attempt to update +each of them over again, but normally this will not change them again, +since they are already up to date.) Each restart will cause the +special variable @code{MAKE_RESTARTS} to be updated (@pxref{Special +Variables}). + +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 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}). + +If the makefiles specify a double-colon rule to remake a file with a recipe +but no prerequisites, that file will always be remade (@pxref{Double-Colon}). +In the case of makefiles, a makefile that has a double-colon rule with a +recipe but no prerequisites will be remade every time @code{make} is run, and +then again after @code{make} starts over and reads the makefiles in again. +This would cause an infinite loop: @code{make} would constantly remake the +makefile and restart, and never do anything else. So, to avoid this, +@code{make} will @strong{not} attempt to remake makefiles which are specified +as targets of a double-colon rule with a recipe but no prerequisites. + +Phony targets (@pxref{Phony Targets}) have the same effect: they are never +considered up-to-date and so an included file marked as phony would cause +@code{make} to restart continuously. To avoid this @code{make} will not +attempt to remake makefiles which are marked phony. + +You can take advantage of this to optimize startup time: if you know you don't +need your @file{Makefile} to be remade you can prevent make from trying to +remake it by adding either: + +@example +.PHONY: Makefile +@end example + +or: + +@example +Makefile:: ; +@end example + +If you do not specify any makefiles to be read with @samp{-f} or +@samp{--file} options, @code{make} will try the default makefile names; +@pxref{Makefile Names, ,What Name to Give Your Makefile}. Unlike +makefiles explicitly requested with @samp{-f} or @samp{--file} options, +@code{make} is not certain that these makefiles should exist. However, +if a default makefile does not exist but can be created by running +@code{make} rules, you probably want the rules to be run so that the +makefile can be used. + +Therefore, if none of the default makefiles exists, @code{make} will +try to make each of them until it succeeds in making one, or it runs +out of names to try. Note that it is not an error if @code{make} +cannot find or make any makefile; a makefile is not always +necessary. + +When you use the @samp{-t} or @samp{--touch} option +(@pxref{Instead of Execution, ,Instead of Executing Recipes}), +you would not want to use an out-of-date makefile to decide which +targets to touch. So the @samp{-t} option has no effect on updating +makefiles; they are really updated even if @samp{-t} is specified. +Likewise, @samp{-q} (or @samp{--question}) and @samp{-n} (or +@samp{--just-print}) do not prevent updating of makefiles, because an +out-of-date makefile would result in the wrong output for other targets. +Thus, @samp{make -f mfile -n foo} will update @file{mfile}, read it in, +and then print the recipe to update @file{foo} and its prerequisites +without running it. The recipe printed for @file{foo} will be the one +specified in the updated contents of @file{mfile}. + +However, on occasion you might actually wish to prevent updating of even +the makefiles. You can do this by specifying the makefiles as goals in +the command line as well as specifying them as makefiles. When the +makefile name is specified explicitly as a goal, the options @samp{-t} +and so on do apply to them. + +Thus, @samp{make -f mfile -n mfile foo} would read the makefile +@file{mfile}, print the recipe needed to update it without actually +running it, and then print the recipe needed to update @file{foo} +without running that. The recipe for @file{foo} will be the one +specified by the existing contents of @file{mfile}. + +@node Overriding Makefiles, Reading Makefiles, Remaking Makefiles, Makefiles +@section Overriding Part of Another Makefile + +@cindex overriding makefiles +@cindex makefile, overriding +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 invalid for two makefiles to give different recipes for +the same target. But there is another way. + +@cindex match-anything rule, used to override +In the containing makefile (the one that wants to include the other), +you can use a match-anything pattern rule to say that to remake any +target that cannot be made from the information in the containing +makefile, @code{make} should look in another makefile. +@xref{Pattern Rules}, for more information on pattern rules. + +For example, if you have a makefile called @file{Makefile} that says how +to make the target @samp{foo} (and other targets), you can write a +makefile called @file{GNUmakefile} that contains: + +@example +foo: + frobnicate > foo + +%: force + @@$(MAKE) -f Makefile $@@ +force: ; +@end example + +If you say @samp{make foo}, @code{make} will find @file{GNUmakefile}, +read it, and see that to make @file{foo}, it needs to run the recipe +@samp{frobnicate > foo}. If you say @samp{make bar}, @code{make} will +find no way to make @file{bar} in @file{GNUmakefile}, so it will use the +recipe from the pattern rule: @samp{make -f Makefile bar}. If +@file{Makefile} provides a rule for updating @file{bar}, @code{make} +will apply the rule. And likewise for any other target that +@file{GNUmakefile} does not say how to make. + +The way this works is that the pattern rule has a pattern of just +@samp{%}, so it matches any target whatever. The rule specifies a +prerequisite @file{force}, to guarantee that the recipe will be run even +if the target file already exists. We give the @file{force} target an +empty recipe to prevent @code{make} from searching for an implicit rule to +build it---otherwise it would apply the same match-anything rule to +@file{force} itself and create a prerequisite loop! + +@node Reading Makefiles, Parsing Makefiles, Overriding Makefiles, Makefiles +@section How @code{make} Reads a Makefile +@cindex reading makefiles +@cindex makefile, reading + +GNU @code{make} does its work in two distinct phases. During the +first phase it reads all the makefiles, included makefiles, etc. and +internalizes all the variables and their values and implicit and +explicit rules, and builds a dependency graph of all the targets and +their prerequisites. During the second phase, @code{make} uses this +internalized data to determine which targets need to be updated and +run the recipes necessary to update them. + +It's important to understand this two-phase approach because it has a +direct impact on how variable and function expansion happens; this is +often a source of some confusion when writing makefiles. Below is a +summary of the different constructs that can be found in a makefile, +and the phase in which expansion happens for each part of the +construct. + +We say that expansion is @dfn{immediate} if it happens during the +first phase: @code{make} will expand that part of the construct as the +makefile is parsed. We say that expansion is @dfn{deferred} if it is +not immediate. Expansion of a deferred construct part is delayed +until the expansion is used: either when it is referenced in an +immediate context, or when it is needed during the second phase. + +You may not be familiar with some of these constructs yet. You can +reference this section as you become familiar with them, in later +chapters. + +@subheading Variable Assignment +@cindex +=, expansion +@cindex =, expansion +@cindex ?=, expansion +@cindex +=, expansion +@cindex !=, expansion +@cindex define, expansion + +Variable definitions are parsed as follows: + +@example +@var{immediate} = @var{deferred} +@var{immediate} ?= @var{deferred} +@var{immediate} := @var{immediate} +@var{immediate} ::= @var{immediate} +@var{immediate} :::= @var{immediate-with-escape} +@var{immediate} += @var{deferred} or @var{immediate} +@var{immediate} != @var{immediate} + +define @var{immediate} + @var{deferred} +endef + +define @var{immediate} = + @var{deferred} +endef + +define @var{immediate} ?= + @var{deferred} +endef + +define @var{immediate} := + @var{immediate} +endef + +define @var{immediate} ::= + @var{immediate} +endef + +define @var{immediate} :::= + @var{immediate-with-escape} +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{:=} or @samp{::=}), and deferred otherwise. + +For the @var{immediate-with-escape} operator @samp{:::=}, the value on +the right-hand side is immediately expanded but then escaped (that is, +all instances of @code{$} in the result of the expansion are replaced +with @code{$$}). + +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 is considered a +recursively expanded variable (and will thus be re-evaluated on each +reference). + +@subheading Conditional Directives +@cindex ifdef, expansion +@cindex ifeq, expansion +@cindex ifndef, expansion +@cindex ifneq, expansion + +Conditional directives are parsed immediately. This means, for +example, that automatic variables cannot be used in conditional +directives, as automatic variables are not set until the recipe for +that rule is invoked. If you need to use automatic variables in a +conditional directive you @emph{must} move the condition into the +recipe and use shell conditional syntax instead. + +@subheading Rule Definition +@cindex target, expansion +@cindex prerequisite, expansion +@cindex implicit rule, expansion +@cindex pattern rule, expansion +@cindex explicit rule, expansion + +A rule is always expanded the same way, regardless of the form: + +@example +@var{immediate} : @var{immediate} ; @var{deferred} + @var{deferred} +@end example + +That is, the target and prerequisite sections are expanded +immediately, and the recipe used to build the target is always +deferred. This is true for explicit rules, pattern rules, suffix +rules, static pattern rules, and simple prerequisite definitions. + +@node Parsing Makefiles, Secondary Expansion, Reading Makefiles, Makefiles +@section How Makefiles Are Parsed +@cindex parsing makefiles +@cindex makefiles, parsing + +GNU @code{make} parses makefiles line-by-line. Parsing proceeds using +the following steps: + +@enumerate +@item +Read in a full logical line, including backslash-escaped lines +(@pxref{Splitting Lines, , Splitting Long Lines}). + +@item +Remove comments (@pxref{Makefile Contents, , What Makefiles Contain}). + +@item +If the line begins with the recipe prefix character and we are in a +rule context, add the line to the current recipe and read the next +line (@pxref{Recipe Syntax}). + +@item +Expand elements of the line which appear in an @emph{immediate} +expansion context (@pxref{Reading Makefiles, , How @code{make} Reads a +Makefile}). + +@item +Scan the line for a separator character, such as @samp{:} or @samp{=}, +to determine whether the line is a macro assignment or a rule +(@pxref{Recipe Syntax}). + +@item +Internalize the resulting operation and read the next line. +@end enumerate + +An important consequence of this is that a macro can expand to an +entire rule, @emph{if it is one line long}. This will work: + +@example +myrule = target : ; echo built + +$(myrule) +@end example + +However, this will not work because @code{make} does not re-split lines +after it has expanded them: + +@example +define myrule +target: + echo built +endef + +$(myrule) +@end example + +The above makefile results in the definition of a target @samp{target} +with prerequisites @samp{echo} and @samp{built}, as if the makefile +contained @code{target: echo built}, rather than a rule with a recipe. +Newlines still present in a line after expansion is complete are +ignored as normal whitespace. + +In order to properly expand a multi-line macro you must use the +@code{eval} function: this causes the @code{make} parser to be run on +the results of the expanded macro (@pxref{Eval Function}). + +@node Secondary Expansion, , Parsing Makefiles, Makefiles +@section Secondary Expansion +@cindex secondary expansion +@cindex expansion, secondary + +@findex .SECONDEXPANSION +Previously we learned that GNU @code{make} works in two distinct +phases: a read-in phase and a target-update phase (@pxref{Reading +Makefiles, , How @code{make} Reads a Makefile}). GNU make also has +the ability to enable a @emph{second expansion} of the prerequisites +(only) for some or all targets defined in the makefile. In order for +this second expansion to occur, the special target +@code{.SECONDEXPANSION} must be defined before the first prerequisite +list that makes use of this feature. + +If @code{.SECONDEXPANSION} is defined then when GNU @code{make} needs to check +the prerequisites of a target, the prerequisites are expanded a @emph{second +time}. In most circumstances this secondary expansion will have no effect, +since all variable and function references will have been expanded during the +initial parsing of the makefiles. In order to take advantage of the secondary +expansion phase of the parser, then, it's necessary to @emph{escape} the +variable or function reference in the makefile. In this case the first +expansion merely un-escapes the reference but doesn't expand it, and expansion +is left to the secondary expansion phase. For example, consider this +makefile: + +@example +.SECONDEXPANSION: +ONEVAR = onefile +TWOVAR = twofile +myfile: $(ONEVAR) $$(TWOVAR) +@end example + +After the first expansion phase the prerequisites list of the +@file{myfile} target will be @code{onefile} and @code{$(TWOVAR)}; the +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 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 +appear, unescaped, in the prerequisites list. One difference becomes +apparent if the variables are reset; consider this example: + +@example +.SECONDEXPANSION: +AVAR = top +onefile: $(AVAR) +twofile: $$(AVAR) +AVAR = bottom +@end example + +Here the prerequisite of @file{onefile} will be expanded immediately, +and resolve to the value @file{top}, while the prerequisite of +@file{twofile} will not be full expanded until the secondary expansion +and yield a value of @file{bottom}. + +This is marginally more exciting, but the true power of this feature +only becomes apparent when you discover that secondary expansions +always take place within the scope of the automatic variables for that +target. This means that you can use variables such as @code{$@@}, +@code{$*}, etc. during the second expansion and they will have their +expected values, just as in the recipe. All you have to do is defer +the expansion by escaping the @code{$}. Also, secondary expansion +occurs for both explicit and implicit (pattern) rules. Knowing this, +the possible uses for this feature increase dramatically. For +example: + +@example +.SECONDEXPANSION: +main_OBJS := main.o try.o test.o +lib_OBJS := lib.o api.o + +main lib: $$($$@@_OBJS) +@end example + +Here, after the initial expansion the prerequisites of both the +@file{main} and @file{lib} targets will be @code{$($@@_OBJS)}. During +the secondary expansion, the @code{$@@} variable is set to the name of +the target and so the expansion for the @file{main} target will yield +@code{$(main_OBJS)}, or @code{main.o try.o test.o}, while the +secondary expansion for the @file{lib} target will yield +@code{$(lib_OBJS)}, or @code{lib.o api.o}. + +You can also mix in functions here, as long as they are properly escaped: + +@example +main_SRCS := main.c try.c test.c +lib_SRCS := lib.c api.c + +.SECONDEXPANSION: +main lib: $$(patsubst %.c,%.o,$$($$@@_SRCS)) +@end example + +This version allows users to specify source files rather than object +files, but gives the same resulting prerequisites list as the previous +example. + +Evaluation of automatic variables during the secondary expansion +phase, especially of the target name variable @code{$$@@}, behaves +similarly to evaluation within recipes. However, there are some +subtle differences and ``corner cases'' which come into play for the +different types of rule definitions that @code{make} understands. The +subtleties of using the different automatic variables are described +below. + +@subheading Secondary Expansion of Explicit Rules +@cindex secondary expansion and explicit rules +@cindex explicit rules, secondary expansion of + +During the secondary expansion of explicit rules, @code{$$@@} and +@code{$$%} evaluate, respectively, to the file name of the target and, +when the target is an archive member, the target member name. The +@code{$$<} variable evaluates to the first prerequisite in the first +rule for this target. @code{$$^} and @code{$$+} evaluate to the list +of all prerequisites of rules @emph{that have already appeared} for +the same target (@code{$$+} with repetitions and @code{$$^} +without). The following example will help illustrate these behaviors: + +@example +.SECONDEXPANSION: + +foo: foo.1 bar.1 $$< $$^ $$+ # line #1 + +foo: foo.2 bar.2 $$< $$^ $$+ # line #2 + +foo: foo.3 bar.3 $$< $$^ $$+ # line #3 +@end example + +In the first prerequisite list, all three variables (@code{$$<}, +@code{$$^}, and @code{$$+}) expand to the empty string. In the +second, they will have values @code{foo.1}, @code{foo.1 bar.1}, and +@code{foo.1 bar.1} respectively. In the third they will have values +@code{foo.1}, @code{foo.1 bar.1 foo.2 bar.2}, and @code{foo.1 bar.1 +foo.2 bar.2 foo.1 foo.1 bar.1 foo.1 bar.1} respectively. + +Rules undergo secondary expansion in makefile order, except that +the rule with the recipe is always evaluated last. + +The variables @code{$$?} and @code{$$*} are not available and expand +to the empty string. + +@subheading Secondary Expansion of Static Pattern Rules +@cindex secondary expansion and static pattern rules +@cindex static pattern rules, secondary expansion of + +Rules for secondary expansion of static pattern rules are identical to +those for explicit rules, above, with one exception: for static +pattern rules the @code{$$*} variable is set to the pattern stem. As +with explicit rules, @code{$$?} is not available and expands to the +empty string. + +@subheading Secondary Expansion of Implicit Rules +@cindex secondary expansion and implicit rules +@cindex implicit rules, secondary expansion of + +As @code{make} searches for an implicit rule, it substitutes the stem +and then performs secondary expansion for every rule with a matching +target pattern. The value of the automatic variables is derived in +the same fashion as for static pattern rules. As an example: + +@example +.SECONDEXPANSION: + +foo: bar + +foo foz: fo%: bo% + +%oo: $$< $$^ $$+ $$* +@end example + +When the implicit rule is tried for target @file{foo}, @code{$$<} +expands to @file{bar}, @code{$$^} expands to @file{bar boo}, +@code{$$+} also expands to @file{bar boo}, and @code{$$*} expands to +@file{f}. + +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 +.SECONDEXPANSION: + +/tmp/foo.o: + +%.o: $$(addsuffix /%.c,foo bar) foo.h + @@echo $^ +@end example + +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 +@cindex writing rules +@cindex rule, how to write +@cindex target +@cindex prerequisite + +A @dfn{rule} appears in the makefile and says when and how to remake +certain files, called the rule's @dfn{targets} (most often only one per rule). +It lists the other files that are the @dfn{prerequisites} of the target, and +the @dfn{recipe} to use to create or update the target. + +@cindex default goal +@cindex goal, default +The order of rules is not significant, except for determining the @dfn{default +goal}: the target for @code{make} to consider, if you do not otherwise specify +one. The default goal is the first target of the first rule in the first +makefile. There are two exceptions: a target starting with a period is not a +default unless it also contains one or more slashes, @samp{/}; and, a target +that defines a pattern rule has no effect on the default goal. (@xref{Pattern +Rules, ,Defining and Redefining Pattern Rules}.) + +Therefore, we usually write the makefile so that the first rule is the +one for compiling the entire program or all the programs described by +the makefile (often with a target called @samp{all}). +@xref{Goals, ,Arguments to Specify the Goals}. + +@menu +* Rule Example:: An example explained. +* Rule Syntax:: General syntax explained. +* Prerequisite Types:: There are two types of prerequisites. +* 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 a recipe + or prerequisites to mark other targets + as phony. +* Empty Targets:: When only the date matters and the + files are empty. +* Special Targets:: Targets with special built-in meanings. +* Multiple Targets:: When to make use of several targets in a rule. +* Multiple Rules:: How to use several rules with the same target. +* Static Pattern:: Static pattern rules apply to multiple targets + and can vary the prerequisites according to + the target name. +* Double-Colon:: How to use a special kind of rule to allow + several independent rules for one target. +* Automatic Prerequisites:: How to automatically generate rules giving + prerequisites from source files themselves. +@end menu + +@ifnottex +@node Rule Example, Rule Syntax, Rules, Rules +@section Rule Example + +Here is an example of a rule: + +@example +foo.o : foo.c defs.h # module for twiddling the frobs + cc -c -g foo.c +@end example + +Its target is @file{foo.o} and its prerequisites are @file{foo.c} and +@file{defs.h}. It has one command in the recipe: @samp{cc -c -g foo.c}. +The recipe starts with a tab to identify it as a recipe. + +This rule says two things: + +@itemize @bullet +@item +How to decide whether @file{foo.o} is out of date: it is out of date +if it does not exist, or if either @file{foo.c} or @file{defs.h} is +more recent than it. + +@item +How to update the file @file{foo.o}: by running @code{cc} as stated. +The recipe does not explicitly mention @file{defs.h}, but we presume +that @file{foo.c} includes it, and that is why @file{defs.h} was added +to the prerequisites. +@end itemize +@end ifnottex + +@node Rule Syntax, Prerequisite Types, Rule Example, Rules +@section Rule Syntax + +@cindex rule syntax +@cindex syntax of rules +In general, a rule looks like this: + +@example +@var{targets} : @var{prerequisites} + @var{recipe} + @dots{} +@end example + +@noindent +or like this: + +@example +@var{targets} : @var{prerequisites} ; @var{recipe} + @var{recipe} + @dots{} +@end example + +@cindex targets +@cindex rule targets +The @var{targets} are file names, separated by spaces. Wildcard +characters may be used (@pxref{Wildcards, ,Using Wildcard Characters +in File Names}) and a name of the form @file{@var{a}(@var{m})} +represents member @var{m} in archive file @var{a} +(@pxref{Archive Members, ,Archive Members as Targets}). +Usually there is only one +target per rule, but occasionally there is a reason to have more +(@pxref{Multiple Targets, , Multiple Targets in a Rule}). + +@cindex recipes +@cindex tab character (in commands) +The @var{recipe} lines start with a tab character (or the first +character in the value of the @code{.RECIPEPREFIX} variable; +@pxref{Special Variables}). The first recipe line may appear on the line +after the prerequisites, with a tab character, or may appear on the +same line, with a semicolon. Either way, the effect is the same. +There are other differences in the syntax of recipes. +@xref{Recipes, ,Writing Recipes in Rules}. + +@cindex dollar sign (@code{$}), in rules +@cindex @code{$}, in rules +@cindex rules, and @code{$} +Because dollar signs are used to start @code{make} variable +references, if you really want a dollar sign in a target or +prerequisite you must write two of them, @samp{$$} (@pxref{Using +Variables, ,How to Use Variables}). If you have enabled secondary +expansion (@pxref{Secondary Expansion}) and you want a literal dollar +sign in the prerequisites list, you must actually write @emph{four} +dollar signs (@samp{$$$$}). + +You may split a long line by inserting a backslash followed by a +newline, but this is not required, as @code{make} places no limit on +the length of a line in a makefile. + +A rule tells @code{make} two things: when the targets are out of date, +and how to update them when necessary. + +@cindex prerequisites +@cindex rule prerequisites +The criterion for being out of date is specified in terms of the +@var{prerequisites}, which consist of file names separated by spaces. +(Wildcards and archive members (@pxref{Archives}) are allowed here too.) +A target is out of date if it does not exist or if it is older than any +of the prerequisites (by comparison of last-modification times). The +idea is that the contents of the target file are computed based on +information in the prerequisites, so if any of the prerequisites changes, +the contents of the existing target file are no longer necessarily +valid. + +How to update is specified by a @var{recipe}. This is one or more +lines to be executed by the shell (normally @samp{sh}), but with some +extra features (@pxref{Recipes, ,Writing Recipes in Rules}). + +@node Prerequisite Types, Wildcards, Rule Syntax, Rules +@comment node-name, next, previous, up +@section Types of Prerequisites +@cindex prerequisite types +@cindex types of prerequisites + +@cindex prerequisites, normal +@cindex normal prerequisites +@cindex prerequisites, order-only +@cindex order-only prerequisites +There are two different types of prerequisites understood by GNU @code{make}: +normal prerequisites, described in the previous section, and @dfn{order-only} +prerequisites. A normal prerequisite makes two statements: first, it imposes +an order in which recipes will be invoked: the recipes for all prerequisites +of a target will be completed before the recipe for the target is started. +Second, it imposes a dependency relationship: if any prerequisite is newer +than the target, then the target is considered out-of-date and must be +rebuilt. + +Normally, this is exactly what you want: if a target's prerequisite is +updated, then the target should also be updated. + +Occasionally you may want to ensure that a prerequisite is built before a +target, but @emph{without} forcing the target to be updated if the +prerequisite is updated. @dfn{Order-only} prerequisites are used to create +this type of relationship. Order-only prerequisites can be specified by +placing a pipe symbol (@code{|}) in the prerequisites list: any prerequisites +to the left of the pipe symbol are normal; any prerequisites to the right are +order-only: + +@example +@var{targets} : @var{normal-prerequisites} | @var{order-only-prerequisites} +@end example + +The normal prerequisites section may of course be empty. Also, you +may still declare multiple lines of prerequisites for the same target: +they are appended appropriately (normal prerequisites are appended to +the list of normal prerequisites; order-only prerequisites are +appended to the list of order-only prerequisites). Note that if you +declare the same file to be both a normal and an order-only +prerequisite, the normal prerequisite takes precedence (since they +have a strict superset of the behavior of an order-only prerequisite). + +Order-only prerequisites are never checked when determining if the +target is out of date; even order-only prerequisites marked as phony +(@pxref{Phony Targets}) will not cause the target to be rebuilt. + +Consider an example where your targets are to be placed in a separate +directory, and that directory might not exist before @code{make} is +run. In this situation, you want the directory to be created before +any targets are placed into it but, because the timestamps on +directories change whenever a file is added, removed, or renamed, we +certainly don't want to rebuild all the targets whenever the +directory's timestamp changes. One way to manage this is with +order-only prerequisites: make the directory an order-only +prerequisite on all the targets: + +@example +OBJDIR := objdir +OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o) + +$(OBJDIR)/%.o : %.c + $(COMPILE.c) $(OUTPUT_OPTION) $< + +all: $(OBJS) + +$(OBJS): | $(OBJDIR) + +$(OBJDIR): + mkdir $(OBJDIR) +@end example + +Now the rule to create the @file{objdir} directory will be run, if +needed, before any @samp{.o} is built, but no @samp{.o} will be built +because the @file{objdir} directory timestamp changed. + +@node Wildcards, Directory Search, Prerequisite Types, Rules +@section Using Wildcard Characters in File Names +@cindex wildcard +@cindex file name with wildcards +@cindex globbing (wildcards) + +@cindex @code{*} (wildcard character) +@cindex @code{?} (wildcard character) +@cindex @code{[@dots{}]} (wildcard characters) +A single file name can specify many files using @dfn{wildcard characters}. +The wildcard characters in @code{make} are @samp{*}, @samp{?} and +@samp{[@dots{}]}, the same as in the Bourne shell. For example, @file{*.c} +specifies a list of all the files (in the working directory) whose names +end in @samp{.c}. + +If an expression matches multiple files than the results will be +sorted.@footnote{Some older versions of GNU @code{make} did not sort the +results of wildcard expansion.} However multiple expressions will not be +globally sorted. For example, @file{*.c *.h} will list all the files whose +names end in @samp{.c}, sorted, followed by all the files whose names end in +@samp{.h}, sorted. + +@cindex @code{~} (tilde) +@cindex tilde (@code{~}) +@cindex home directory +The character @samp{~} at the beginning of a file name also has special +significance. If alone, or followed by a slash, it represents your home +directory. For example @file{~/bin} expands to @file{/home/you/bin}. +If the @samp{~} is followed by a word, the string represents the home +directory of the user named by that word. For example @file{~john/bin} +expands to @file{/home/john/bin}. On systems which don't have a home +directory for each user (such as MS-DOS or MS-Windows), this +functionality can be simulated by setting the environment variable +@var{HOME}. + +Wildcard expansion is performed by @code{make} automatically in +targets and in prerequisites. In recipes, the shell is responsible +for wildcard expansion. In other contexts, wildcard expansion happens +only if you request it explicitly with the @code{wildcard} function. + +The special significance of a wildcard character can be turned off by +preceding it with a backslash. Thus, @file{foo\*bar} would refer to a +specific file whose name consists of @samp{foo}, an asterisk, and +@samp{bar}. + +@menu +* Wildcard Examples:: Several examples. +* Wildcard Pitfall:: Problems to avoid. +* Wildcard Function:: How to cause wildcard expansion where + it does not normally take place. +@end menu + +@node Wildcard Examples, Wildcard Pitfall, Wildcards, Wildcards +@subsection Wildcard Examples + +Wildcards can be used in the recipe of a rule, where they are expanded +by the shell. For example, here is a rule to delete all the object files: + +@example +@group +clean: + rm -f *.o +@end group +@end example +@cindex @code{rm} (shell command) + +Wildcards are also useful in the prerequisites of a rule. With the +following rule in the makefile, @samp{make print} will print all the +@samp{.c} files that have changed since the last time you printed them: + +@example +print: *.c + lpr -p $? + touch print +@end example + +@cindex @code{print} target +@cindex @code{lpr} (shell command) +@cindex @code{touch} (shell command) +@noindent +This rule uses @file{print} as an empty target file; see @ref{Empty +Targets, ,Empty Target Files to Record Events}. (The automatic variable +@samp{$?} is used to print only those files that have changed; see +@ref{Automatic Variables}.) + +Wildcard expansion does not happen when you define a variable. Thus, if +you write this: + +@example +objects = *.o +@end example + +@noindent +then the value of the variable @code{objects} is the actual string +@samp{*.o}. However, if you use the value of @code{objects} in a +target or prerequisite, wildcard expansion will take place there. If +you use the value of @code{objects} in a recipe, the shell may perform +wildcard expansion when the recipe runs. To set @code{objects} to the +expansion, instead use: + +@example +objects := $(wildcard *.o) +@end example + +@noindent +@xref{Wildcard Function}. + +@node Wildcard Pitfall, Wildcard Function, Wildcard Examples, Wildcards +@subsection Pitfalls of Using Wildcards +@cindex wildcard pitfalls +@cindex pitfalls of wildcards +@cindex mistakes with wildcards +@cindex errors with wildcards +@cindex problems with wildcards + +Now here is an example of a naive way of using wildcard expansion, that +does not do what you would intend. Suppose you would like to say that the +executable file @file{foo} is made from all the object files in the +directory, and you write this: + +@example +objects = *.o + +foo : $(objects) + cc -o foo $(CFLAGS) $(objects) +@end example + +@noindent +The value of @code{objects} is the actual string @samp{*.o}. Wildcard +expansion happens in the rule for @file{foo}, so that each @emph{existing} +@samp{.o} file becomes a prerequisite of @file{foo} and will be recompiled if +necessary. + +But what if you delete all the @samp{.o} files? When a wildcard matches +no files, it is left as it is, so then @file{foo} will depend on the +oddly-named file @file{*.o}. Since no such file is likely to exist, +@code{make} will give you an error saying it cannot figure out how to +make @file{*.o}. This is not what you want! + +Actually it is possible to obtain the desired result with wildcard +expansion, but you need more sophisticated techniques, including the +@code{wildcard} function and string substitution. +@ifnottex +@xref{Wildcard Function, ,The Function @code{wildcard}}. +@end ifnottex +@iftex +These are described in the following section. +@end iftex + +@cindex wildcards and MS-DOS/MS-Windows backslashes +@cindex backslashes in pathnames and wildcard expansion + +Microsoft operating systems (MS-DOS and MS-Windows) use backslashes to +separate directories in pathnames, like so: + +@example + c:\foo\bar\baz.c +@end example + +This is equivalent to the Unix-style @file{c:/foo/bar/baz.c} (the +@file{c:} part is the so-called drive letter). When @code{make} runs on +these systems, it supports backslashes as well as the Unix-style forward +slashes in pathnames. However, this support does @emph{not} include the +wildcard expansion, where backslash is a quote character. Therefore, +you @emph{must} use Unix-style slashes in these cases. + + +@node Wildcard Function, , Wildcard Pitfall, Wildcards +@subsection The Function @code{wildcard} +@findex wildcard + +Wildcard expansion happens automatically in rules. But wildcard expansion +does not normally take place when a variable is set, or inside the +arguments of a function. If you want to do wildcard expansion in such +places, you need to use the @code{wildcard} function, like this: + +@example +$(wildcard @var{pattern}@dots{}) +@end example + +@noindent +This string, used anywhere in a makefile, is replaced by a +space-separated list of names of existing files that match one of the +given file name patterns. If no existing file name matches a pattern, +then that pattern is omitted from the output of the @code{wildcard} +function. Note that this is different from how unmatched wildcards +behave in rules, where they are used verbatim rather than ignored +(@pxref{Wildcard Pitfall}). + +As with wildcard expansion in rules, the results of the @code{wildcard} +function are sorted. But again, each individual expression is sorted +separately, so @samp{$(wildcard *.c *.h)} will expand to all files matching +@samp{.c}, sorted, followed by all files matching @samp{.h}, sorted. + +One use of the @code{wildcard} function is to get a list of all the C source +files in a directory, like this: + +@example +$(wildcard *.c) +@end example + +We can change the list of C source files into a list of object files by +replacing the @samp{.c} suffix with @samp{.o} in the result, like this: + +@example +$(patsubst %.c,%.o,$(wildcard *.c)) +@end example + +@noindent +(Here we have used another function, @code{patsubst}. +@xref{Text Functions, ,Functions for String Substitution and Analysis}.) + +Thus, a makefile to compile all C source files in the directory and then +link them together could be written as follows: + +@example +objects := $(patsubst %.c,%.o,$(wildcard *.c)) + +foo : $(objects) + cc -o foo $(objects) +@end example + +@noindent +(This takes advantage of the implicit rule for compiling C programs, so +there is no need to write explicit rules for compiling the files. +@xref{Flavors, ,The Two Flavors of Variables}, for an explanation of +@samp{:=}, which is a variant of @samp{=}.) + +@node Directory Search, Phony Targets, Wildcards, Rules +@section Searching Directories for Prerequisites +@vindex VPATH +@findex vpath +@cindex vpath +@cindex search path for prerequisites (@code{VPATH}) +@cindex directory search (@code{VPATH}) + +For large systems, it is often desirable to put sources in a separate +directory from the binaries. The @dfn{directory search} features of +@code{make} facilitate this by searching several directories +automatically to find a prerequisite. When you redistribute the files +among directories, you do not need to change the individual rules, +just the search paths. + +@menu +* General Search:: Specifying a search path that applies + to every prerequisite. +* 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 + with search paths. +* Implicit/Search:: How search paths affect implicit rules. +* Libraries/Search:: Directory search for link libraries. +@end menu + +@node General Search, Selective Search, Directory Search, Directory Search +@subsection @code{VPATH}: Search Path for All Prerequisites +@vindex VPATH + +The value of the @code{make} variable @code{VPATH} specifies a list of +directories that @code{make} should search. Most often, the +directories are expected to contain prerequisite files that are not in the +current directory; however, @code{make} uses @code{VPATH} as a search +list for both prerequisites and targets of rules. + +Thus, if a file that is listed as a target or prerequisite does not exist +in the current directory, @code{make} searches the directories listed in +@code{VPATH} for a file with that name. If a file is found in one of +them, that file may become the prerequisite (see below). Rules may then +specify the names of files in the prerequisite list as if they all +existed in the current directory. @xref{Recipes/Search, ,Writing Recipes with Directory Search}. + +In the @code{VPATH} variable, directory names are separated by colons or +blanks. The order in which directories are listed is the order followed +by @code{make} in its search. (On MS-DOS and MS-Windows, semi-colons +are used as separators of directory names in @code{VPATH}, since the +colon can be used in the pathname itself, after the drive letter.) + +For example, + +@example +VPATH = src:../headers +@end example + +@noindent +specifies a path containing two directories, @file{src} and +@file{../headers}, which @code{make} searches in that order. + +With this value of @code{VPATH}, the following rule, + +@example +foo.o : foo.c +@end example + +@noindent +is interpreted as if it were written like this: + +@example +foo.o : src/foo.c +@end example + +@noindent +assuming the file @file{foo.c} does not exist in the current directory but +is found in the directory @file{src}. + +@node Selective Search, Search Algorithm, General Search, Directory Search +@subsection The @code{vpath} Directive +@findex vpath + +Similar to the @code{VPATH} variable, but more selective, is the +@code{vpath} directive (note lower case), which allows you to specify a +search path for a particular class of file names: those that match a +particular pattern. Thus you can supply certain search directories for +one class of file names and other directories (or none) for other file +names. + +There are three forms of the @code{vpath} directive: + +@table @code +@item vpath @var{pattern} @var{directories} +Specify the search path @var{directories} for file names that match +@var{pattern}. + +The search path, @var{directories}, is a list of directories to be +searched, separated by colons (semi-colons on MS-DOS and MS-Windows) or +blanks, just like the search path used in the @code{VPATH} variable. + +@item vpath @var{pattern} +Clear out the search path associated with @var{pattern}. + +@c Extra blank line makes sure this gets two lines. +@item vpath + +Clear all search paths previously specified with @code{vpath} directives. +@end table + +A @code{vpath} pattern is a string containing a @samp{%} character. The +string must match the file name of a prerequisite that is being searched +for, the @samp{%} character matching any sequence of zero or more +characters (as in pattern rules; @pxref{Pattern Rules, ,Defining and +Redefining Pattern Rules}). For example, @code{%.h} matches files that +end in @code{.h}. (If there is no @samp{%}, the pattern must match the +prerequisite exactly, which is not useful very often.) + +@cindex @code{%}, quoting in @code{vpath} +@cindex @code{%}, quoting with @code{\} (backslash) +@cindex @code{\} (backslash), to quote @code{%} +@cindex backslash (@code{\}), to quote @code{%} +@cindex quoting @code{%}, in @code{vpath} +@samp{%} characters in a @code{vpath} directive's pattern can be quoted +with preceding backslashes (@samp{\}). Backslashes that would otherwise +quote @samp{%} characters can be quoted with more backslashes. +Backslashes that quote @samp{%} characters or other backslashes are +removed from the pattern before it is compared to file names. Backslashes +that are not in danger of quoting @samp{%} characters go unmolested. + +When a prerequisite fails to exist in the current directory, if the +@var{pattern} in a @code{vpath} directive matches the name of the +prerequisite file, then the @var{directories} in that directive are searched +just like (and before) the directories in the @code{VPATH} variable. + +For example, + +@example +vpath %.h ../headers +@end example + +@noindent +tells @code{make} to look for any prerequisite whose name ends in @file{.h} +in the directory @file{../headers} if the file is not found in the current +directory. + +If several @code{vpath} patterns match the prerequisite file's name, then +@code{make} processes each matching @code{vpath} directive one by one, +searching all the directories mentioned in each directive. @code{make} +handles multiple @code{vpath} directives in the order in which they +appear in the makefile; multiple directives with the same pattern are +independent of each other. + +@need 750 +Thus, + +@example +@group +vpath %.c foo +vpath % blish +vpath %.c bar +@end group +@end example + +@noindent +will look for a file ending in @samp{.c} in @file{foo}, then +@file{blish}, then @file{bar}, while + +@example +@group +vpath %.c foo:bar +vpath % blish +@end group +@end example + +@noindent +will look for a file ending in @samp{.c} in @file{foo}, then +@file{bar}, then @file{blish}. + +@node Search Algorithm, Recipes/Search, Selective Search, Directory Search +@subsection How Directory Searches are Performed +@cindex algorithm for directory search +@cindex directory search algorithm + +When a prerequisite is found through directory search, regardless of type +(general or selective), the pathname located may not be the one that +@code{make} actually provides you in the prerequisite list. Sometimes +the path discovered through directory search is thrown away. + +The algorithm @code{make} uses to decide whether to keep or abandon a +path found via directory search is as follows: + +@enumerate +@item +If a target file does not exist at the path specified in the makefile, +directory search is performed. + +@item +If the directory search is successful, that path is kept and this file +is tentatively stored as the target. + +@item +All prerequisites of this target are examined using this same method. + +@item +After processing the prerequisites, the target may or may not need to be +rebuilt: + +@enumerate a +@item +If the target does @emph{not} need to be rebuilt, the path to the file +found during directory search is used for any prerequisite lists which +contain this target. In short, if @code{make} doesn't need to rebuild +the target then you use the path found via directory search. + +@item +If the target @emph{does} need to be rebuilt (is out-of-date), the +pathname found during directory search is @emph{thrown away}, and the +target is rebuilt using the file name specified in the makefile. In +short, if @code{make} must rebuild, then the target is rebuilt locally, +not in the directory found via directory search. +@end enumerate +@end enumerate + +This algorithm may seem complex, but in practice it is quite often +exactly what you want. + +@cindex traditional directory search (GPATH) +@cindex directory search, traditional (GPATH) +Other versions of @code{make} use a simpler algorithm: if the file does +not exist, and it is found via directory search, then that pathname is +always used whether or not the target needs to be built. Thus, if the +target is rebuilt it is created at the pathname discovered during +directory search. + +@vindex GPATH +If, in fact, this is the behavior you want for some or all of your +directories, you can use the @code{GPATH} variable to indicate this to +@code{make}. + +@code{GPATH} has the same syntax and format as @code{VPATH} (that is, a +space- or colon-delimited list of pathnames). If an out-of-date target +is found by directory search in a directory that also appears in +@code{GPATH}, then that pathname is not thrown away. The target is +rebuilt using the expanded path. + +@node Recipes/Search, Implicit/Search, Search Algorithm, Directory Search +@subsection Writing Recipes with Directory Search +@cindex recipes, and directory search +@cindex directory search (@code{VPATH}), and recipes + +When a prerequisite is found in another directory through directory search, +this cannot change the recipe of the rule; they will execute as written. +Therefore, you must write the recipe with care so that it will look for +the prerequisite in the directory where @code{make} finds it. + +This is done with the @dfn{automatic variables} such as @samp{$^} +(@pxref{Automatic Variables}). +For instance, the value of @samp{$^} is a +list of all the prerequisites of the rule, including the names of +the directories in which they were found, and the value of +@samp{$@@} is the target. Thus: + +@example +foo.o : foo.c + cc -c $(CFLAGS) $^ -o $@@ +@end example + +@noindent +(The variable @code{CFLAGS} exists so you can specify flags for C +compilation by implicit rules; we use it here for consistency so it will +affect all C compilations uniformly; +@pxref{Implicit Variables, ,Variables Used by Implicit Rules}.) + +Often the prerequisites include header files as well, which you do not +want to mention in the recipe. The automatic variable @samp{$<} is +just the first prerequisite: + +@example +VPATH = src:../headers +foo.o : foo.c defs.h hack.h + cc -c $(CFLAGS) $< -o $@@ +@end example + +@node Implicit/Search, Libraries/Search, Recipes/Search, Directory Search +@subsection Directory Search and Implicit Rules +@cindex @code{VPATH}, and implicit rules +@cindex directory search (@code{VPATH}), and implicit rules +@cindex search path for prerequisites (@code{VPATH}), and implicit rules +@cindex implicit rule, and directory search +@cindex implicit rule, and @code{VPATH} +@cindex rule, implicit, and directory search +@cindex rule, implicit, and @code{VPATH} + +The search through the directories specified in @code{VPATH} or with +@code{vpath} also happens during consideration of implicit rules +(@pxref{Implicit Rules, ,Using Implicit Rules}). + +For example, when a file @file{foo.o} has no explicit rule, @code{make} +considers implicit rules, such as the built-in rule to compile +@file{foo.c} if that file exists. If such a file is lacking in the +current directory, the appropriate directories are searched for it. If +@file{foo.c} exists (or is mentioned in the makefile) in any of the +directories, the implicit rule for C compilation is applied. + +The recipes of implicit rules normally use automatic variables as a +matter of necessity; consequently they will use the file names found by +directory search with no extra effort. + +@node Libraries/Search, , Implicit/Search, Directory Search +@subsection Directory Search for Link Libraries +@cindex link libraries, and directory search +@cindex libraries for linking, directory search +@cindex directory search (@code{VPATH}), and link libraries +@cindex @code{VPATH}, and link libraries +@cindex search path for prerequisites (@code{VPATH}), and link libraries +@cindex @code{-l} (library search) +@cindex link libraries, patterns matching +@cindex @code{.LIBPATTERNS}, and link libraries +@vindex .LIBPATTERNS + +Directory search applies in a special way to libraries used with the +linker. This special feature comes into play when you write a prerequisite +whose name is of the form @samp{-l@var{name}}. (You can tell something +strange is going on here because the prerequisite is normally the name of a +file, and the @emph{file name} of a library generally looks like +@file{lib@var{name}.a}, not like @samp{-l@var{name}}.) + +When a prerequisite's name has the form @samp{-l@var{name}}, @code{make} +handles it specially by searching for the file @file{lib@var{name}.so}, +and, if it is not found, for the file @file{lib@var{name}.a} in the current +directory, in directories specified by matching @code{vpath} +search paths and the @code{VPATH} search path, and then in the +directories @file{/lib}, @file{/usr/lib}, and @file{@var{prefix}/lib} +(normally @file{/usr/local/lib}, but MS-DOS/MS-Windows versions of +@code{make} behave as if @var{prefix} is defined to be the root of the +DJGPP installation tree). + +For example, if there is a @file{/usr/lib/libcurses.a} library on your +system (and no @file{/usr/lib/libcurses.so} file), then + +@example +@group +foo : foo.c -lcurses + cc $^ -o $@@ +@end group +@end example + +@noindent +would cause the command @samp{cc foo.c /usr/lib/libcurses.a -o foo} to +be executed when @file{foo} is older than @file{foo.c} or than +@file{/usr/lib/libcurses.a}. + +Although the default set of files to be searched for is +@file{lib@var{name}.so} and @file{lib@var{name}.a}, this is customizable +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 file name. + +The default value for @code{.LIBPATTERNS} is @samp{lib%.so lib%.a}, +which provides the default behavior described above. + +You can turn off link library expansion completely by setting this +variable to an empty value. + +@node Phony Targets, Force Targets, Directory Search, Rules +@section Phony Targets +@cindex phony targets +@cindex targets, phony +@cindex targets without a file + +A phony target is one that is not really the name of a file; rather it +is just a name for a recipe to be executed when you make an explicit +request. There are two reasons to use a phony target: to avoid a +conflict with a file of the same name, and to improve performance. + +If you write a rule whose recipe will not create the target file, the +recipe will be executed every time the target comes up for remaking. +Here is an example: + +@example +@group +clean: + rm *.o temp +@end group +@end example + +@noindent +Because the @code{rm} command does not create a file named @file{clean}, +probably no such file will ever exist. Therefore, the @code{rm} command +will be executed every time you say @samp{make clean}. +@cindex @code{rm} (shell command) + +@findex .PHONY +In this example, the @file{clean} target will not work properly if a +file named @file{clean} is ever created in this directory. Since it +has no prerequisites, @file{clean} would always be considered up to +date and its recipe would not be executed. To avoid this problem you +can explicitly declare the target to be phony by making it a +prerequisite of the special target @code{.PHONY} +(@pxref{Special Targets, ,Special Built-in Target Names}) as follows: + +@example +@group +.PHONY: clean +clean: + rm *.o temp +@end group +@end example + +@noindent +Once this is done, @samp{make clean} will run the recipe regardless of +whether there is a file named @file{clean}. + +Prerequisites of @code{.PHONY} are always interpreted as literal +target names, never as patterns (even if they contain @samp{%} +characters). To always rebuild a pattern rule consider using a +``force target'' (@pxref{Force Targets, ,Rules without Recipes or +Prerequisites}). + +Phony targets are also useful in conjunction with recursive +invocations of @code{make} (@pxref{Recursion, ,Recursive Use of @code{make}}). +In this situation the makefile will often contain a variable which +lists a number of sub-directories to be built. A simplistic way to +handle this is to define one rule with a recipe that loops over the +sub-directories, like this: + +@example +@group +SUBDIRS = foo bar baz + +subdirs: + for dir in $(SUBDIRS); do \ + $(MAKE) -C $$dir; \ + done +@end group +@end example + +There are problems with this method, however. First, any error 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} option, which is unfortunate. +Second, and perhaps more importantly, you cannot take full advantage of +@code{make}'s ability to build targets in parallel (@pxref{Parallel, ,Parallel +Execution}), since there is only one rule. Each individual makefile's targets +will be built in parallel, but only one sub-directory will be built at a time. + +By declaring the sub-directories as @code{.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 +@group +SUBDIRS = foo bar baz + +.PHONY: subdirs $(SUBDIRS) + +subdirs: $(SUBDIRS) + +$(SUBDIRS): + $(MAKE) -C $@@ + +foo: baz +@end group +@end example + +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. + +The implicit rule search (@pxref{Implicit Rules}) is skipped for +@code{.PHONY} targets. This is why declaring a target as +@code{.PHONY} is good for performance, even if you are not worried +about the actual file existing. + +A phony target should not be a prerequisite of a real target file; if it is, +its recipe will be run every time @code{make} considers that file. As long as +a phony target is never a prerequisite of a real target, the phony target +recipe will be executed only when the phony target is a specified goal +(@pxref{Goals, ,Arguments to Specify the Goals}). + +You should not declare an included makefile as phony. Phony targets are not +intended to represent real files, and because the target is always considered +out of date make will always rebuild it then re-execute itself +(@pxref{Remaking Makefiles, ,How Makefiles Are Remade}). To avoid this, +@code{make} will not re-execute itself if an included file marked as phony is +re-built. + +Phony targets can have prerequisites. When one directory contains multiple +programs, it is most convenient to describe all of the programs in one +makefile @file{./Makefile}. Since the target remade by default will be the +first one in the makefile, it is common to make this a phony target named +@samp{all} and give it, as prerequisites, all the individual programs. For +example: + +@example +all : prog1 prog2 prog3 +.PHONY : all + +prog1 : prog1.o utils.o + cc -o prog1 prog1.o utils.o + +prog2 : prog2.o + cc -o prog2 prog2.o + +prog3 : prog3.o sort.o utils.o + cc -o prog3 prog3.o sort.o utils.o +@end example + +@noindent +Now you can say just @samp{make} to remake all three programs, or +specify as arguments the ones to remake (as in @samp{make prog1 +prog3}). Phoniness is not inherited: the prerequisites of a phony +target are not themselves phony, unless explicitly declared to be so. + +When one phony target is a prerequisite of another, it serves as a subroutine +of the other. For example, here @samp{make cleanall} will delete the +object files, the difference files, and the file @file{program}: + +@example +.PHONY: cleanall cleanobj cleandiff + +cleanall : cleanobj cleandiff + rm program + +cleanobj : + rm *.o + +cleandiff : + rm *.diff +@end example + +@node Force Targets, Empty Targets, Phony Targets, Rules +@section Rules without Recipes or Prerequisites +@cindex force targets +@cindex targets, force +@cindex @code{FORCE} +@cindex rule, no recipe or prerequisites + +If a rule has no prerequisites or recipe, and the target of the rule +is a nonexistent file, then @code{make} imagines this target to have +been updated whenever its rule is run. This implies that all targets +depending on this one will always have their recipe run. + +An example will illustrate this: + +@example +@group +clean: FORCE + rm $(objects) +FORCE: +@end group +@end example + +Here the target @samp{FORCE} satisfies the special conditions, so the +target @file{clean} that depends on it is forced to run its recipe. +There is nothing special about the name @samp{FORCE}, but that is one +name commonly used this way. + +As you can see, using @samp{FORCE} this way has the same results as using +@samp{.PHONY: clean}. + +Using @samp{.PHONY} is more explicit and more efficient. However, +other versions of @code{make} do not support @samp{.PHONY}; thus +@samp{FORCE} appears in many makefiles. @xref{Phony Targets}. + +@node Empty Targets, Special Targets, Force Targets, Rules +@section Empty Target Files to Record Events +@cindex empty targets +@cindex targets, empty +@cindex recording events with empty targets + +The @dfn{empty target} is a variant of the phony target; it is used to hold +recipes for an action that you request explicitly from time to time. +Unlike a phony target, this target file can really exist; but the file's +contents do not matter, and usually are empty. + +The purpose of the empty target file is to record, with its +last-modification time, when the rule's recipe was last executed. It +does so because one of the commands in the recipe is a @code{touch} +command to update the target file. + +The empty target file should have some prerequisites (otherwise it +doesn't make sense). When you ask to remake the empty target, the +recipe is executed if any prerequisite is more recent than the target; +in other words, if a prerequisite has changed since the last time you +remade the target. Here is an example: + +@example +print: foo.c bar.c + lpr -p $? + touch print +@end example +@cindex @code{print} target +@cindex @code{lpr} (shell command) +@cindex @code{touch} (shell command) + +@noindent +With this rule, @samp{make print} will execute the @code{lpr} command if +either source file has changed since the last @samp{make print}. The +automatic variable @samp{$?} is used to print only those files that have +changed (@pxref{Automatic Variables}). + +@node Special Targets, Multiple Targets, Empty Targets, Rules +@section Special Built-in Target Names +@cindex special targets +@cindex built-in special targets +@cindex targets, built-in special + +Certain names have special meanings if they appear as targets. + +@table @code +@findex .PHONY +@item .PHONY + +The prerequisites of the special target @code{.PHONY} are considered to +be phony targets. When it is time to consider such a target, +@code{make} will run its recipe unconditionally, regardless of +whether a file with that name exists or what its last-modification +time is. @xref{Phony Targets, ,Phony Targets}. + +@findex .SUFFIXES +@item .SUFFIXES + +The prerequisites of the special target @code{.SUFFIXES} are the list +of suffixes to be used in checking for suffix rules. +@xref{Suffix Rules, , Old-Fashioned Suffix Rules}. + +@findex .DEFAULT +@item .DEFAULT + +The recipe specified for @code{.DEFAULT} is used for any target for +which no rules are found (either explicit rules or implicit rules). +@xref{Last Resort}. If a @code{.DEFAULT} recipe is specified, every +file mentioned as a prerequisite, but not as a target in a rule, will have +that recipe executed on its behalf. @xref{Implicit Rule Search, +,Implicit Rule Search Algorithm}. + +@findex .PRECIOUS +@item .PRECIOUS +@cindex precious targets +@cindex preserving with @code{.PRECIOUS} + +The targets which @code{.PRECIOUS} depends on are given the following +special treatment: if @code{make} is killed or interrupted during the +execution of their recipes, the target is not deleted. +@xref{Interrupts, ,Interrupting or Killing @code{make}}. Also, if the +target is an intermediate file, it will not be deleted after it is no +longer needed, as is normally done. @xref{Chained Rules, ,Chains of +Implicit Rules}. In this latter respect it overlaps with the +@code{.SECONDARY} special target. + +You can also list the target pattern of an implicit rule (such as +@samp{%.o}) as a prerequisite file of the special target @code{.PRECIOUS} +to preserve intermediate files created by rules whose target patterns +match that file's name. + +@findex .INTERMEDIATE +@item .INTERMEDIATE +@cindex intermediate targets, explicit + +The targets which @code{.INTERMEDIATE} depends on are treated as +intermediate files. @xref{Chained Rules, ,Chains of Implicit Rules}. +@code{.INTERMEDIATE} with no prerequisites has no effect. + +@findex .NOTINTERMEDIATE +@item .NOTINTERMEDIATE +@cindex not intermediate targets, explicit + +Prerequisites of the special target @code{.NOTINTERMEDIATE} are never +considered intermediate files. @xref{Chained Rules, ,Chains of Implicit Rules}. +@code{.NOTINTERMEDIATE} with no prerequisites causes all targets to be treated +as not intermediate. + +If the prerequisite is a target pattern then targets that are built using that +pattern rule are not considered intermediate. + +@findex .SECONDARY +@item .SECONDARY +@cindex secondary targets +@cindex preserving with @code{.SECONDARY} + +The targets which @code{.SECONDARY} depends on are treated as +intermediate files, except that they are never automatically deleted. +@xref{Chained Rules, ,Chains of Implicit Rules}. + +@code{.SECONDARY} can be used to avoid redundant rebuilds in some unusual +situations. For example: + +@example +@group +hello.bin: hello.o bye.o + $(CC) -o $@@ $^ + +%.o: %.c + $(CC) -c -o $@@ $< + +.SECONDARY: hello.o bye.o +@end group +@end example + +Suppose @file{hello.bin} is up to date in regards to the source files, +@emph{but} the object file @file{hello.o} is missing. Without +@code{.SECONDARY} make would rebuild @file{hello.o} then rebuild +@file{hello.bin} even though the source files had not changed. By declaring +@file{hello.o} as @code{.SECONDARY} @code{make} will not need to rebuild it +and won't need to rebuild @file{hello.bin} either. Of course, of one of the +source files @emph{were} updated then all object files would be rebuilt so +that the creation of @file{hello.bin} could succeed. + +@code{.SECONDARY} with no prerequisites causes all targets to be treated +as secondary (i.e., no target is removed because it is considered +intermediate). + +@findex .SECONDEXPANSION +@item .SECONDEXPANSION + +If @code{.SECONDEXPANSION} is mentioned as a target anywhere in the +makefile, then all prerequisite lists defined @emph{after} it appears +will be expanded a second time after all makefiles have been read in. +@xref{Secondary Expansion, ,Secondary Expansion}. + +@findex .DELETE_ON_ERROR +@item .DELETE_ON_ERROR +@cindex removing targets on failure + +If @code{.DELETE_ON_ERROR} is mentioned as a target anywhere in the +makefile, then @code{make} will delete the target of a rule if it has +changed and its recipe exits with a nonzero exit status, just as it +does when it receives a signal. @xref{Errors, ,Errors in Recipes}. + +@findex .IGNORE +@item .IGNORE + +If you specify prerequisites for @code{.IGNORE}, then @code{make} will +ignore errors in execution of the recipe for those particular files. +The recipe for @code{.IGNORE} (if any) is ignored. + +If mentioned as a target with no prerequisites, @code{.IGNORE} says to +ignore errors in execution of recipes for all files. This usage of +@samp{.IGNORE} is supported only for historical compatibility. Since +this affects every recipe in the makefile, it is not very useful; we +recommend you use the more selective ways to ignore errors in specific +recipes. @xref{Errors, ,Errors in Recipes}. + +@findex .LOW_RESOLUTION_TIME +@item .LOW_RESOLUTION_TIME + +If you specify prerequisites for @code{.LOW_RESOLUTION_TIME}, +@command{make} assumes that these files are created by commands that +generate low resolution time stamps. The recipe for the +@code{.LOW_RESOLUTION_TIME} target are ignored. + +The high resolution file time stamps of many modern file systems +lessen the chance of @command{make} incorrectly concluding that a file +is up to date. Unfortunately, some hosts do not provide a way to set a +high resolution file time stamp, so commands like @samp{cp -p} that +explicitly set a file's time stamp must discard its 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 +example: + +@example +@group +.LOW_RESOLUTION_TIME: dst +dst: src + cp -p src dst +@end group +@end example + +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 +is at the start of the same second that @file{src}'s time stamp is in. + +Due to a limitation of the archive format, archive member time stamps +are always low resolution. You need not list archive members as +prerequisites of @code{.LOW_RESOLUTION_TIME}, as @command{make} does this +automatically. + +@findex .SILENT +@item .SILENT + +If you specify prerequisites for @code{.SILENT}, then @code{make} will +not print the recipe used to remake those particular files before +executing them. The recipe for @code{.SILENT} is ignored. + +If mentioned as a target with no prerequisites, @code{.SILENT} says +not to print any recipes before executing them. You may also use more +selective ways to silence specific recipe command lines. +@xref{Echoing, ,Recipe Echoing}. If you want to silence all recipes +for a particular run of @code{make}, use the @samp{-s} or +@w{@samp{--silent}} option (@pxref{Options Summary}). + +@findex .EXPORT_ALL_VARIABLES +@item .EXPORT_ALL_VARIABLES + +Simply by being mentioned as a target, this tells @code{make} to export all +variables to child processes by default. This is an alternative to using +@code{export} with no arguments. @xref{Variables/Recursion, ,Communicating +Variables to a Sub-@code{make}}. + +@findex .NOTPARALLEL +@item .NOTPARALLEL +@cindex parallel execution, overriding + +If @code{.NOTPARALLEL} is mentioned as a target with no prerequisites, all +targets in this invocation of @code{make} will be run serially, even if the +@samp{-j} option is given. Any recursively invoked @code{make} command will +still run recipes in parallel (unless its makefile also contains this target). + +If @code{.NOTPARALLEL} has targets as prerequisites, then all the +prerequisites of those targets will be run serially. This implicitly adds a +@code{.WAIT} between each prerequisite of the listed targets. @xref{Parallel +Disable, , Disabling Parallel Execution}. + +@findex .ONESHELL +@item .ONESHELL +@cindex recipe execution, single invocation + +If @code{.ONESHELL} is mentioned as a target, then when a target is +built all lines of the recipe will be given to a single invocation of +the shell rather than each line being invoked separately. +@xref{Execution, ,Recipe Execution}. + +@findex .POSIX +@item .POSIX +@cindex POSIX-conforming mode, setting + +If @code{.POSIX} is mentioned as a target, then the makefile will be +parsed and run in POSIX-conforming mode. This does @emph{not} mean +that only POSIX-conforming makefiles will be accepted: all advanced +GNU @code{make} features are still available. Rather, this target +causes @code{make} to behave as required by POSIX in those areas +where @code{make}'s default behavior differs. + +In particular, if this target is mentioned then recipes will be +invoked as if the shell had been passed the @code{-e} flag: the first +failing command in a recipe will cause the recipe to fail immediately. +@end table + +Any defined implicit rule suffix also counts as a special target if it +appears as a target, and so does the concatenation of two suffixes, such +as @samp{.c.o}. These targets are suffix rules, an obsolete way of +defining implicit rules (but a way still widely used). In principle, any +target name could be special in this way if you break it in two and add +both pieces to the suffix list. In practice, suffixes normally begin with +@samp{.}, so these special target names also begin with @samp{.}. +@xref{Suffix Rules, ,Old-Fashioned Suffix Rules}. + +@node Multiple Targets, Multiple Rules, Special Targets, Rules +@section Multiple Targets in a Rule +@cindex multiple targets +@cindex several targets in a rule +@cindex targets, multiple +@cindex rule, with multiple targets + +When an explicit rule has multiple targets they can be treated in one +of two possible ways: as independent targets or as grouped targets. +The manner in which they are treated is determined by the separator that +appears after the list of targets. + +@subsubheading Rules with Independent Targets +@cindex independent targets +@cindex targets, independent + +Rules that use the standard target separator, @code{:}, define +independent targets. This is equivalent to writing the same rule once +for each target, with duplicated prerequisites and recipes. Typically, +the recipe would use automatic variables such as @samp{$@@} to specify +which target is being built. + +Rules with independent targets are useful in two cases: + +@itemize @bullet +@item +You want just prerequisites, no recipe. For example: + +@example +kbd.o command.o files.o: command.h +@end example + +@noindent +gives an additional prerequisite to each of the three object files +mentioned. It is equivalent to writing: + +@example +kbd.o: command.h +command.o: command.h +files.o: command.h +@end example + +@item +Similar recipes work for all the targets. The automatic variable +@samp{$@@} can be used to substitute the particular target to be +remade into the commands (@pxref{Automatic Variables}). For example: + +@example +@group +bigoutput littleoutput : text.g + generate text.g -$(subst output,,$@@) > $@@ +@end group +@end example +@findex subst + +@noindent +is equivalent to + +@example +bigoutput : text.g + generate text.g -big > bigoutput +littleoutput : text.g + generate text.g -little > littleoutput +@end example + +@noindent +Here we assume the hypothetical program @code{generate} makes two +types of output, one if given @samp{-big} and one if given +@samp{-little}. +@xref{Text Functions, ,Functions for String Substitution and Analysis}, +for an explanation of the @code{subst} function. +@end itemize + +Suppose you would like to vary the prerequisites according to the +target, much as the variable @samp{$@@} allows you to vary the recipe. +You cannot do this with multiple targets in an ordinary rule, but you +can do it with a @dfn{static pattern rule}. @xref{Static Pattern, +,Static Pattern Rules}. + +@subsubheading Rules with Grouped Targets +@cindex grouped targets +@cindex targets, grouped + +If instead of independent targets you have a recipe that generates multiple +files from a single invocation, you can express that relationship by declaring +your rule to use @emph{grouped targets}. A grouped target rule uses the +separator @code{&:} (the @samp{&} here is used to imply ``all''). + +When @code{make} builds any one of the grouped targets, it understands that +all the other targets in the group are also updated as a result of the +invocation of the recipe. Furthermore, if only some of the grouped targets +are out of date or missing @code{make} will realize that running the recipe +will update all of the targets. Finally, if any of the grouped targets are +out of date, all the grouped targets are considered out of date. + +As an example, this rule defines a grouped target: + +@example +@group +foo bar biz &: baz boz + echo $^ > foo + echo $^ > bar + echo $^ > biz +@end group +@end example + +During the execution of a grouped target's recipe, the automatic +variable @samp{$@@} is set to the name of the particular target in the +group which triggered the rule. Caution must be used if relying on +this variable in the recipe of a grouped target rule. + +Unlike independent targets, a grouped target rule @emph{must} include +a recipe. However, targets that are members of a grouped target may +also appear in independent target rule definitions that do not have +recipes. + +Each target may have only one recipe associated with it. If a grouped +target appears in either an independent target rule or in another +grouped target rule with a recipe, you will get a warning and the +latter recipe will replace the former recipe. Additionally the target +will be removed from the previous group and appear only in the new +group. + +If you would like a target to appear in multiple groups, then you must +use the double-colon grouped target separator, @code{&::} when +declaring all of the groups containing that target. Grouped +double-colon targets are each considered independently, and each +grouped double-colon rule's recipe is executed at most once, if at +least one of its multiple targets requires updating. + +@node Multiple Rules, Static Pattern, Multiple Targets, Rules +@section Multiple Rules for One Target +@cindex multiple rules for one target +@cindex several rules for one target +@cindex rule, multiple for one target +@cindex target, multiple rules for one + +One file can be the target of several rules. All the prerequisites +mentioned in all the rules are merged into one list of prerequisites for +the target. If the target is older than any prerequisite from any rule, +the recipe is executed. + +There can only be one recipe to be executed for a file. If more than +one rule gives a recipe for the same file, @code{make} uses the last +one given and prints an error message. (As a special case, if the +file's name begins with a dot, no error message is printed. This odd +behavior is only for compatibility with other implementations of +@code{make}@dots{} you should avoid using it). Occasionally it is +useful to have the same target invoke multiple recipes which are +defined in different parts of your makefile; you can use +@dfn{double-colon rules} (@pxref{Double-Colon}) for this. + +An extra rule with just prerequisites can be used to give a few extra +prerequisites to many files at once. For example, makefiles often +have a variable, such as @code{objects}, containing a list of all the +compiler output files in the system being made. An easy way to say +that all of them must be recompiled if @file{config.h} changes is to +write the following: + +@example +objects = foo.o bar.o +foo.o : defs.h +bar.o : defs.h test.h +$(objects) : config.h +@end example + +This could be inserted or taken out without changing the rules that really +specify how to make the object files, making it a convenient form to use if +you wish to add the additional prerequisite intermittently. + +Another wrinkle is that the additional prerequisites could be +specified with a variable that you set with a command line argument to +@code{make} (@pxref{Overriding, ,Overriding Variables}). For example, + +@example +@group +extradeps= +$(objects) : $(extradeps) +@end group +@end example + +@noindent +means that the command @samp{make extradeps=foo.h} will consider +@file{foo.h} as a prerequisite of each object file, but plain @samp{make} +will not. + +If none of the explicit rules for a target has a recipe, then @code{make} +searches for an applicable implicit rule to find one +@pxref{Implicit Rules, ,Using Implicit Rules}). + +@node Static Pattern, Double-Colon, Multiple Rules, Rules +@section Static Pattern Rules +@cindex static pattern rule +@cindex rule, static pattern +@cindex pattern rules, static (not implicit) +@cindex varying prerequisites +@cindex prerequisites, varying (static pattern) + +@dfn{Static pattern rules} are rules which specify multiple targets and +construct the prerequisite names for each target based on the target name. +They are more general than ordinary rules with multiple targets because the +targets do not have to have identical prerequisites. Their prerequisites must +be @emph{analogous}, but not necessarily @emph{identical}. + +@menu +* Static Usage:: The syntax of static pattern rules. +* Static versus Implicit:: When are they better than implicit rules? +@end menu + +@node Static Usage, Static versus Implicit, Static Pattern, Static Pattern +@subsection Syntax of Static Pattern Rules +@cindex static pattern rule, syntax of +@cindex pattern rules, static, syntax of + +Here is the syntax of a static pattern rule: + +@example +@var{targets} @dots{}: @var{target-pattern}: @var{prereq-patterns} @dots{} + @var{recipe} + @dots{} +@end example + +@noindent +The @var{targets} list specifies the targets that the rule applies to. +The targets can contain wildcard characters, just like the targets of +ordinary rules (@pxref{Wildcards, ,Using Wildcard Characters in File +Names}). + +@cindex target pattern, static (not implicit) +@cindex stem +The @var{target-pattern} and @var{prereq-patterns} say how to compute the +prerequisites of each target. Each target is matched against the +@var{target-pattern} to extract a part of the target name, called the +@dfn{stem}. This stem is substituted into each of the @var{prereq-patterns} +to make the prerequisite names (one from each @var{prereq-pattern}). + +Each pattern normally contains the character @samp{%} just once. When the +@var{target-pattern} matches a target, the @samp{%} can match any part of +the target name; this part is called the @dfn{stem}. The rest of the +pattern must match exactly. For example, the target @file{foo.o} matches +the pattern @samp{%.o}, with @samp{foo} as the stem. The targets +@file{foo.c} and @file{foo.out} do not match that pattern. + +@cindex prerequisite pattern, static (not implicit) +The prerequisite names for each target are made by substituting the stem +for the @samp{%} in each prerequisite pattern. For example, if one +prerequisite pattern is @file{%.c}, then substitution of the stem +@samp{foo} gives the prerequisite name @file{foo.c}. It is legitimate +to write a prerequisite pattern that does not contain @samp{%}; then this +prerequisite is the same for all targets. + +@cindex @code{%}, quoting in static pattern +@cindex @code{%}, quoting with @code{\} (backslash) +@cindex @code{\} (backslash), to quote @code{%} +@cindex backslash (@code{\}), to quote @code{%} +@cindex quoting @code{%}, in static pattern +@samp{%} characters in pattern rules can be quoted with preceding +backslashes (@samp{\}). Backslashes that would otherwise quote @samp{%} +characters can be quoted with more backslashes. Backslashes that quote +@samp{%} characters or other backslashes are removed from the pattern +before it is compared to file names or has a stem substituted into it. +Backslashes that are not in danger of quoting @samp{%} characters go +unmolested. For example, the pattern @file{the\%weird\\%pattern\\} has +@samp{the%weird\} preceding the operative @samp{%} character, and +@samp{pattern\\} following it. The final two backslashes are left alone +because they cannot affect any @samp{%} character. + +Here is an example, which compiles each of @file{foo.o} and @file{bar.o} +from the corresponding @file{.c} file: + +@example +@group +objects = foo.o bar.o + +all: $(objects) + +$(objects): %.o: %.c + $(CC) -c $(CFLAGS) $< -o $@@ +@end group +@end example + +@noindent +Here @samp{$<} is the automatic variable that holds the name of the +prerequisite and @samp{$@@} is the automatic variable that holds the name +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 non-matching file names (@pxref{Text Functions, ,Functions for String Substitution and Analysis}): + +@example +files = foo.elc bar.o lose.o + +$(filter %.o,$(files)): %.o: %.c + $(CC) -c $(CFLAGS) $< -o $@@ +$(filter %.elc,$(files)): %.elc: %.el + emacs -f batch-byte-compile $< +@end example + +@noindent +In this example the result of @samp{$(filter %.o,$(files))} is +@file{bar.o lose.o}, and the first static pattern rule causes each of +these object files to be updated by compiling the corresponding C source +file. The result of @w{@samp{$(filter %.elc,$(files))}} is +@file{foo.elc}, so that file is made from @file{foo.el}. + +Another example shows how to use @code{$*} in static pattern rules: +@vindex $*@r{, and static pattern} + +@example +@group +bigoutput littleoutput : %output : text.g + generate text.g -$* > $@@ +@end group +@end example + +@noindent +When the @code{generate} command is run, @code{$*} will expand to the +stem, either @samp{big} or @samp{little}. + +@node Static versus Implicit, , Static Usage, Static Pattern +@subsection Static Pattern Rules versus Implicit Rules +@cindex rule, static pattern versus implicit +@cindex static pattern rule, versus implicit + +A static pattern rule has much in common with an implicit rule defined as a +pattern rule (@pxref{Pattern Rules, ,Defining and Redefining Pattern Rules}). +Both have a pattern for the target and patterns for constructing the +names of prerequisites. The difference is in how @code{make} decides +@emph{when} the rule applies. + +An implicit rule @emph{can} apply to any target that matches its pattern, +but it @emph{does} apply only when the target has no recipe otherwise +specified, and only when the prerequisites can be found. If more than one +implicit rule appears applicable, only one applies; the choice depends on +the order of rules. + +By contrast, a static pattern rule applies to the precise list of targets +that you specify in the rule. It cannot apply to any other target and it +invariably does apply to each of the targets specified. If two conflicting +rules apply, and both have recipes, that's an error. + +The static pattern rule can be better than an implicit rule for these +reasons: + +@itemize @bullet +@item +You may wish to override the usual implicit rule for a few +files whose names cannot be categorized syntactically but +can be given in an explicit list. + +@item +If you cannot be sure of the precise contents of the directories +you are using, you may not be sure which other irrelevant files +might lead @code{make} to use the wrong implicit rule. The choice +might depend on the order in which the implicit rule search is done. +With static pattern rules, there is no uncertainty: each rule applies +to precisely the targets specified. +@end itemize + +@node Double-Colon, Automatic Prerequisites, Static Pattern, Rules +@section Double-Colon Rules +@cindex double-colon rules +@cindex rule, double-colon (@code{::}) +@cindex multiple rules for one target (@code{::}) +@cindex @code{::} rules (double-colon) + +@dfn{Double-colon} rules are explicit rules written with @samp{::} +instead of @samp{:} after the target names. They are handled +differently from ordinary rules when the same target appears in more +than one rule. Pattern rules with double-colons have an entirely +different meaning (@pxref{Match-Anything Rules}). + +When a target appears in multiple rules, all the rules must be the same +type: all ordinary, or all double-colon. If they are double-colon, each +of them is independent of the others. Each double-colon rule's recipe +is executed if the target is older than any prerequisites of that rule. +If there are no prerequisites for that rule, its recipe is always +executed (even if the target already exists). This can result in +executing none, any, or all of the double-colon rules. + +Double-colon rules with the same target are in fact completely separate +from one another. Each double-colon rule is processed individually, just +as rules with different targets are processed. + +The double-colon rules for a target are executed in the order they appear +in the makefile. However, the cases where double-colon rules really make +sense are those where the order of executing the recipes would not matter. + +Double-colon rules are somewhat obscure and not often very useful; they +provide a mechanism for cases in which the method used to update a target +differs depending on which prerequisite files caused the update, and such +cases are rare. + +Each double-colon rule should specify a recipe; if it does not, an +implicit rule will be used if one applies. +@xref{Implicit Rules, ,Using Implicit Rules}. + +@node Automatic Prerequisites, , Double-Colon, Rules +@section Generating Prerequisites Automatically +@cindex prerequisites, automatic generation +@cindex automatic generation of prerequisites +@cindex generating prerequisites automatically + +In the makefile for a program, many of the rules you need to write often +say only that some object file depends on some header +file. For example, if @file{main.c} uses @file{defs.h} via an +@code{#include}, you would write: + +@example +main.o: defs.h +@end example + +@noindent +You need this rule so that @code{make} knows that it must remake +@file{main.o} whenever @file{defs.h} changes. You can see that for a +large program you would have to write dozens of such rules in your +makefile. And, you must always be very careful to update the makefile +every time you add or remove an @code{#include}. +@cindex @code{#include} + +@cindex @code{-M} (to compiler) +To avoid this hassle, most modern C compilers can write these rules for +you, by looking at the @code{#include} lines in the source files. +Usually this is done with the @samp{-M} option to the compiler. +For example, the command: + +@example +cc -M main.c +@end example + +@noindent +generates the output: + +@example +main.o : main.c defs.h +@end example + +@noindent +Thus you no longer have to write all those rules yourself. +The compiler will do it for you. + +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 +compiler feature to generate prerequisites on demand with a command like +@samp{make depend}. That command would create a file @file{depend} +containing all the automatically-generated prerequisites; then the +makefile could use @code{include} to read them in (@pxref{Include}). + +In GNU @code{make}, the feature of remaking makefiles makes this +practice obsolete---you need never tell @code{make} explicitly to +regenerate the prerequisites, because it always regenerates any makefile +that is out of date. @xref{Remaking Makefiles}. + +The practice we recommend for automatic prerequisite generation is to have +one makefile corresponding to each source file. For each source file +@file{@var{name}.c} there is a makefile @file{@var{name}.d} which lists +what files the object file @file{@var{name}.o} depends on. That way +only the source files that have changed need to be rescanned to produce +the new prerequisites. + +Here is the pattern rule to generate a file of prerequisites (i.e., a makefile) +called @file{@var{name}.d} from a C source file called @file{@var{name}.c}: + +@smallexample +@group +%.d: %.c + @@set -e; rm -f $@@; \ + $(CC) -M $(CPPFLAGS) $< > $@@.$$$$; \ + sed 's,\($*\)\.o[ :]*,\1.o $@@ : ,g' < $@@.$$$$ > $@@; \ + rm -f $@@.$$$$ +@end group +@end smallexample + +@noindent +@xref{Pattern Rules}, for information on defining pattern rules. The +@samp{-e} flag to the shell causes it to exit immediately if the +@code{$(CC)} command (or any other command) fails (exits with a +nonzero status). +@cindex @code{-e} (shell flag) + +@cindex @code{-MM} (to GNU compiler) +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, Using GNU CC}, for details. + +@cindex @code{sed} (shell command) +The purpose of the @code{sed} command is to translate (for example): + +@example +main.o : main.c defs.h +@end example + +@noindent +into: + +@example +main.o main.d : main.c defs.h +@end example + +@noindent +@cindex @code{.d} +This makes each @samp{.d} file depend on all the source and header files +that the corresponding @samp{.o} file depends on. @code{make} then +knows it must regenerate the prerequisites whenever any of the source or +header files changes. + +Once you've defined the rule to remake the @samp{.d} files, +you then use the @code{include} directive to read them all in. +@xref{Include}. For example: + +@example +@group +sources = foo.c bar.c + +include $(sources:.c=.d) +@end group +@end example + +@noindent +(This example uses a substitution variable reference to translate the +list of source files @samp{foo.c bar.c} into a list of prerequisite +makefiles, @samp{foo.d bar.d}. @xref{Substitution Refs}, for full +information on substitution references.) Since the @samp{.d} files are +makefiles like any others, @code{make} will remake them as necessary +with no further work from you. @xref{Remaking Makefiles}. + +Note that the @samp{.d} files contain target definitions; you should +be sure to place the @code{include} directive @emph{after} the first, +default goal in your makefiles or run the risk of having a random +object file become the default goal. +@xref{How Make Works}. + +@node Recipes, Using Variables, Rules, Top +@chapter Writing Recipes in Rules +@cindex recipes +@cindex recipes, how to write +@cindex writing recipes + +The recipe of a rule consists of one or more shell command lines to +be executed, one at a time, in the order they appear. Typically, the +result of executing these commands is that the target of the rule is +brought up to date. + +Users use many different shell programs, but recipes in makefiles are +always interpreted by @file{/bin/sh} unless the makefile specifies +otherwise. @xref{Execution, ,Recipe Execution}. + +@menu +* Recipe Syntax:: Recipe syntax features and pitfalls. +* Echoing:: How to control when recipes are echoed. +* Execution:: How recipes are executed. +* Parallel:: How recipes can be executed in parallel. +* Errors:: What happens after a recipe execution error. +* Interrupts:: What happens when a recipe is interrupted. +* Recursion:: Invoking @code{make} from makefiles. +* Canned Recipes:: Defining canned recipes. +* Empty Recipes:: Defining useful, do-nothing recipes. +@end menu + +@node Recipe Syntax, Echoing, Recipes, Recipes +@section Recipe Syntax +@cindex recipe syntax +@cindex syntax of recipe + +Makefiles have the unusual property that there are really two distinct +syntaxes in one file. Most of the makefile uses @code{make} syntax +(@pxref{Makefiles, ,Writing Makefiles}). However, recipes are meant +to be interpreted by the shell and so they are written using shell +syntax. The @code{make} program does not try to understand shell +syntax: it performs only a very few specific translations on the +content of the recipe before handing it to the shell. + +Each line in the recipe must start with a tab (or the first character +in the value of the @code{.RECIPEPREFIX} variable; @pxref{Special +Variables}), except that the first recipe line may be attached to the +target-and-prerequisites line with a semicolon in between. @emph{Any} +line in the makefile that begins with a tab and appears in a ``rule +context'' (that is, after a rule has been started until another rule +or variable definition) will be considered part of a recipe for that +rule. Blank lines and lines of just comments may appear among the +recipe lines; they are ignored. + +Some consequences of these rules include: + +@itemize @bullet +@item +A blank line that begins with a tab is not blank: it's an empty +recipe (@pxref{Empty Recipes}). + +@cindex comments, in recipes +@cindex recipes, comments in +@cindex @code{#} (comments), in recipes +@item +A comment in a recipe is not a @code{make} comment; it will be +passed to the shell as-is. Whether the shell treats it as a comment +or not depends on your shell. + +@item +A variable definition in a ``rule context'' which is indented by a tab +as the first character on the line, will be considered part of a +recipe, not a @code{make} variable definition, and passed to the +shell. + +@item +A conditional expression (@code{ifdef}, @code{ifeq}, +etc. @pxref{Conditional Syntax, ,Syntax of Conditionals}) in a ``rule +context'' which is indented by a tab as the first character on the +line, will be considered part of a recipe and be passed to the shell. + +@end itemize + +@menu +* Splitting Recipe Lines:: Breaking long recipe lines for readability. +* Variables in Recipes:: Using @code{make} variables in recipes. +@end menu + +@node Splitting Recipe Lines, Variables in Recipes, Recipe Syntax, Recipe Syntax +@subsection Splitting Recipe Lines +@cindex recipes, splitting +@cindex splitting recipes +@cindex recipes, backslash (@code{\}) in +@cindex recipes, quoting newlines in +@cindex backslash (@code{\}), in recipes +@cindex @code{\} (backslash), in recipes +@cindex quoting newline, in recipes +@cindex newline, quoting, in recipes + +One of the few ways in which @code{make} does interpret recipes is +checking for a backslash just before the newline. As in normal +makefile syntax, a single logical recipe line can be split into +multiple physical lines in the makefile by placing a backslash before +each newline. A sequence of lines like this is considered a single +recipe line, and one instance of the shell will be invoked to run it. + +However, in contrast to how they are treated in other places in a +makefile (@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: + +@example +@group +all : + @@echo no\ +space + @@echo no\ + space + @@echo one \ + space + @@echo one\ + space +@end group +@end example + +@noindent +consists of four separate shell commands where the output is: + +@example +@group +nospace +nospace +one space +one space +@end group +@end example + +As a more complex example, this makefile: + +@example +@group +all : ; @@echo 'hello \ + world' ; echo "hello \ + world" +@end group +@end example + +@noindent +will invoke one shell with a command of: + +@example +@group +echo 'hello \ +world' ; echo "hello \ + world" +@end group +@end example + +@noindent +which, according to shell quoting rules, will yield the following output: + +@example +@group +hello \ +world +hello world +@end group +@end example + +@noindent +Notice how the backslash/newline pair was removed inside the string +quoted with double quotes (@code{"@dots{}"}), but not from the string +quoted with single quotes (@code{'@dots{}'}). This is the way the +default shell (@file{/bin/sh}) handles backslash/newline pairs. If +you specify a different shell in your makefiles it may treat them +differently. + +Sometimes you want to split a long line inside of single quotes, but +you don't want the backslash/newline to appear in the quoted content. +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 +above using this method: + +@example +@group +HELLO = 'hello \ +world' + +all : ; @@echo $(HELLO) +@end group +@end example + +@noindent +we will get output like this: + +@example +@group +hello world +@end group +@end example + +If you like, you can also use target-specific variables +(@pxref{Target-specific, ,Target-specific Variable Values}) to obtain +a tighter correspondence between the variable and the recipe that +uses it. + +@node Variables in Recipes, , Splitting Recipe Lines, Recipe Syntax +@subsection Using Variables in Recipes +@cindex variable references in recipes +@cindex recipes, using variables in + +The other way in which @code{make} processes recipes is by expanding +any variable references in them (@pxref{Reference,Basics of Variable +References}). This occurs after make has finished reading all the +makefiles and the target is determined to be out of date; so, the +recipes for targets which are not rebuilt are never expanded. + +Variable and function references in recipes have identical syntax and +semantics to references elsewhere in the makefile. They also have the +same quoting rules: if you want a dollar sign to appear in your +recipe, you must double it (@samp{$$}). For shells like the default +shell, that use dollar signs to introduce variables, it's important to +keep clear in your mind whether the variable you want to reference is +a @code{make} variable (use a single dollar sign) or a shell variable +(use two dollar signs). For example: + +@example +@group +LIST = one two three +all: + for i in $(LIST); do \ + echo $$i; \ + done +@end group +@end example + +@noindent +results in the following command being passed to the shell: + +@example +@group +for i in one two three; do \ + echo $i; \ +done +@end group +@end example + +@noindent +which generates the expected result: + +@example +@group +one +two +three +@end group +@end example + +@node Echoing, Execution, Recipe Syntax, Recipes +@section Recipe Echoing +@cindex echoing of recipes +@cindex silent operation +@cindex @code{@@} (in recipes) +@cindex recipes, echoing +@cindex printing of recipes + +Normally @code{make} prints each line of the recipe before it is +executed. We call this @dfn{echoing} because it gives the appearance +that you are typing the lines yourself. + +When a line starts with @samp{@@}, the echoing of that line is suppressed. +The @samp{@@} is discarded before the line is passed to the shell. +Typically you would use this for a command whose only effect is to print +something, such as an @code{echo} command to indicate progress through +the makefile: + +@example +@@echo About to make distribution files +@end example + +@cindex @code{-n} +@cindex @code{--just-print} +@cindex @code{--dry-run} +@cindex @code{--recon} +When @code{make} is given the flag @samp{-n} or @samp{--just-print} it +only echoes most recipes, without executing them. @xref{Options +Summary, ,Summary of Options}. In this case even the recipe lines +starting with @samp{@@} are printed. This flag is useful for finding +out which recipes @code{make} thinks are necessary without actually +doing them. + +@cindex @code{-s} +@cindex @code{--silent} +@cindex @code{--quiet} +@findex .SILENT +The @samp{-s} or @samp{--silent} +flag to @code{make} prevents all echoing, as if all recipes +started with @samp{@@}. A rule in the makefile for the special target +@code{.SILENT} without prerequisites has the same effect +(@pxref{Special Targets, ,Special Built-in Target Names}). + +@node Execution, Parallel, Echoing, Recipes +@section Recipe Execution +@cindex recipe, execution +@cindex execution, of recipes +@vindex @code{SHELL} @r{(recipe execution)} + +When it is time to execute recipes to update a target, they are +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.) + +@cindex @code{cd} (shell command) +@cindex shell variables, setting in recipes +@cindex recipes setting shell variables +@strong{Please note:} this implies that setting shell variables and +invoking shell commands such as @code{cd} that set a context local to +each process will not affect the following lines in the recipe.@footnote{On +MS-DOS, the value of current working directory is @strong{global}, so +changing it @emph{will} affect the following recipe lines on those +systems.} If you want to use @code{cd} to affect the next statement, +put both statements in a single recipe line. Then @code{make} will +invoke one shell to run the entire line, and the shell will execute +the statements in sequence. For example: + +@example +foo : bar/lose + cd $( ../$@@ +@end example + +@noindent +Here we use the shell AND operator (@code{&&}) so that if the +@code{cd} command fails, the script will fail without trying to invoke +the @code{gobble} command in the wrong directory, which could cause +problems (in this case it would certainly cause @file{../foo} to be +truncated, at least). + +@menu +* 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 + +@node One Shell, Choosing the Shell, Execution, Execution +@subsection Using One Shell +@cindex recipe lines, single shell +@cindex @code{.ONESHELL}, use of +@findex .ONESHELL + +Sometimes you would prefer that all the lines in the recipe be passed +to a single invocation of the shell. There are generally two +situations where this is useful: first, it can improve performance in +makefiles where recipes consist of many command lines, by avoiding +extra processes. Second, you might want newlines to be included in +your recipe command (for example perhaps you are using a very +different interpreter as your @code{SHELL}). If the @code{.ONESHELL} +special target appears anywhere in the makefile then @emph{all} +recipe lines for each target will be provided to a single invocation +of the shell. Newlines between recipe lines will be preserved. For +example: + +@example +.ONESHELL: +foo : bar/lose + cd $( ../$@@ +@end example + +@noindent +would now work as expected even though the commands are on different +recipe lines. + +If @code{.ONESHELL} is provided, then only the first line of the +recipe will be checked for the special prefix characters (@samp{@@}, +@samp{-}, and @samp{+}). Subsequent lines will include the special +characters in the recipe line when the @code{SHELL} is invoked. If +you want your recipe to start with one of these special characters +you'll need to arrange for them to not be the first characters on the +first line, perhaps by adding a comment or similar. For example, this +would be a syntax error in Perl because the first @samp{@@} is removed +by make: + +@example +.ONESHELL: +SHELL = /usr/bin/perl +.SHELLFLAGS = -e +show : + @@f = qw(a b c); + print "@@f\n"; +@end example + +@noindent +However, either of these alternatives would work properly: + +@example +.ONESHELL: +SHELL = /usr/bin/perl +.SHELLFLAGS = -e +show : + # Make sure "@@" is not the first character on the first line + @@f = qw(a b c); + print "@@f\n"; +@end example + +@noindent +or + +@example +.ONESHELL: +SHELL = /usr/bin/perl +.SHELLFLAGS = -e +show : + my @@f = qw(a b c); + print "@@f\n"; +@end example + +As a special feature, if @code{SHELL} is determined to be a +POSIX-style shell, the special prefix characters in ``internal'' +recipe lines will be @emph{removed} before the recipe is processed. +This feature is intended to allow existing makefiles to add the +@code{.ONESHELL} special target and still run properly without +extensive modifications. Since the special prefix characters are not +legal at the beginning of a line in a POSIX shell script this is not a +loss in functionality. For example, this works as expected: + +@example +.ONESHELL: +foo : bar/lose + @@cd $(@@D) + @@gobble $(@@F) > ../$@@ +@end example + +Even with this special feature, however, makefiles with +@code{.ONESHELL} will behave differently in ways that could be +noticeable. For example, normally if any line in the recipe fails, +that causes the rule to fail and no more recipe lines are processed. +Under @code{.ONESHELL} a failure of any but the final recipe line will +not be noticed by @code{make}. You can modify @code{.SHELLFLAGS} to +add the @code{-e} option to the shell which will cause any failure +anywhere in the command line to cause the shell to fail, but this +could itself cause your recipe to behave differently. Ultimately you +may need to harden your recipe lines to allow them to work with +@code{.ONESHELL}. + +@node Choosing the Shell, , One Shell, Execution +@subsection Choosing the Shell +@cindex shell, choosing the +@cindex @code{SHELL}, value of +@cindex @code{.SHELLFLAGS}, value of + +@vindex SHELL +@vindex .SHELLFLAGS +The program used as the shell is taken from the variable @code{SHELL}. +If this variable is not set in your makefile, the program +@file{/bin/sh} is used as the shell. The argument(s) passed to the +shell are taken from the variable @code{.SHELLFLAGS}. The default +value of @code{.SHELLFLAGS} is @code{-c} normally, or @code{-ec} in +POSIX-conforming mode. + +@cindex environment, @code{SHELL} in +Unlike most variables, the variable @code{SHELL} is never set from the +environment. This is because the @code{SHELL} environment variable is +used to specify your personal choice of shell program for interactive +use. It would be very bad for personal choices like this to affect the +functioning of makefiles. @xref{Environment, ,Variables from the +Environment}. + +Furthermore, when you do set @code{SHELL} in your makefile that value +is @emph{not} exported in the environment to recipe lines that +@code{make} invokes. Instead, the value inherited from the user's +environment, if any, is exported. You can override this behavior by +explicitly exporting @code{SHELL} (@pxref{Variables/Recursion, +,Communicating Variables to a Sub-@code{make}}), forcing it to be +passed in the environment to recipe lines. + +@vindex @code{MAKESHELL} @r{(MS-DOS alternative to @code{SHELL})} +However, on MS-DOS and MS-Windows the value of @code{SHELL} in the +environment @strong{is} used, since on those systems most users do not +set this variable, and therefore it is most likely set specifically to +be used by @code{make}. On MS-DOS, if the setting of @code{SHELL} is +not suitable for @code{make}, you can set the variable +@code{MAKESHELL} to the shell that @code{make} should use; if set it +will be used as the shell instead of the value of @code{SHELL}. + +@subsubheading Choosing a Shell in DOS and Windows +@cindex shell, in DOS and Windows +@cindex DOS, choosing a shell in +@cindex Windows, choosing a shell in + +Choosing a shell in MS-DOS and MS-Windows is much more complex than on +other systems. + +@vindex COMSPEC +On MS-DOS, if @code{SHELL} is not set, the value of the variable +@code{COMSPEC} (which is always set) is used instead. + +@cindex @code{SHELL}, MS-DOS specifics +The processing of lines that set the variable @code{SHELL} in Makefiles +is different on MS-DOS. The stock shell, @file{command.com}, is +ridiculously limited in its functionality and many users of @code{make} +tend to install a replacement shell. Therefore, on MS-DOS, @code{make} +examines the value of @code{SHELL}, and changes its behavior based on +whether it points to a Unix-style or DOS-style shell. This allows +reasonable functionality even if @code{SHELL} points to +@file{command.com}. + +If @code{SHELL} points to a Unix-style shell, @code{make} on MS-DOS +additionally checks whether that shell can indeed be found; if not, it +ignores the line that sets @code{SHELL}. In MS-DOS, GNU @code{make} +searches for the shell in the following places: + +@enumerate +@item +In the precise place pointed to by the value of @code{SHELL}. For +example, if the makefile specifies @samp{SHELL = /bin/sh}, @code{make} +will look in the directory @file{/bin} on the current drive. + +@item +In the current directory. + +@item +In each of the directories in the @code{PATH} variable, in order. + +@end enumerate + +In every directory it examines, @code{make} will first look for the +specific file (@file{sh} in the example above). If this is not found, +it will also look in that directory for that file with one of the known +extensions which identify executable files. For example @file{.exe}, +@file{.com}, @file{.bat}, @file{.btm}, @file{.sh}, and some others. + +If any of these attempts is successful, the value of @code{SHELL} will +be set to the full pathname of the shell as found. However, if none of +these is found, the value of @code{SHELL} will not be changed, and thus +the line that sets it will be effectively ignored. This is so +@code{make} will only support features specific to a Unix-style shell if +such a shell is actually installed on the system where @code{make} runs. + +Note that this extended search for the shell is limited to the cases +where @code{SHELL} is set from the Makefile; if it is set in the +environment or command line, you are expected to set it to the full +pathname of the shell, exactly as things are on Unix. + +The effect of the above DOS-specific processing is that a Makefile that +contains @samp{SHELL = /bin/sh} (as many Unix makefiles do), will work +on MS-DOS unaltered if you have e.g.@: @file{sh.exe} installed in some +directory along your @code{PATH}. + +@vindex SHELL +@vindex .SHELLFLAGS + +@node Parallel, Errors, Execution, Recipes +@section Parallel Execution +@cindex recipes, execution in parallel +@cindex parallel execution +@cindex execution, in parallel +@cindex job slots +@cindex @code{-j} +@cindex @code{--jobs} + +GNU @code{make} knows how to execute several recipes at once. Normally, +@code{make} will execute only one recipe at a time, waiting for it to finish +before executing the next. However, the @samp{-j} or @samp{--jobs} option +tells @code{make} to execute many recipes simultaneously. You can inhibit +parallelism for some or all targets from within the makefile (@pxref{Parallel +Disable, ,Disabling Parallel Execution}). + +On MS-DOS, the @samp{-j} option has no effect, since that system doesn't +support multi-processing. + +If the @samp{-j} option is followed by an integer, this is the number of +recipes to execute at once; this is called the number of @dfn{job slots}. +If there is nothing looking like an integer after the @samp{-j} option, +there is no limit on the number of job slots. The default number of job +slots is one, which means serial execution (one thing at a time). + +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 +terminates for any reason (including a signal) with child processes +running, it waits for them to finish before actually exiting. + +@cindex load average +@cindex limiting jobs based on load +@cindex jobs, limiting based on load +@cindex @code{-l} (load average) +@cindex @code{--max-load} +@cindex @code{--load-average} +When the system is heavily loaded, you will probably want to run fewer jobs +than when it is lightly loaded. You can use the @samp{-l} option to tell +@code{make} to limit the number of jobs to run at once, based on the load +average. The @samp{-l} or @samp{--max-load} +option is followed by a floating-point number. For +example, + +@example +-l 2.5 +@end example + +@noindent +will not let @code{make} start more than one job if the load average is +above 2.5. The @samp{-l} option with no following number removes the +load limit, if one was given with a previous @samp{-l} option. + +More precisely, when @code{make} goes to start up a job, and it already has +at least one job running, it checks the current load average; if it is not +lower than the limit given with @samp{-l}, @code{make} waits until the load +average goes below that limit, or until all the other jobs finish. + +By default, there is no load limit. + +@menu +* Parallel Disable:: Disabling parallel execution +* Parallel Output:: Handling output during parallel execution +* Parallel Input:: Handling input during parallel execution +@end menu + +@node Parallel Disable, Parallel Output, Parallel, Parallel +@subsection Disabling Parallel Execution +@cindex disabling parallel execution +@cindex parallel execution, disabling + +If a makefile completely and accurately defines the dependency relationships +between all of its targets, then @code{make} will correctly build the goals +regardless of whether parallel execution is enabled or not. This is the ideal +way to write makefiles. + +However, sometimes some or all of the targets in a makefile cannot be executed +in parallel and it's not feasible to add the prerequisites needed to inform +@code{make}. In that case the makefile can use various methods to disable +parallel execution. + +@cindex .NOTPARALLEL special target +@findex .NOTPARALLEL +If the @code{.NOTPARALLEL} special target with no prerequisites is specified +anywhere then the entire instance of @code{make} will be run serially, +regardless of the parallel setting. For example: + +@example +@group +all: one two three +one two three: ; @@sleep 1; echo $@@ + +.NOTPARALLEL: +@end group +@end example + +Regardless of how @code{make} is invoked, the targets @file{one}, @file{two}, +and @file{three} will be run serially. + +If the @code{.NOTPARALLEL} special target has prerequisites, then each of +those prerequisites will be considered a target and all prerequisites of these +targets will be run serially. Note that only when building this target will +the prerequisites be run serially: if some other target lists the same +prerequisites and is not in @code{.NOTPARALLEL} then these prerequisites may +be run in parallel. For example: + +@example +@group +all: base notparallel + +base: one two three +notparallel: one two three + +one two three: ; @@sleep 1; echo $@@ + +.NOTPARALLEL: notparallel +@end group +@end example + +Here @samp{make -j base} will run the targets @file{one}, @file{two}, and +@file{three} in parallel, while @samp{make -j notparallel} will run them +serially. If you run @samp{make -j all} then they @emph{will} be run in +parallel since @file{base} lists them as prerequisites and is not serialized. + +The @code{.NOTPARALLEL} target should not have commands. + +@cindex .WAIT special target +@findex .WAIT +Finally you can control the serialization of specific prerequisites in a +fine-grained way using the @code{.WAIT} special target. When this target +appears in a prerequisite list and parallel execution is enabled, @code{make} +will not build any of the prerequisites to the @emph{right} of @code{.WAIT} +until all prerequisites to the @emph{left} of @code{.WAIT} have completed. +For example: + +@example +@group +all: one two .WAIT three +one two three: ; @@sleep 1; echo $@@ +@end group +@end example + +If parallel execution is enabled, @code{make} will try to build @file{one} and +@file{two} in parallel but will not try to build @file{three} until both are +complete. + +As with targets provided to @code{.NOTPARALLEL}, @code{.WAIT} takes effect +only when building the target in whose prerequisite list it appears. If the +same prerequisites are present in other targets, without @code{.WAIT}, then +they may still be run in parallel. Because of this, neither +@code{.NOTPARALLEL} with targets nor @code{.WAIT} are as reliable for +controlling parallel execution as defining a prerequisite relationship. +However they are easy to use and may be sufficient in less complex situations. + +The @code{.WAIT} prerequisite will not be present in any of the automatic +variables for the rule. + +You can create an actual target @code{.WAIT} in your makefile for portability +but this is not required to use this feature. If a @code{.WAIT} target is +created it should not have prerequisites or commands. + +The @code{.WAIT} feature is also implemented in other versions of @code{make} +and it's specified in the POSIX standard for @code{make}. + +@node Parallel Output, Parallel Input, Parallel Disable, 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) +@cindex recipes, errors in +@cindex exit status (errors) + +After each shell invocation returns, @code{make} looks at its exit +status. If the shell completed successfully (the exit status is +zero), the next line in the recipe is executed in a new shell; after +the last line is finished, the rule is finished. + +If there is an error (the exit status is nonzero), @code{make} gives up on +the current rule, and perhaps on all rules. + +Sometimes the failure of a certain recipe line does not indicate a problem. +For example, you may use the @code{mkdir} command to ensure that a +directory exists. If the directory already exists, @code{mkdir} will +report an error, but you probably want @code{make} to continue regardless. + +@cindex @code{-} (in recipes) +To ignore errors in a recipe line, write a @samp{-} at the beginning +of the line's text (after the initial tab). The @samp{-} is discarded +before the line is passed to the shell for execution. + +For example, + +@example +@group +clean: + -rm -f *.o +@end group +@end example +@cindex @code{rm} (shell command) + +@noindent +This causes @code{make} to continue even if @code{rm} is unable to +remove a file. + +@cindex @code{-i} +@cindex @code{--ignore-errors} +@findex .IGNORE +When you run @code{make} with the @samp{-i} or @samp{--ignore-errors} +flag, errors are ignored in all recipes of all rules. A rule in the +makefile for the special target @code{.IGNORE} has the same effect, if +there are no prerequisites. This is less flexible but sometimes useful. + +When errors are to be ignored, because of either a @samp{-} or the +@samp{-i} flag, @code{make} treats an error return just like success, +except that it prints out a message that tells you the status code +the shell exited with, and says that the error has been ignored. + +When an error happens that @code{make} has not been told to ignore, +it implies that the current target cannot be correctly remade, and neither +can any other that depends on it either directly or indirectly. No further +recipes will be executed for these targets, since their preconditions +have not been achieved. + + +@cindex @code{-k} +@cindex @code{--keep-going} +Normally @code{make} gives up immediately in this circumstance, returning a +nonzero status. However, if the @samp{-k} or @samp{--keep-going} +flag is specified, @code{make} +continues to consider the other prerequisites of the pending targets, +remaking them if necessary, before it gives up and returns nonzero status. +For example, after an error in compiling one object file, @samp{make -k} +will continue compiling other object files even though it already knows +that linking them will be impossible. @xref{Options Summary, ,Summary of Options}. + +The usual behavior assumes that your purpose is to get the specified +targets up to date; once @code{make} learns that this is impossible, it +might as well report the failure immediately. The @samp{-k} option says +that the real purpose is to test as many of the changes made in the +program as possible, perhaps to find several independent problems so +that you can correct them all before the next attempt to compile. This +is why Emacs' @code{compile} command passes the @samp{-k} flag by +default. +@cindex Emacs (@code{M-x compile}) + +@findex .DELETE_ON_ERROR +@cindex deletion of target files +@cindex removal of target files +@cindex target, deleting on error +Usually when a recipe line fails, if it has changed the target file at all, +the file is corrupted and cannot be used---or at least it is not +completely updated. Yet the file's time stamp says that it is now up to +date, so the next time @code{make} runs, it will not try to update that +file. The situation is just the same as when the shell is killed by a +signal; @pxref{Interrupts}. So generally the right thing to do is to +delete the target file if the recipe fails after beginning to change +the file. @code{make} will do this if @code{.DELETE_ON_ERROR} appears +as a target. This is almost always what you want @code{make} to do, but +it is not historical practice; so for compatibility, you must explicitly +request it. + +@node Interrupts, Recursion, Errors, Recipes +@section Interrupting or Killing @code{make} +@cindex interrupt +@cindex signal +@cindex deletion of target files +@cindex removal of target files +@cindex target, deleting on interrupt +@cindex killing (interruption) + +If @code{make} gets a fatal signal while a shell is executing, it may +delete the target file that the recipe was supposed to update. This is +done if the target file's last-modification time has changed since +@code{make} first checked it. + +The purpose of deleting the target is to make sure that it is remade from +scratch when @code{make} is next run. Why is this? Suppose you type +@kbd{Ctrl-c} while a compiler is running, and it has begun to write an +object file @file{foo.o}. The @kbd{Ctrl-c} kills the compiler, resulting +in an incomplete file whose last-modification time is newer than the source +file @file{foo.c}. But @code{make} also receives the @kbd{Ctrl-c} signal +and deletes this incomplete file. If @code{make} did not do this, the next +invocation of @code{make} would think that @file{foo.o} did not require +updating---resulting in a strange error message from the linker when it +tries to link an object file half of which is missing. + +@findex .PRECIOUS +You can prevent the deletion of a target file in this way by making the +special target @code{.PRECIOUS} depend on it. Before remaking a target, +@code{make} checks to see whether it appears on the prerequisites of +@code{.PRECIOUS}, and thereby decides whether the target should be deleted +if a signal happens. Some reasons why you might do this are that the +target is updated in some atomic fashion, or exists only to record a +modification-time (its contents do not matter), or must exist at all +times to prevent other sorts of trouble. + +Although @code{make} does its best to clean up there are certain situations +in which cleanup is impossible. For example, @code{make} may be killed by +an uncatchable signal. Or, one of the programs make invokes may be killed +or crash, leaving behind an up-to-date but corrupt target file: @code{make} +will not realize that this failure requires the target to be cleaned. Or +@code{make} itself may encounter a bug and crash. + +For these reasons it's best to write @emph{defensive recipes}, which won't +leave behind corrupted targets even if they fail. Most commonly these +recipes create temporary files rather than updating the target directly, +then rename the temporary file to the final target name. Some compilers +already behave this way, so that you don't need to write a defensive recipe. + +@node Recursion, Canned Recipes, Interrupts, Recipes +@section Recursive Use of @code{make} +@cindex recursion +@cindex subdirectories, recursion for + +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 sub-directory @file{subdir} which has its own makefile, and you would +like the containing directory's makefile to run @code{make} on the +sub-directory. You can do it by writing this: + +@example +subsystem: + cd subdir && $(MAKE) +@end example + +@noindent +or, equivalently, this (@pxref{Options Summary, ,Summary of Options}): + +@example +subsystem: + $(MAKE) -C subdir +@end example +@cindex @code{-C} +@cindex @code{--directory} + +You can write recursive @code{make} commands just by copying this example, +but there are many things to know about how they work and why, and about +how the sub-@code{make} relates to the top-level @code{make}. You may +also find it useful to declare targets that invoke recursive +@code{make} commands as @samp{.PHONY} (for more discussion on when +this is useful, see @ref{Phony Targets}). + +@vindex @code{CURDIR} +For your convenience, when GNU @code{make} starts (after it has +processed any @code{-C} options) it sets the variable @code{CURDIR} to +the pathname of the current working directory. This value is never +touched by @code{make} again: in particular note that if you include +files from other directories the value of @code{CURDIR} does not +change. The value has the same precedence it would have if it were +set in the makefile (by default, an environment variable @code{CURDIR} +will not override this value). Note that setting this variable has no +impact on the operation of @code{make} (it does not cause @code{make} +to change its working directory, for example). + +@menu +* MAKE Variable:: The special effects of using @samp{$(MAKE)}. +* Variables/Recursion:: How to communicate variables to a sub-@code{make}. +* Options/Recursion:: How to communicate options to a sub-@code{make}. +* -w Option:: How the @samp{-w} or @samp{--print-directory} option + helps debug use of recursive @code{make} commands. +@end menu + +@node MAKE Variable, Variables/Recursion, Recursion, Recursion +@subsection How the @code{MAKE} Variable Works +@vindex MAKE +@cindex recursion, and @code{MAKE} variable + +Recursive @code{make} commands should always use the variable @code{MAKE}, +not the explicit command name @samp{make}, as shown here: + +@example +@group +subsystem: + cd subdir && $(MAKE) +@end group +@end example + +The value of this variable is the file name with which @code{make} was +invoked. If this file name was @file{/bin/make}, then the recipe executed +is @samp{cd subdir && /bin/make}. If you use a special version of +@code{make} to run the top-level makefile, the same special version will be +executed for recursive invocations. +@cindex @code{cd} (shell command) + +@cindex +, and recipes +As a special feature, using the variable @code{MAKE} in the recipe of +a rule alters the effects of the @samp{-t} (@samp{--touch}), @samp{-n} +(@samp{--just-print}), or @samp{-q} (@w{@samp{--question}}) option. +Using the @code{MAKE} variable has the same effect as using a @samp{+} +character at the beginning of the recipe line. @xref{Instead of +Execution, ,Instead of Executing the Recipes}. This special feature +is only enabled if the @code{MAKE} variable appears directly in the +recipe: it does not apply if the @code{MAKE} variable is referenced +through expansion of another variable. In the latter case you must +use the @samp{+} token to get these special effects. + +Consider the command @samp{make -t} in the above example. (The +@samp{-t} option marks targets as up to date without actually running +any recipes; see @ref{Instead of Execution}.) Following the usual +definition of @samp{-t}, a @samp{make -t} command in the example would +create a file named @file{subsystem} and do nothing else. What you +really want it to do is run @samp{@w{cd subdir &&} @w{make -t}}; but +that would require executing the recipe, and @samp{-t} says not to +execute recipes. +@cindex @code{-t}, and recursion +@cindex recursion, and @code{-t} +@cindex @code{--touch}, and recursion + +The special feature makes this do what you want: whenever a recipe +line of a rule contains the variable @code{MAKE}, the flags @samp{-t}, +@samp{-n} and @samp{-q} do not apply to that line. Recipe lines +containing @code{MAKE} are executed normally despite the presence of a +flag that causes most recipes not to be run. The usual +@code{MAKEFLAGS} mechanism passes the flags to the sub-@code{make} +(@pxref{Options/Recursion, ,Communicating Options to a +Sub-@code{make}}), so your request to touch the files, or print the +recipes, is propagated to the subsystem. + +@node Variables/Recursion, Options/Recursion, MAKE Variable, Recursion +@subsection Communicating Variables to a Sub-@code{make} +@cindex sub-@code{make} +@cindex environment, and recursion +@cindex exporting variables +@cindex variables, environment +@cindex variables, exporting +@cindex recursion, and environment +@cindex recursion, and variables + +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 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}). + +To pass down, or @dfn{export}, a variable, @code{make} adds the +variable and its value to the environment for running each line of the +recipe. The sub-@code{make}, in turn, uses the environment to +initialize its table of variable values. @xref{Environment, +,Variables from the Environment}. + +Except by explicit request, @code{make} exports a variable only if it +is either defined in the environment initially, or if set on the command +line and its name consists only of letters, numbers, and underscores. + +@cindex SHELL, exported value +The value of the @code{make} variable @code{SHELL} is not exported. +Instead, the value of the @code{SHELL} variable from the invoking +environment is passed to the sub-@code{make}. You can force +@code{make} to export its value for @code{SHELL} by using the +@code{export} directive, described below. @xref{Choosing the Shell}. + +The special variable @code{MAKEFLAGS} is always exported (unless you +unexport it). @code{MAKEFILES} is exported if you set it to anything. + +@code{make} automatically passes down variable values that were defined +on the command line, by putting them in the @code{MAKEFLAGS} variable. +@iftex +See the next section. +@end iftex +@ifnottex +@xref{Options/Recursion}. +@end ifnottex + +Variables are @emph{not} normally passed down if they were created by +default by @code{make} (@pxref{Implicit Variables, ,Variables Used by +Implicit Rules}). The sub-@code{make} will define these for +itself. + +@findex export +If you want to export specific variables to a sub-@code{make}, use the +@code{export} directive, like this: + +@example +export @var{variable} @dots{} +@end example + +@noindent +@findex unexport +If you want to @emph{prevent} a variable from being exported, use the +@code{unexport} directive, like this: + +@example +unexport @var{variable} @dots{} +@end example + +@noindent +In both of these forms, the arguments to @code{export} and +@code{unexport} are expanded, and so could be variables or functions +which expand to a (list of) variable names to be (un)exported. + +As a convenience, you can define a variable and export it at the same +time by doing: + +@example +export @var{variable} = value +@end example + +@noindent +has the same result as: + +@example +@var{variable} = value +export @var{variable} +@end example + +@noindent +and + +@example +export @var{variable} := value +@end example + +@noindent +has the same result as: + +@example +@var{variable} := value +export @var{variable} +@end example + +Likewise, + +@example +export @var{variable} += value +@end example + +@noindent +is just like: + +@example +@var{variable} += value +export @var{variable} +@end example + +@noindent +@xref{Appending, ,Appending More Text to Variables}. + +You may notice that the @code{export} and @code{unexport} directives +work in @code{make} in the same way they work in the shell, @code{sh}. + +If you want all variables to be exported by default, you can use +@code{export} by itself: + +@example +export +@end example + +@noindent +This tells @code{make} that variables which are not explicitly mentioned in an +@code{export} or @code{unexport} directive should be exported. Any variable +given in an @code{unexport} directive will still @emph{not} be exported. + +@findex .EXPORT_ALL_VARIABLES +@cindex compatibility in exporting +The behavior elicited by an @code{export} directive by itself was the default +in older versions of GNU @code{make}. If your makefiles depend on this +behavior and you want to be compatible with old versions of @code{make}, you +can add the special target @code{.EXPORT_ALL_VARIABLES} to your makefile +instead of using the @code{export} directive. This will be ignored by old +@code{make}s, while the @code{export} directive will cause a syntax +error. + +When using @code{export} by itself or @code{.EXPORT_ALL_VARIABLES} to export +variables by default, only variables whose names consist solely of +alphanumerics and underscores will be exported. To export other variables you +must specifically mention them in an @code{export} directive. + +Adding a variable's value to the environment requires it to be expanded. If +expanding a variable has side-effects (such as the @code{info} or @code{eval} +or similar functions) then these side-effects will be seen every time a +command is invoked. You can avoid this by ensuring that such variables have +names which are not exportable by default. However, a better solution is to +@emph{not} use this ``export by default'' facility at all, and instead +explicitly @code{export} the relevant variables by name. + +You can use @code{unexport} by itself to tell @code{make} @emph{not} to export +variables by default. Since this is the default behavior, you would only need +to do this if @code{export} had been used by itself earlier (in an included +makefile, perhaps). You @strong{cannot} use @code{export} and @code{unexport} +by themselves to have variables exported for some recipes and not for others. +The last @code{export} or @code{unexport} directive that appears by itself +determines the behavior for the entire run of @code{make}. + +@vindex MAKELEVEL +@cindex recursion, level of +As a special feature, the variable @code{MAKELEVEL} is changed when it +is passed down from level to level. This variable's value is a string +which is the depth of the level as a decimal number. The value is +@samp{0} for the top-level @code{make}; @samp{1} for a sub-@code{make}, +@samp{2} for a sub-sub-@code{make}, and so on. The incrementation +happens when @code{make} sets up the environment for a recipe. + +The main use of @code{MAKELEVEL} is to test it in a conditional +directive (@pxref{Conditionals, ,Conditional Parts of Makefiles}); this +way you can write a makefile that behaves one way if run recursively and +another way if run directly by you. + +@vindex MAKEFILES +You can use the variable @code{MAKEFILES} to cause all sub-@code{make} +commands to use additional makefiles. The value of @code{MAKEFILES} is +a whitespace-separated list of file names. This variable, if defined in +the outer-level makefile, is passed down through the environment; then +it serves as a list of extra makefiles for the sub-@code{make} to read +before the usual or specified ones. @xref{MAKEFILES Variable, ,The +Variable @code{MAKEFILES}}. + +@node Options/Recursion, -w Option, Variables/Recursion, Recursion +@subsection Communicating Options to a Sub-@code{make} +@cindex options, and recursion +@cindex recursion, and options + +@vindex MAKEFLAGS +Flags such as @samp{-s} and @samp{-k} are passed automatically to the +sub-@code{make} through the variable @code{MAKEFLAGS}. This variable is +set up automatically by @code{make} to contain the flag letters that +@code{make} received. Thus, if you do @w{@samp{make -ks}} then +@code{MAKEFLAGS} gets the value @samp{ks}. + +As a consequence, every sub-@code{make} gets a value for @code{MAKEFLAGS} +in its environment. In response, it takes the flags from that value and +processes them as if they had been given as arguments. +@xref{Options Summary, ,Summary of Options}. + +The value of @code{MAKEFLAGS} is a possibly empty group of characters +representing single-letter options that take no argument, followed by a space +and any options that take arguments or which have long option names. If an +option has both single-letter and long options, the single-letter option is +always preferred. If there are no single-letter options on the command line, +then the value of @code{MAKEFLAGS} starts with a space. + +@cindex command line variable definitions, and recursion +@cindex variables, command line, and recursion +@cindex recursion, and command line variable definitions +Likewise variables defined on the command line are passed to the +sub-@code{make} through @code{MAKEFLAGS}. Words in the value of +@code{MAKEFLAGS} that contain @samp{=}, @code{make} treats as variable +definitions just as if they appeared on the command line. +@xref{Overriding, ,Overriding Variables}. + +@cindex @code{-C}, and recursion +@cindex @code{-f}, and recursion +@cindex @code{-o}, and recursion +@cindex @code{-W}, and recursion +@cindex @code{--directory}, and recursion +@cindex @code{--file}, and recursion +@cindex @code{--old-file}, and recursion +@cindex @code{--assume-old}, and recursion +@cindex @code{--assume-new}, and recursion +@cindex @code{--new-file}, and recursion +@cindex recursion, and @code{-C} +@cindex recursion, and @code{-f} +@cindex recursion, and @code{-o} +@cindex recursion, and @code{-W} +The options @samp{-C}, @samp{-f}, @samp{-o}, and @samp{-W} are not put +into @code{MAKEFLAGS}; these options are not passed down. + +@cindex @code{-j}, and recursion +@cindex @code{--jobs}, and recursion +@cindex recursion, and @code{-j} +@cindex job slots, and recursion +The @samp{-j} option is a special case (@pxref{Parallel, ,Parallel Execution}). +If you set it to some numeric value @samp{N} and your operating system +supports it (most any UNIX system will; others typically won't), the +parent @code{make} and all the sub-@code{make}s will communicate to +ensure that there are only @samp{N} jobs running at the same time +between them all. Note that any job that is marked recursive +(@pxref{Instead of Execution, ,Instead of Executing Recipes}) +doesn't count against the total jobs (otherwise we could get @samp{N} +sub-@code{make}s running and have no slots left over for any real work!) + +If your operating system doesn't support the above communication, then +no @samp{-j} is added to @code{MAKEFLAGS}, so that sub-@code{make}s +run in non-parallel mode. If the @w{@samp{-j}} option were passed down +to sub-@code{make}s you would get many more jobs running in parallel +than you asked for. If you give @samp{-j} with no numeric argument, +meaning to run as many jobs as possible in parallel, this is passed +down, since multiple infinities are no more than one. + +If you do not want to pass the other flags down, you must change the +value of @code{MAKEFLAGS}, for example like this: + +@example +subsystem: + cd subdir && $(MAKE) MAKEFLAGS= +@end example + +@vindex MAKEOVERRIDES +The command line variable definitions really appear in the variable +@code{MAKEOVERRIDES}, and @code{MAKEFLAGS} contains a reference to this +variable. If you do want to pass flags down normally, but don't want to +pass down the command line variable definitions, you can reset +@code{MAKEOVERRIDES} to empty, like this: + +@example +MAKEOVERRIDES = +@end example + +@noindent +@cindex Arg list too long +@cindex E2BIG +This is not usually useful to do. However, some systems have a small +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 +(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.) + +@vindex MFLAGS +A similar variable @code{MFLAGS} exists also, for historical +compatibility. It has the same value as @code{MAKEFLAGS} except that it +does not contain the command line variable definitions, and it always +begins with a hyphen unless it is empty (@code{MAKEFLAGS} begins with a +hyphen only when it begins with an option that has no single-letter +version, such as @samp{--warn-undefined-variables}). @code{MFLAGS} was +traditionally used explicitly in the recursive @code{make} command, like +this: + +@example +subsystem: + cd subdir && $(MAKE) $(MFLAGS) +@end example + +@noindent +but now @code{MAKEFLAGS} makes this usage redundant. If you want your +makefiles to be compatible with old @code{make} programs, use this +technique; it will work fine with more modern @code{make} versions too. + +@cindex setting options from environment +@cindex options, setting from environment +@cindex setting options in makefiles +@cindex options, setting in makefiles +The @code{MAKEFLAGS} variable can also be useful if you want to have +certain options, such as @samp{-k} (@pxref{Options Summary, ,Summary of +Options}), set each time you run @code{make}. You simply put a value for +@code{MAKEFLAGS} in your environment. You can also set @code{MAKEFLAGS} in +a makefile, to specify additional flags that should also be in effect for +that makefile. (Note that you cannot use @code{MFLAGS} this way. That +variable is set only for compatibility; @code{make} does not interpret a +value you set for it in any way.) + +When @code{make} interprets the value of @code{MAKEFLAGS} (either from the +environment or from a makefile), it first prepends a hyphen if the value +does not already begin with one. Then it chops the value into words +separated by blanks, and parses these words as if they were options given +on the command line (except that @samp{-C}, @samp{-f}, @samp{-h}, +@samp{-o}, @samp{-W}, and their long-named versions are ignored; and there +is no error for an invalid option). + +If you do put @code{MAKEFLAGS} in your environment, you should be sure not +to include any options that will drastically affect the actions of +@code{make} and undermine the purpose of makefiles and of @code{make} +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. + +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 +@cindex printing directories +@cindex recursion, and printing directories + +If you use several levels of recursive @code{make} invocations, the +@samp{-w} or @w{@samp{--print-directory}} option can make the output a +lot easier to understand by showing each directory as @code{make} +starts processing it and as @code{make} finishes processing it. For +example, if @samp{make -w} is run in the directory @file{/u/gnu/make}, +@code{make} will print a line of the form: + +@example +make: Entering directory `/u/gnu/make'. +@end example + +@noindent +before doing anything else, and a line of the form: + +@example +make: Leaving directory `/u/gnu/make'. +@end example + +@noindent +when processing is completed. + +@cindex @code{-C}, and @code{-w} +@cindex @code{--directory}, and @code{--print-directory} +@cindex recursion, and @code{-w} +@cindex @code{-w}, and @code{-C} +@cindex @code{-w}, and recursion +@cindex @code{--print-directory}, and @code{--directory} +@cindex @code{--print-directory}, and recursion +@cindex @code{--no-print-directory} +@cindex @code{--print-directory}, disabling +@cindex @code{-w}, disabling +Normally, you do not need to specify this option because @samp{make} +does it for you: @samp{-w} is turned on automatically when you use the +@samp{-C} option, and in sub-@code{make}s. @code{make} will not +automatically turn on @samp{-w} if you also use @samp{-s}, which says to +be silent, or if you use @samp{--no-print-directory} to explicitly +disable it. + +@node Canned Recipes, Empty Recipes, Recursion, Recipes +@section Defining Canned Recipes +@cindex canned recipes +@cindex recipes, canned +@cindex sequences of commands +@cindex commands, sequences of + +When the same sequence of commands is useful in making various +targets, you can define it as a canned sequence with the @code{define} +directive, and refer to the canned sequence from the recipes for those +targets. The canned sequence is actually a variable, so the name must +not conflict with other variable names. + +Here is an example of defining a canned recipe: + +@example +define run-yacc = +yacc $(firstword $^) +mv y.tab.c $@@ +endef +@end example +@cindex @code{yacc} + +@noindent +Here @code{run-yacc} is the name of the variable being defined; +@code{endef} marks the end of the definition; the lines in between are the +commands. The @code{define} directive does not expand variable references +and function calls in the canned sequence; the @samp{$} characters, +parentheses, variable names, and so on, all become part of the value of the +variable you are defining. +@xref{Multi-Line, ,Defining Multi-Line Variables}, +for a complete explanation of @code{define}. + +The first command in this example runs Yacc on the first prerequisite of +whichever rule uses the canned sequence. The output file from Yacc is +always named @file{y.tab.c}. The second command moves the output to the +rule's target file name. + +To use the canned sequence, substitute the variable into the recipe of a +rule. You can substitute it like any other variable +(@pxref{Reference, ,Basics of Variable References}). +Because variables defined by @code{define} are recursively expanded +variables, all the variable references you wrote inside the @code{define} +are expanded now. For example: + +@example +foo.c : foo.y + $(run-yacc) +@end example + +@noindent +@samp{foo.y} will be substituted for the variable @samp{$^} when it occurs in +@code{run-yacc}'s value, and @samp{foo.c} for @samp{$@@}. + +This is a realistic example, but this particular one is not needed in +practice because @code{make} has an implicit rule to figure out these +commands based on the file names involved +(@pxref{Implicit Rules, ,Using Implicit Rules}). + +@cindex @@, and @code{define} +@cindex -, and @code{define} +@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 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}. +For example, using this canned sequence: + +@example +define frobnicate = +@@echo "frobnicating target $@@" +frob-step-1 $< -o $@@-step-1 +frob-step-2 $@@-step-1 -o $@@ +endef +@end example + +@noindent +@code{make} will not echo the first line, the @code{echo} command. +But it @emph{will} echo the following two recipe lines. + +On the other hand, prefix characters on the recipe line that refers to +a canned sequence apply to every line in the sequence. So the rule: + +@example +frob.out: frob.in + @@$(frobnicate) +@end example + +@noindent +does not echo @emph{any} recipe lines. +(@xref{Echoing, ,Recipe Echoing}, for a full explanation of @samp{@@}.) + +@node Empty Recipes, , Canned Recipes, Recipes +@section Using Empty Recipes +@cindex empty recipes +@cindex recipes, empty + +It is sometimes useful to define recipes which do nothing. This is done +simply by giving a recipe that consists of nothing but whitespace. For +example: + +@example +target: ; +@end example + +@noindent +defines an empty recipe for @file{target}. You could also use a line +beginning with a recipe prefix character to define an empty recipe, +but this would be confusing because such a line looks empty. + +@findex .DEFAULT@r{, and empty recipes} +You may be wondering why you would want to define a recipe that does +nothing. One reason this is useful is to prevent a target from +getting implicit recipes (from implicit rules or the @code{.DEFAULT} +special target; @pxref{Implicit Rules} and @pxref{Last Resort, +,Defining Last-Resort Default Rules}). + +Empty recipes can also be used to avoid errors for targets that will +be created as a side-effect of another recipe: if the target does not +exist the empty recipe ensures that @code{make} won't complain that it +doesn't know how to build the target, and @code{make} will assume the +target is out of date. + +You may be inclined to define empty recipes for targets that are not +actual files, but only exist so that their prerequisites can be +remade. However, this is not the best way to do that, because the +prerequisites may not be remade properly if the target file actually +does exist. @xref{Phony Targets, ,Phony Targets}, for a better way to +do this. + +@node Using Variables, Conditionals, Recipes, Top +@chapter How to Use Variables +@cindex variable +@cindex value +@cindex recursive variable expansion +@cindex simple variable expansion + +A @dfn{variable} is a name defined in a makefile to represent a string +of text, called the variable's @dfn{value}. These values are +substituted by explicit request into targets, prerequisites, recipes, +and other parts of the makefile. (In some other versions of @code{make}, +variables are called @dfn{macros}.) +@cindex macro + +Variables and functions in all parts of a makefile are expanded when +read, except for in recipes, the right-hand sides of variable +definitions using @samp{=}, and the bodies of variable definitions +using the @code{define} directive. The value a variable expands to is +that of its most recent definition at the time of expansion. In other +words, variables are dynamically scoped. + +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 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. + +It is traditional to use upper case letters in variable names, but we +recommend using lower case letters for variable names that serve internal +purposes in the makefile, and reserving upper case for parameters that +control implicit rules or for parameters that the user should override with +command options (@pxref{Overriding, ,Overriding Variables}). + +A few variables have names that are a single punctuation character or +just a few characters. These are the @dfn{automatic variables}, and +they have particular specialized uses. @xref{Automatic Variables}. + +@menu +* Reference:: How to use the value of a variable. +* Flavors:: Variables come in two flavors. +* Advanced:: Advanced features for referencing a variable. +* Values:: All the ways variables get their values. +* Setting:: How to set a variable in the makefile. +* Appending:: How to append more text to the old value + of a variable. +* Override Directive:: How to set a variable in the makefile even if + 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. +* Pattern-specific:: Target-specific variable values can be applied + to a group of targets that match a pattern. +* Suppressing Inheritance:: Suppress inheritance of variables. +* Special Variables:: Variables with special meaning or behavior. +@end menu + +@node Reference, Flavors, Using Variables, Using Variables +@section Basics of Variable References +@cindex variables, how to reference +@cindex reference to variables +@cindex @code{$}, in variable reference +@cindex dollar sign (@code{$}), in variable reference + +To substitute a variable's value, write a dollar sign followed by the name +of the variable in parentheses or braces: either @samp{$(foo)} or +@samp{$@{foo@}} is a valid reference to the variable @code{foo}. This +special significance of @samp{$} is why you must write @samp{$$} to have +the effect of a single dollar sign in a file name or recipe. + +Variable references can be used in any context: targets, prerequisites, +recipes, most directives, and new variable values. Here is an +example of a common case, where a variable holds the names of all the +object files in a program: + +@example +@group +objects = program.o foo.o utils.o +program : $(objects) + cc -o program $(objects) + +$(objects) : defs.h +@end group +@end example + +Variable references work by strict textual substitution. Thus, the rule + +@example +@group +foo = c +prog.o : prog.$(foo) + $(foo)$(foo) -$(foo) prog.$(foo) +@end group +@end example + +@noindent +could be used to compile a C program @file{prog.c}. Since spaces before +the variable value are ignored in variable assignments, the value of +@code{foo} is precisely @samp{c}. (Don't actually write your makefiles +this way!) + +A dollar sign followed by a character other than a dollar sign, +open-parenthesis or open-brace treats that single character as the +variable name. Thus, you could reference the variable @code{x} with +@samp{$x}. However, this practice can lead to confusion (e.g., +@samp{$foo} refers to the variable @code{f} followed by the string +@code{oo}) so we recommend using parentheses or braces around all +variables, even single-letter variables, unless omitting them gives +significant readability improvements. One place where readability is +often improved is automatic variables (@pxref{Automatic Variables}). + +@node Flavors, Advanced, Reference, Using Variables +@section The Two Flavors of Variables +@cindex flavors of variables +@cindex recursive variable expansion +@cindex variables, flavors +@cindex recursively expanded variables +@cindex variables, recursively expanded + +There are different ways that a variable in GNU @code{make} can get a value; +we call them the @dfn{flavors} of variables. The flavors are distinguished in +how they handle the values they are assigned in the makefile, and in how those +values are managed when the variable is later used and expanded. + +@menu +* Recursive Assignment:: Setting recursively expanded variables. +* Simple Assignment:: Setting simply expanded variables. +* Immediate Assignment:: Setting immediately expanded variables. +* Conditional Assignment:: Assigning variable values conditionally. +@end menu + +@node Recursive Assignment, Simple Assignment, Flavors, Flavors +@subsection Recursively Expanded Variable Assignment +@cindex = +The first flavor of variable is a @dfn{recursively expanded} variable. +Variables of this sort are defined by lines using @samp{=} +(@pxref{Setting, ,Setting Variables}) or by the @code{define} directive +(@pxref{Multi-Line, ,Defining Multi-Line Variables}). The value you specify +is installed verbatim; if it contains references to other variables, +these references are expanded whenever this variable is substituted (in +the course of expanding some other string). When this happens, it is +called @dfn{recursive expansion}. + +For example, + +@example +foo = $(bar) +bar = $(ugh) +ugh = Huh? + +all:;echo $(foo) +@end example + +@noindent +will echo @samp{Huh?}: @samp{$(foo)} expands to @samp{$(bar)} which +expands to @samp{$(ugh)} which finally expands to @samp{Huh?}. + +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 +include_dirs = -Ifoo -Ibar +@end example + +@noindent +will do what was intended: when @samp{CFLAGS} is expanded in a recipe, +it will expand to @samp{-Ifoo -Ibar -O}. A major disadvantage is that you +cannot append something on the end of a variable, as in + +@example +CFLAGS = $(CFLAGS) -O +@end example + +@noindent +because it will cause an infinite loop in the variable expansion. +(Actually @code{make} detects the infinite loop and reports an error.) +@cindex loops in variable expansion +@cindex variables, loops in expansion + +Another disadvantage is that any functions +(@pxref{Functions, ,Functions for Transforming Text}) +referenced in the definition will be executed every time the variable is +expanded. This makes @code{make} run slower; worse, it causes the +@code{wildcard} and @code{shell} functions to give unpredictable results +because you cannot easily control when they are called, or even how many +times. + +@node Simple Assignment, Immediate Assignment, Recursive Assignment, Flavors +@subsection Simply Expanded Variable Assignment +To avoid the problems and inconveniences of recursively expanded +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{:=} +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{::=} is added to +the POSIX standard for POSIX Issue 8). + +The value of a simply expanded variable is scanned once, expanding any +references to other variables and functions, when the variable is +defined. Once that expansion is complete the value of the variable is +never expanded again: when the variable is used the value is copied +verbatim as the expansion. If the value contained variable references +the result of the expansion will contain their values @emph{as of the +time this variable was defined}. Therefore, + +@example +@group +x := foo +y := $(x) bar +x := later +@end group +@end example + +@noindent +is equivalent to + +@example +@group +y := foo bar +x := later +@end group +@end example + +Here is a somewhat more complicated example, illustrating the use of +@samp{:=} in conjunction with the @code{shell} function. +(@xref{Shell Function, , The @code{shell} Function}.) This example +also shows use of the variable @code{MAKELEVEL}, which is changed +when it is passed down from level to level. +(@xref{Variables/Recursion, , Communicating Variables to a +Sub-@code{make}}, for information about @code{MAKELEVEL}.) + +@vindex MAKELEVEL +@vindex MAKE +@example +@group +ifeq (0,$@{MAKELEVEL@}) +whoami := $(shell whoami) +host-type := $(shell arch) +MAKE := $@{MAKE@} host-type=$@{host-type@} whoami=$@{whoami@} +endif +@end group +@end example + +@noindent +An advantage of this use of @samp{:=} is that a typical +`descend into a directory' recipe then looks like this: + +@example +@group +$@{subdirs@}: + $@{MAKE@} -C $@@ all +@end group +@end example + +Simply expanded variables generally make complicated makefile programming +more predictable because they work like variables in most programming +languages. They allow you to redefine a variable using its own value (or +its value processed in some way by one of the expansion functions) and to +use the expansion functions much more efficiently +(@pxref{Functions, ,Functions for Transforming Text}). + +@cindex spaces, in variable values +@cindex whitespace, in variable values +@cindex variables, spaces in values +You can also use them to introduce controlled leading whitespace into +variable values. Leading whitespace characters are discarded from your +input before substitution of variable references and function calls; +this means you can include leading spaces in a variable value by +protecting them with variable references, like this: + +@example +@group +nullstring := +space := $(nullstring) # end of the line +@end group +@end example + +@noindent +Here the value of the variable @code{space} is precisely one space. The +comment @w{@samp{# end of the line}} is included here just for clarity. +Since trailing space characters are @emph{not} stripped from variable +values, just a space at the end of the line would have the same effect +(but be rather hard to read). If you put whitespace at the end of a +variable value, it is a good idea to put a comment like that at the end +of the line to make your intent clear. Conversely, if you do @emph{not} +want any whitespace characters at the end of your variable value, you +must remember not to put a random comment on the end of the line after +some whitespace, such as this: + +@example +dir := /foo/bar # directory to put the frobs in +@end example + +@noindent +Here the value of the variable @code{dir} is @w{@samp{/foo/bar }} +(with four trailing spaces), which was probably not the intention. +(Imagine something like @w{@samp{$(dir)/file}} with this definition!) + +@node Immediate Assignment, Conditional Assignment, Simple Assignment, Flavors +@subsection Immediately Expanded Variable Assignment +@cindex immediate variable assignment +@cindex variables, immediate assignment +@cindex :::= + +Another form of assignment allows for immediate expansion, but unlike simple +assignment the resulting variable is recursive: it will be re-expanded again +on every use. In order to avoid unexpected results, after the value is +immediately expanded it will automatically be quoted: all instances of +@code{$} in the value after expansion will be converted into @code{$$}. This +type of assignment uses the @samp{:::=} operator. For example, + +@example +@group +var = first +OUT :::= $(var) +var = second +@end group +@end example + +@noindent +results in the @code{OUT} variable containing the text @samp{first}, while here: + +@example +@group +var = one$$two +OUT :::= $(var) +var = three$$four +@end group +@end example + +@noindent +results in the @code{OUT} variable containing the text @samp{one$$two}. The +value is expanded when the variable is assigned, so the result is the +expansion of the first value of @code{var}, @samp{one$two}; then the value is +re-escaped before the assignment is complete giving the final result of +@samp{one$$two}. + +The variable @code{OUT} is thereafter considered a recursive variable, so it +will be re-expanded when it is used. + +This seems functionally equivalent to the @samp{:=} / @samp{::=} operators, +but there are a few differences: + +First, after assignment the variable is a normal recursive variable; when you +append to it with @samp{+=} the value on the right-hand side is not expanded +immediately. If you prefer the @samp{+=} operator to expand the right-hand +side immediately you should use the @samp{:=} / @samp{::=} assignment instead. + +Second, these variables are slightly less efficient than simply expanded +variables since they do need to be re-expanded when they are used, rather than +merely copied. However since all variable references are escaped this +expansion simply un-escapes the value, it won't expand any variables or run +any functions. + +Here is another example: + +@example +@group +var = one$$two +OUT :::= $(var) +OUT += $(var) +var = three$$four +@end group +@end example + +After this, the value of @code{OUT} is the text @samp{one$$two $(var)}. When +this variable is used it will be expanded and the result will be +@samp{one$two three$four}. + +This style of assignment is equivalent to the traditional BSD @code{make} +@samp{:=} operator; as you can see it works slightly differently than the GNU +@code{make} @samp{:=} operator. The @code{:::=} operator is added to the +POSIX specification in Issue 8 to provide portability. + +@node Conditional Assignment, , Immediate Assignment, Flavors +@subsection Conditional Variable Assignment +@cindex conditional variable assignment +@cindex variables, conditional assignment +@cindex ?= +There is another assignment operator for variables, @samp{?=}. This +is called a conditional variable assignment operator, because it only +has an effect if the variable is not yet defined. This statement: + +@example +FOO ?= bar +@end example + +@noindent +is exactly equivalent to this +(@pxref{Origin Function, ,The @code{origin} Function}): + +@example +ifeq ($(origin FOO), undefined) + FOO = bar +endif +@end example + +Note that a variable set to an empty value is still defined, so +@samp{?=} will not set that variable. + +@node Advanced, Values, Flavors, Using Variables +@section Advanced Features for Reference to Variables +@cindex reference to variables + +This section describes some advanced features you can use to reference +variables in more flexible ways. + +@menu +* Substitution Refs:: Referencing a variable with + substitutions on the value. +* Computed Names:: Computing the name of the variable to refer to. +@end menu + +@node Substitution Refs, Computed Names, Advanced, Advanced +@subsection Substitution References +@cindex modified variable reference +@cindex substitution variable reference +@cindex variables, modified reference +@cindex variables, substitution reference + +@cindex variables, substituting suffix in +@cindex suffix, substituting in variables +A @dfn{substitution reference} substitutes the value of a variable with +alterations that you specify. It has the form +@samp{$(@var{var}:@var{a}=@var{b})} (or +@samp{$@{@var{var}:@var{a}=@var{b}@}}) and its meaning is to take the value +of the variable @var{var}, replace every @var{a} at the end of a word with +@var{b} in that value, and substitute the resulting string. + +When we say ``at the end of a word'', we mean that @var{a} must appear +either followed by whitespace or at the end of the value in order to be +replaced; other occurrences of @var{a} in the value are unaltered. For +example: + +@example +foo := a.o b.o l.a c.o +bar := $(foo:.o=.c) +@end example + +@noindent +sets @samp{bar} to @samp{a.c b.c l.a c.c}. @xref{Setting, ,Setting Variables}. + +A substitution reference is shorthand for the @code{patsubst} +expansion function (@pxref{Text Functions, ,Functions for String Substitution and Analysis}): +@samp{$(@var{var}:@var{a}=@var{b})} is equivalent to +@samp{$(patsubst %@var{a},%@var{b},@var{var})}. We provide +substitution references as well as @code{patsubst} for compatibility +with other implementations of @code{make}. + +@findex patsubst +Another type of substitution reference lets you use the full power of +the @code{patsubst} function. It has the same form +@samp{$(@var{var}:@var{a}=@var{b})} described above, except that now +@var{a} must contain a single @samp{%} character. This case is +equivalent to @samp{$(patsubst @var{a},@var{b},$(@var{var}))}. +@xref{Text Functions, ,Functions for String Substitution and Analysis}, +for a description of the @code{patsubst} function. For example: + +@example +@group +foo := a.o b.o l.a c.o +bar := $(foo:%.o=%.c) +@end group +@end example + +@noindent +sets @samp{bar} to @samp{a.c b.c l.a c.c}. + +@node Computed Names, , Substitution Refs, Advanced +@subsection Computed Variable Names +@cindex nested variable reference +@cindex computed variable name +@cindex variables, computed names +@cindex variables, nested references +@cindex variables, @samp{$} in name +@cindex @code{$}, in variable name +@cindex dollar sign (@code{$}), in variable name + +Computed variable names are an advanced concept, very useful in more +sophisticated makefile programming. In simple situations you need not +consider them, but they can be extremely useful. + +Variables may be referenced inside the name of a variable. This is +called a @dfn{computed variable name} or a @dfn{nested variable +reference}. For example, + +@example +x = y +y = z +a := $($(x)) +@end example + +@noindent +defines @code{a} as @samp{z}: the @samp{$(x)} inside @samp{$($(x))} expands +to @samp{y}, so @samp{$($(x))} expands to @samp{$(y)} which in turn expands +to @samp{z}. Here the name of the variable to reference is not stated +explicitly; it is computed by expansion of @samp{$(x)}. The reference +@samp{$(x)} here is nested within the outer variable reference. + +The previous example shows two levels of nesting, but any number of levels +is possible. For example, here are three levels: + +@example +x = y +y = z +z = u +a := $($($(x))) +@end example + +@noindent +Here the innermost @samp{$(x)} expands to @samp{y}, so @samp{$($(x))} +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 +re-expanded in the usual fashion. For example: + +@example +x = $(y) +y = z +z = Hello +a := $($(x)) +@end example + +@noindent +defines @code{a} as @samp{Hello}: @samp{$($(x))} becomes @samp{$($(y))} +which becomes @samp{$(z)} which becomes @samp{Hello}. + +Nested variable references can also contain modified references and function +invocations (@pxref{Functions, ,Functions for Transforming Text}), just like +any other reference. For example, using the @code{subst} function +(@pxref{Text Functions, ,Functions for String Substitution and Analysis}): + +@example +@group +x = variable1 +variable2 := Hello +y = $(subst 1,2,$(x)) +z = y +a := $($($(z))) +@end group +@end example + +@noindent +eventually defines @code{a} as @samp{Hello}. It is doubtful that anyone +would ever want to write a nested reference as convoluted as this one, but +it works: @samp{$($($(z)))} expands to @samp{$($(y))} which becomes +@samp{$($(subst 1,2,$(x)))}. This gets the value @samp{variable1} from +@code{x} and changes it by substitution to @samp{variable2}, so that the +entire string becomes @samp{$(variable2)}, a simple variable reference +whose value is @samp{Hello}. + +A computed variable name need not consist entirely of a single variable +reference. It can contain several variable references, as well as some +invariant text. For example, + +@example +@group +a_dirs := dira dirb +1_dirs := dir1 dir2 +@end group + +@group +a_files := filea fileb +1_files := file1 file2 +@end group + +@group +ifeq "$(use_a)" "yes" +a1 := a +else +a1 := 1 +endif +@end group + +@group +ifeq "$(use_dirs)" "yes" +df := dirs +else +df := files +endif + +dirs := $($(a1)_$(df)) +@end group +@end example + +@noindent +will give @code{dirs} the same value as @code{a_dirs}, @code{1_dirs}, +@code{a_files} or @code{1_files} depending on the settings of @code{use_a} +and @code{use_dirs}. + +Computed variable names can also be used in substitution references: + +@example +@group +a_objects := a.o b.o c.o +1_objects := 1.o 2.o 3.o + +sources := $($(a1)_objects:.o=.c) +@end group +@end example + +@noindent +defines @code{sources} as either @samp{a.c b.c c.c} or @samp{1.c 2.c 3.c}, +depending on the value of @code{a1}. + +The only restriction on this sort of use of nested variable references +is that they cannot specify part of the name of a function to be called. +This is because the test for a recognized function name is done before +the expansion of nested references. For example, + +@example +@group +ifdef do_sort +func := sort +else +func := strip +endif +@end group + +@group +bar := a d b g q c +@end group + +@group +foo := $($(func) $(bar)) +@end group +@end example + +@noindent +attempts to give @samp{foo} the value of the variable @samp{sort a d b g +q c} or @samp{strip a d b g q c}, rather than giving @samp{a d b g q c} +as the argument to either the @code{sort} or the @code{strip} function. +This restriction could be removed in the future if that change is shown +to be a good idea. + +You can also use computed variable names in the left-hand side of a +variable assignment, or in a @code{define} directive, as in: + +@example +dir = foo +$(dir)_sources := $(wildcard $(dir)/*.c) +define $(dir)_print = +lpr $($(dir)_sources) +endef +@end example + +@noindent +This example defines the variables @samp{dir}, @samp{foo_sources}, and +@samp{foo_print}. + +Note that @dfn{nested variable references} are quite different from +@dfn{recursively expanded variables} +(@pxref{Flavors, ,The Two Flavors of Variables}), though both are +used together in complex ways when doing makefile programming. + +@node Values, Setting, Advanced, Using Variables +@section How Variables Get Their Values +@cindex variables, how they get their values +@cindex value, how a variable gets it + +Variables can get values in several different ways: + +@itemize @bullet +@item +You can specify an overriding value when you run @code{make}. +@xref{Overriding, ,Overriding Variables}. + +@item +You can specify a value in the makefile, either +with an assignment (@pxref{Setting, ,Setting Variables}) or with a +verbatim definition (@pxref{Multi-Line, ,Defining Multi-Line Variables}). + +@item +You can specify a short-lived value with the @code{let} function +(@pxref{Let Function}) or with the @code{foreach} function +(@pxref{Foreach Function}). + +@item +Variables in the environment become @code{make} variables. +@xref{Environment, ,Variables from the Environment}. + +@item +Several @dfn{automatic} variables are given new values for each rule. +Each of these has a single conventional use. +@xref{Automatic Variables}. + +@item +Several variables have constant initial values. +@xref{Implicit Variables, ,Variables Used by Implicit Rules}. +@end itemize + +@node Setting, Appending, Values, Using Variables +@section Setting Variables +@cindex setting variables +@cindex variables, setting +@cindex = +@cindex := +@cindex ::= +@cindex :::= +@cindex ?= +@cindex != + +To set a variable from the makefile, write a line starting with the variable +name followed by one of the assignment operators @samp{=}, @samp{:=}, +@samp{::=}, or @samp{:::=}. Whatever follows the operator and any initial +whitespace on the line becomes the value. For example, + +@example +objects = main.o foo.o bar.o utils.o +@end example + +@noindent +defines a variable named @code{objects} to contain the value @samp{main.o +foo.o bar.o utils.o}. 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{:=} or @samp{::=} are @dfn{simply expanded} +variables; these definitions can contain variable references which will be +expanded before the definition is made. Variables defined with @samp{:::=} +are @dfn{immediately expanded} variables. The different assignment operators +are described in @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 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 +that are not empty, but you can set them in the usual ways +(@pxref{Implicit Variables, ,Variables Used by Implicit Rules}). +Several special variables are set +automatically to a new value for each rule; these are called the +@dfn{automatic} variables (@pxref{Automatic Variables}). + +If you'd like a variable to be set to a value only if it's not already +set, then you can use the shorthand operator @samp{?=} instead of +@samp{=}. These two settings of the variable @samp{FOO} are identical +(@pxref{Origin Function, ,The @code{origin} Function}): + +@example +FOO ?= bar +@end example + +@noindent +and + +@example +ifeq ($(origin FOO), undefined) +FOO = bar +endif +@end example + +The shell assignment operator @samp{!=} can be used to execute a +shell script 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 + +As with the @code{shell} function, the exit status of the just-invoked +shell script is stored in the @code{.SHELLSTATUS} variable. + + +@node Appending, Override Directive, Setting, Using Variables +@section Appending More Text to Variables +@cindex += +@cindex appending to variables +@cindex variables, appending to + +Often it is useful to add more text to the value of a variable already defined. +You do this with a line containing @samp{+=}, like this: + +@example +objects += another.o +@end example + +@noindent +This takes the value of the variable @code{objects}, and adds the text +@samp{another.o} to it (preceded by a single space, if it has a value +already). Thus: + +@example +objects = main.o foo.o bar.o utils.o +objects += another.o +@end example + +@noindent +sets @code{objects} to @samp{main.o foo.o bar.o utils.o another.o}. + +Using @samp{+=} is similar to: + +@example +objects = main.o foo.o bar.o utils.o +objects := $(objects) another.o +@end example + +@noindent +but differs in ways that become important when you use more complex values. + +When the variable in question has not been defined before, @samp{+=} +acts just like normal @samp{=}: it defines a recursively-expanded +variable. However, when there @emph{is} a previous definition, exactly +what @samp{+=} does depends on what flavor of variable you defined +originally. @xref{Flavors, ,The Two Flavors of Variables}, for an +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{:=} 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 +variable += more +@end example + +@noindent +is exactly equivalent to: + +@noindent +@example +variable := value +variable := $(variable) more +@end example + +On the other hand, when you use @samp{+=} with a variable that you defined +first to be recursively-expanded using plain @samp{=} or @samp{:::=}, +@code{make} appends the un-expanded text to the existing value, whatever it +is. This means that + +@example +@group +variable = value +variable += more +@end group +@end example + +@noindent +is roughly equivalent to: + +@example +@group +temp = value +variable = $(temp) more +@end group +@end example + +@noindent +except that of course it never defines a variable called @code{temp}. +The importance of this comes when the variable's old value contains +variable references. Take this common example: + +@example +CFLAGS = $(includes) -O +@dots{} +CFLAGS += -pg # enable profiling +@end example + +@noindent +The first line defines the @code{CFLAGS} variable with a reference to another +variable, @code{includes}. (@code{CFLAGS} is used by the rules for C +compilation; @pxref{Catalogue of Rules, ,Catalogue of Built-In Rules}.) +Using @samp{=} for the definition makes @code{CFLAGS} a recursively-expanded +variable, meaning @w{@samp{$(includes) -O}} is @emph{not} expanded when +@code{make} processes the definition of @code{CFLAGS}. Thus, @code{includes} +need not be defined yet for its value to take effect. It only has to be +defined before any reference to @code{CFLAGS}. If we tried to append to the +value of @code{CFLAGS} without using @samp{+=}, we might do it like this: + +@example +CFLAGS := $(CFLAGS) -pg # enable profiling +@end example + +@noindent +This is pretty close, but not quite what we want. Using @samp{:=} +redefines @code{CFLAGS} as a simply-expanded variable; this means +@code{make} expands the text @w{@samp{$(CFLAGS) -pg}} before setting the +variable. If @code{includes} is not yet defined, we get @w{@samp{ -O +-pg}}, and a later definition of @code{includes} will have no effect. +Conversely, by using @samp{+=} we set @code{CFLAGS} to the +@emph{unexpanded} value @w{@samp{$(includes) -O -pg}}. Thus we preserve +the reference to @code{includes}, so if that variable gets defined at +any later point, a reference like @samp{$(CFLAGS)} still uses its +value. + +@node Override Directive, Multi-Line, Appending, Using Variables +@section The @code{override} Directive +@findex override +@cindex overriding with @code{override} +@cindex variables, overriding + +If a variable has been set with a command argument +(@pxref{Overriding, ,Overriding Variables}), +then ordinary assignments in the makefile are ignored. If you want to set +the variable in the makefile even though it was set with a command +argument, you can use an @code{override} directive, which is a line that +looks like this: + +@example +override @var{variable} = @var{value} +@end example + +@noindent +or + +@example +override @var{variable} := @var{value} +@end example + +To append more text to a variable defined on the command line, use: + +@example +override @var{variable} += @var{more text} +@end example + +@noindent +@xref{Appending, ,Appending More Text to Variables}. + +Variable assignments marked with the @code{override} flag have a +higher priority than all other assignments, except another +@code{override}. Subsequent assignments or appends to this variable +which are not marked @code{override} will be ignored. + +The @code{override} directive was not invented for escalation in the war +between makefiles and command arguments. It was invented so you can alter +and add to values that the user specifies with command arguments. + +For example, suppose you always want the @samp{-g} switch when you run the +C compiler, but you would like to allow the user to specify the other +switches with a command argument just as usual. You could use this +@code{override} directive: + +@example +override CFLAGS += -g +@end example + +You can also use @code{override} directives with @code{define} directives. +This is done as you might expect: + +@example +override define foo = +bar +endef +@end example + +@noindent +@iftex +See the next section for information about @code{define}. +@end iftex +@ifnottex +@xref{Multi-Line, ,Defining Multi-Line Variables}. +@end ifnottex + +@node Multi-Line, Undefine Directive, Override Directive, Using Variables +@section Defining Multi-Line Variables +@findex define +@findex endef +@cindex multi-line variable definition +@cindex variables, multi-line +@cindex verbatim variable definition +@cindex defining variables verbatim +@cindex variables, defining verbatim + +Another way to set the value of a variable is to use the @code{define} +directive. This directive has an unusual syntax which allows newline +characters to be included in the value, which is convenient for +defining both canned sequences of commands (@pxref{Canned Recipes, +,Defining Canned Recipes}), and also sections of makefile syntax to +use with @code{eval} (@pxref{Eval Function}). + +The @code{define} directive is followed on the same line by the name +of the variable being defined and an (optional) assignment operator, +and nothing more. The value to give the variable appears on the +following lines. The end of the value is marked by a line containing +just the word @code{endef}. + +Aside from this difference in syntax, @code{define} works just like +any other variable definition. The variable name may contain function +and variable references, which are expanded when the directive is read +to find the actual variable name to use. + +The final newline before the @code{endef} is not included in the +value; if you want your value to contain a trailing newline you must +include a blank line. For example in order to define a variable that +contains a newline character you must use @emph{two} empty lines, not one: + +@example +define newline + + +endef +@end example + +You may omit the variable assignment operator if you prefer. If +omitted, @code{make} assumes it to be @samp{=} and creates a +recursively-expanded variable (@pxref{Flavors, ,The Two Flavors of Variables}). +When using a @samp{+=} operator, the value is appended to the previous +value as with any other append operation: with a single space +separating the old and new values. + +You may nest @code{define} directives: @code{make} will keep track of +nested directives and report an error if they are not all properly +closed with @code{endef}. Note that lines beginning with the recipe +prefix character are considered part of a recipe, so any @code{define} +or @code{endef} strings appearing on such a line will not be +considered @code{make} directives. + +@example +define two-lines +echo foo +echo $(bar) +endef +@end example + +@need 800 +When used in a recipe, the previous example is functionally equivalent +to this: + +@example +two-lines = echo foo; echo $(bar) +@end example + +@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 sub-shell +for each line. @xref{Execution, ,Recipe Execution}. + +If you want variable definitions made with @code{define} to take +precedence over command-line variable definitions, you can use the +@code{override} directive together with @code{define}: + +@example +override define two-lines = +foo +$(bar) +endef +@end example + +@noindent +@xref{Override Directive, ,The @code{override} Directive}. + +@node Undefine Directive, Environment, Multi-Line, Using Variables +@section Undefining Variables +@findex undefine +@cindex undefining variable + +If you want to clear a variable, setting its value to empty is usually +sufficient. Expanding such a variable will yield the same result (empty +string) regardless of whether it was set or not. However, if you are +using the @code{flavor} (@pxref{Flavor Function}) and +@code{origin} (@pxref{Origin Function}) functions, there is a difference +between a variable that was never set and a variable with an empty value. +In such situations you may want to use the @code{undefine} directive to +make a variable appear as if it was never set. For example: + +@example +@group +foo := foo +bar = bar + +undefine foo +undefine bar + +$(info $(origin foo)) +$(info $(flavor bar)) +@end group +@end example + +This example will print ``undefined'' for both variables. + +If you want to undefine a command-line variable definition, you can use +the @code{override} directive together with @code{undefine}, similar to +how this is done for variable definitions: + +@example +override undefine CFLAGS +@end example + +@node Environment, Target-specific, Undefine Directive, Using Variables +@section Variables from the Environment + +@cindex variables, environment +@cindex environment +Variables in @code{make} can come from the environment in which +@code{make} is run. Every environment variable that @code{make} sees +when it starts up is transformed into a @code{make} variable with the +same name and value. However, an explicit assignment in the makefile, +or with a command argument, overrides the environment. (If the +@samp{-e} flag is specified, then values from the environment override +assignments in the makefile. @xref{Options Summary, ,Summary of +Options}. But this is not recommended practice.) + +Thus, by setting the variable @code{CFLAGS} in your environment, you can +cause all C compilations in most makefiles to use the compiler switches you +prefer. This is safe for variables with standard or conventional meanings +because you know that no makefile will use them for other things. (Note +this is not totally reliable; some makefiles set @code{CFLAGS} explicitly +and therefore are not affected by the value in the environment.) + +When @code{make} runs a recipe, some variables defined in the makefile +are placed into the environment of each command @code{make} invokes. +By default, only variables that came from the @code{make}'s +environment or set on its command line are placed into the environment +of the commands. You can use the @code{export} directive to pass +other variables. @xref{Variables/Recursion, , Communicating Variables +to a Sub-@code{make}}, for full details. + +Other use of variables from the environment is not recommended. It is not +wise for makefiles to depend for their functioning on environment variables +set up outside their control, since this would cause different users to get +different results from the same makefile. This is against the whole +purpose of most makefiles. + +@cindex SHELL, import from environment +Such problems would be especially likely with the variable +@code{SHELL}, which is normally present in the environment to specify +the user's choice of interactive shell. It would be very undesirable +for this choice to affect @code{make}; so, @code{make} handles the +@code{SHELL} environment variable in a special way; see @ref{Choosing +the Shell}. + +@node Target-specific, Pattern-specific, Environment, Using Variables +@section Target-specific Variable Values +@cindex target-specific variables +@cindex variables, target-specific + +Variable values in @code{make} are usually global; that is, they are the +same regardless of where they are evaluated (unless they're reset, of +course). Exceptions to that are variables defined with the @code{let} +function (@pxref{Let Function}) or the @code{foreach} function +(@pxref{Foreach Function}, and automatic variables +(@pxref{Automatic Variables}). + +Another exception are @dfn{target-specific variable values}. This +feature allows you to define different values for the same variable, +based on the target that @code{make} is currently building. As with +automatic variables, these values are only available within the context +of a target's recipe (and in other target-specific assignments). + +Set a target-specific variable value like this: + +@example +@var{target} @dots{} : @var{variable-assignment} +@end example + +Target-specific variable assignments can be prefixed with any or all of the +special keywords @code{export}, @code{unexport}, @code{override}, or +@code{private}; these apply their normal behavior to this instance of the +variable only. + +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{=}), simple (@samp{:=} or @samp{::=}), immediate (@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 +environment if the @samp{-e} option is in force) will take precedence. +Specifying the @code{override} directive will allow the target-specific +variable value to be preferred. + +There is one more special feature of target-specific variables: when +you define a target-specific variable that variable value is also in +effect for all prerequisites of this target, and all their +prerequisites, etc.@: (unless those prerequisites override that variable +with their own target-specific variable value). So, for example, a +statement like this: + +@example +prog : CFLAGS = -g +prog : prog.o foo.o bar.o +@end example + +@noindent +will set @code{CFLAGS} to @samp{-g} in the recipe for @file{prog}, but +it will also set @code{CFLAGS} to @samp{-g} in the recipes that create +@file{prog.o}, @file{foo.o}, and @file{bar.o}, and any recipes which +create their prerequisites. + +Be aware that a given prerequisite will only be built once per +invocation of make, at most. If the same file is a prerequisite of +multiple targets, and each of those targets has a different value for +the same target-specific variable, then the first target to be built +will cause that prerequisite to be built and the prerequisite will +inherit the target-specific value from the first target. It will +ignore the target-specific values from any other targets. + +@node Pattern-specific, Suppressing Inheritance, Target-specific, Using Variables +@section Pattern-specific Variable Values +@cindex pattern-specific variables +@cindex variables, pattern-specific + +In addition to target-specific variable values +(@pxref{Target-specific, ,Target-specific Variable Values}), GNU +@code{make} supports pattern-specific variable values. In this form, +the variable is defined for any target that matches the pattern +specified. + +Set a pattern-specific variable value like this: + +@example +@var{pattern} @dots{} : @var{variable-assignment} +@end example +where @var{pattern} is a %-pattern. As with target-specific variable +values, multiple @var{pattern} values create a pattern-specific variable +value for each pattern individually. The @var{variable-assignment} can +be any valid form of assignment. Any command line variable setting will +take precedence, unless @code{override} is specified. + +For example: + +@example +%.o : CFLAGS = -O +@end example + +@noindent +will assign @code{CFLAGS} the value of @samp{-O} for all targets +matching the pattern @code{%.o}. + +If a target matches more than one pattern, the matching pattern-specific +variables with longer stems are interpreted first. This results in more +specific variables taking precedence over the more generic ones, for +example: + +@example +%.o: %.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@@ + +lib/%.o: CFLAGS := -fPIC -g +%.o: CFLAGS := -g + +all: foo.o lib/bar.o +@end example + +In this example the first definition of the @code{CFLAGS} variable +will be used to update @file{lib/bar.o} even though the second one +also applies to this target. Pattern-specific variables which result +in the same stem length are considered in the order in which they +were defined in the makefile. + +Pattern-specific variables are searched after any target-specific +variables defined explicitly for that target, and before target-specific +variables defined for the parent target. + +@node Suppressing Inheritance, Special Variables, Pattern-specific, Using Variables +@section Suppressing Inheritance +@findex private +@cindex suppressing inheritance +@cindex inheritance, suppressing + +As described in previous sections, @code{make} variables are inherited +by prerequisites. This capability allows you to modify the behavior +of a prerequisite based on which targets caused it to be rebuilt. For +example, you might set a target-specific variable on a @code{debug} +target, then running @samp{make debug} will cause that variable to be +inherited by all prerequisites of @code{debug}, while just running +@samp{make all} (for example) would not have that assignment. + +Sometimes, however, you may not want a variable to be inherited. For +these situations, @code{make} provides the @code{private} modifier. +Although this modifier can be used with any variable assignment, it +makes the most sense with target- and pattern-specific variables. Any +variable marked @code{private} will be visible to its local target but +will not be inherited by prerequisites of that target. A global +variable marked @code{private} will be visible in the global scope but +will not be inherited by any target, and hence will not be visible +in any recipe. + +As an example, consider this makefile: +@example +EXTRA_CFLAGS = + +prog: private EXTRA_CFLAGS = -L/usr/local/lib +prog: a.o b.o +@end example + +Due to the @code{private} modifier, @code{a.o} and @code{b.o} will not +inherit the @code{EXTRA_CFLAGS} variable assignment from the +@code{prog} target. + +@node Special Variables, , Suppressing Inheritance, Using Variables +@comment node-name, next, previous, up +@section Other Special Variables +@cindex makefiles, and special variables +@cindex special variables + +GNU @code{make} supports some variables that have special properties. + +@table @code + +@vindex MAKEFILE_LIST @r{(list of parsed makefiles)} +@cindex makefiles, and @code{MAKEFILE_LIST} variable +@cindex including (@code{MAKEFILE_LIST} variable) +@item MAKEFILE_LIST +Contains the name of each makefile that is parsed by @code{make}, in +the order in which it was parsed. The name is appended just +before @code{make} begins to parse the makefile. Thus, if the first +thing a makefile does is examine the last word in this variable, it +will be the name of the current makefile. Once the current makefile +has used @code{include}, however, the last word will be the +just-included makefile. + +If a makefile named @code{Makefile} has this content: + +@example +@group +name1 := $(lastword $(MAKEFILE_LIST)) + +include inc.mk + +name2 := $(lastword $(MAKEFILE_LIST)) + +all: + @@echo name1 = $(name1) + @@echo name2 = $(name2) +@end group +@end example + +@noindent +then you would expect to see this output: + +@example +@group +name1 = Makefile +name2 = inc.mk +@end group +@end example + +@vindex .DEFAULT_GOAL @r{(define default goal)} +@item .DEFAULT_GOAL +Sets the default goal to be used if no targets were specified on the +command line (@pxref{Goals, , Arguments to Specify the Goals}). The +@code{.DEFAULT_GOAL} variable allows you to discover the current +default goal, restart the default goal selection algorithm by clearing +its value, or to explicitly set the default goal. The following +example illustrates these cases: + +@example +@group +# Query the default goal. +ifeq ($(.DEFAULT_GOAL),) + $(warning no default goal is set) +endif + +.PHONY: foo +foo: ; @@echo $@@ + +$(warning default goal is $(.DEFAULT_GOAL)) + +# Reset the default goal. +.DEFAULT_GOAL := + +.PHONY: bar +bar: ; @@echo $@@ + +$(warning default goal is $(.DEFAULT_GOAL)) + +# Set our own. +.DEFAULT_GOAL := foo +@end group +@end example + +This makefile prints: + +@example +@group +no default goal is set +default goal is foo +default goal is bar +foo +@end group +@end example + +Note that assigning more than one target name to @code{.DEFAULT_GOAL} is +invalid and will result in an error. + +@vindex MAKE_RESTARTS @r{(number of times @code{make} has restarted)} +@item MAKE_RESTARTS +This variable is set only if this instance of @code{make} has +restarted (@pxref{Remaking Makefiles, , How Makefiles Are Remade}): it +will contain the number of times this instance has restarted. Note +this is not the same as recursion (counted by the @code{MAKELEVEL} +variable). You should not set, modify, or export this variable. + +@vindex MAKE_TERMOUT @r{(whether stdout is a terminal)} +@vindex MAKE_TERMERR @r{(whether stderr is a terminal)} +@item MAKE_TERMOUT +@itemx MAKE_TERMERR +When @code{make} starts it will check whether stdout and stderr will +show their output on a terminal. If so, it will set +@code{MAKE_TERMOUT} and @code{MAKE_TERMERR}, respectively, to the name +of the terminal device (or @code{true} if this cannot be determined). +If set these variables will be marked for export. These variables +will not be changed by @code{make} and they will not be modified if +already set. + +These values can be used (particularly in combination with output +synchronization (@pxref{Parallel Output, ,Output During Parallel +Execution}) to determine whether @code{make} itself is writing to a +terminal; they can be tested to decide whether to force recipe +commands to generate colorized output for example. + +If you invoke a sub-@code{make} and redirect its stdout or stderr it +is your responsibility to reset or unexport these variables as well, +if your makefiles rely on them. + +@vindex .RECIPEPREFIX @r{(change the recipe prefix character)} +@item .RECIPEPREFIX +The first character of the value of this variable is used as the +character make assumes is introducing a recipe line. If the variable +is empty (as it is by default) that character is the standard tab +character. For example, this is a valid makefile: + +@example +@group +.RECIPEPREFIX = > +all: +> @@echo Hello, world +@end group +@end example + +The value of @code{.RECIPEPREFIX} can be changed multiple times; once set +it stays in effect for all rules parsed until it is modified. + +@vindex .VARIABLES @r{(list of variables)} +@item .VARIABLES +Expands to a list of the @emph{names} of all global variables defined +so far. This includes variables which have empty values, as well as +built-in variables (@pxref{Implicit Variables, , Variables Used by +Implicit Rules}), but does not include any variables which are only +defined in a target-specific context. Note that any value you assign +to this variable will be ignored; it will always return its special +value. + +@c @vindex .TARGETS @r{(list of targets)} +@c @item .TARGETS +@c The second special variable is @code{.TARGETS}. When expanded, the +@c value consists of a list of all targets defined in all makefiles read +@c up until that point. Note it's not enough for a file to be simply +@c mentioned in the makefile to be listed in this variable, even if it +@c would match an implicit rule and become an ``implicit target''. The +@c file must appear as a target, on the left-hand side of a ``:'', to be +@c considered a target for the purposes of this variable. + +@vindex .FEATURES @r{(list of supported features)} +@item .FEATURES +Expands to a list of special features supported by this version of +@code{make}. Possible values include, but are not limited to: + +@table @samp + +@item archives +Supports @code{ar} (archive) files using special file name syntax. +@xref{Archives, ,Using @code{make} to Update Archive Files}. + +@item check-symlink +Supports the @code{-L} (@code{--check-symlink-times}) flag. +@xref{Options Summary, ,Summary of Options}. + +@item else-if +Supports ``else if'' non-nested conditionals. @xref{Conditional +Syntax, ,Syntax of Conditionals}. + +@item extra-prereqs +Supports the @code{.EXTRA_PREREQS} special target. + +@item grouped-target +Supports grouped target syntax for explicit rules. @xref{Multiple Targets, +,Multiple Targets in a Rule}. + +@item guile +Has GNU Guile available as an embedded extension language. +@xref{Guile Integration, ,GNU Guile Integration}. + +@item jobserver +Supports ``job server'' enhanced parallel builds. @xref{Parallel, +,Parallel Execution}. + +@item jobserver-fifo +Supports ``job server'' enhanced parallel builds using named pipes. +@xref{Integrating make, ,Integrating GNU @code{make}}. + +@item load +Supports dynamically loadable objects for creating custom extensions. +@xref{Loading Objects, ,Loading Dynamic Objects}. + +@item notintermediate +Supports the @code{.NOTINTERMEDIATE} special target. +@xref{Integrating make, ,Integrating GNU @code{make}}. + +@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 output-sync +Supports the @code{--output-sync} command line option. @xref{Options Summary, +,Summary of Options}. + +@item second-expansion +Supports secondary expansion of prerequisite lists. + +@item shell-export +Supports exporting @code{make} variables to @code{shell} functions. + +@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}. +@end table + +@vindex .INCLUDE_DIRS @r{(list of include directories)} +@item .INCLUDE_DIRS +Expands to a list of directories that @code{make} searches for +included makefiles (@pxref{Include, , Including Other Makefiles}). +Note that modifying this variable's value does not change the list of +directories which are searched. + +@vindex .EXTRA_PREREQS @r{(prerequisites not added to automatic variables)} +@item .EXTRA_PREREQS +Each word in this variable is a new prerequisite which is added to +targets for which it is set. These prerequisites differ from normal +prerequisites in that they do not appear in any of the automatic +variables (@pxref{Automatic Variables}). This allows prerequisites to +be defined which do not impact the recipe. + +Consider a rule to link a program: + +@example +myprog: myprog.o file1.o file2.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ $^ $(LDLIBS) +@end example + +Now suppose you want to enhance this makefile to ensure that updates +to the compiler cause the program to be re-linked. You can add the +compiler as a prerequisite, but you must ensure that it's not passed +as an argument to link command. You'll need something like this: + +@example +myprog: myprog.o file1.o file2.o $(CC) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ \ + $(filter-out $(CC),$^) $(LDLIBS) +@end example + +Then consider having multiple extra prerequisites: they would all have +to be filtered out. Using @code{.EXTRA_PREREQS} and target-specific +variables provides a simpler solution: + +@example +myprog: myprog.o file1.o file2.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ $^ $(LDLIBS) +myprog: .EXTRA_PREREQS = $(CC) +@end example + +This feature can also be useful if you want to add prerequisites to a +makefile you cannot easily modify: you can create a new file such as +@file{extra.mk}: + +@example +myprog: .EXTRA_PREREQS = $(CC) +@end example + +then invoke @code{make -f extra.mk -f Makefile}. + +Setting @code{.EXTRA_PREREQS} globally will cause those prerequisites +to be added to all targets (which did not themselves override it with +a target-specific value). Note @code{make} is smart enough not to add +a prerequisite listed in @code{.EXTRA_PREREQS} as a prerequisite to +itself. + +@end table + +@node Conditionals, Functions, Using Variables, Top +@chapter Conditional Parts of Makefiles + +@cindex conditionals +A @dfn{conditional} directive causes part of a makefile to be obeyed +or ignored depending on the values of variables. Conditionals can +compare the value of one variable to another, or the value of a +variable to a constant string. Conditionals control what @code{make} +actually ``sees'' in the makefile, so they @emph{cannot} be used to +control recipes at the time of execution. + +@menu +* Conditional Example:: Example of a conditional +* Conditional Syntax:: The syntax of conditionals. +* Testing Flags:: Conditionals that test flags. +@end menu + +@node Conditional Example, Conditional Syntax, Conditionals, Conditionals +@section Example of a Conditional + +The following example of a conditional tells @code{make} to use one +set of libraries if the @code{CC} variable is @samp{gcc}, and a +different set of libraries otherwise. It works by controlling which +of two recipe lines will be used for the rule. The result is that +@samp{CC=gcc} as an argument to @code{make} changes not only which +compiler is used but also which libraries are linked. + +@example +libs_for_gcc = -lgnu +normal_libs = + +foo: $(objects) +ifeq ($(CC),gcc) + $(CC) -o foo $(objects) $(libs_for_gcc) +else + $(CC) -o foo $(objects) $(normal_libs) +endif +@end example + +This conditional uses three directives: one @code{ifeq}, one @code{else} +and one @code{endif}. + +The @code{ifeq} directive begins the conditional, and specifies the +condition. It contains two arguments, separated by a comma and surrounded +by parentheses. Variable substitution is performed on both arguments and +then they are compared. The lines of the makefile following the +@code{ifeq} are obeyed if the two arguments match; otherwise they are +ignored. + +The @code{else} directive causes the following lines to be obeyed if the +previous conditional failed. In the example above, this means that the +second alternative linking command is used whenever the first alternative +is not used. It is optional to have an @code{else} in a conditional. + +The @code{endif} directive ends the conditional. Every conditional must +end with an @code{endif}. Unconditional makefile text follows. + +As this example illustrates, conditionals work at the textual level: +the lines of the conditional are treated as part of the makefile, or +ignored, according to the condition. This is why the larger syntactic +units of the makefile, such as rules, may cross the beginning or the +end of the conditional. + +When the variable @code{CC} has the value @samp{gcc}, the above example has +this effect: + +@example +foo: $(objects) + $(CC) -o foo $(objects) $(libs_for_gcc) +@end example + +@noindent +When the variable @code{CC} has any other value, the effect is this: + +@example +foo: $(objects) + $(CC) -o foo $(objects) $(normal_libs) +@end example + +Equivalent results can be obtained in another way by conditionalizing a +variable assignment and then using the variable unconditionally: + +@example +libs_for_gcc = -lgnu +normal_libs = + +ifeq ($(CC),gcc) + libs=$(libs_for_gcc) +else + libs=$(normal_libs) +endif + +foo: $(objects) + $(CC) -o foo $(objects) $(libs) +@end example + +@node Conditional Syntax, Testing Flags, Conditional Example, Conditionals +@section Syntax of Conditionals +@findex ifdef +@findex ifeq +@findex ifndef +@findex ifneq +@findex else +@findex endif + +The syntax of a simple conditional with no @code{else} is as follows: + +@example +@var{conditional-directive} +@var{text-if-true} +endif +@end example + +@noindent +The @var{text-if-true} may be any lines of text, to be considered as part +of the makefile if the condition is true. If the condition is false, no +text is used instead. + +The syntax of a complex conditional is as follows: + +@example +@var{conditional-directive} +@var{text-if-true} +else +@var{text-if-false} +endif +@end example + +or: + +@example +@var{conditional-directive-one} +@var{text-if-one-is-true} +else @var{conditional-directive-two} +@var{text-if-two-is-true} +else +@var{text-if-one-and-two-are-false} +endif +@end example + +@noindent +There can be as many ``@code{else} @var{conditional-directive}'' +clauses as necessary. Once a given condition is true, +@var{text-if-true} is used and no other clause is used; if no +condition is true then @var{text-if-false} is used. The +@var{text-if-true} and @var{text-if-false} can be any number of lines +of text. + +The syntax of the @var{conditional-directive} is the same whether the +conditional is simple or complex; after an @code{else} or not. There +are four different directives that test different conditions. Here is +a table of them: + +@table @code +@item ifeq (@var{arg1}, @var{arg2}) +@itemx ifeq '@var{arg1}' '@var{arg2}' +@itemx ifeq "@var{arg1}" "@var{arg2}" +@itemx ifeq "@var{arg1}" '@var{arg2}' +@itemx ifeq '@var{arg1}' "@var{arg2}" +Expand all variable references in @var{arg1} and @var{arg2} and +compare them. If they are identical, the @var{text-if-true} is +effective; otherwise, the @var{text-if-false}, if any, is effective. + +Often you want to test if a variable has a non-empty value. When the +value results from complex expansions of variables and functions, +expansions you would consider empty may actually contain whitespace +characters and thus are not seen as empty. However, you can use the +@code{strip} function (@pxref{Text Functions}) to avoid interpreting +whitespace as a non-empty value. For example: + +@example +@group +ifeq ($(strip $(foo)),) +@var{text-if-empty} +endif +@end group +@end example + +@noindent +will evaluate @var{text-if-empty} even if the expansion of +@code{$(foo)} contains whitespace characters. + +@item ifneq (@var{arg1}, @var{arg2}) +@itemx ifneq '@var{arg1}' '@var{arg2}' +@itemx ifneq "@var{arg1}" "@var{arg2}" +@itemx ifneq "@var{arg1}" '@var{arg2}' +@itemx ifneq '@var{arg1}' "@var{arg2}" +Expand all variable references in @var{arg1} and @var{arg2} and +compare them. If they are different, the @var{text-if-true} is +effective; otherwise, the @var{text-if-false}, if any, is effective. + +@item ifdef @var{variable-name} +The @code{ifdef} form takes the @emph{name} of a variable as its +argument, not a reference to a variable. If the value of that +variable has a non-empty value, the @var{text-if-true} is effective; +otherwise, the @var{text-if-false}, if any, is effective. Variables +that have never been defined have an empty value. The text +@var{variable-name} is expanded, so it could be a variable or function +that expands to the name of a variable. For example: + +@example +bar = true +foo = bar +ifdef $(foo) +frobozz = yes +endif +@end example + +The variable reference @code{$(foo)} is expanded, yielding @code{bar}, +which is considered to be the name of a variable. The variable +@code{bar} is not expanded, but its value is examined to determine if +it is non-empty. + +Note that @code{ifdef} only tests whether a variable has a value. It +does not expand the variable to see if that value is nonempty. +Consequently, tests using @code{ifdef} return true for all definitions +except those like @code{foo =}. To test for an empty value, use +@w{@code{ifeq ($(foo),)}}. For example, + +@example +bar = +foo = $(bar) +ifdef foo +frobozz = yes +else +frobozz = no +endif +@end example + +@noindent +sets @samp{frobozz} to @samp{yes}, while: + +@example +foo = +ifdef foo +frobozz = yes +else +frobozz = no +endif +@end example + +@noindent +sets @samp{frobozz} to @samp{no}. + +@item ifndef @var{variable-name} +If the variable @var{variable-name} has an empty value, the +@var{text-if-true} is effective; otherwise, the @var{text-if-false}, +if any, is effective. The rules for expansion and testing of +@var{variable-name} are identical to the @code{ifdef} directive. +@end table + +Extra spaces are allowed and ignored at the beginning of the +conditional directive line, but a tab is not allowed. (If the line +begins with a tab, it will be considered part of a recipe for a rule.) +Aside from this, extra spaces or tabs may be inserted with no effect +anywhere except within the directive name or within an argument. A +comment starting with @samp{#} may appear at the end of the line. + +The other two directives that play a part in a conditional are @code{else} +and @code{endif}. Each of these directives is written as one word, with no +arguments. Extra spaces are allowed and ignored at the beginning of the +line, and spaces or tabs at the end. A comment starting with @samp{#} may +appear at the end of the line. + +Conditionals affect which lines of the makefile @code{make} uses. If +the condition is true, @code{make} reads the lines of the +@var{text-if-true} as part of the makefile; if the condition is false, +@code{make} ignores those lines completely. It follows that syntactic +units of the makefile, such as rules, may safely be split across the +beginning or the end of the conditional. + +@code{make} evaluates conditionals when it reads a makefile. +Consequently, you cannot use automatic variables in the tests of +conditionals because they are not defined until recipes are run +(@pxref{Automatic Variables}). + +To prevent intolerable confusion, it is not permitted to start a +conditional in one makefile and end it in another. However, you may +write an @code{include} directive within a conditional, provided you do +not attempt to terminate the conditional inside the included file. + +@node Testing Flags, , Conditional Syntax, Conditionals +@section Conditionals that Test Flags + +You can write a conditional that tests @code{make} command flags such as +@samp{-t} by using the variable @code{MAKEFLAGS} together with the +@code{findstring} function +(@pxref{Text Functions, , Functions for String Substitution and Analysis}). +This is useful when @code{touch} is not enough to make a file appear up +to date. + +Recall that @code{MAKEFLAGS} will put all single-letter options (such as +@samp{-t}) into the first word, and that word will be empty if no +single-letter options were given. To work with this, it's helpful to add a +value at the start to ensure there's a word: for example +@samp{-$(MAKEFLAGS)}. + +The @code{findstring} function determines whether one string appears as a +substring of another. If you want to test for the @samp{-t} flag, use +@samp{t} as the first string and the first word of @code{MAKEFLAGS} as the +other. + +For example, here is how to arrange to use @samp{ranlib -t} to finish +marking an archive file up to date: + +@example +archive.a: @dots{} +ifneq (,$(findstring t,$(word 1,-$(MAKEFLAGS)))) + +touch archive.a + +ranlib -t archive.a +else + ranlib archive.a +endif +@end example + +@noindent +The @samp{+} prefix marks those recipe lines as ``recursive'' so that +they will be executed despite use of the @samp{-t} flag. +@xref{Recursion, ,Recursive Use of @code{make}}. + +@node Functions, Running, Conditionals, Top +@chapter Functions for Transforming Text +@cindex functions + +@dfn{Functions} allow you to do text processing in the makefile to +compute the files to operate on or the commands to use in recipes. +You use a function in a @dfn{function call}, where you give the name +of the function and some text (the @dfn{arguments}) for the function +to operate on. The result of the function's processing is substituted +into the makefile at the point of the call, just as a variable might +be substituted. + +@menu +* Syntax of Functions:: How to write a function call. +* Text Functions:: General-purpose text manipulation functions. +* File Name Functions:: Functions for manipulating file names. +* Conditional Functions:: Functions that implement conditions. +* Let Function:: Local variables. +* 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. +* 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 +@section Function Call Syntax +@cindex @code{$}, in function call +@cindex dollar sign (@code{$}), in function call +@cindex arguments of functions +@cindex functions, syntax of + +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}) +@end example + +@noindent +or like this: + +@example +$@{@var{function} @var{arguments}@} +@end example + +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} 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 there is more +than one argument, then they are separated by commas. Such whitespace and +commas are not part of an argument's value. The delimiters which you use to +surround the function call, whether parentheses or braces, can appear in an +argument only in matching pairs; the other kind of delimiters may appear +singly. If the arguments themselves contain other function calls or variable +references, it is wisest to use the same kind of delimiters for all the +references; write @w{@samp{$(subst a,b,$(x))}}, not @w{@samp{$(subst +a,b,$@{x@})}}. This is because it is clearer, and because only one type of +delimiter is matched to find the end of the reference. + +Each argument is expanded before the function is invoked, unless otherwise +noted below. The substitution is done in the order in which the arguments +appear. + +@subsubheading Special Characters +@cindex special characters in function arguments +@cindex function arguments, special characters in + +When using characters that are special to @code{make} as function arguments, +you may need to hide them. GNU @code{make} doesn't support escaping +characters with backslashes or other escape sequences; however, because +arguments are split before they are expanded you can hide them by putting them +into variables. + +Characters you may need to hide include: + +@itemize @bullet +@item +Commas +@item +Initial whitespace in the first argument +@item +Unmatched open parenthesis or brace +@item +An open parenthesis or brace if you don't want it to start a matched pair +@end itemize + +For example, you can define variables @code{comma} and @code{space} whose +values are isolated comma and space characters, then substitute these +variables where such characters are wanted, like this: + +@example +@group +comma:= , +empty:= +space:= $(empty) $(empty) +foo:= a b c +bar:= $(subst $(space),$(comma),$(foo)) +# @r{bar is now `a,b,c'.} +@end group +@end example + +@noindent +Here the @code{subst} function replaces each space with a comma, through +the value of @code{foo}, and substitutes the result. + +@node Text Functions, File Name Functions, Syntax of Functions, Functions +@section Functions for String Substitution and Analysis +@cindex functions, for text + +Here are some functions that operate on strings: + +@table @code +@item $(subst @var{from},@var{to},@var{text}) +@findex subst +Performs a textual replacement on the text @var{text}: each occurrence +of @var{from} is replaced by @var{to}. The result is substituted for +the function call. For example, + +@example +$(subst ee,EE,feet on the street) +@end example + +produces the value @samp{fEEt on the strEEt}. + +@item $(patsubst @var{pattern},@var{replacement},@var{text}) +@findex patsubst +Finds whitespace-separated words in @var{text} that match +@var{pattern} and replaces them with @var{replacement}. Here +@var{pattern} may contain a @samp{%} which acts as a wildcard, +matching any number of any characters within a word. If +@var{replacement} also contains a @samp{%}, the @samp{%} is replaced +by the text that matched the @samp{%} in @var{pattern}. Words that do +not match the pattern are kept without change in the output. Only the +first @samp{%} in the @var{pattern} and @var{replacement} is treated +this way; any subsequent @samp{%} is unchanged. + +@cindex @code{%}, quoting in @code{patsubst} +@cindex @code{%}, quoting with @code{\} (backslash) +@cindex @code{\} (backslash), to quote @code{%} +@cindex backslash (@code{\}), to quote @code{%} +@cindex quoting @code{%}, in @code{patsubst} +@samp{%} characters in @code{patsubst} function invocations can be +quoted with preceding backslashes (@samp{\}). Backslashes that would +otherwise quote @samp{%} characters can be quoted with more backslashes. +Backslashes that quote @samp{%} characters or other backslashes are +removed from the pattern before it is compared file names or has a stem +substituted into it. Backslashes that are not in danger of quoting +@samp{%} characters go unmolested. For example, the pattern +@file{the\%weird\\%pattern\\} has @samp{the%weird\} preceding the +operative @samp{%} character, and @samp{pattern\\} following it. The +final two backslashes are left alone because they cannot affect any +@samp{%} character. + +Whitespace between words is folded into single space characters; +leading and trailing whitespace is discarded. + +For example, + +@example +$(patsubst %.c,%.o,x.c.c bar.c) +@end example + +@noindent +produces the value @samp{x.c.o bar.o}. + +Substitution references (@pxref{Substitution Refs, ,Substitution +References}) are a simpler way to get the effect of the @code{patsubst} +function: + +@example +$(@var{var}:@var{pattern}=@var{replacement}) +@end example + +@noindent +is equivalent to + +@example +$(patsubst @var{pattern},@var{replacement},$(@var{var})) +@end example + +The second shorthand simplifies one of the most common uses of +@code{patsubst}: replacing the suffix at the end of file names. + +@example +$(@var{var}:@var{suffix}=@var{replacement}) +@end example + +@noindent +is equivalent to + +@example +$(patsubst %@var{suffix},%@var{replacement},$(@var{var})) +@end example + +@noindent +For example, you might have a list of object files: + +@example +objects = foo.o bar.o baz.o +@end example + +@noindent +To get the list of corresponding source files, you could simply write: + +@example +$(objects:.o=.c) +@end example + +@noindent +instead of using the general form: + +@example +$(patsubst %.o,%.c,$(objects)) +@end example + +@item $(strip @var{string}) +@cindex stripping whitespace +@cindex whitespace, stripping +@cindex spaces, stripping +@findex strip +Removes leading and trailing whitespace from @var{string} and replaces +each internal sequence of one or more whitespace characters with a +single space. Thus, @samp{$(strip a b c )} results in @w{@samp{a b c}}. + +The function @code{strip} can be very useful when used in conjunction +with conditionals. When comparing something with the empty string +@samp{} using @code{ifeq} or @code{ifneq}, you usually want a string of +just whitespace to match the empty string (@pxref{Conditionals}). + +Thus, the following may fail to have the desired results: + +@example +.PHONY: all +ifneq "$(needs_made)" "" +all: $(needs_made) +else +all:;@@echo 'Nothing to make!' +endif +@end example + +@noindent +Replacing the variable reference @w{@samp{$(needs_made)}} with the +function call @w{@samp{$(strip $(needs_made))}} in the @code{ifneq} +directive would make it more robust. + +@item $(findstring @var{find},@var{in}) +@findex findstring +@cindex searching for strings +@cindex finding strings +@cindex strings, searching for +Searches @var{in} for an occurrence of @var{find}. If it occurs, the +value is @var{find}; otherwise, the value is empty. You can use this +function in a conditional to test for the presence of a specific +substring in a given string. Thus, the two examples, + +@example +$(findstring a,a b c) +$(findstring a,b c) +@end example + +@noindent +produce the values @samp{a} and @samp{} (the empty string), +respectively. @xref{Testing Flags}, for a practical application of +@code{findstring}. + +@need 750 +@findex filter +@cindex filtering words +@cindex words, filtering +@item $(filter @var{pattern}@dots{},@var{text}) +Returns all whitespace-separated words in @var{text} that @emph{do} match +any of the @var{pattern} words, removing any words that @emph{do not} +match. The patterns are written using @samp{%}, just like the patterns +used in the @code{patsubst} function above. + +The @code{filter} function can be used to separate out different types +of strings (such as file names) in a variable. For example: + +@example +sources := foo.c bar.c baz.s ugh.h +foo: $(sources) + cc $(filter %.c %.s,$(sources)) -o foo +@end example + +@noindent +says that @file{foo} depends of @file{foo.c}, @file{bar.c}, +@file{baz.s} and @file{ugh.h} but only @file{foo.c}, @file{bar.c} and +@file{baz.s} should be specified in the command to the +compiler. + +@item $(filter-out @var{pattern}@dots{},@var{text}) +@findex filter-out +@cindex filtering out words +@cindex words, filtering out +Returns all whitespace-separated words in @var{text} that @emph{do not} +match any of the @var{pattern} words, removing the words that @emph{do} +match one or more. This is the exact opposite of the @code{filter} +function. + +For example, given: + +@example +@group +objects=main1.o foo.o main2.o bar.o +mains=main1.o main2.o +@end group +@end example + +@noindent +the following generates a list which contains all the object files not +in @samp{mains}: + +@example +$(filter-out $(mains),$(objects)) +@end example + +@need 1500 +@findex sort +@cindex sorting words +@item $(sort @var{list}) +Sorts the words of @var{list} in lexical order, removing duplicate +words. The output is a list of words separated by single spaces. +Thus, + +@example +$(sort foo bar lose) +@end example + +@noindent +returns the value @samp{bar foo lose}. + +@cindex removing duplicate words +@cindex duplicate words, removing +@cindex words, removing duplicates +Incidentally, since @code{sort} removes duplicate words, you can use +it for this purpose even if you don't care about the sort order. + +@item $(word @var{n},@var{text}) +@findex word +@cindex word, selecting a +@cindex selecting a word +Returns the @var{n}th word of @var{text}. The legitimate values of +@var{n} start from 1. If @var{n} is bigger than the number of words +in @var{text}, the value is empty. For example, + +@example +$(word 2, foo bar baz) +@end example + +@noindent +returns @samp{bar}. + +@item $(wordlist @var{s},@var{e},@var{text}) +@findex wordlist +@cindex words, selecting lists of +@cindex selecting word lists +Returns the list of words in @var{text} starting with word @var{s} and +ending with word @var{e} (inclusive). The legitimate values of @var{s} +start from 1; @var{e} may start from 0. If @var{s} is bigger than the +number of words in @var{text}, the value is empty. If @var{e} is +bigger than the number of words in @var{text}, words up to the end of +@var{text} are returned. If @var{s} is greater than @var{e}, nothing +is returned. For example, + +@example +$(wordlist 2, 3, foo bar baz) +@end example + +@noindent +returns @samp{bar baz}. + +@item $(words @var{text}) +@findex words +@cindex words, finding number +Returns the number of words in @var{text}. Thus, the last word of @var{text} +is @w{@code{$(word $(words @var{text}),@var{text})}}. + +@item $(firstword @var{names}@dots{}) +@findex firstword +@cindex words, extracting first +The argument @var{names} is regarded as a series of names, separated +by whitespace. The value is the first name in the series. The rest +of the names are ignored. + +For example, + +@example +$(firstword foo bar) +@end example + +@noindent +produces the result @samp{foo}. Although @code{$(firstword +@var{text})} is the same as @code{$(word 1,@var{text})}, the +@code{firstword} function is retained for its simplicity. + + +@item $(lastword @var{names}@dots{}) +@findex lastword +@cindex words, extracting last +The argument @var{names} is regarded as a series of names, separated +by whitespace. The value is the last name in the series. + +For example, + +@example +$(lastword foo bar) +@end example + +@noindent +produces the result @samp{bar}. Although @code{$(lastword +@var{text})} is the same as @code{$(word $(words @var{text}),@var{text})}, +the @code{lastword} function was added for its simplicity and better +performance. +@end table + + +Here is a realistic example of the use of @code{subst} and +@code{patsubst}. Suppose that a makefile uses the @code{VPATH} variable +to specify a list of directories that @code{make} should search for +prerequisite files +(@pxref{General Search, , @code{VPATH} Search Path for All Prerequisites}). +This example shows how to +tell the C compiler to search for header files in the same list of +directories. + +The value of @code{VPATH} is a list of directories separated by colons, +such as @samp{src:../headers}. First, the @code{subst} function is used to +change the colons to spaces: + +@example +$(subst :, ,$(VPATH)) +@end example + +@noindent +This produces @samp{src ../headers}. Then @code{patsubst} is used to turn +each directory name into a @samp{-I} flag. These can be added to the +value of the variable @code{CFLAGS}, which is passed automatically to the C +compiler, like this: + +@example +override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH))) +@end example + +@noindent +The effect is to append the text @samp{-Isrc -I../headers} to the +previously given value of @code{CFLAGS}. The @code{override} directive is +used so that the new value is assigned even if the previous value of +@code{CFLAGS} was specified with a command argument (@pxref{Override +Directive, , The @code{override} Directive}). + +@node File Name Functions, Conditional Functions, Text Functions, Functions +@section Functions for File Names +@cindex functions, for file names +@cindex file name functions + +Several of the built-in expansion functions relate specifically to +taking apart file names or lists of file names. + +Each of the following functions performs a specific transformation on a +file name. The argument of the function is regarded as a series of file +names, separated by whitespace. (Leading and trailing whitespace is +ignored.) Each file name in the series is transformed in the same way and +the results are concatenated with single spaces between them. + +@table @code +@item $(dir @var{names}@dots{}) +@findex dir +@cindex directory part +@cindex file name, directory part +Extracts the directory-part of each file name in @var{names}. The +directory-part of the file name is everything up through (and +including) the last slash in it. If the file name contains no slash, +the directory part is the string @samp{./}. For example, + +@example +$(dir src/foo.c hacks) +@end example + +@noindent +produces the result @samp{src/ ./}. + +@item $(notdir @var{names}@dots{}) +@findex notdir +@cindex file name, nondirectory part +@cindex nondirectory part +Extracts all but the directory-part of each file name in @var{names}. +If the file name contains no slash, it is left unchanged. Otherwise, +everything through the last slash is removed from it. + +A file name that ends with a slash becomes an empty string. This is +unfortunate, because it means that the result does not always have the +same number of whitespace-separated file names as the argument had; +but we do not see any other valid alternative. + +For example, + +@example +$(notdir src/foo.c hacks) +@end example + +@noindent +produces the result @samp{foo.c hacks}. + +@item $(suffix @var{names}@dots{}) +@findex suffix +@cindex suffix, function to find +@cindex file name suffix +Extracts the suffix of each file name in @var{names}. If the file name +contains a period, the suffix is everything starting with the last +period. Otherwise, the suffix is the empty string. This frequently +means that the result will be empty when @var{names} is not, and if +@var{names} contains multiple file names, the result may contain fewer +file names. + +For example, + +@example +$(suffix src/foo.c src-1.0/bar.c hacks) +@end example + +@noindent +produces the result @samp{.c .c}. + +@item $(basename @var{names}@dots{}) +@findex basename +@cindex basename +@cindex file name, basename of +Extracts all but the suffix of each file name in @var{names}. If the +file name contains a period, the basename is everything starting up to +(and not including) the last period. Periods in the directory part are +ignored. If there is no period, the basename is the entire file name. +For example, + +@example +$(basename src/foo.c src-1.0/bar hacks) +@end example + +@noindent +produces the result @samp{src/foo src-1.0/bar hacks}. + +@c plural convention with dots (be consistent) +@item $(addsuffix @var{suffix},@var{names}@dots{}) +@findex addsuffix +@cindex suffix, adding +@cindex file name suffix, adding +The argument @var{names} is regarded as a series of names, separated +by whitespace; @var{suffix} is used as a unit. The value of +@var{suffix} is appended to the end of each individual name and the +resulting larger names are concatenated with single spaces between +them. For example, + +@example +$(addsuffix .c,foo bar) +@end example + +@noindent +produces the result @samp{foo.c bar.c}. + +@item $(addprefix @var{prefix},@var{names}@dots{}) +@findex addprefix +@cindex prefix, adding +@cindex file name prefix, adding +The argument @var{names} is regarded as a series of names, separated +by whitespace; @var{prefix} is used as a unit. The value of +@var{prefix} is prepended to the front of each individual name and the +resulting larger names are concatenated with single spaces between +them. For example, + +@example +$(addprefix src/,foo bar) +@end example + +@noindent +produces the result @samp{src/foo src/bar}. + +@item $(join @var{list1},@var{list2}) +@findex join +@cindex joining lists of words +@cindex words, joining lists +Concatenates the two arguments word by word: the two first words (one +from each argument) concatenated form the first word of the result, the +two second words form the second word of the result, and so on. So the +@var{n}th word of the result comes from the @var{n}th word of each +argument. If one argument has more words that the other, the extra +words are copied unchanged into the result. + +For example, @samp{$(join a b,.c .o)} produces @samp{a.c b.o}. + +Whitespace between the words in the lists is not preserved; it is +replaced with a single space. + +This function can merge the results of the @code{dir} and +@code{notdir} functions, to produce the original list of files which +was given to those two functions. + +@item $(wildcard @var{pattern}) +@findex wildcard +@cindex wildcard, function +The argument @var{pattern} is a file name pattern, typically containing +wildcard characters (as in shell file name patterns). The result of +@code{wildcard} is a space-separated list of the names of existing files +that match the pattern. +@xref{Wildcards, ,Using Wildcard Characters in File Names}. + +@item $(realpath @var{names}@dots{}) +@findex realpath +@cindex realpath +@cindex file name, realpath of +For each file name in @var{names} return the canonical absolute name. +A canonical name does not contain any @code{.} or @code{..} components, +nor any repeated path separators (@code{/}) or symlinks. In case of a +failure the empty string is returned. Consult the @code{realpath(3)} +documentation for a list of possible failure causes. + +@item $(abspath @var{names}@dots{}) +@findex abspath +@cindex abspath +@cindex file name, abspath of +For each file name in @var{names} return an absolute name that does +not contain any @code{.} or @code{..} components, nor any repeated path +separators (@code{/}). Note that, in contrast to @code{realpath} +function, @code{abspath} does not resolve symlinks and does not require +the file names to refer to an existing file or directory. Use the +@code{wildcard} function to test for existence. +@end table + +@node Conditional Functions, Let Function, File Name Functions, Functions +@section Functions for Conditionals +@findex if +@cindex conditional expansion +There are four functions that provide conditional expansion. A key +aspect of these functions is that not all of the arguments are +expanded initially. Only those arguments which need to be expanded, +will be expanded. + +@table @code +@item $(if @var{condition},@var{then-part}[,@var{else-part}]) +@findex if +The @code{if} function provides support for conditional expansion in a +functional context (as opposed to the GNU @code{make} makefile +conditionals such as @code{ifeq} (@pxref{Conditional Syntax, ,Syntax of +Conditionals})). + +The first argument, @var{condition}, first has all preceding and +trailing whitespace stripped, then is expanded. If it expands to any +non-empty string, then the condition is considered to be true. If it +expands to an empty string, the condition is considered to be false. + +If the condition is true then the second argument, @var{then-part}, is +evaluated and this is used as the result of the evaluation of the entire +@code{if} function. + +If the condition is false then the third argument, @var{else-part}, is +evaluated and this is the result of the @code{if} function. If there is +no third argument, the @code{if} function evaluates to nothing (the +empty string). + +Note that only one of the @var{then-part} or the @var{else-part} will be +evaluated, never both. Thus, either can contain side-effects (such as +@code{shell} function calls, etc.) + +@item $(or @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]]) +@findex or +The @code{or} function provides a ``short-circuiting'' OR operation. +Each argument is expanded, in order. If an argument expands to a +non-empty string the processing stops and the result of the expansion +is that string. If, after all arguments are expanded, all of them are +false (empty), then the result of the expansion is the empty string. + +@item $(and @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]]) +@findex and +The @code{and} function provides a ``short-circuiting'' AND operation. +Each argument is expanded, in order. If an argument expands to an +empty string the processing stops and the result of the expansion is +the empty string. If all arguments expand to a non-empty string then +the result of the expansion is the expansion of the last argument. + +@item $(intcmp @var{lhs},@var{rhs}[,@var{lt-part}[,@var{eq-part}[,@var{gt-part}]]]) +@findex intcmp +The @code{intcmp} function provides support for numerical comparison of +integers. This function has no counterpart among the GNU @code{make} makefile +conditionals. + +The left-hand side, @var{lhs}, and right-hand side, @var{rhs}, are expanded +and parsed as integral numbers in base 10. Expansion of the remaining +arguments is controlled by how the numerical left-hand side compares to the +numerical right-hand side. + +If there are no further arguments, then the function expands to empty if the +left-hand side and right-hand side do not compare equal, or to their numerical +value if they do compare equal. + +Else if the left-hand side is strictly less than the right-hand side, the +@code{intcmp} function evaluates to the expansion of the third argument, +@var{lt-part}. If both sides compare equal, then the @code{intcmp} function +evaluates to the expansion of the fourth argument, @var{eq-part}. If the +left-hand side is strictly greater than the right-hand side, then the +@code{intcmp} function evaluates to the expansion of the fifth argument, +@var{gt-part}. + +If @var{gt-part} is missing, it defaults to @var{eq-part}. If @var{eq-part} +is missing, it defaults to the empty string. Thus both @samp{$(intcmp +9,7,hello)} and @samp{$(intcmp 9,7,hello,world,)} evaluate to the empty +string, while @samp{$(intcmp 9,7,hello,world)} (notice the absence of a comma +after @code{world}) evaluates to @samp{world}. + +@end table + +@node Let Function, Foreach Function, Conditional Functions, Functions +@section The @code{let} Function +@findex let +@cindex variables, local + +The @code{let} function provides a means to limit the scope of a +variable. The assignment of the named variables in a @code{let} +expression is in effect only within the text provided by the +@code{let} expression, and this assignment doesn't impact that named +variable in any outer scope. + +Additionally, the @code{let} function enables list unpacking by +assigning all unassigned values to the last named variable. + +The syntax of the @code{let} function is: + +@example +$(let @var{var} [@var{var} ...],[@var{list}],@var{text}) +@end example + +@noindent +The first two arguments, @var{var} and @var{list}, are expanded before +anything else is done; note that the last argument, @var{text}, is +@strong{not} expanded at the same time. Next, each word of the +expanded value of @var{list} is bound to each of the variable names, +@var{var}, in turn, with the final variable name being bound to the +remainder of the expanded @var{list}. In other words, the first word +of @var{list} is bound to the first variable @var{var}, the second +word to the second variable @var{var}, and so on. + +If there are more variable names in @var{var} than there are words in +@var{list}, the remaining @var{var} variable names are set to the +empty string. If there are fewer @var{var}s than words in @var{list} +then the last @var{var} is set to all remaining words in @var{list}. + +The variables in @var{var} are assigned as simply-expanded variables +during the execution of @code{let}. @xref{Flavors, ,The Two Flavors +of Variables}. + +After all variables are thus bound, @var{text} is expanded to provide +the result of the @code{let} function. + +For example, this macro reverses the order of the words in the list +that it is given as its first argument: + +@example +reverse = $(let first rest,$1,\ + $(if $(rest),$(call reverse,$(rest)) )$(first)) + +all: ; @@echo $(call reverse,d c b a) +@end example + +@noindent +will print @code{a b c d}. When first called, @code{let} will expand +@var{$1} to @code{d c b a}. It will then assign @var{first} to +@code{d} and assign @var{rest} to @code{c b a}. It will then expand +the if-statement, where @code{$(rest)} is not empty so we recursively +invoke the @var{reverse} function with the value of @var{rest} which +is now @code{c b a}. The recursive invocation of @code{let} assigns +@var{first} to @code{c} and @var{rest} to @code{b a}. The recursion +continues until @code{let} is called with just a single value, +@code{a}. Here @var{first} is @code{a} and @var{rest} is empty, so we +do not recurse but simply expand @code{$(first)} to @code{a} and +return, which adds @code{ b}, etc. + +After the @var{reverse} call is complete, the @var{first} and +@var{rest} variables are no longer set. If variables by those names +existed beforehand, they are not affected by the expansion of the +@code{reverse} macro. + +@node Foreach Function, File Function, Let Function, Functions +@section The @code{foreach} Function +@findex foreach +@cindex words, iterating over + +The @code{foreach} function is similar to the @code{let} function, but very +different from other functions. It causes one piece of text to be used +repeatedly, each time with a different substitution performed on it. The +@code{foreach} function resembles the @code{for} command in the +shell @code{sh} and the @code{foreach} command in the C-shell @code{csh}. + +The syntax of the @code{foreach} function is: + +@example +$(foreach @var{var},@var{list},@var{text}) +@end example + +@noindent +The first two arguments, @var{var} and @var{list}, are expanded before +anything else is done; note that the last argument, @var{text}, is +@strong{not} expanded at the same time. Then for each word of the expanded +value of @var{list}, the variable named by the expanded value of @var{var} +is set to that word, and @var{text} is expanded. Presumably @var{text} +contains references to that variable, so its expansion will be different +each time. + +The result is that @var{text} is expanded as many times as there are +whitespace-separated words in @var{list}. The multiple expansions of +@var{text} are concatenated, with spaces between them, to make the result +of @code{foreach}. + +This simple example sets the variable @samp{files} to the list of all files +in the directories in the list @samp{dirs}: + +@example +dirs := a b c d +files := $(foreach dir,$(dirs),$(wildcard $(dir)/*)) +@end example + +Here @var{text} is @samp{$(wildcard $(dir)/*)}. The first repetition +finds the value @samp{a} for @code{dir}, so it produces the same result +as @samp{$(wildcard a/*)}; the second repetition produces the result +of @samp{$(wildcard b/*)}; and the third, that of @samp{$(wildcard c/*)}. + +This example has the same result (except for setting @samp{dirs}) as +the following example: + +@example +files := $(wildcard a/* b/* c/* d/*) +@end example + +When @var{text} is complicated, you can improve readability by giving it +a name, with an additional variable: + +@example +find_files = $(wildcard $(dir)/*) +dirs := a b c d +files := $(foreach dir,$(dirs),$(find_files)) +@end example + +@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 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}. + +Like the @code{let} function, the @code{foreach} function has no permanent +effect on the variable @var{var}; its value and flavor after the +@code{foreach} function call are the same as they were beforehand. The +other values which are taken from @var{list} are in effect only +temporarily, during the execution of @code{foreach}. The variable +@var{var} is a simply-expanded variable during the execution of +@code{foreach}. If @var{var} was undefined before the @code{foreach} +function call, it is undefined after the call. +@xref{Flavors, ,The Two Flavors of Variables}. + +You must take care when using complex variable expressions that result in +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)) +@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, +no?), but it is more likely to be a mistake. + +@node File Function, Call Function, Foreach Function, Functions +@section The @code{file} Function +@findex file +@cindex writing to a file +@cindex file, writing to +@cindex reading from a file +@cindex file, reading from + +The @code{file} function allows the makefile to write to or read from +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 both cases the file is created if +it does not exist. It is a fatal error if the file cannot be opened +for writing, or if the write operation fails. The @code{file} +function expands to the empty string when writing to a file. + +When reading from a file, the @code{file} function expands to the +verbatim contents of the file, except that the final newline (if there +is one) will be stripped. Attempting to read from a non-existent file +expands to the empty string. + +The syntax of the @code{file} function is: + +@example +$(file @var{op} @var{filename}[,@var{text}]) +@end example + +When the @code{file} function is evaluated all its arguments are +expanded first, then the file indicated by @var{filename} will be +opened in the mode described by @var{op}. + +The operator @var{op} can be @code{>} to indicate the file will be +overwritten with new content, @code{>>} to indicate the current +contents of the file will be appended to, or @code{<} to indicate the +contents of the file will be read in. The @var{filename} specifies +the file to be written to or read from. There may optionally be +whitespace between the operator and the file name. + +When reading files, it is an error to provide a @var{text} value. + +When writing files, @var{text} will be written to the file. If +@var{text} does not already end in a newline a final newline will be +written (even if @var{text} is the empty string). If the @var{text} +argument is not given at all, nothing will be written. + +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 +@cindex user defined functions + +The @code{call} function is unique in that it can be used to create new +parameterized functions. You can write a complex expression as the +value of a variable, then use @code{call} to expand it with different +values. + +The syntax of the @code{call} function is: + +@example +$(call @var{variable},@var{param},@var{param},@dots{}) +@end example + +When @code{make} expands this function, it assigns each @var{param} to +temporary variables @code{$(1)}, @code{$(2)}, etc. The variable +@code{$(0)} will contain @var{variable}. There is no maximum number of +parameter arguments. There is no minimum, either, but it doesn't make +sense to use @code{call} with no parameters. + +Then @var{variable} is expanded as a @code{make} variable in the context +of these temporary assignments. Thus, any reference to @code{$(1)} in +the value of @var{variable} will resolve to the first @var{param} in the +invocation of @code{call}. + +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 +constant.) + +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 built-in functions that have special +expansion rules, like @code{foreach} or @code{if}, may not work as you +expect. + +Some examples may make this clearer. + +This macro simply reverses its arguments: + +@smallexample +reverse = $(2) $(1) + +foo = $(call reverse,a,b) +@end smallexample + +@noindent +Here @code{foo} will contain @samp{b a}. + +This one is slightly more interesting: it defines a macro to search for +the first instance of a program in @code{PATH}: + +@smallexample +pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH))))) + +LS := $(call pathsearch,ls) +@end smallexample + +@noindent +Now the variable @code{LS} contains @code{/bin/ls} or similar. + +The @code{call} function can be nested. Each recursive invocation gets +its own local values for @code{$(1)}, etc.@: that mask the values of +higher-level @code{call}. For example, here is an implementation of a +@dfn{map} function: + +@smallexample +map = $(foreach a,$(2),$(call $(1),$(a))) +@end smallexample + +Now you can @code{map} a function that normally takes only one argument, +such as @code{origin}, to multiple values in one step: + +@smallexample +o = $(call map,origin,o map MAKE) +@end smallexample + +and end up with @code{o} containing something like @samp{file file default}. + +A final caution: be careful when adding whitespace to the arguments to +@code{call}. As with other functions, any whitespace contained in the +second and subsequent arguments is kept; this can cause strange +effects. It's generally safest to remove all extraneous whitespace when +providing parameters to @code{call}. + +@node Value Function, Eval Function, Call Function, Functions +@comment node-name, next, previous, up +@section The @code{value} Function +@findex value +@cindex variables, unexpanded value + +The @code{value} function provides a way for you to use the value of a +variable @emph{without} having it expanded. Please note that this +does not undo expansions which have already occurred; for example if +you create a simply expanded variable its value is expanded during the +definition; in that case the @code{value} function will return the +same result as using the variable directly. + +The syntax of the @code{value} function is: + +@example +$(value @var{variable}) +@end example + +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 +constant.) + +The result of this function is a string containing the value of +@var{variable}, without any expansion occurring. For example, in this +makefile: + +@example +@group +FOO = $PATH + +all: + @@echo $(FOO) + @@echo $(value FOO) +@end group +@end example + +@noindent +The first output line would be @code{ATH}, since the ``$P'' would be +expanded as a @code{make} variable, while the second output line would +be the current value of your @code{$PATH} environment variable, since +the @code{value} function avoided the expansion. + +The @code{value} function is most often used in conjunction with the +@code{eval} function (@pxref{Eval Function}). + +@node Eval Function, Origin Function, Value Function, Functions +@comment node-name, next, previous, up +@section The @code{eval} Function +@findex eval +@cindex evaluating makefile syntax +@cindex makefile syntax, evaluating + +The @code{eval} function is very special: it allows you to define new +makefile constructs that are not constant; which are the result of +evaluating other variables and functions. The argument to the +@code{eval} function is expanded, then the results of that expansion +are parsed as makefile syntax. The expanded results can define new +@code{make} variables, targets, implicit or explicit rules, etc. + +The result of the @code{eval} function is always the empty string; +thus, it can be placed virtually anywhere in a makefile without +causing syntax errors. + +It's important to realize that the @code{eval} argument is expanded +@emph{twice}; first by the @code{eval} function, then the results of +that expansion are expanded again when they are parsed as makefile +syntax. This means you may need to provide extra levels of escaping +for ``$'' characters when using @code{eval}. The @code{value} +function (@pxref{Value Function}) can sometimes be useful in these +situations, to circumvent unwanted expansions. + +Here is an example of how @code{eval} can be used; this example +combines a number of concepts and other functions. Although it might +seem overly complex to use @code{eval} in this example, rather than +just writing out the rules, consider two things: first, the template +definition (in @code{PROGRAM_template}) could need to be much more +complex than it is here; and second, you might put the complex, +``generic'' part of this example into another makefile, then include +it in all the individual makefiles. Now your individual makefiles are +quite straightforward. + +@example +@group +PROGRAMS = server client + +server_OBJS = server.o server_priv.o server_access.o +server_LIBS = priv protocol + +client_OBJS = client.o client_api.o client_mem.o +client_LIBS = protocol + +# Everything after this is generic + +.PHONY: all +all: $(PROGRAMS) + +define PROGRAM_template = + $(1): $$($(1)_OBJS) $$($(1)_LIBS:%=-l%) + ALL_OBJS += $$($(1)_OBJS) +endef + +$(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog)))) + +$(PROGRAMS): + $(LINK.o) $^ $(LDLIBS) -o $@@ + +clean: + rm -f $(ALL_OBJS) $(PROGRAMS) +@end group +@end example + +@node Origin Function, Flavor Function, Eval Function, Functions +@section The @code{origin} Function +@findex origin +@cindex variables, origin of +@cindex origin of variable + +The @code{origin} function is unlike most other functions in that it does +not operate on the values of variables; it tells you something @emph{about} +a variable. Specifically, it tells you where it came from. + +The syntax of the @code{origin} function is: + +@example +$(origin @var{variable}) +@end example + +Note that @var{variable} is the @emph{name} of a variable to inquire about, +not a @emph{reference} to that variable. Therefore you would not normally +use a @samp{$} or parentheses when writing it. (You can, however, use a +variable reference in the name if you want the name not to be a constant.) + +The result of this function is a string telling you how the variable +@var{variable} was defined: + +@table @samp +@item undefined + +if @var{variable} was never defined. + +@item default + +if @var{variable} has a default definition, as is usual with @code{CC} +and so on. @xref{Implicit Variables, ,Variables Used by Implicit Rules}. +Note that if you have redefined a default variable, the @code{origin} +function will return the origin of the later definition. + +@item environment + +if @var{variable} was inherited from the environment provided to +@code{make}. + +@item environment override + +if @var{variable} was inherited from the environment provided to +@code{make}, and is overriding a setting for @var{variable} in the +makefile as a result of the @w{@samp{-e}} option (@pxref{Options +Summary, ,Summary of Options}). + +@item file + +if @var{variable} was defined in a makefile. + +@item command line + +if @var{variable} was defined on the command line. + +@item override + +if @var{variable} was defined with an @code{override} directive in a +makefile (@pxref{Override Directive, ,The @code{override} Directive}). + +@item automatic + +if @var{variable} is an automatic variable defined for the execution +of the recipe for each rule (@pxref{Automatic Variables}). +@end table + +This information is primarily useful (other than for your curiosity) to +determine if you want to believe the value of a variable. For example, +suppose you have a makefile @file{foo} that includes another makefile +@file{bar}. You want a variable @code{bletch} to be defined in @file{bar} +if you run the command @w{@samp{make -f bar}}, even if the environment contains +a definition of @code{bletch}. However, if @file{foo} defined +@code{bletch} before including @file{bar}, you do not want to override that +definition. This could be done by using an @code{override} directive in +@file{foo}, giving that definition precedence over the later definition in +@file{bar}; unfortunately, the @code{override} directive would also +override any command line definitions. So, @file{bar} could +include: + +@example +@group +ifdef bletch +ifeq "$(origin bletch)" "environment" +bletch = barf, gag, etc. +endif +endif +@end group +@end example + +@noindent +If @code{bletch} has been defined from the environment, this will redefine +it. + +If you want to override a previous definition of @code{bletch} if it came +from the environment, even under @samp{-e}, you could instead write: + +@example +@group +ifneq "$(findstring environment,$(origin bletch))" "" +bletch = barf, gag, etc. +endif +@end group +@end example + +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, 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, 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: + +@example +$(flavor @var{variable}) +@end example + +Note that @var{variable} is the @emph{name} of a variable to inquire about, +not a @emph{reference} to that variable. Therefore you would not normally +use a @samp{$} or parentheses when writing it. (You can, however, use a +variable reference in the name if you want the name not to be a constant.) + +The result of this function is a string that identifies the flavor of the +variable @var{variable}: + +@table @samp +@item undefined + +if @var{variable} was never defined. + +@item recursive + +if @var{variable} is a recursively expanded variable. + +@item simple + +if @var{variable} is a simply expanded variable. + +@end table + +@node Make Control Functions, Shell Function, Flavor Function, Functions +@section Functions That Control Make +@cindex functions, for controlling make +@cindex controlling make + +These functions control the way make runs. Generally, they are used to +provide information to the user of the makefile or to cause make to stop +if some sort of environmental error is detected. + +@table @code +@item $(error @var{text}@dots{}) +@findex error +@cindex error, stopping on +@cindex stopping make +Generates a fatal error where the message is @var{text}. Note that +the error is generated whenever this function is evaluated. So, if +you put it inside a recipe or on the right side of a recursive +variable assignment, it won't be evaluated until later. The +@var{text} will be expanded before the error is generated. + +For example, + +@example +ifdef ERROR1 +$(error error is $(ERROR1)) +endif +@end example + +@noindent +will generate a fatal error during the read of the makefile if the +@code{make} variable @code{ERROR1} is defined. Or, + +@example +ERR = $(error found an error!) + +.PHONY: err +err: ; $(ERR) +@end example + +@noindent +will generate a fatal error while @code{make} is running, if the +@code{err} target is invoked. + +@item $(warning @var{text}@dots{}) +@findex warning +@cindex warnings, printing +@cindex printing user warnings +This function works similarly to the @code{error} function, above, +except that @code{make} doesn't exit. Instead, @var{text} is expanded +and the resulting message is displayed, but processing of the makefile +continues. + +The result of the expansion of this function is the empty string. + +@item $(info @var{text}@dots{}) +@findex info +@cindex printing messages +This function does nothing more than print its (expanded) argument(s) +to standard output. No makefile name or line number is added. The +result of the expansion of this function is the empty string. +@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 provides for @code{make} the same facility that +backquotes (@samp{`}) provide in most shells: it does @dfn{command expansion}. +This means that it takes as an argument a shell command and expands 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. + +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}). + +An alternative to the @code{shell} function is the @samp{!=} assignment +operator; it provides a similar behavior but has subtle differences +(@pxref{Setting, , Setting Variables}). The @samp{!=} assignment operator is +included in newer POSIX standards. + +@vindex .SHELLSTATUS +After the @code{shell} function or @samp{!=} assignment operator is +used, its exit status is placed in the @code{.SHELLSTATUS} variable. + +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). + +All variables that are marked as @code{export} will also be passed to the +shell started by the @code{shell} function. It is possible to create a +variable expansion loop: consider this @file{makefile}: + +@example +export HI = $(shell echo hi) +all: ; @@echo $$HI +@end example + +When @code{make} wants to run the recipe it must add the variable @var{HI} to +the environment; to do so it must be expanded. The value of this variable +requires an invocation of the @code{shell} function, and to invoke it we must +create its environment. Since @var{HI} is exported, we need to expand it to +create its environment. And so on. In this obscure case @code{make} will use +the value of the variable from the environment provided to @code{make}, or +else the empty string if there was none, rather than looping or issuing an +error. This is often what you want; for example: + +@example +export PATH = $(shell echo /usr/local/bin:$$PATH) +@end example + +However, it would be simpler and more efficient to use a simply-expanded +variable here (@samp{:=}) in the first place. + +@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} + +A makefile that says how to recompile a program can be used in more +than one way. The simplest use is to recompile every file that is out +of date. Usually, makefiles are written so that if you run +@code{make} with no arguments, it does just that. + +But you might want to update only some of the files; you might want to use +a different compiler or different compiler options; you might want just to +find out which files are out of date without changing them. + +By giving arguments when you run @code{make}, you can do any of these +things and many others. + +@cindex exit status of make +The exit status of @code{make} is always one of three values: +@table @code +@item 0 +The exit status is zero if @code{make} is successful. +@item 2 +The exit status is two if @code{make} encounters any errors. +It will print messages describing the particular errors. +@item 1 +The exit status is one if you use the @samp{-q} flag and @code{make} +determines that some target is not already up to date. +@xref{Instead of Execution, ,Instead of Executing Recipes}. +@end table + +@menu +* Makefile Arguments:: How to specify which makefile to use. +* Goals:: How to use goal arguments to specify which + parts of the makefile to use. +* Instead of Execution:: How to use mode flags to specify what + kind of thing to do with the recipes + in the makefile other than simply + execute them. +* Avoiding Compilation:: How to avoid recompiling certain files. +* Overriding:: How to override a variable to specify + an alternate compiler and other things. +* Testing:: How to proceed past some errors, to + test compilation. +* Temporary Files:: Where @code{make} keeps its temporary files. +* Options Summary:: Summary of Options +@end menu + +@node Makefile Arguments, Goals, Running, Running +@section Arguments to Specify the Makefile +@cindex @code{--file} +@cindex @code{--makefile} +@cindex @code{-f} + +The way to specify the name of the makefile is with the @samp{-f} or +@samp{--file} option (@samp{--makefile} also works). For example, +@samp{-f altmake} says to use the file @file{altmake} as the makefile. + +If you use the @samp{-f} flag several times and follow each @samp{-f} +with an argument, all the specified files are used jointly as +makefiles. + +If you do not use the @samp{-f} or @samp{--file} flag, the default is +to try @file{GNUmakefile}, @file{makefile}, and @file{Makefile}, in +that order, and use the first of these three which exists or can be made +(@pxref{Makefiles, ,Writing Makefiles}). + +@node Goals, Instead of Execution, Makefile Arguments, Running +@section Arguments to Specify the Goals +@cindex goal, how to specify + +The @dfn{goals} are the targets that @code{make} should strive ultimately +to update. Other targets are updated as well if they appear as +prerequisites of goals, or prerequisites of prerequisites of goals, etc. + +By default, the goal is the first target in the makefile (not counting +targets that start with a period). Therefore, makefiles are usually +written so that the first target is for compiling the entire program or +programs they describe. If the first rule in the makefile has several +targets, only the first target in the rule becomes the default goal, not +the whole list. You can manage the selection of the default goal from +within your makefile using the @code{.DEFAULT_GOAL} variable +(@pxref{Special Variables, , Other Special Variables}). + +You can also specify a different goal or goals with command line +arguments to @code{make}. Use the name of the goal as an argument. +If you specify several goals, @code{make} processes each of them in +turn, in the order you name them. + +Any target in the makefile may be specified as a goal (unless it +starts with @samp{-} or contains an @samp{=}, in which case it will be +parsed as a switch or variable definition, respectively). Even +targets not in the makefile may be specified, if @code{make} can find +implicit rules that say how to make them. + +@vindex MAKECMDGOALS +@code{Make} will set the special variable @code{MAKECMDGOALS} to the +list of goals you specified on the command line. If no goals were given +on the command line, this variable is empty. Note that this variable +should be used only in special circumstances. + +An example of appropriate use is to avoid including @file{.d} files +during @code{clean} rules (@pxref{Automatic Prerequisites}), so +@code{make} won't create them only to immediately remove them +again: + +@example +@group +sources = foo.c bar.c + +ifeq (,$(filter clean,$(MAKECMDGOALS)) +include $(sources:.c=.d) +endif +@end group +@end example + +One use of specifying a goal is if you want to compile only a part of +the program, or only one of several programs. Specify as a goal each +file that you wish to remake. For example, consider a directory containing +several programs, with a makefile that starts like this: + +@example +.PHONY: all +all: size nm ld ar as +@end example + +If you are working on the program @code{size}, you might want to say +@w{@samp{make size}} so that only the files of that program are recompiled. + +Another use of specifying a goal is to make files that are not normally +made. For example, there may be a file of debugging output, or a +version of the program that is compiled specially for testing, which has +a rule in the makefile but is not a prerequisite of the default goal. + +Another use of specifying a goal is to run the recipe associated with +a phony target (@pxref{Phony Targets}) or empty target (@pxref{Empty +Targets, ,Empty Target Files to Record Events}). Many makefiles contain +a phony target named @file{clean} which deletes everything except source +files. Naturally, this is done only if you request it explicitly with +@w{@samp{make clean}}. Following is a list of typical phony and empty +target names. @xref{Standard Targets}, for a detailed list of all the +standard target names which GNU software packages use. + +@table @file +@item all +@cindex @code{all} @r{(standard target)} +Make all the top-level targets the makefile knows about. + +@item clean +@cindex @code{clean} @r{(standard target)} +Delete all files that are normally created by running @code{make}. + +@item mostlyclean +@cindex @code{mostlyclean} @r{(standard target)} +Like @samp{clean}, but may refrain from deleting a few files that people +normally don't want to recompile. For example, the @samp{mostlyclean} +target for GCC does not delete @file{libgcc.a}, because recompiling it +is rarely necessary and takes a lot of time. + +@item distclean +@cindex @code{distclean} @r{(standard target)} +@itemx realclean +@cindex @code{realclean} @r{(standard target)} +@itemx clobber +@cindex @code{clobber} @r{(standard target)} +Any of these targets might be defined to delete @emph{more} files than +@samp{clean} does. For example, this would delete configuration files +or links that you would normally create as preparation for compilation, +even if the makefile itself cannot create these files. + +@item install +@cindex @code{install} @r{(standard target)} +Copy the executable file into a directory that users typically search +for commands; copy any auxiliary files that the executable uses into +the directories where it will look for them. + +@item print +@cindex @code{print} @r{(standard target)} +Print listings of the source files that have changed. + +@item tar +@cindex @code{tar} @r{(standard target)} +Create a tar file of the source files. + +@item shar +@cindex @code{shar} @r{(standard target)} +Create a shell archive (shar file) of the source files. + +@item dist +@cindex @code{dist} @r{(standard target)} +Create a distribution file of the source files. This might +be a tar file, or a shar file, or a compressed version of one of the +above, or even more than one of the above. + +@item TAGS +@cindex @code{TAGS} @r{(standard target)} +Update a tags table for this program. + +@item check +@cindex @code{check} @r{(standard target)} +@itemx test +@cindex @code{test} @r{(standard target)} +Perform self tests on the program this makefile builds. +@end table + +@node Instead of Execution, Avoiding Compilation, Goals, Running +@section Instead of Executing Recipes +@cindex execution, instead of +@cindex recipes, instead of executing + +The makefile tells @code{make} how to tell whether a target is up to date, +and how to update each target. But updating the targets is not always +what you want. Certain options specify other activities for @code{make}. + +@comment Extra blank lines make it print better. +@table @samp +@item -n +@itemx --just-print +@itemx --dry-run +@itemx --recon +@cindex @code{--just-print} +@cindex @code{--dry-run} +@cindex @code{--recon} +@cindex @code{-n} + +``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 +@cindex @code{--touch} +@cindex touching files +@cindex target, touching +@cindex @code{-t} + +``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 +@cindex @code{--question} +@cindex @code{-q} +@cindex question mode + +``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} +@itemx --assume-new=@var{file} +@itemx --new-file=@var{file} +@cindex @code{--what-if} +@cindex @code{-W} +@cindex @code{--assume-new} +@cindex @code{--new-file} +@cindex what if +@cindex files, assuming new + +``What if''. Each @samp{-W} flag is followed by a file name. The given +files' modification times are recorded by @code{make} as being the present +time, although the actual modification times remain the same. +You can use the @samp{-W} flag in conjunction with the @samp{-n} flag +to see what would happen if you were to modify specific files. +@end table + +With the @samp{-n} flag, @code{make} prints the recipe that it would +normally execute but usually does not execute it. + +With the @samp{-t} flag, @code{make} ignores the recipes in the rules +and uses (in effect) the command @code{touch} for each target that needs to +be remade. The @code{touch} command is also printed, unless @samp{-s} or +@code{.SILENT} is used. For speed, @code{make} does not actually invoke +the program @code{touch}. It does the work directly. + +With the @samp{-q} flag, @code{make} prints nothing and executes no +recipes, but the exit status code it returns is zero if and only if the +targets to be considered are already up to date. If the exit status is +one, then some updating needs to be done. If @code{make} encounters an +error, the exit status is two, so you can distinguish an error from a +target that is not up to date. + +It is an error to use more than one of these three flags in the same +invocation of @code{make}. + +@cindex +, and recipe execution +The @samp{-n}, @samp{-t}, and @samp{-q} options do not affect recipe +lines that begin with @samp{+} characters or contain the strings +@samp{$(MAKE)} or @samp{$@{MAKE@}}. Note that only the line containing +the @samp{+} character or the strings @samp{$(MAKE)} or @samp{$@{MAKE@}} +is run regardless of these options. Other lines in the same rule are +not run unless they too begin with @samp{+} or contain @samp{$(MAKE)} or +@samp{$@{MAKE@}} (@xref{MAKE Variable, ,How the @code{MAKE} Variable Works}.) + +@cindex phony targets and recipe execution +The @samp{-t} flag prevents phony targets (@pxref{Phony Targets}) from +being updated, unless there are recipe lines beginning with @samp{+} +or containing @samp{$(MAKE)} or @samp{$@{MAKE@}}. + +The @samp{-W} flag provides two features: + +@itemize @bullet +@item +If you also use the @samp{-n} or @samp{-q} flag, you can see what +@code{make} would do if you were to modify some files. + +@item +Without the @samp{-n} or @samp{-q} flag, when @code{make} is actually +executing recipes, the @samp{-W} flag can direct @code{make} to act as +if some files had been modified, without actually running the recipes +for those files. +@end itemize + +Note that the options @samp{-p} and @samp{-v} allow you to obtain other +information about @code{make} or about the makefiles in use +(@pxref{Options Summary, ,Summary of Options}). + +@node Avoiding Compilation, Overriding, Instead of Execution, Running +@section Avoiding Recompilation of Some Files +@cindex @code{-o} +@cindex @code{--old-file} +@cindex @code{--assume-old} +@cindex files, assuming old +@cindex files, avoiding recompilation of +@cindex recompilation, avoiding + +Sometimes you may have changed a source file but you do not want to +recompile all the files that depend on it. For example, suppose you add +a macro or a declaration to a header file that many other files depend +on. Being conservative, @code{make} assumes that any change in the +header file requires recompilation of all dependent files, but you know +that they do not need to be recompiled and you would rather not waste +the time waiting for them to compile. + +If you anticipate the problem before changing the header file, you can +use the @samp{-t} flag. This flag tells @code{make} not to run the +recipes in the rules, but rather to mark the target up to date by +changing its last-modification date. You would follow this procedure: + +@enumerate +@item +Use the command @samp{make} to recompile the source files that really +need recompilation, ensuring that the object files are up-to-date +before you begin. + +@item +Make the changes in the header files. + +@item +Use the command @samp{make -t} to mark all the object files as +up to date. The next time you run @code{make}, the changes in the +header files will not cause any recompilation. +@end enumerate + +If you have already changed the header file at a time when some files +do need recompilation, it is too late to do this. Instead, you can +use the @w{@samp{-o @var{file}}} flag, which marks a specified file as +``old'' (@pxref{Options Summary, ,Summary of Options}). This means +that the file itself will not be remade, and nothing else will be +remade on its account. Follow this procedure: + +@enumerate +@item +Recompile the source files that need compilation for reasons independent +of the particular header file, with @samp{make -o @var{headerfile}}. +If several header files are involved, use a separate @samp{-o} option +for each header file. + +@item +Touch all the object files with @samp{make -t}. +@end enumerate + +@node Overriding, Testing, Avoiding Compilation, Running +@section Overriding Variables +@cindex overriding variables with arguments +@cindex variables, overriding with arguments +@cindex command line variables +@cindex variables, command line + +An argument that contains @samp{=} specifies the value of a variable: +@samp{@var{v}=@var{x}} sets the value of the variable @var{v} to @var{x}. +If you specify a value in this way, all ordinary assignments of the same +variable in the makefile are ignored; we say they have been +@dfn{overridden} by the command line argument. + +The most common way to use this facility is to pass extra flags to +compilers. For example, in a properly written makefile, the variable +@code{CFLAGS} is included in each recipe that runs the C compiler, so a +file @file{foo.c} would be compiled something like this: + +@example +cc -c $(CFLAGS) foo.c +@end example + +Thus, whatever value you set for @code{CFLAGS} affects each compilation +that occurs. The makefile probably specifies the usual value for +@code{CFLAGS}, like this: + +@example +CFLAGS=-g +@end example + +Each time you run @code{make}, you can override this value if you +wish. For example, if you say @samp{make CFLAGS='-g -O'}, each C +compilation will be done with @samp{cc -c -g -O}. (This also +illustrates how you can use quoting in the shell to enclose spaces and +other special characters in the value of a variable when you override +it.) + +The variable @code{CFLAGS} is only one of many standard variables that +exist just so that you can change them this way. @xref{Implicit +Variables, , Variables Used by Implicit Rules}, for a complete list. + +You can also program the makefile to look at additional variables of your +own, giving the user the ability to control other aspects of how the +makefile works by changing the variables. + +When you override a variable with a command 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{:=} 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 +that looks like this: @samp{override @var{variable} = @var{value}} +(@pxref{Override Directive, ,The @code{override} Directive}). + +@node Testing, Temporary Files, Overriding, Running +@section Testing the Compilation of a Program +@cindex testing compilation +@cindex compilation, testing + +Normally, when an error happens in executing a shell command, @code{make} +gives up immediately, returning a nonzero status. No further recipes are +executed for any target. The error implies that the goal cannot be +correctly remade, and @code{make} reports this as soon as it knows. + +When you are compiling a program that you have just changed, this is not +what you want. Instead, you would rather that @code{make} try compiling +every file that can be tried, to show you as many compilation errors +as possible. + +@cindex @code{-k} +@cindex @code{--keep-going} +On these occasions, you should use the @samp{-k} or +@samp{--keep-going} flag. This tells @code{make} to continue to +consider the other prerequisites of the pending targets, remaking them +if necessary, before it gives up and returns nonzero status. For +example, after an error in compiling one object file, @samp{make -k} +will continue compiling other object files even though it already +knows that linking them will be impossible. In addition to continuing +after failed shell commands, @samp{make -k} will continue as much as +possible after discovering that it does not know how to make a target +or prerequisite file. This will always cause an error message, but +without @samp{-k}, it is a fatal error (@pxref{Options Summary, +,Summary of Options}). + +The usual behavior of @code{make} assumes that your purpose is to get the +goals up to date; once @code{make} learns that this is impossible, it might +as well report the failure immediately. The @samp{-k} flag says that the +real purpose is to test as much as possible of the changes made in the +program, perhaps to find several independent problems so that you can +correct them all before the next attempt to compile. This is why Emacs' +@kbd{M-x compile} command passes the @samp{-k} flag by default. + +@node Temporary Files, Options Summary, Testing, Running +@section Temporary Files +@cindex temporary files + +In some situations, @code{make} will need to create its own temporary files. +These files must not be disturbed while @code{make} is running, including all +recursively-invoked instances of @code{make}. + +@cindex @code{MAKE_TMPDIR} +If the environment variable @code{MAKE_TMPDIR} is set then all temporary files +created by @code{make} will be placed there. + +@cindex @code{TMPDIR} +@cindex @code{TMP} +@cindex @code{TEMP} +If @code{MAKE_TMPDIR} is not set, then the standard location for temporary +files for the current operating system will be used. For POSIX systems this +will be the location set in the @code{TMPDIR} environment variable, or else +the system's default location (e.g., @file{/tmp}) is used. On Windows, +first @code{TMP} then @code{TEMP} will be checked, then @code{TMPDIR}, and +finally the system default temporary file location will be used. + +Note that this directory must already exist or @code{make} will fail: +@code{make} will not attempt to create it. + +These variables @emph{cannot} be set from within a makefile: GNU @code{make} +must have access to this location before it begins reading the makefiles. + +@node Options Summary, , Temporary Files, Running +@section Summary of Options +@cindex options +@cindex flags +@cindex switches + +Here is a table of all the options @code{make} understands: + +@table @samp +@item -b +@cindex @code{-b} +@itemx -m +@cindex @code{-m} +These options are ignored for compatibility with other versions of @code{make}. + +@item -B +@cindex @code{-B} +@itemx --always-make +@cindex @code{--always-make} +Consider all targets out-of-date. GNU @code{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 +@code{MAKE_RESTARTS} (@pxref{Special Variables, , Other Special +Variables}) is set to a number greater than 0 this option is disabled +when considering whether to remake makefiles (@pxref{Remaking +Makefiles, , How Makefiles Are Remade}). + +@item -C @var{dir} +@cindex @code{-C} +@itemx --directory=@var{dir} +@cindex @code{--directory} +Change to directory @var{dir} before reading the makefiles. If multiple +@samp{-C} options are specified, each is interpreted relative to the +previous one: @samp{-C / -C etc} is equivalent to @samp{-C /etc}. +This is typically used with recursive invocations of @code{make} +(@pxref{Recursion, ,Recursive Use of @code{make}}). + +@item -d +@cindex @code{-d} +@c Extra blank line here makes the table look better. + +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 +@code{make} decides what to do. The @code{-d} option is equivalent to +@samp{--debug=a} (see below). + +@item --debug[=@var{options}] +@cindex @code{--debug} +@c Extra blank line here makes the table look better. + +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. + +@table @code +@item a (@i{all}) +All types of debugging output are enabled. This is equivalent to using +@samp{-d}. + +@item b (@i{basic}) +Basic debugging prints each target that was found to be out-of-date, and +whether the build was successful or not. + +@item v (@i{verbose}) +A level above @samp{basic}; includes messages about which makefiles were +parsed, prerequisites that did not need to be rebuilt, etc. This option +also enables @samp{basic} messages. + +@item i (@i{implicit}) +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 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 p (@i{print}) +Prints the recipe to be executed, even when the recipe is normally +silent (due to @code{.SILENT} or @samp{@@}). Also prints the makefile +name and line number where the recipe was defined. + +@item w (@i{why}) +Explains why each target must be remade by showing which prerequisites +are more up to date than the target. + +@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 +@cindex @code{-e} +@itemx --environment-overrides +@cindex @code{--environment-overrides} +Give variables taken from the environment precedence +over variables from makefiles. +@xref{Environment, ,Variables from the Environment}. + +@item -E @var{string} +@cindex @code{-E} +@item --eval=@var{string} +@cindex @code{--eval} +@c Extra blank line here makes the table look better. + +Evaluate @var{string} as makefile syntax. This is a command-line +version of the @code{eval} function (@pxref{Eval Function}). The +evaluation is performed after the default rules and variables have +been defined, but before any makefiles are read. + +@item -f @var{file} +@cindex @code{-f} +@itemx --file=@var{file} +@cindex @code{--file} +@itemx --makefile=@var{file} +@cindex @code{--makefile} +Read the file named @var{file} as a makefile. +@xref{Makefiles, ,Writing Makefiles}. + +@item -h +@cindex @code{-h} +@itemx --help +@cindex @code{--help} +@c Extra blank line here makes the table look better. + +Remind you of the options that @code{make} understands and then exit. + +@item -i +@cindex @code{-i} +@itemx --ignore-errors +@cindex @code{--ignore-errors} +Ignore all errors in recipes executed to remake files. +@xref{Errors, ,Errors in Recipes}. + +@item -I @var{dir} +@cindex @code{-I} +@itemx --include-dir=@var{dir} +@cindex @code{--include-dir} +Specifies a directory @var{dir} to search for included makefiles. +@xref{Include, ,Including Other Makefiles}. If several @samp{-I} +options are used to specify several directories, the directories are +searched in the order specified. If the directory @var{dir} is a +single dash (@code{-}) then any already-specified directories up to +that point (including the default directory paths) will be discarded. +You can examine the current list of directories to be searched via the +@code{.INCLUDE_DIRS} variable. + +@item -j [@var{jobs}] +@cindex @code{-j} +@itemx --jobs[=@var{jobs}] +@cindex @code{--jobs} +Specifies the number of recipes (jobs) to run simultaneously. With no +argument, @code{make} runs as many recipes simultaneously as possible. +If there is more than one @samp{-j} option, the last one is effective. +@xref{Parallel, ,Parallel Execution}, for more information on how +recipes are run. Note that this option is ignored on MS-DOS. + +@item --jobserver-style=[@var{style}] +@cindex @code{--jobserver-style} +Chooses the style of jobserver to use. This option only has effect if +parallel builds are enabled (@pxref{Parallel, ,Parallel Execution}). On POSIX +systems @var{style} can be one of @code{fifo} (the default) or @code{pipe}. +On Windows the only acceptable @var{style} is @code{sem} (the default). This +option is useful if you need to use an older versions of GNU @code{make}, or a +different tool that requires a specific jobserver style. + +@item -k +@cindex @code{-k} +@itemx --keep-going +@cindex @code{--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. +@xref{Testing, ,Testing the Compilation of a Program}. + +@item -l [@var{load}] +@cindex @code{-l} +@itemx --load-average[=@var{load}] +@cindex @code{--load-average} +@itemx --max-load[=@var{load}] +@cindex @code{--max-load} +Specifies that no new recipes should be started if there are other +recipes running and the load average is at least @var{load} (a +floating-point number). With no argument, removes a previous load +limit. @xref{Parallel, ,Parallel Execution}. + +@item -L +@cindex @code{-L} +@itemx --check-symlink-times +@cindex @code{--check-symlink-times} +On systems that support symbolic links, this option causes @code{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. + +@item -n +@cindex @code{-n} +@itemx --just-print +@cindex @code{--just-print} +@itemx --dry-run +@cindex @code{--dry-run} +@itemx --recon +@cindex @code{--recon} +@c Extra blank line here makes the table look better. + +Print the recipe that would be executed, but do not execute it (except +in certain circumstances). +@xref{Instead of Execution, ,Instead of Executing Recipes}. + +@item -o @var{file} +@cindex @code{-o} +@itemx --old-file=@var{file} +@cindex @code{--old-file} +@itemx --assume-old=@var{file} +@cindex @code{--assume-old} +Do not remake the file @var{file} even if it is older than its +prerequisites, and do not remake anything on account of changes in +@var{file}. Essentially the file is treated as very old and its rules +are ignored. @xref{Avoiding Compilation, ,Avoiding Recompilation of +Some Files}. + +@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. + +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 +@cindex @code{--print-data-base} +@cindex data base of @code{make} rules +@cindex predefined rules and variables, printing +Print the data base (rules and variable values) that results from +reading the makefiles; then execute as usual or as otherwise +specified. This also prints the version information given by the +@samp{-v} switch (see below). To print the data base without trying +to remake any files, use @w{@samp{make -qp}}. To print the data base +of predefined rules and variables, use @w{@samp{make -p -f /dev/null}}. +The data base output contains file name and line number information for +recipe and variable definitions, so it can be a useful debugging tool +in complex environments. + +@item -q +@cindex @code{-q} +@itemx --question +@cindex @code{--question} +``Question mode''. Do not run any recipes, or print anything; just +return an exit status that is zero if the specified targets are already +up to date, one if any remaking is required, or two if an error is +encountered. @xref{Instead of Execution, ,Instead of Executing +Recipes}. + +@item -r +@cindex @code{-r} +@itemx --no-builtin-rules +@cindex @code{--no-builtin-rules} +Eliminate use of the built-in implicit rules (@pxref{Implicit Rules, +,Using Implicit Rules}). You can still define your own by writing +pattern rules (@pxref{Pattern Rules, ,Defining and Redefining Pattern +Rules}). The @samp{-r} option also clears out the default list of +suffixes for suffix rules (@pxref{Suffix Rules, ,Old-Fashioned Suffix +Rules}). But you can still define your own suffixes with a rule for +@code{.SUFFIXES}, and then define your own suffix rules. Note that only +@emph{rules} are affected by the @code{-r} option; default variables +remain in effect (@pxref{Implicit Variables, ,Variables Used by Implicit +Rules}); see the @samp{-R} option below. + +@item -R +@cindex @code{-R} +@itemx --no-builtin-variables +@cindex @code{--no-builtin-variables} +Eliminate use of the built-in rule-specific variables (@pxref{Implicit +Variables, ,Variables Used by Implicit Rules}). You can still define +your own, of course. The @samp{-R} option also automatically enables +the @samp{-r} option (see above), since it doesn't make sense to have +implicit rules without any definitions for the variables that they use. + +@item -s +@cindex @code{-s} +@itemx --silent +@cindex @code{--silent} +@itemx --quiet +@cindex @code{--quiet} +@c Extra blank line here makes the table look better. + +Silent operation; do not print the recipes as they are executed. +@xref{Echoing, ,Recipe Echoing}. + +@item -S +@cindex @code{-S} +@itemx --no-keep-going +@cindex @code{--no-keep-going} +@itemx --stop +@cindex @code{--stop} +@c Extra blank line here makes the table look better. + +Cancel the effect of the @samp{-k} option. This is never necessary +except in a recursive @code{make} where @samp{-k} might be inherited +from the top-level @code{make} via @code{MAKEFLAGS} +(@pxref{Recursion, ,Recursive Use of @code{make}}) +or if you set @samp{-k} in @code{MAKEFLAGS} in your environment. + +@item --shuffle[=@var{mode}] +@cindex @code{--shuffle} +@c Extra blank line here makes the table look better. + +This option enables a form of fuzz-testing of prerequisite relationships. +When parallelism is enabled (@samp{-j}) the order in which targets are +built becomes less deterministic. If prerequisites are not fully declared +in the makefile this can lead to intermittent and hard-to-track-down build +failures. + +The @samp{--shuffle} option forces @code{make} to purposefully reorder goals +and prerequisites so target/prerequisite relationships still hold, but +ordering of prerequisites of a given target are reordered as described below. + +The order in which prerequisites are listed in automatic variables is not +changed by this option. + +The @code{.NOTPARALLEL} pseudo-target disables shuffling for that makefile. +Also any prerequisite list which contains @code{.WAIT} will not be shuffled. +@xref{Parallel Disable, ,Disabling Parallel Execution}. + +The @samp{--shuffle=} option accepts these values: + +@table @code +@item random +Choose a random seed for the shuffle. This is the default if no mode is +specified. The chosen seed is also provided to sub-@code{make} commands. The +seed is included in error messages so that it can be re-used in future runs to +reproduce the problem or verify that it has been resolved. + +@item reverse +Reverse the order of goals and prerequisites, rather than a random shuffle. + +@item @var{seed} +Use @samp{random} shuffle initialized with the specified seed value. The +@var{seed} is an integer. + +@item none +Disable shuffling. This negates any previous @samp{--shuffle} options. +@end table + +@item -t +@cindex @code{-t} +@itemx --touch +@cindex @code{--touch} +@c Extra blank line here makes the table look better. + +Touch files (mark them up to date without really changing them) +instead of running their 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. Using @code{--trace} is +shorthand for @code{--debug=print,why}. + +@item -v +@cindex @code{-v} +@itemx --version +@cindex @code{--version} +Print the version of the @code{make} program plus a copyright, a list +of authors, and a notice that there is no warranty; then exit. + +@item -w +@cindex @code{-w} +@itemx --print-directory +@cindex @code{--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 @code{make} commands. +@xref{Recursion, ,Recursive Use of @code{make}}. (In practice, you +rarely need to specify this option since @samp{make} does it for you; +see @ref{-w Option, ,The @samp{--print-directory} Option}.) + +@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, +but you do not want to see the extra messages. +@xref{-w Option, ,The @samp{--print-directory} Option}. + +@item -W @var{file} +@cindex @code{-W} +@itemx --what-if=@var{file} +@cindex @code{--what-if} +@itemx --new-file=@var{file} +@cindex @code{--new-file} +@itemx --assume-new=@var{file} +@cindex @code{--assume-new} +Pretend that the target @var{file} has just been modified. When used +with the @samp{-n} flag, this shows you what would happen if you were +to modify that file. Without @samp{-n}, it is almost the same as +running a @code{touch} command on the given file before running +@code{make}, except that the modification time is changed only in the +imagination of @code{make}. +@xref{Instead of Execution, ,Instead of Executing Recipes}. + +@item --warn-undefined-variables +@cindex @code{--warn-undefined-variables} +@cindex variables, warning for undefined +@cindex undefined variables, warning message +Issue a warning message whenever @code{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. +@end table + +@node Implicit Rules, Archives, Running, Top +@chapter Using Implicit Rules +@cindex implicit rule +@cindex rule, implicit + +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, @code{cc}. + +@dfn{Implicit rules} tell @code{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 @file{.c} file and makes a @file{.o} file. +So @code{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, @code{make} +will remake a @file{.o} file from a @file{.y} file by way of a @file{.c} file. +@iftex +@xref{Chained Rules, ,Chains of Implicit Rules}. +@end iftex + +The built-in implicit rules use several variables in their recipes so +that, by changing the values of the variables, you can change the way the +implicit rule works. For example, the variable @code{CFLAGS} controls the +flags given to the C compiler by the implicit rule for C compilation. +@iftex +@xref{Implicit Variables, ,Variables Used by Implicit Rules}. +@end iftex + +You can define your own implicit rules by writing @dfn{pattern rules}. +@iftex +@xref{Pattern Rules, ,Defining and Redefining Pattern Rules}. +@end iftex + +@dfn{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. +@iftex +@xref{Suffix Rules, ,Old-Fashioned Suffix Rules}. +@end iftex + +@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 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. +@end menu + +@node Using Implicit, Catalogue of Rules, Implicit Rules, Implicit Rules +@section Using Implicit Rules +@cindex implicit rule, how to use +@cindex rule, implicit, how to use + +To allow @code{make} to find a customary method for updating a target +file, all you have to do is refrain from specifying recipes yourself. +Either write a rule with no recipe, or don't write a rule at all. +Then @code{make} will figure out which implicit rule to use based on +which kind of source file exists or can be made. + +For example, suppose the makefile looks like this: + +@example +foo : foo.o bar.o + cc -o foo foo.o bar.o $(CFLAGS) $(LDFLAGS) +@end example + +@noindent +Because you mention @file{foo.o} but do not give a rule for it, @code{make} +will automatically look for an implicit rule that tells how to update it. +This happens whether or not the file @file{foo.o} currently exists. + +If an implicit rule is found, it can supply both a recipe and one or +more prerequisites (the source files). You would want to write a rule +for @file{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 @samp{.o} files: one, from a @samp{.c} file with the C compiler; +another, from a @samp{.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 @file{foo.c}, @code{make} will run the C compiler; +otherwise, if you have a file @file{foo.p}, @code{make} will run the Pascal +compiler; and so on. + +Of course, when you write the makefile, you know which implicit rule you +want @code{make} to use, and you know it will choose that one because you +know which possible prerequisite files are supposed to exist. +@xref{Catalogue of Rules, ,Catalogue of Built-In 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 @dfn{chaining} is occurring. +@xref{Chained Rules, ,Chains of Implicit Rules}. + +In general, @code{make} searches for an implicit rule for each target, and +for each double-colon rule, that has no recipe. A file that is mentioned +only as a prerequisite is considered a target whose rule specifies nothing, +so implicit rule search happens for it. @xref{Implicit Rule Search, ,Implicit Rule Search Algorithm}, for the +details of how the search is done. + +Note that explicit prerequisites do not influence implicit rule search. +For example, consider this explicit rule: + +@example +foo.o: foo.p +@end example + +@noindent +The prerequisite on @file{foo.p} does not necessarily mean that +@code{make} will remake @file{foo.o} according to the implicit rule to +make an object file, a @file{.o} file, from a Pascal source file, a +@file{.p} file. For example, if @file{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 (@pxref{Catalogue of Rules, , Catalogue of Built-In +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 +(@pxref{Empty Recipes, ,Defining Empty Recipes}). + +@node Catalogue of Rules, Implicit Variables, Using Implicit, Implicit Rules +@section Catalogue of Built-In Rules +@cindex implicit rule, predefined +@cindex rule, implicit, predefined + +Here is a catalogue of predefined implicit rules which are always +available unless the makefile explicitly overrides or cancels them. +@xref{Canceling Rules, ,Canceling Implicit Rules}, for information on +canceling or overriding an implicit rule. The @samp{-r} or +@samp{--no-builtin-rules} option cancels all predefined rules. + +This manual only documents the default rules available on POSIX-based +operating systems. Other operating systems, such as VMS, Windows, +OS/2, etc. may have different sets of default rules. To see the full +list of default rules and variables available in your version of GNU +@code{make}, run @samp{make -p} in a directory with no makefile. + +Not all of these rules will always be defined, even when the @samp{-r} +option is not given. Many of the predefined implicit rules are +implemented in @code{make} as suffix rules, so which ones will be +defined depends on the @dfn{suffix list} (the list of prerequisites of +the special target @code{.SUFFIXES}). The default suffix list is: +@code{.out}, @code{.a}, @code{.ln}, @code{.o}, @code{.c}, @code{.cc}, +@code{.C}, @code{.cpp}, @code{.p}, @code{.f}, @code{.F}, @code{.m}, +@code{.r}, @code{.y}, @code{.l}, @code{.ym}, @code{.lm}, @code{.s}, +@code{.S}, @code{.mod}, @code{.sym}, @code{.def}, @code{.h}, +@code{.info}, @code{.dvi}, @code{.tex}, @code{.texinfo}, @code{.texi}, +@code{.txinfo}, @code{.w}, @code{.ch} @code{.web}, @code{.sh}, +@code{.elc}, @code{.el}. All of the implicit rules described below +whose prerequisites have one of these suffixes are actually suffix +rules. If you modify the suffix list, the only predefined suffix +rules in effect will be those named by one or two of the suffixes that +are on the list you specify; rules whose suffixes fail to be on the +list are disabled. @xref{Suffix Rules, ,Old-Fashioned Suffix Rules}, +for full details on suffix rules. + +@table @asis +@item Compiling C programs +@cindex C, rule to compile +@pindex cc +@pindex gcc +@pindex .o +@pindex .c +@file{@var{n}.o} is made automatically from @file{@var{n}.c} with +a recipe of the form @w{@samp{$(CC) $(CPPFLAGS) $(CFLAGS) -c}}. + +@item Compiling C++ programs +@cindex C++, rule to compile +@pindex g++ +@pindex .cc +@pindex .cpp +@pindex .C +@file{@var{n}.o} is made automatically from @file{@var{n}.cc}, +@file{@var{n}.cpp}, or @file{@var{n}.C} with a recipe of the form +@w{@samp{$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c}}. We encourage you to use the +suffix @samp{.cc} or @samp{.cpp} for C++ source files instead of @samp{.C} to +better support case-insensitive file systems. + +@item Compiling Pascal programs +@cindex Pascal, rule to compile +@pindex pc +@pindex .p +@file{@var{n}.o} is made automatically from @file{@var{n}.p} +with the recipe @samp{$(PC) $(PFLAGS) -c}. + +@item Compiling Fortran and Ratfor programs +@cindex Fortran, rule to compile +@cindex Ratfor, rule to compile +@pindex f77 +@pindex .f +@pindex .r +@pindex .F +@file{@var{n}.o} is made automatically from @file{@var{n}.r}, +@file{@var{n}.F} or @file{@var{n}.f} by running the +Fortran compiler. The precise recipe used is as follows: + +@table @samp +@item .f +@samp{$(FC) $(FFLAGS) -c}. +@item .F +@samp{$(FC) $(FFLAGS) $(CPPFLAGS) -c}. +@item .r +@samp{$(FC) $(FFLAGS) $(RFLAGS) -c}. +@end table + +@item Preprocessing Fortran and Ratfor programs +@file{@var{n}.f} is made automatically from @file{@var{n}.r} or +@file{@var{n}.F}. This rule runs just the preprocessor to convert a +Ratfor or preprocessable Fortran program into a strict Fortran +program. The precise recipe used is as follows: + +@table @samp +@item .F +@samp{$(FC) $(CPPFLAGS) $(FFLAGS) -F}. +@item .r +@samp{$(FC) $(FFLAGS) $(RFLAGS) -F}. +@end table + +@item Compiling Modula-2 programs +@cindex Modula-2, rule to compile +@pindex m2c +@pindex .sym +@pindex .def +@pindex .mod +@file{@var{n}.sym} is made from @file{@var{n}.def} with a recipe of the form +@w{@samp{$(M2C) $(M2FLAGS) $(DEFFLAGS)}}. @file{@var{n}.o} is made from +@file{@var{n}.mod}; the form is: @w{@samp{$(M2C) $(M2FLAGS) $(MODFLAGS)}}. + +@need 1200 +@item Assembling and preprocessing assembler programs +@cindex assembly, rule to compile +@pindex as +@pindex .s +@file{@var{n}.o} is made automatically from @file{@var{n}.s} by +running the assembler, @code{as}. The precise recipe is +@samp{$(AS) $(ASFLAGS)}. + +@pindex .S +@file{@var{n}.s} is made automatically from @file{@var{n}.S} by +running the C preprocessor, @code{cpp}. The precise recipe is +@w{@samp{$(CPP) $(CPPFLAGS)}}. + +@item Linking a single object file +@cindex linking, predefined rule for +@pindex ld +@pindex .o +@file{@var{n}} is made automatically from @file{@var{n}.o} by running the C +compiler to link the program. The precise recipe used is @w{@samp{$(CC) +$(LDFLAGS) @var{n}.o $(LOADLIBES) $(LDLIBS)}}. + +This rule does the right thing for a simple program with only one +source file. It will also do the right thing if there are multiple +object files (presumably coming from various other source files), one +of which has a name matching that of the executable file. Thus, + +@example +x: y.o z.o +@end example + +@noindent +when @file{x.c}, @file{y.c} and @file{z.c} all exist will execute: + +@example +@group +cc -c x.c -o x.o +cc -c y.c -o y.o +cc -c z.c -o z.o +cc x.o y.o z.o -o x +rm -f x.o +rm -f y.o +rm -f z.o +@end group +@end example + +@noindent +In more complicated cases, such as when there is no object file whose +name derives from the executable file name, you must write an explicit +recipe for linking. + +Each kind of file automatically made into @samp{.o} object files will +be automatically linked by using the compiler (@samp{$(CC)}, +@samp{$(FC)} or @samp{$(PC)}; the C compiler @samp{$(CC)} is used to +assemble @samp{.s} files) without the @samp{-c} option. This could be +done by using the @samp{.o} object files as intermediates, but it is +faster to do the compiling and linking in one step, so that's how it's +done. + +@item Yacc for C programs +@pindex yacc +@cindex Yacc, rule to run +@pindex .y +@file{@var{n}.c} is made automatically from @file{@var{n}.y} by +running Yacc with the recipe @samp{$(YACC) $(YFLAGS)}. + +@item Lex for C programs +@pindex lex +@cindex Lex, rule to run +@pindex .l +@file{@var{n}.c} is made automatically from @file{@var{n}.l} by +running Lex. The actual recipe is @samp{$(LEX) $(LFLAGS)}. + +@item Lex for Ratfor programs +@file{@var{n}.r} is made automatically from @file{@var{n}.l} by +running Lex. The actual recipe is @samp{$(LEX) $(LFLAGS)}. + +The convention of using the same suffix @samp{.l} for all Lex files +regardless of whether they produce C code or Ratfor code makes it +impossible for @code{make} to determine automatically which of the two +languages you are using in any particular case. If @code{make} is +called upon to remake an object file from a @samp{.l} file, it must +guess which compiler to use. It will guess the C compiler, because +that is more common. If you are using Ratfor, make sure @code{make} +knows this by mentioning @file{@var{n}.r} in the makefile. Or, if you +are using Ratfor exclusively, with no C files, remove @samp{.c} from +the list of implicit rule suffixes with: + +@example +@group +.SUFFIXES: +.SUFFIXES: .o .r .f .l @dots{} +@end group +@end example + +@item Making Lint Libraries from C, Yacc, or Lex programs +@pindex lint +@cindex @code{lint}, rule to run +@pindex .ln +@file{@var{n}.ln} is made from @file{@var{n}.c} by running @code{lint}. +The precise recipe is @w{@samp{$(LINT) $(LINTFLAGS) $(CPPFLAGS) -i}}. +The same recipe is used on the C code produced from +@file{@var{n}.y} or @file{@var{n}.l}. + +@item @TeX{} and Web +@cindex @TeX{}, rule to run +@cindex Web, rule to run +@pindex tex +@pindex cweave +@pindex weave +@pindex tangle +@pindex ctangle +@pindex .dvi +@pindex .tex +@pindex .web +@pindex .w +@pindex .ch +@file{@var{n}.dvi} is made from @file{@var{n}.tex} with the recipe +@samp{$(TEX)}. @file{@var{n}.tex} is made from @file{@var{n}.web} with +@samp{$(WEAVE)}, or from @file{@var{n}.w} (and from @file{@var{n}.ch} if +it exists or can be made) with @samp{$(CWEAVE)}. @file{@var{n}.p} is +made from @file{@var{n}.web} with @samp{$(TANGLE)} and @file{@var{n}.c} +is made from @file{@var{n}.w} (and from @file{@var{n}.ch} if it exists +or can be made) with @samp{$(CTANGLE)}. + +@item Texinfo and Info +@cindex Texinfo, rule to format +@cindex Info, rule to format +@pindex texi2dvi +@pindex makeinfo +@pindex .texinfo +@pindex .info +@pindex .texi +@pindex .txinfo +@file{@var{n}.dvi} is made from @file{@var{n}.texinfo}, +@file{@var{n}.texi}, or @file{@var{n}.txinfo}, with the recipe +@w{@samp{$(TEXI2DVI) $(TEXI2DVI_FLAGS)}}. @file{@var{n}.info} is made from +@file{@var{n}.texinfo}, @file{@var{n}.texi}, or @file{@var{n}.txinfo}, with +the recipe @w{@samp{$(MAKEINFO) $(MAKEINFO_FLAGS)}}. + +@item RCS +@cindex RCS, rule to extract from +@pindex co +@pindex ,v @r{(RCS file extension)} +Any file @file{@var{n}} is extracted if necessary from an RCS file +named either @file{@var{n},v} or @file{RCS/@var{n},v}. The precise +recipe used is @w{@samp{$(CO) $(COFLAGS)}}. @file{@var{n}} will not be +extracted from RCS if it already exists, even if the RCS file is +newer. The rules for RCS are terminal +(@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}), +so RCS files cannot be generated from another source; they must +actually exist. + +@item SCCS +@cindex SCCS, rule to extract from +@pindex get +@pindex s. @r{(SCCS file prefix)} +Any file @file{@var{n}} is extracted if necessary from an SCCS file +named either @file{s.@var{n}} or @file{SCCS/s.@var{n}}. The precise +recipe used is @w{@samp{$(GET) $(GFLAGS)}}. The rules for SCCS are +terminal (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}), +so SCCS files cannot be generated from another source; they must +actually exist. + +@pindex .sh +For the benefit of SCCS, a file @file{@var{n}} is copied from +@file{@var{n}.sh} and made executable (by everyone). This is for +shell scripts that are checked into SCCS. Since RCS preserves the +execution permission of a file, you do not need to use this feature +with RCS. + +We recommend that you avoid using of SCCS. RCS is widely held to be +superior, and is also free. By choosing free software in place of +comparable (or inferior) proprietary software, you support the free +software movement. +@end table + +Usually, you want to change only the variables listed in the table +above, which are documented in the following section. + +However, the recipes in built-in implicit rules actually use +variables such as @code{COMPILE.c}, @code{LINK.p}, and +@code{PREPROCESS.S}, whose values contain the recipes listed above. + +@code{make} follows the convention that the rule to compile a +@file{.@var{x}} source file uses the variable @code{COMPILE.@var{x}}. +Similarly, the rule to produce an executable from a @file{.@var{x}} +file uses @code{LINK.@var{x}}; and the rule to preprocess a +@file{.@var{x}} file uses @code{PREPROCESS.@var{x}}. + +@vindex OUTPUT_OPTION +Every rule that produces an object file uses the variable +@code{OUTPUT_OPTION}. @code{make} defines this variable either to +contain @samp{-o $@@}, or to be empty, depending on a compile-time +option. You need the @samp{-o} option to ensure that the output goes +into the right file when the source file is in a different directory, +as when using @code{VPATH} (@pxref{Directory Search}). However, +compilers on some systems do not accept a @samp{-o} switch for object +files. If you use such a system, and use @code{VPATH}, some +compilations will put their output in the wrong place. +A possible workaround for this problem is to give @code{OUTPUT_OPTION} +the value @w{@samp{; mv $*.o $@@}}. + +@node Implicit Variables, Chained Rules, Catalogue of Rules, Implicit Rules +@section Variables Used by Implicit Rules +@cindex flags for compilers + +The recipes in built-in implicit rules make liberal use of certain +predefined variables. You can alter the values of these variables in +the makefile, with arguments to @code{make}, or in the environment to +alter how the implicit rules work without redefining the rules +themselves. You can cancel all variables used by implicit rules with +the @samp{-R} or @samp{--no-builtin-variables} option. + +For example, the recipe used to compile a C source file actually says +@samp{$(CC) -c $(CFLAGS) $(CPPFLAGS)}. The default values of the variables +used are @samp{cc} and nothing, resulting in the command @samp{cc -c}. By +redefining @samp{CC} to @samp{ncc}, you could cause @samp{ncc} to be +used for all C compilations performed by the implicit rule. By redefining +@samp{CFLAGS} to be @samp{-g}, you could pass the @samp{-g} option to +each compilation. @emph{All} implicit rules that do C compilation use +@samp{$(CC)} to get the program name for the compiler and @emph{all} +include @samp{$(CFLAGS)} among the arguments given to the compiler. + +The variables used in implicit rules fall into two classes: those that are +names of programs (like @code{CC}) and those that contain arguments for the +programs (like @code{CFLAGS}). (The ``name of a program'' may also contain +some command arguments, but it must start with an actual executable program +name.) If a variable value contains more than one argument, separate them +with spaces. + +The following tables describe of some of the more commonly-used predefined +variables. This list is not exhaustive, and the default values shown here may +not be what @code{make} selects for your environment. To see the +complete list of predefined variables for your instance of GNU @code{make} you +can run @samp{make -p} in a directory with no makefiles. + +Here is a table of some of the more common variables used as names of +programs in built-in rules: + +@table @code +@item AR +@vindex AR +Archive-maintaining program; default @samp{ar}. +@pindex ar + +@item AS +@vindex AS +Program for compiling assembly files; default @samp{as}. +@pindex as + +@item CC +@vindex CC +Program for compiling C programs; default @samp{cc}. +@pindex cc + +@item CXX +@vindex CXX +Program for compiling C++ programs; default @samp{g++}. +@pindex g++ + +@item CPP +@vindex CPP +Program for running the C preprocessor, with results to standard output; +default @samp{$(CC) -E}. + +@item FC +@vindex FC +Program for compiling or preprocessing Fortran and Ratfor programs; +default @samp{f77}. +@pindex f77 + +@item M2C +@vindex M2C +Program to use to compile Modula-2 source code; default @samp{m2c}. +@pindex m2c + +@item PC +@vindex PC +Program for compiling Pascal programs; default @samp{pc}. +@pindex pc + +@item CO +@vindex CO +Program for extracting a file from RCS; default @samp{co}. +@pindex co + +@item GET +@vindex GET +Program for extracting a file from SCCS; default @samp{get}. +@pindex get + +@item LEX +@vindex LEX +Program to use to turn Lex grammars into source code; default @samp{lex}. +@pindex lex + +@item YACC +@vindex YACC +Program to use to turn Yacc grammars into source code; default @samp{yacc}. +@pindex yacc + +@item LINT +@vindex LINT +Program to use to run lint on source code; default @samp{lint}. +@pindex lint + +@item MAKEINFO +@vindex MAKEINFO +Program to convert a Texinfo source file into an Info file; default +@samp{makeinfo}. +@pindex makeinfo + +@item TEX +@vindex TEX +Program to make @TeX{} @sc{dvi} files from @TeX{} source; +default @samp{tex}. +@pindex tex + +@item TEXI2DVI +@vindex TEXI2DVI +Program to make @TeX{} @sc{dvi} files from Texinfo source; +default @samp{texi2dvi}. +@pindex texi2dvi + +@item WEAVE +@vindex WEAVE +Program to translate Web into @TeX{}; default @samp{weave}. +@pindex weave + +@item CWEAVE +@vindex CWEAVE +Program to translate C Web into @TeX{}; default @samp{cweave}. +@pindex cweave + +@item TANGLE +@vindex TANGLE +Program to translate Web into Pascal; default @samp{tangle}. +@pindex tangle + +@item CTANGLE +@vindex CTANGLE +Program to translate C Web into C; default @samp{ctangle}. +@pindex ctangle + +@item RM +@vindex RM +Command to remove a file; default @samp{rm -f}. +@pindex rm +@end table + +Here is a table of variables whose values are additional arguments for the +programs above. The default values for all of these is the empty +string, unless otherwise noted. + +@table @code +@item ARFLAGS +@vindex ARFLAGS +Flags to give the archive-maintaining program; default @samp{rv}. + +@item ASFLAGS +@vindex ASFLAGS +Extra flags to give to the assembler (when explicitly +invoked on a @samp{.s} or @samp{.S} file). + +@item CFLAGS +@vindex CFLAGS +Extra flags to give to the C compiler. + +@item CXXFLAGS +@vindex CXXFLAGS +Extra flags to give to the C++ compiler. + +@item COFLAGS +@vindex COFLAGS +Extra flags to give to the RCS @code{co} program. + +@item CPPFLAGS +@vindex CPPFLAGS +Extra flags to give to the C preprocessor and programs +that use it (the C and Fortran compilers). + +@item FFLAGS +@vindex FFLAGS +Extra flags to give to the Fortran compiler. + +@item GFLAGS +@vindex GFLAGS +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}, 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 +Extra flags to give to Lex. + +@item YFLAGS +@vindex YFLAGS +Extra flags to give to Yacc. + +@item PFLAGS +@vindex PFLAGS +Extra flags to give to the Pascal compiler. + +@item RFLAGS +@vindex RFLAGS +Extra flags to give to the Fortran compiler for Ratfor programs. + +@item LINTFLAGS +@vindex LINTFLAGS +Extra flags to give to lint. +@end table + +@node Chained Rules, Pattern Rules, Implicit Variables, Implicit Rules +@section Chains of Implicit Rules + +@cindex chains of rules +@cindex rule, implicit, chains of +Sometimes a file can be made by a sequence of implicit rules. For example, +a file @file{@var{n}.o} could be made from @file{@var{n}.y} by running +first Yacc and then @code{cc}. Such a sequence is called a @dfn{chain}. + +If the file @file{@var{n}.c} exists, or is mentioned in the makefile, no +special searching is required: @code{make} finds that the object file can +be made by C compilation from @file{@var{n}.c}; later on, when considering +how to make @file{@var{n}.c}, the rule for running Yacc is +used. Ultimately both @file{@var{n}.c} and @file{@var{n}.o} are +updated. + +@cindex intermediate files +@cindex files, intermediate +However, even if @file{@var{n}.c} does not exist and is not mentioned, +@code{make} knows how to envision it as the missing link between +@file{@var{n}.o} and @file{@var{n}.y}! In this case, @file{@var{n}.c} is +called an @dfn{intermediate file}. Once @code{make} has decided to use the +intermediate file, it is entered in the data base as if it had been +mentioned in the makefile, along with the implicit rule that says how to +create it. + +Intermediate files are remade using their rules just like all other +files. But intermediate files are treated differently in two ways. + +The first difference is what happens if the intermediate file does not +exist. If an ordinary file @var{b} does not exist, and @code{make} +considers a target that depends on @var{b}, it invariably creates +@var{b} and then updates the target from @var{b}. But if @var{b} is +an intermediate file, then @code{make} can leave well enough alone: +it won't create @var{b} unless one of its prerequisites is out of +date. This means the target depending on @var{b} won't be rebuilt +either, unless there is some other reason to update that target: for +example the target doesn't exist or a different prerequisite is newer +than the target. + +The second difference is that if @code{make} @emph{does} create @var{b} in +order to update something else, it deletes @var{b} later on after it is no +longer needed. Therefore, an intermediate file which did not exist before +@code{make} also does not exist after @code{make}. @code{make} reports the +deletion to you by printing a @samp{rm} command showing which file it is +deleting. + +You can explicitly mark a file as intermediate by listing it as a prerequisite +of the special target @code{.INTERMEDIATE}. This takes effect even if the +file is mentioned explicitly in some other way. + +A file cannot be intermediate if it is mentioned in the makefile as a target +or prerequisite, so one way to avoid the deletion of intermediate files is by +adding it as a prerequisite to some target. However, doing so can cause make +to do extra work when searching pattern rules (@pxref{Implicit Rule Search, +,Implicit Rule Search Algorithm}). + +As an alternative, listing a file as a prerequisite of the special target +@code{.NOTINTERMEDIATE} forces it to not be considered intermediate (just as +any other mention of the file will do). Also, listing the target pattern of a +pattern rule as a prerequisite of @code{.NOTINTERMEDIATE} ensures that no +targets generated using that pattern rule are considered intermediate. + +You can disable intermediate files completely in your makefile by +providing @code{.NOTINTERMEDIATE} as a target with no prerequisites: +in that case it applies to every file in the makefile. + +@cindex intermediate files, preserving +@cindex preserving intermediate files +@cindex secondary files +If you do not want @code{make} to create a file merely because it does +not already exist, but you also do not want @code{make} to +automatically delete the file, you can mark it as a @dfn{secondary} +file. To do this, list it as a prerequisite of the special target +@code{.SECONDARY}. Marking a file as secondary also marks it as +intermediate. + +A chain can involve more than two implicit rules. For example, it is +possible to make a file @file{foo} from @file{RCS/foo.y,v} by running RCS, +Yacc and @code{cc}. Then both @file{foo.y} and @file{foo.c} are +intermediate files that are deleted at the end. + +No single implicit rule can appear more than once in a chain. This means +that @code{make} will not even consider such a ridiculous thing as making +@file{foo} from @file{foo.o.o} by running the linker twice. This +constraint has the added benefit of preventing any infinite loop in the +search for an implicit rule chain. + +There are some special implicit rules to optimize certain cases that would +otherwise be handled by rule chains. For example, making @file{foo} from +@file{foo.c} could be handled by compiling and linking with separate +chained rules, using @file{foo.o} as an intermediate file. But what +actually happens is that a special rule for this case does the compilation +and linking with a single @code{cc} command. The optimized rule is used in +preference to the step-by-step chain because it comes earlier in the +ordering of rules. + +Finally, for performance reasons @code{make} will not consider non-terminal +match-anything rules (i.e., @samp{%:}) when searching for a rule to +build a prerequisite of an implicit rule (@pxref{Match-Anything Rules}). + +@node Pattern Rules, Last Resort, Chained Rules, Implicit Rules +@section Defining and Redefining Pattern Rules + +You define an implicit rule by writing a @dfn{pattern rule}. A pattern +rule looks like an ordinary rule, except that its target contains the +character @samp{%} (exactly one of them). The target is considered a +pattern for matching file names; the @samp{%} can match any nonempty +substring, while other characters match only themselves. The prerequisites +likewise use @samp{%} to show how their names relate to the target name. + +Thus, a pattern rule @samp{%.o : %.c} says how to make any file +@file{@var{stem}.o} from another file @file{@var{stem}.c}. + +Note that expansion using @samp{%} in pattern rules occurs +@strong{after} any variable or function expansions, which take place +when the makefile is read. @xref{Using Variables, , How to Use +Variables}, and @ref{Functions, ,Functions for Transforming Text}. + +@menu +* Pattern Intro:: An introduction to pattern rules. +* Pattern Examples:: Examples of pattern rules. +* Automatic Variables:: How to use automatic variables in the + recipe of implicit rules. +* Pattern Match:: How patterns match. +* Match-Anything Rules:: Precautions you should take prior to + defining rules that can match any + target file whatever. +* Canceling Rules:: How to override or cancel built-in rules. +@end menu + +@node Pattern Intro, Pattern Examples, Pattern Rules, Pattern Rules +@subsection Introduction to Pattern Rules +@cindex pattern rule +@cindex rule, pattern + +A pattern rule contains the character @samp{%} (exactly one of them) +in the target; otherwise, it looks exactly like an ordinary rule. The +target is a pattern for matching file names; the @samp{%} matches any +nonempty substring, while other characters match only themselves. +@cindex target pattern, implicit +@cindex @code{%}, in pattern rules + +For example, @samp{%.c} as a pattern matches any file name that ends in +@samp{.c}. @samp{s.%.c} as a pattern matches any file name that starts +with @samp{s.}, ends in @samp{.c} and is at least five characters long. +(There must be at least one character to match the @samp{%}.) The substring +that the @samp{%} matches is called the @dfn{stem}. + +@samp{%} in a prerequisite of a pattern rule stands for the same stem +that was matched by the @samp{%} in the target. In order for the +pattern rule to apply, its target pattern must match the file name +under consideration and all of its prerequisites (after pattern +substitution) must name files that exist or can be made. These files +become prerequisites of the target. +@cindex prerequisite pattern, implicit + +Thus, a rule of the form + +@example +%.o : %.c ; @var{recipe}@dots{} +@end example + +@noindent +specifies how to make a file @file{@var{n}.o}, with another file +@file{@var{n}.c} as its prerequisite, provided that @file{@var{n}.c} +exists or can be made. + +There may also be prerequisites that do not use @samp{%}; such a prerequisite +attaches to every file made by this pattern rule. These unvarying +prerequisites are useful occasionally. + +A pattern rule need not have any prerequisites that contain @samp{%}, or +in fact any prerequisites at all. Such a rule is effectively a general +wildcard. It provides a way to make any file that matches the target +pattern. @xref{Last Resort}. + +More than one pattern rule may match a target. In this case +@code{make} will choose the ``best fit'' rule. @xref{Pattern Match, +,How Patterns Match}. + +@cindex multiple targets, in pattern rule +@cindex target, multiple in pattern rule +Pattern rules may have more than one target; however, every target must +contain a @code{%} character. Multiple target patterns in pattern rules are +always treated as grouped targets (@pxref{Multiple Targets, , Multiple Targets +in a Rule}) regardless of whether they use the @code{:} or @code{&:} +separator. + +There is one exception: if a pattern target is out of date or does +not exist and the makefile does not need to build it, then it will not cause +the other targets to be considered out of date. Note that this historical +exception will be removed in future versions of GNU @code{make} and should not +be relied on. If this situation is detected @code{make} will generate a +warning @emph{pattern recipe did not update peer target}; however, @code{make} +cannot detect all such situations. Please be sure that your recipe updates +@emph{all} the target patterns when it runs. + +@node Pattern Examples, Automatic Variables, Pattern Intro, Pattern Rules +@subsection Pattern Rule Examples + +Here are some examples of pattern rules actually predefined in +@code{make}. First, the rule that compiles @samp{.c} files into @samp{.o} +files: + +@example +%.o : %.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@@ +@end example + +@noindent +defines a rule that can make any file @file{@var{x}.o} from +@file{@var{x}.c}. The recipe uses the automatic variables @samp{$@@} and +@samp{$<} to substitute the names of the target file and the source file +in each case where the rule applies (@pxref{Automatic Variables}). + +Here is a second built-in rule: + +@example +% :: RCS/%,v + $(CO) $(COFLAGS) $< +@end example + +@noindent +defines a rule that can make any file @file{@var{x}} whatsoever from a +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 +file (@pxref{Match-Anything Rules, ,Match-Anything Pattern Rules}). + +@need 500 +This pattern rule has two targets: + +@example +@group +%.tab.c %.tab.h: %.y + bison -d $< +@end group +@end example + +@noindent +@c The following paragraph is rewritten to avoid overfull hboxes +This tells @code{make} that the recipe @samp{bison -d @var{x}.y} will +make both @file{@var{x}.tab.c} and @file{@var{x}.tab.h}. If the file +@file{foo} depends on the files @file{parse.tab.o} and @file{scan.o} +and the file @file{scan.o} depends on the file @file{parse.tab.h}, +when @file{parse.y} is changed, the recipe @samp{bison -d parse.y} +will be executed only once, and the prerequisites of both +@file{parse.tab.o} and @file{scan.o} will be satisfied. (Presumably +the file @file{parse.tab.o} will be recompiled from @file{parse.tab.c} +and the file @file{scan.o} from @file{scan.c}, while @file{foo} is +linked from @file{parse.tab.o}, @file{scan.o}, and its other +prerequisites, and it will execute happily ever after.) + +@node Automatic Variables, Pattern Match, Pattern Examples, Pattern Rules +@subsection Automatic Variables +@cindex automatic variables +@cindex variables, automatic +@cindex variables, and implicit rule + +Suppose you are writing a pattern rule to compile a @samp{.c} file into a +@samp{.o} file: how do you write the @samp{cc} command so that it operates +on the right source file name? You cannot write the name in the recipe, +because the name is different each time the implicit rule is applied. + +What you do is use a special feature of @code{make}, the @dfn{automatic +variables}. These variables have values computed afresh for each rule that +is executed, based on the target and prerequisites of the rule. In this +example, you would use @samp{$@@} for the object file name and @samp{$<} +for the source file name. + +@cindex automatic variables in prerequisites +@cindex prerequisites, and automatic variables +It's very important that you recognize the limited scope in which +automatic variable values are available: they only have values within +the recipe. In particular, you cannot use them anywhere +within the target list of a rule; they have no value there and will +expand to the empty string. Also, they cannot be accessed directly +within the prerequisite list of a rule. A common mistake is +attempting to use @code{$@@} within the prerequisites list; this will +not work. However, there is a special feature of GNU @code{make}, +secondary expansion (@pxref{Secondary Expansion}), which will allow +automatic variable values to be used in prerequisite lists. + +Here is a table of automatic variables: + +@table @code +@vindex $@@ +@vindex @@ @r{(automatic variable)} +@item $@@ +The file name of the target of the rule. If the target is an archive +member, then @samp{$@@} is the name of the archive file. In a pattern +rule that has multiple targets (@pxref{Pattern Intro, ,Introduction to +Pattern Rules}), @samp{$@@} is the name of whichever target caused the +rule's recipe to be run. + +@vindex $% +@vindex % @r{(automatic variable)} +@item $% +The target member name, when the target is an archive member. +@xref{Archives}. For example, if the target is @file{foo.a(bar.o)} then +@samp{$%} is @file{bar.o} and @samp{$@@} is @file{foo.a}. @samp{$%} is +empty when the target is not an archive member. + +@vindex $< +@vindex < @r{(automatic variable)} +@item $< +The name of the first prerequisite. If the target got its recipe from +an implicit rule, this will be the first prerequisite added by the +implicit rule (@pxref{Implicit Rules}). + +@vindex $? +@vindex ? @r{(automatic variable)} +@item $? +The names of all the prerequisites that are newer than the target, with +spaces between them. If the target does not exist, all prerequisites +will be included. For prerequisites which are archive members, only the +named member is used (@pxref{Archives}). + +@samp{$?} is useful even in explicit rules when you wish to operate on only +the prerequisites that have changed. For example, suppose that an archive +named @file{lib} is supposed to contain copies of several object files. +This rule copies just the changed object files into the archive: + +@example +@group +lib: foo.o bar.o lose.o win.o + ar r lib $? +@end group +@end example +@cindex prerequisites, list of changed +@cindex list of changed prerequisites + +@vindex $^ +@vindex ^ @r{(automatic variable)} +@item $^ +The names of all the prerequisites, with spaces between them. For +prerequisites which are archive members, only the named member is used +(@pxref{Archives}). A target has only one prerequisite on each other file +it depends on, no matter how many times each file is listed as a +prerequisite. So if you list a prerequisite more than once for a target, +the value of @code{$^} contains just one copy of the name. This list +does @strong{not} contain any of the order-only prerequisites; for those +see the @samp{$|} variable, below. +@cindex prerequisites, list of all +@cindex list of all prerequisites + +@vindex $+ +@vindex + @r{(automatic variable)} +@item $+ +This is like @samp{$^}, but prerequisites listed more than once are +duplicated in the order they were listed in the makefile. This is +primarily useful for use in linking commands where it is meaningful to +repeat library file names in a particular order. + +@vindex $| +@vindex | @r{(automatic variable)} +@item $| +The names of all the order-only prerequisites, with spaces between +them. + +@vindex $* +@vindex * @r{(automatic variable)} +@item $* +The stem with which an implicit rule matches (@pxref{Pattern Match, ,How +Patterns Match}). If the target is @file{dir/a.foo.b} and the target +pattern is @file{a.%.b} then the stem is @file{dir/foo}. The stem is +useful for constructing names of related files. +@cindex stem, variable for + +In a static pattern rule, the stem is part of the file name that matched +the @samp{%} in the target pattern. + +In an explicit rule, there is no stem; so @samp{$*} cannot be determined +in that way. Instead, if the target name ends with a recognized suffix +(@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}), @samp{$*} is set to +the target name minus the suffix. For example, if the target name is +@samp{foo.c}, then @samp{$*} is set to @samp{foo}, since @samp{.c} is a +suffix. GNU @code{make} does this bizarre thing only for compatibility +with other implementations of @code{make}. You should generally avoid +using @samp{$*} except in implicit rules or static pattern rules. + +If the target name in an explicit rule does not end with a recognized +suffix, @samp{$*} is set to the empty string for that rule. +@end table + +Of the variables listed above, four have values that are single file +names, and three have values that are lists of file names. These +seven have variants that get just the file's directory name or just +the file name within the directory. The variant variables' names are +formed by appending @samp{D} or @samp{F}, respectively. The functions +@code{dir} and @code{notdir} can be used to obtain a similar effect +(@pxref{File Name Functions, , Functions for File Names}). Note, +however, that the @samp{D} variants all omit the trailing slash which +always appears in the output of the @code{dir} function. Here is a +table of the variants: + +@table @samp +@vindex $(@@D) +@vindex @@D @r{(automatic variable)} +@item $(@@D) +The directory part of the file name of the target, with the trailing +slash removed. If the value of @samp{$@@} is @file{dir/foo.o} then +@samp{$(@@D)} is @file{dir}. This value is @file{.} if @samp{$@@} does +not contain a slash. + +@vindex $(@@F) +@vindex @@F @r{(automatic variable)} +@item $(@@F) +The file-within-directory part of the file name of the target. If the +value of @samp{$@@} is @file{dir/foo.o} then @samp{$(@@F)} is +@file{foo.o}. @samp{$(@@F)} is equivalent to @samp{$(notdir $@@)}. + +@vindex $(*D) +@vindex *D @r{(automatic variable)} +@item $(*D) +@vindex $(*F) +@vindex *F @r{(automatic variable)} +@itemx $(*F) +The directory part and the file-within-directory +part of the stem; @file{dir} and @file{foo} in this example. + +@vindex $(%D) +@vindex %D @r{(automatic variable)} +@item $(%D) +@vindex $(%F) +@vindex %F @r{(automatic variable)} +@itemx $(%F) +The directory part and the file-within-directory part of the target +archive member name. This makes sense only for archive member targets +of the form @file{@var{archive}(@var{member})} and is useful only when +@var{member} may contain a directory name. (@xref{Archive Members, +,Archive Members as Targets}.) + +@vindex $( +#include +#include +#include +#include + +#include + +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 (const gmk_floc *floc) +@{ + printf ("mk_temp plugin loaded from %s:%lu\n", floc->filenm, floc->lineno); + /* 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 @file{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 +mk_temp plugin loaded from Makefile:4 +cc -shared -fPIC -o mk_temp.so mk_temp.c +Temporary filename: tmpfile.A7JEwd +@end example + +@node Integrating make, Features, Extending make, Top +@chapter Integrating GNU @code{make} +@cindex make integration + +GNU @code{make} is often one component in a larger system of tools, +including integrated development environments, compiler toolchains, +and others. The role of @code{make} is to start commands and +determine whether they succeeded or not: no special integration is +needed to accomplish that. However, sometimes it is convenient to +bind @code{make} more tightly with other parts of the system, both +higher-level (tools that invoke @code{make}) and lower-level (tools +that @code{make} invokes). + +@menu +* Job Slots:: Share job slots with GNU @code{make}. +* Terminal Output:: Control output to terminals. +@end menu + +@node Job Slots, Terminal Output, Integrating make, Integrating make +@section Sharing Job Slots with GNU @code{make} +@cindex job slots, sharing +@cindex tools, sharing job slots + +GNU @code{make} has the ability to run multiple recipes in parallel +(@pxref{Parallel, ,Parallel Execution}) and to cap the total number of +parallel jobs even across recursive invocations of @code{make} +(@pxref{Options/Recursion, ,Communicating Options to a +Sub-@code{make}}). Tools that @code{make} invokes which are also able +to run multiple operations in parallel, either using multiple threads +or multiple processes, can be enhanced to participate in GNU +@code{make}'s job management facility to ensure that the total number +of active threads/processes running on the system does not exceed the +maximum number of slots provided to GNU @code{make}. + +@cindex jobserver +GNU @code{make} uses a method called the ``jobserver'' to control the +number of active jobs across recursive invocations. The actual +implementation of the jobserver varies across different operating +systems, but some fundamental aspects are always true. + +@cindex @code{--jobserver-auth} +First, @code{make} will provide information necessary for accessing the +jobserver through the environment to its children, in the @code{MAKEFLAGS} +environment variable. Tools which want to participate in the jobserver +protocol will need to parse this environment variable and find the word +starting with @code{--jobserver-auth=}. The value of this option will +describe how to communicate with the jobserver. The interpretation of this +value is described in the sections below. + +Be aware that the @code{MAKEFLAGS} variable may contain multiple instances of +the @code{--jobserver-auth=} option. Only the @emph{last} instance is +relevant. + +Second, every command @code{make} starts has one implicit job slot +reserved for it before it starts. Any tool which wants to participate +in the jobserver protocol should assume it can always run one job +without having to contact the jobserver at all. + +Finally, it's critical that tools that participate in the jobserver +protocol return the exact number of slots they obtained from the +jobserver back to the jobserver before they exit, even under error +conditions. Remember that the implicit job slot should @strong{not} +be returned to the jobserver! Returning too few slots means that +those slots will be lost for the rest of the build process; returning +too many slots means that extra slots will be available. The +top-level @code{make} command will print an error message at the end +of the build if it detects an incorrect number of slots available in +the jobserver. + +As an example, suppose you are implementing a linker which provides +for multithreaded operation. You would like to enhance the linker so +that if it is invoked by GNU @code{make} it can participate in the +jobserver protocol to control how many threads are used during link. +First you will need to modify the linker to determine if the +@code{MAKEFLAGS} environment variable is set. Next you will need to +parse the value of that variable to determine if the jobserver is +available, and how to access it. If it is available then you can +access it to obtain job slots controlling how much parallelism your +tool can use. Once done your tool must return those job slots back to +the jobserver. + +@menu +* POSIX Jobserver:: Using the jobserver on POSIX systems. +* Windows Jobserver:: Using the jobserver on Windows systems. +@end menu + +@node POSIX Jobserver, Windows Jobserver, Job Slots, Job Slots +@subsection POSIX Jobserver Interaction +@cindex jobserver on POSIX + +On POSIX systems the jobserver is implemented in one of two ways: on systems +that support it, GNU @code{make} will create a named pipe and use that for the +jobserver. In this case the auth option will have the form +@code{--jobserver-auth=fifo:PATH} where @samp{PATH} is the pathname of the +named pipe. To access the jobserver you should open the named pipe path and +read/write to it as described below. + +@cindex @code{--jobserver-style} +If the system doesn't support named pipes, or if the user provided the +@code{--jobserver-style} option and specified @samp{pipe}, then the jobserver +will be implemented as a simple UNIX pipe. In this case the auth option will +have the form @code{--jobserver-auth=R,W} where @samp{R} and @samp{W} are +non-negative integers representing file descriptors: @samp{R} is the read file +descriptor and @samp{W} is the write file descriptor. If either or both of +these file descriptors are negative, it means the jobserver is disabled for +this process. + +When using a simple pipe, only command lines that @code{make} understands to +be recursive invocations of @code{make} (@pxref{MAKE Variable, ,How the +@code{MAKE} Variable Works}) will have access to the jobserver. When writing +makefiles you must be sure to mark the command as recursive (most commonly by +prefixing the command line with the @code{+} indicator (@pxref{Recursion, +,Recursive Use of @code{make}}). Note that the read side of the jobserver +pipe is set to ``blocking'' mode. This should not be changed. + +In both implementations of the jobserver, the pipe will be pre-loaded with one +single-character token for each available job. To obtain an extra slot you +must read a single character from the jobserver; to release a slot you must +write a single character back into the jobserver. + +It's important that when you release the job slot, you write back the same +character you read. Don't assume that all tokens are the same character; +different characters may have different meanings to GNU @code{make}. The +order is not important, since @code{make} has no idea in what order jobs will +complete anyway. + +There are various error conditions you must consider to ensure your +implementation is robust: + +@itemize @bullet +@item +If you have a command-line argument controlling the parallel operation of your +tool, consider whether your tool should detect situations where both the +jobserver and the command-line argument are specified, and how it should +react. + +@item +If your tool does not recognize the format of the @code{--jobserver-auth} +string, it should assume the jobserver is using a different style and it +cannot connect. + +@item +If your tool determines that the @code{--jobserver-auth} option references a +simple pipe but that the file descriptors specified are closed, this means +that the calling @code{make} process did not think that your tool was a +recursive @code{make} invocation (e.g., the command line was not prefixed with +a @code{+} character). You should notify your users of this situation. + +@item +Your tool should be sure to write back the tokens it read, even under error +conditions. This includes not only errors in your tool but also outside +influences such as interrupts (@code{SIGINT}), etc. You may want to install +signal handlers to manage this write-back. + +@item +Your tool may also examine the first word of the @code{MAKEFLAGS} variable and +look for the character @code{n}. If this character is present then +@code{make} was invoked with the @samp{-n} option and your tool may want to +stop without performing any operations. +@end itemize + +@node Windows Jobserver, , POSIX Jobserver, Job Slots +@subsection Windows Jobserver Interaction +@cindex jobserver on Windows + +On Windows systems the jobserver is implemented as a named semaphore. +The semaphore will be set with an initial count equal to the number of +available slots; to obtain a slot you must wait on the semaphore (with +or without a timeout). To release a slot, release the semaphore. + +To access the semaphore you must parse the @code{MAKEFLAGS} variable and +look for the argument string @code{--jobserver-auth=NAME} where +@samp{NAME} is the name of the named semaphore. Use this name with +@code{OpenSemaphore} to create a handle to the semaphore. + +@cindex @code{--jobserver-style} for Windows +The only valid style for @code{--jobserver-style} is @samp{sem}. + +There are various error conditions you must consider to ensure your +implementation is robust: + +@itemize @bullet +@item +Usually you will have a command-line argument controlling the parallel +operation of your tool. Consider whether your tool should detect +situations where both the jobserver and the command-line argument are +specified, and how it should react. + +@item +Your tool should be sure to release the semaphore for the tokens it +read, even under error conditions. This includes not only errors in +your tool but also outside influences such as interrupts +(@code{SIGINT}), etc. You may want to install signal handlers to +manage this write-back. +@end itemize + +@node Terminal Output, , Job Slots, Integrating make +@section Synchronized Terminal Output +@cindex parallel output to terminal +@cindex terminal, output to + +Normally GNU @code{make} will invoke all commands with access to the +same standard and error outputs that @code{make} itself was started +with. A number of tools will detect whether the output is a terminal +or not-a-terminal, and use this information to change the output +style. For example if the output goes to a terminal the tool may add +control characters that set color, or even change the location of the +cursor. If the output is not going to a terminal then these special +control characters are not emitted so that they don't corrupt log +files, etc. + +The @code{--output-sync} (@pxref{Parallel Output, ,Output During +Parallel Execution}) option will defeat the terminal detection. When +output synchronization is enabled GNU @code{make} arranges for all +command output to be written to a file, so that its output can be +written as a block without interference from other commands. This +means that all tools invoked by @code{make} will believe that their +output is not going to be displayed on a terminal, even when it will +be (because @code{make} will display it there after the command is +completed). + +In order to facilitate tools which would like to determine whether or +not their output will be displayed on a terminal, GNU @code{make} will +set the @code{MAKE_TERMOUT} and @code{MAKE_TERMERR} environment +variables before invoking any commands. Tools which would like to +determine whether standard or error output (respectively) will be +displayed on a terminal can check these environment variables to +determine if they exist and contain a non-empty value. If so the tool +can assume that the output will (eventually) be displayed on a +terminal. If the variables are not set or have an empty value, then +the tool should fall back to its normal methods of detecting whether +output is going to a terminal or not. + +The content of the variables can be parsed to determine the type of +terminal which will be used to display the output. + +Similarly, environments which invoke @code{make} and would like to +capture the output and eventually display it on a terminal (or some +display which can interpret terminal control characters) can set these +variables before invoking @code{make}. GNU @code{make} will not +modify these environment variables if they already exist when it +starts. + +@node Features, Missing, Integrating make, Top +@chapter Features of GNU @code{make} +@cindex features of GNU @code{make} +@cindex portability +@cindex compatibility + +Here is a summary of the features of GNU @code{make}, for comparison +with and credit to other versions of @code{make}. We consider the +features of @code{make} in 4.2 BSD systems as a baseline. If you are +concerned with writing portable makefiles, you should not use the +features of @code{make} listed here, nor the ones in @ref{Missing}. + +Many features come from the version of @code{make} in System V. + +@itemize @bullet +@item +The @code{VPATH} variable and its special meaning. +@xref{Directory Search, , Searching Directories for Prerequisites}. +This feature exists in System V @code{make}, but is undocumented. +It is documented in 4.3 BSD @code{make} (which says it mimics System V's +@code{VPATH} feature). + +@item +Included makefiles. @xref{Include, ,Including Other Makefiles}. +Allowing multiple files to be included with a single directive is a GNU +extension. + +@item +Variables are read from and communicated via the environment. +@xref{Environment, ,Variables from the Environment}. + +@item +Options passed through the variable @code{MAKEFLAGS} to recursive +invocations of @code{make}. +@xref{Options/Recursion, ,Communicating Options to a Sub-@code{make}}. + +@item +The automatic variable @code{$%} is set to the member name +in an archive reference. @xref{Automatic Variables}. + +@item +The automatic variables @code{$@@}, @code{$*}, @code{$<}, @code{$%}, +and @code{$?} have corresponding forms like @code{$(@@F)} and +@code{$(@@D)}. We have generalized this to @code{$^} as an obvious +extension. @xref{Automatic Variables}. + +@item +Substitution variable references. +@xref{Reference, ,Basics of Variable References}. + +@item +The command line options @samp{-b} and @samp{-m}, accepted and +ignored. In System V @code{make}, these options actually do something. + +@item +Execution of recursive commands to run @code{make} via the variable +@code{MAKE} even if @samp{-n}, @samp{-q} or @samp{-t} is specified. +@xref{Recursion, ,Recursive Use of @code{make}}. + +@item +Support for suffix @samp{.a} in suffix rules. @xref{Archive Suffix +Rules}. This feature is obsolete in GNU @code{make}, because the +general feature of rule chaining (@pxref{Chained Rules, ,Chains of +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 +recipes is retained when the recipes are printed, so they appear as +they do in the makefile, except for the stripping of initial +whitespace. +@end itemize + +The following features were inspired by various other versions of +@code{make}. In some cases it is unclear exactly which versions inspired +which others. + +@itemize @bullet +@item +Pattern rules using @samp{%}. +This has been implemented in several versions of @code{make}. +We're not sure who invented it first, but it's been spread around a bit. +@xref{Pattern Rules, ,Defining and Redefining Pattern Rules}. + +@item +Rule chaining and implicit intermediate files. +This was implemented by Stu Feldman in his version of @code{make} +for AT&T Eighth Edition Research Unix, and later by Andrew Hume of +AT&T Bell Labs in his @code{mk} program (where he terms it +``transitive closure''). We do not really know if +we got this from either of them or thought it up ourselves at the +same time. @xref{Chained Rules, ,Chains of Implicit Rules}. + +@item +The automatic variable @code{$^} containing a list of all prerequisites +of the current target. We did not invent this, but we have no idea who +did. @xref{Automatic Variables}. The automatic variable +@code{$+} is a simple extension of @code{$^}. + +@item +The ``what if'' flag (@samp{-W} in GNU @code{make}) was (as far as we know) +invented by Andrew Hume in @code{mk}. +@xref{Instead of Execution, ,Instead of Executing Recipes}. + +@item +The concept of doing several things at once (parallelism) exists in +many incarnations of @code{make} and similar programs, though not in the +System V or BSD implementations. @xref{Execution, ,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 +@code{patsubst} function before the alternate syntax was implemented +for compatibility with SunOS 4. It is not altogether clear who +inspired whom, since GNU @code{make} had @code{patsubst} before SunOS +4 was released. + +@item +The special significance of @samp{+} characters preceding recipe lines +(@pxref{Instead of Execution, ,Instead of Executing Recipes}) is +mandated by @cite{IEEE Standard 1003.2-1992} (POSIX.2). + +@item +The @samp{+=} syntax to append to the value of a variable comes from SunOS +4 @code{make}. @xref{Appending, , Appending More Text to Variables}. + +@item +The syntax @w{@samp{@var{archive}(@var{mem1} @var{mem2}@dots{})}} to list +multiple members in a single archive file comes from SunOS 4 @code{make}. +@xref{Archive Members}. + +@item +The @code{-include} directive to include makefiles with no error for a +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}: + +@itemize @bullet +@item +Use the @samp{-v} or @samp{--version} option to print version and +copyright information. + +@item +Use the @samp{-h} or @samp{--help} option to summarize the options to +@code{make}. + +@item +Simply-expanded variables. @xref{Flavors, ,The Two Flavors of Variables}. + +@item +Pass command line variable assignments automatically through the +variable @code{MAKE} to recursive @code{make} invocations. +@xref{Recursion, ,Recursive Use of @code{make}}. + +@item +Use the @samp{-C} or @samp{--directory} command option to change +directory. @xref{Options Summary, ,Summary of Options}. + +@item +Make verbatim variable definitions with @code{define}. +@xref{Multi-Line, ,Defining Multi-Line Variables}. + +@item +Declare phony targets with the special target @code{.PHONY}. + +Andrew Hume of AT&T Bell Labs implemented a similar feature with a +different syntax in his @code{mk} program. This seems to be a case of +parallel discovery. @xref{Phony Targets, ,Phony Targets}. + +@item +Manipulate text by calling functions. +@xref{Functions, ,Functions for Transforming Text}. + +@item +Use the @samp{-o} or @samp{--old-file} +option to pretend a file's modification-time is old. +@xref{Avoiding Compilation, ,Avoiding Recompilation of Some Files}. + +@item +Conditional execution. + +This feature has been implemented numerous times in various versions +of @code{make}; it seems a natural extension derived from the features +of the C preprocessor and similar macro languages and is not a +revolutionary concept. @xref{Conditionals, ,Conditional Parts of Makefiles}. + +@item +Specify a search path for included makefiles. +@xref{Include, ,Including Other Makefiles}. + +@item +Specify extra makefiles to read with an environment variable. +@xref{MAKEFILES Variable, ,The Variable @code{MAKEFILES}}. + +@item +Strip leading sequences of @samp{./} from file names, so that +@file{./@var{file}} and @file{@var{file}} are considered to be the +same file. + +@item +Use a special search method for library prerequisites written in the +form @samp{-l@var{name}}. +@xref{Libraries/Search, ,Directory Search for Link Libraries}. + +@item +Allow suffixes for suffix rules +(@pxref{Suffix Rules, ,Old-Fashioned Suffix Rules}) to contain any +characters. In other versions of @code{make}, they must begin with +@samp{.} and not contain any @samp{/} characters. + +@item +Keep track of the current level of @code{make} recursion using the +variable @code{MAKELEVEL}. @xref{Recursion, ,Recursive Use of @code{make}}. + +@item +Provide any goals given on the command line in the variable +@code{MAKECMDGOALS}. @xref{Goals, ,Arguments to Specify the Goals}. + +@item +Specify static pattern rules. @xref{Static Pattern, ,Static Pattern Rules}. + +@item +Provide selective @code{vpath} search. +@xref{Directory Search, ,Searching Directories for Prerequisites}. + +@item +Provide computed variable references. +@xref{Reference, ,Basics of Variable References}. + +@item +Update makefiles. @xref{Remaking Makefiles, ,How Makefiles Are Remade}. +System V @code{make} has a very, very limited form of this +functionality in that it will check out SCCS files for makefiles. + +@item +Various new built-in implicit rules. +@xref{Catalogue of Rules, ,Catalogue of Built-In Rules}. + +@item +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 +@chapter Incompatibilities and Missing Features +@cindex incompatibilities +@cindex missing features +@cindex features, missing + +The @code{make} programs in various other systems support a few features +that are not implemented in GNU @code{make}. The POSIX.2 standard +(@cite{IEEE Standard 1003.2-1992}) which specifies @code{make} does not +require any of these features. + +@itemize @bullet +@item +A target of the form @samp{@var{file}((@var{entry}))} stands for a member +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}. + +This feature was not put into GNU @code{make} because of the +non-modularity of putting knowledge into @code{make} of the internal +format of archive file symbol tables. +@xref{Archive Symbols, ,Updating Archive Symbol Directories}. + +@item +Suffixes (used in suffix rules) that end with the character @samp{~} +have a special meaning to System V @code{make}; +they refer to the SCCS file that corresponds +to the file one would get without the @samp{~}. For example, the +suffix rule @samp{.c~.o} would make the file @file{@var{n}.o} from +the SCCS file @file{s.@var{n}.c}. For complete coverage, a whole +series of such suffix rules is required. +@xref{Suffix Rules, ,Old-Fashioned Suffix Rules}. + +In GNU @code{make}, this entire series of cases is handled by two +pattern rules for extraction from SCCS, in combination with the +general feature of rule chaining. +@xref{Chained Rules, ,Chains of Implicit Rules}. + +@item +In System V and 4.3 BSD @code{make}, files found by @code{VPATH} +search (@pxref{Directory Search, ,Searching Directories for +Prerequisites}) have their names changed inside recipes. We feel it +is much cleaner to always use automatic variables and thus make this +feature unnecessary. + +@item +In some Unix @code{make}s, the automatic variable @code{$*} appearing in +the prerequisites of a rule has the amazingly strange ``feature'' of +expanding to the full name of the @emph{target of that rule}. We cannot +imagine what went on in the minds of Unix @code{make} developers to do +this; it is utterly inconsistent with the normal definition of @code{$*}. +@vindex * @r{(automatic variable), unsupported bizarre usage} + +@item +In some Unix @code{make}s, implicit rule search (@pxref{Implicit +Rules, ,Using Implicit Rules}) is apparently done for @emph{all} +targets, not just those without recipes. This means you can +do: + +@example +@group +foo.o: + cc -c foo.c +@end group +@end example + +@noindent +and Unix @code{make} will intuit that @file{foo.o} depends on +@file{foo.c}. + +We feel that such usage is broken. The prerequisite properties of +@code{make} are well-defined (for GNU @code{make}, at least), +and doing such a thing simply does not fit the model. + +@item +GNU @code{make} does not include any built-in implicit rules for +compiling or preprocessing EFL programs. If we hear of anyone who is +using EFL, we will gladly add them. + +@item +It appears that in SVR4 @code{make}, a suffix rule can be specified +with no recipe, and it is treated as if it had an empty recipe +(@pxref{Empty Recipes}). For example: + +@example +.c.a: +@end example + +@noindent +will override the built-in @file{.c.a} suffix rule. + +We feel that it is cleaner for a rule without a recipe to always simply +add to the prerequisite list for the target. The above example can be +easily rewritten to get the desired behavior in GNU @code{make}: + +@example +.c.a: ; +@end example + +@item +Some versions of @code{make} invoke the shell with the @samp{-e} flag, +except under @samp{-k} (@pxref{Testing, ,Testing the Compilation of a +Program}). The @samp{-e} flag tells the shell to exit as soon as any +program it runs returns a nonzero status. We feel it is cleaner to +write each line of the recipe to stand on its own and not require this +special treatment. +@end itemize + +@comment The makefile standards are in a separate file that is also +@comment included by standards.texi. +@include make-stds.texi + +@node Quick Reference, Error Messages, Makefile Conventions, Top +@appendix Quick Reference + +This appendix summarizes the directives, text manipulation functions, +and special variables which GNU @code{make} understands. +@xref{Special Targets}, @ref{Catalogue of Rules, ,Catalogue of Built-In Rules}, +and @ref{Options Summary, ,Summary of Options}, +for other summaries. + +Here is a summary of the directives GNU @code{make} recognizes: + +@table @code +@item define @var{variable} +@itemx define @var{variable} = +@itemx define @var{variable} := +@itemx define @var{variable} ::= +@itemx define @var{variable} :::= +@itemx define @var{variable} += +@itemx define @var{variable} ?= +@itemx endef +Define multi-line variables.@* +@xref{Multi-Line}. + +@item undefine @var{variable} +Undefining variables.@* +@xref{Undefine Directive}. + +@item ifdef @var{variable} +@itemx ifndef @var{variable} +@itemx ifeq (@var{a},@var{b}) +@itemx ifeq "@var{a}" "@var{b}" +@itemx ifeq '@var{a}' '@var{b}' +@itemx ifneq (@var{a},@var{b}) +@itemx ifneq "@var{a}" "@var{b}" +@itemx ifneq '@var{a}' '@var{b}' +@itemx else +@itemx endif +Conditionally evaluate part of the makefile.@* +@xref{Conditionals}. + +@item include @var{file} +@itemx -include @var{file} +@itemx sinclude @var{file} +Include another makefile.@* +@xref{Include, ,Including Other Makefiles}. + +@item override @var{variable-assignment} +Define a variable, overriding any previous definition, even one from +the command line.@* +@xref{Override Directive, ,The @code{override} Directive}. + +@item export +Tell @code{make} to export all variables to child processes by default.@* +@xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}. + +@item export @var{variable} +@itemx export @var{variable-assignment} +@itemx unexport @var{variable} +Tell @code{make} whether or not to export a particular variable to child +processes.@* +@xref{Variables/Recursion, , Communicating Variables to a Sub-@code{make}}. + +@item private @var{variable-assignment} +Do not allow this variable assignment to be inherited by prerequisites.@* +@xref{Suppressing Inheritance}. + +@item vpath @var{pattern} @var{path} +Specify a search path for files matching a @samp{%} pattern.@* +@xref{Selective Search, , The @code{vpath} Directive}. + +@item vpath @var{pattern} +Remove all search paths previously specified for @var{pattern}. + +@item vpath +Remove all search paths previously specified in any @code{vpath} +directive. +@end table + +Here is a summary of the built-in functions (@pxref{Functions}): + +@table @code +@item $(subst @var{from},@var{to},@var{text}) +Replace @var{from} with @var{to} in @var{text}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(patsubst @var{pattern},@var{replacement},@var{text}) +Replace words matching @var{pattern} with @var{replacement} in @var{text}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(strip @var{string}) +Remove excess whitespace characters from @var{string}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(findstring @var{find},@var{text}) +Locate @var{find} in @var{text}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(filter @var{pattern}@dots{},@var{text}) +Select words in @var{text} that match one of the @var{pattern} words.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(filter-out @var{pattern}@dots{},@var{text}) +Select words in @var{text} that @emph{do not} match any of the @var{pattern} words.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(sort @var{list}) +Sort the words in @var{list} lexicographically, removing duplicates.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(word @var{n},@var{text}) +Extract the @var{n}th word (one-origin) of @var{text}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(words @var{text}) +Count the number of words in @var{text}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(wordlist @var{s},@var{e},@var{text}) +Returns the list of words in @var{text} from @var{s} to @var{e}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(firstword @var{names}@dots{}) +Extract the first word of @var{names}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(lastword @var{names}@dots{}) +Extract the last word of @var{names}.@* +@xref{Text Functions, , Functions for String Substitution and Analysis}. + +@item $(dir @var{names}@dots{}) +Extract the directory part of each file name.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(notdir @var{names}@dots{}) +Extract the non-directory part of each file name.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(suffix @var{names}@dots{}) +Extract the suffix (the last @samp{.} and following characters) of each file name.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(basename @var{names}@dots{}) +Extract the base name (name without suffix) of each file name.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(addsuffix @var{suffix},@var{names}@dots{}) +Append @var{suffix} to each word in @var{names}.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(addprefix @var{prefix},@var{names}@dots{}) +Prepend @var{prefix} to each word in @var{names}.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(join @var{list1},@var{list2}) +Join two parallel lists of words.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(wildcard @var{pattern}@dots{}) +Find file names matching a shell file name pattern (@emph{not} a +@samp{%} pattern).@* +@xref{Wildcard Function, ,The Function @code{wildcard}}. + +@item $(realpath @var{names}@dots{}) +For each file name in @var{names}, expand to an absolute name that +does not contain any @code{.}, @code{..}, nor symlinks.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(abspath @var{names}@dots{}) +For each file name in @var{names}, expand to an absolute name that +does not contain any @code{.} or @code{..} components, but preserves +symlinks.@* +@xref{File Name Functions, ,Functions for File Names}. + +@item $(error @var{text}@dots{}) +When this function is evaluated, @code{make} generates a fatal error +with the message @var{text}.@* +@xref{Make Control Functions, ,Functions That Control Make}. + +@item $(warning @var{text}@dots{}) +When this function is evaluated, @code{make} generates a warning with +the message @var{text}.@* +@xref{Make Control Functions, ,Functions That Control Make}. + +@item $(shell @var{command}) +Execute a shell command and return its output.@* +@xref{Shell Function, , The @code{shell} Function}. + +@item $(origin @var{variable}) +Return a string describing how the @code{make} variable @var{variable} was +defined.@* +@xref{Origin Function, , The @code{origin} Function}. + +@item $(flavor @var{variable}) +Return a string describing the flavor of the @code{make} variable +@var{variable}.@* +@xref{Flavor Function, , The @code{flavor} Function}. + +@item $(let @var{var} [@var{var} ...],@var{words},@var{text}) +Evaluate @var{text} with the @var{var}s bound to the words in +@var{words}.@* +@xref{Let Function, ,The @code{let} Function}. + +@item $(foreach @var{var},@var{words},@var{text}) +Evaluate @var{text} with @var{var} bound to each word in @var{words}, +and concatenate the results.@* +@xref{Foreach Function, ,The @code{foreach} Function}. + +@item $(if @var{condition},@var{then-part}[,@var{else-part}]) +Evaluate the condition @var{condition}; if it's non-empty substitute +the expansion of the @var{then-part} otherwise substitute the +expansion of the @var{else-part}.@* +@xref{Conditional Functions, ,Functions for Conditionals}. + +@item $(or @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]]) +Evaluate each condition @var{conditionN} one at a time; substitute the +first non-empty expansion. If all expansions are empty, substitute +the empty string.@* +@xref{Conditional Functions, ,Functions for Conditionals}. + +@item $(and @var{condition1}[,@var{condition2}[,@var{condition3}@dots{}]]) +Evaluate each condition @var{conditionN} one at a time; if any +expansion results in the empty string substitute the empty string. If +all expansions result in a non-empty string, substitute the expansion +of the last @var{condition}.@* +@xref{Conditional Functions, ,Functions for Conditionals}. + +@item $(intcmp @var{lhs},@var{rhs}[,@var{lt-part}[,@var{eq-part}[,@var{gt-part}]]]) +Compare @var{lhs} and @var{rhs} numerically; substitute the expansion of +@var{lt-part}, @var{eq-part}, or @var{gt-part} depending on whether the +left-hand side is less-than, equal-to, or greater-than the right-hand +side, respectively.@* +@xref{Conditional Functions, ,Functions for Conditionals}. + +@item $(call @var{var},@var{param},@dots{}) +Evaluate the variable @var{var} replacing any references to @code{$(1)}, +@code{$(2)} with the first, second, etc.@: @var{param} values.@* +@xref{Call Function, ,The @code{call} Function}. + +@item $(eval @var{text}) +Evaluate @var{text} then read the results as makefile commands. +Expands to the empty string.@* +@xref{Eval Function, ,The @code{eval} Function}. + +@item $(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.@* +@xref{Value Function, ,The @code{value} Function}. +@end table + +Here is a summary of the automatic variables. +@xref{Automatic Variables}, +for full information. + +@table @code +@item $@@ +The file name of the target. + +@item $% +The target member name, when the target is an archive member. + +@item $< +The name of the first prerequisite. + +@item $? +The names of all the prerequisites that are +newer than the target, with spaces between them. +For prerequisites which are archive members, only +the named member is used (@pxref{Archives}). + +@item $^ +@itemx $+ +The names of all the prerequisites, with spaces between them. For +prerequisites which are archive members, only the named member is used +(@pxref{Archives}). The value of @code{$^} omits duplicate +prerequisites, while @code{$+} retains them and preserves their order. + +@item $* +The stem with which an implicit rule matches +(@pxref{Pattern Match, ,How Patterns Match}). + +@item $(@@D) +@itemx $(@@F) +The directory part and the file-within-directory part of @code{$@@}. + +@item $(*D) +@itemx $(*F) +The directory part and the file-within-directory part of @code{$*}. + +@item $(%D) +@itemx $(%F) +The directory part and the file-within-directory part of @code{$%}. + +@item $( tar-`sed -e '/version_string/!d' \ + -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \ + -e q + version.c`.shar.Z +@end group + +@group +.PHONY: dist +dist: $(SRCS) $(AUX) + echo tar-`sed \ + -e '/version_string/!d' \ + -e 's/[^0-9.]*\([0-9.]*\).*/\1/' \ + -e q + version.c` > .fname + -rm -rf `cat .fname` + mkdir `cat .fname` + ln $(SRCS) $(AUX) `cat .fname` + tar chZf `cat .fname`.tar.Z `cat .fname` + -rm -rf `cat .fname` .fname +@end group + +@group +tar.zoo: $(SRCS) $(AUX) + -rm -rf tmp.dir + -mkdir tmp.dir + -rm tar.zoo + for X in $(SRCS) $(AUX) ; do \ + echo $$X ; \ + sed 's/$$/^M/' $$X \ + > tmp.dir/$$X ; done + cd tmp.dir ; zoo aM ../tar.zoo * + -rm -rf tmp.dir +@end group +@end example + +@node GNU Free Documentation License, Concept Index, Complex Makefile, Top +@appendix GNU Free Documentation License +@cindex FDL, GNU Free Documentation License +@include fdl.texi + +@node Concept Index, Name Index, GNU Free Documentation License, Top +@unnumbered Index of Concepts + +@printindex cp + +@node Name Index, , Concept Index, Top +@unnumbered Index of Functions, Variables, & Directives + +@printindex fn + +@bye + +@c Local Variables: +@c eval: (setq fill-column 78) +@c End: diff --git a/local/recipes/dev/gnu-make/source/doc/stamp-vti b/local/recipes/dev/gnu-make/source/doc/stamp-vti new file mode 100644 index 0000000000..c1ea3bef16 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/stamp-vti @@ -0,0 +1,4 @@ +@set UPDATED 31 October 2022 +@set UPDATED-MONTH October 2022 +@set EDITION 4.4 +@set VERSION 4.4 diff --git a/local/recipes/dev/gnu-make/source/doc/version.texi b/local/recipes/dev/gnu-make/source/doc/version.texi new file mode 100644 index 0000000000..c1ea3bef16 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/doc/version.texi @@ -0,0 +1,4 @@ +@set UPDATED 31 October 2022 +@set UPDATED-MONTH October 2022 +@set EDITION 4.4 +@set VERSION 4.4 diff --git a/local/recipes/dev/gnu-make/source/lib/Makefile.am b/local/recipes/dev/gnu-make/source/lib/Makefile.am new file mode 100644 index 0000000000..1301aa0d89 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/Makefile.am @@ -0,0 +1,242 @@ +## DO NOT EDIT! GENERATED AUTOMATICALLY! +## Process this file with automake to produce Makefile.in. +# Copyright (C) 2002-2022 Free Software Foundation, Inc. +# +# 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 file is distributed in the hope that it will be useful, +# but WITHOUT 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 file. If not, see . +# +# As a special exception to the GNU General Public License, +# this file may be distributed as part of a program that +# contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# Reproduce by: +# gnulib-tool --import --local-dir=gl \ +# --lib=libgnu \ +# --source-base=lib \ +# --m4-base=m4 \ +# --doc-base=doc \ +# --tests-base=tests \ +# --aux-dir=build-aux \ +# --no-conditional-dependencies \ +# --no-libtool \ +# --macro-prefix=gl \ +# alloca \ +# fdl \ +# findprog-in \ +# getloadavg \ +# host-cpu-c-abi \ +# largefile \ +# make-glob \ +# make-macros + +AUTOMAKE_OPTIONS = 1.14 gnits + +SUBDIRS = +noinst_HEADERS = +noinst_LIBRARIES = +noinst_LTLIBRARIES = +EXTRA_DIST = +BUILT_SOURCES = +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = +# No GNU Make output. + +AM_CPPFLAGS = +AM_CFLAGS = + +noinst_LIBRARIES += libgnu.a + +libgnu_a_SOURCES = +libgnu_a_CFLAGS = $(AM_CFLAGS) $(GL_CFLAG_GNULIB_WARNINGS) +libgnu_a_LIBADD = $(gl_LIBOBJS) +libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) +EXTRA_libgnu_a_SOURCES = + +## begin gnulib module alloca + + +libgnu_a_LIBADD += @ALLOCA@ +libgnu_a_DEPENDENCIES += @ALLOCA@ +EXTRA_DIST += alloca.c + +EXTRA_libgnu_a_SOURCES += alloca.c + +## end gnulib module alloca + +## begin gnulib module alloca-opt + +BUILT_SOURCES += $(ALLOCA_H) + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +if GL_GENERATE_ALLOCA_H +alloca.h: alloca.in.h $(top_builddir)/config.status + $(gl_V_at)$(SED_HEADER_STDOUT) \ + -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' \ + $(srcdir)/alloca.in.h > $@-t + $(AM_V_at)mv $@-t $@ +else +alloca.h: $(top_builddir)/config.status + rm -f $@ +endif +MOSTLYCLEANFILES += alloca.h alloca.h-t + +EXTRA_DIST += alloca.in.h + +## end gnulib module alloca-opt + +## begin gnulib module concat-filename + +libgnu_a_SOURCES += concat-filename.c + +EXTRA_DIST += concat-filename.h + +## end gnulib module concat-filename + +## begin gnulib module filename + + +EXTRA_DIST += filename.h + +## end gnulib module filename + +## begin gnulib module findprog-in + +libgnu_a_SOURCES += findprog.h findprog-in.c + +## end gnulib module findprog-in + +## begin gnulib module gen-header + +# In 'sed', replace the pattern space with a "DO NOT EDIT" comment. +SED_HEADER_NOEDIT = s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */, + +# '$(SED_HEADER_STDOUT) -e "..."' runs 'sed' but first outputs "DO NOT EDIT". +SED_HEADER_STDOUT = sed -e 1h -e '1$(SED_HEADER_NOEDIT)' -e 1G + +# '$(SED_HEADER_TO_AT_t) FILE' copies FILE to $@-t, prepending a leading +# "DO_NOT_EDIT". Although this could be done more simply via: +# SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) > $@-t +# the -n and 'w' avoid a fork+exec, at least when GNU Make is used. +SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) -n -e 'w $@-t' + +# Use $(gl_V_at) instead of $(AM_V_GEN) or $(AM_V_at) on a line that +gl_V_at = $(AM_V_GEN) + +## end gnulib module gen-header + +## begin gnulib module getloadavg + +if GL_COND_OBJ_GETLOADAVG +libgnu_a_SOURCES += getloadavg.c +endif + +## end gnulib module getloadavg + +## begin gnulib module intprops + + +EXTRA_DIST += intprops.h + +## end gnulib module intprops + +## begin gnulib module make-glob + +if !USE_SYSTEM_GLOB +libgnu_a_SOURCES += fnmatch.c + +BUILT_SOURCES += fnmatch.h + +fnmatch.h: fnmatch.in.h $(top_builddir)/config.status + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + cat $(srcdir)/fnmatch.in.h; \ + } > $@-t && \ + mv -f $@-t $@ + +MOSTLYCLEANFILES += fnmatch.h fnmatch.h-t + +libgnu_a_SOURCES += glob.c + +BUILT_SOURCES += glob.h + +glob.h: glob.in.h $(top_builddir)/config.status + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + cat $(srcdir)/glob.in.h; \ + } > $@-t && \ + mv -f $@-t $@ + +MOSTLYCLEANFILES += glob.h glob.h-t +endif + +EXTRA_DIST += fnmatch.in.h glob.in.h + +EXTRA_DIST += fnmatch.c fnmatch.in.h glob.c glob.in.h + +EXTRA_libgnu_a_SOURCES += fnmatch.c glob.c + +## end gnulib module make-glob + +## begin gnulib module snippet/warn-on-use + +# Because this Makefile snippet defines a variable used by other +# gnulib Makefile snippets, it must be present in all makefiles that +# need it. This is ensured by the applicability 'all' defined above. + +WARN_ON_USE_H=$(srcdir)/warn-on-use.h + +EXTRA_DIST += warn-on-use.h + +## end gnulib module snippet/warn-on-use + +## begin gnulib module stdbool + +BUILT_SOURCES += $(STDBOOL_H) + +# We need the following in order to create when the system +# doesn't have one that works. +if GL_GENERATE_STDBOOL_H +stdbool.h: stdbool.in.h $(top_builddir)/config.status + $(gl_V_at)$(SED_HEADER_STDOUT) \ + -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' \ + $(srcdir)/stdbool.in.h > $@-t + $(AM_V_at)mv $@-t $@ +else +stdbool.h: $(top_builddir)/config.status + rm -f $@ +endif +MOSTLYCLEANFILES += stdbool.h stdbool.h-t + +EXTRA_DIST += stdbool.in.h + +## end gnulib module stdbool + + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + fi; \ + done; \ + : +distclean-local: distclean-gnulib-libobjs +distclean-gnulib-libobjs: + -rm -f @gl_LIBOBJDEPS@ +maintainer-clean-local: distclean-gnulib-libobjs diff --git a/local/recipes/dev/gnu-make/source/lib/Makefile.in b/local/recipes/dev/gnu-make/source/lib/Makefile.in new file mode 100644 index 0000000000..d095d78414 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/Makefile.in @@ -0,0 +1,1022 @@ +# Makefile.in generated by automake 1.18.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2025 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2002-2022 Free Software Foundation, Inc. +# +# 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 file is distributed in the hope that it will be useful, +# but WITHOUT 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 file. If not, see . +# +# As a special exception to the GNU General Public License, +# this file may be distributed as part of a program that +# contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# Reproduce by: +# gnulib-tool --import --local-dir=gl \ +# --lib=libgnu \ +# --source-base=lib \ +# --m4-base=m4 \ +# --doc-base=doc \ +# --tests-base=tests \ +# --aux-dir=build-aux \ +# --no-conditional-dependencies \ +# --no-libtool \ +# --macro-prefix=gl \ +# alloca \ +# fdl \ +# findprog-in \ +# getloadavg \ +# host-cpu-c-abi \ +# largefile \ +# make-glob \ +# make-macros + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +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 = @build@ +host_triplet = @host@ +@GL_COND_OBJ_GETLOADAVG_TRUE@am__append_1 = getloadavg.c +@USE_SYSTEM_GLOB_FALSE@am__append_2 = fnmatch.c glob.c +@USE_SYSTEM_GLOB_FALSE@am__append_3 = fnmatch.h glob.h +@USE_SYSTEM_GLOB_FALSE@am__append_4 = fnmatch.h fnmatch.h-t glob.h \ +@USE_SYSTEM_GLOB_FALSE@ glob.h-t +subdir = lib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ + $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \ + $(top_srcdir)/m4/asm-underscore.m4 \ + $(top_srcdir)/m4/dospaths.m4 $(top_srcdir)/m4/eaccess.m4 \ + $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/findprog-in.m4 \ + $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/gnulib-common.m4 \ + $(top_srcdir)/m4/gnulib-comp.m4 \ + $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/largefile.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ + $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/warn-on-use.m4 \ + $(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +LTLIBRARIES = $(noinst_LTLIBRARIES) +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_AR_1 = +libgnu_a_AR = $(AR) $(ARFLAGS) +libgnu_a_RANLIB = $(RANLIB) +am__DEPENDENCIES_1 = +am__libgnu_a_SOURCES_DIST = concat-filename.c findprog.h findprog-in.c \ + getloadavg.c fnmatch.c glob.c +@GL_COND_OBJ_GETLOADAVG_TRUE@am__objects_1 = \ +@GL_COND_OBJ_GETLOADAVG_TRUE@ libgnu_a-getloadavg.$(OBJEXT) +@USE_SYSTEM_GLOB_FALSE@am__objects_2 = libgnu_a-fnmatch.$(OBJEXT) \ +@USE_SYSTEM_GLOB_FALSE@ libgnu_a-glob.$(OBJEXT) +am_libgnu_a_OBJECTS = libgnu_a-concat-filename.$(OBJEXT) \ + libgnu_a-findprog-in.$(OBJEXT) $(am__objects_1) \ + $(am__objects_2) +libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +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_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/alloca.Po \ + ./$(DEPDIR)/libgnu_a-alloca.Po \ + ./$(DEPDIR)/libgnu_a-concat-filename.Po \ + ./$(DEPDIR)/libgnu_a-findprog-in.Po \ + ./$(DEPDIR)/libgnu_a-fnmatch.Po \ + ./$(DEPDIR)/libgnu_a-getloadavg.Po \ + ./$(DEPDIR)/libgnu_a-glob.Po +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 +am__v_lt_1 = +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_CC_1 = +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_CCLD_1 = +SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES) +DIST_SOURCES = $(am__libgnu_a_SOURCES_DIST) $(EXTRA_libgnu_a_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-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 +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir distdir-am +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/depcomp alloca.c +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_LDFLAGS = @AM_LDFLAGS@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +GETLOADAVG_LIBS = @GETLOADAVG_LIBS@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@ +GL_CFLAG_GNULIB_WARNINGS = @GL_CFLAG_GNULIB_WARNINGS@ +GL_GNULIB_GETLOADAVG = @GL_GNULIB_GETLOADAVG@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GUILE_CFLAGS = @GUILE_CFLAGS@ +GUILE_LIBS = @GUILE_LIBS@ +HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE__BOOL = @HAVE__BOOL@ +HOST_CPU = @HOST_CPU@ +HOST_CPU_C_ABI = @HOST_CPU_C_ABI@ +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@ +LDFLAGS = @LDFLAGS@ +LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ +LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MAKE_HOST = @MAKE_HOST@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +REMOTE = @REMOTE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STDBOOL_H = @STDBOOL_H@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@ +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@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__rm_f_notfound = @am__rm_f_notfound@ +am__tar = @am__tar@ +am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJDEPS = @gl_LIBOBJDEPS@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJDEPS = @gltests_LIBOBJDEPS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = 1.14 gnits +SUBDIRS = +noinst_HEADERS = +noinst_LIBRARIES = libgnu.a +noinst_LTLIBRARIES = +EXTRA_DIST = alloca.c alloca.in.h concat-filename.h filename.h \ + intprops.h fnmatch.in.h glob.in.h fnmatch.c fnmatch.in.h \ + glob.c glob.in.h warn-on-use.h stdbool.in.h +BUILT_SOURCES = $(ALLOCA_H) $(am__append_3) $(STDBOOL_H) +SUFFIXES = +MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t \ + $(am__append_4) stdbool.h stdbool.h-t +MOSTLYCLEANDIRS = +CLEANFILES = +DISTCLEANFILES = +MAINTAINERCLEANFILES = +# No GNU Make output. +AM_CPPFLAGS = +AM_CFLAGS = +libgnu_a_SOURCES = concat-filename.c findprog.h findprog-in.c \ + $(am__append_1) $(am__append_2) +libgnu_a_CFLAGS = $(AM_CFLAGS) $(GL_CFLAG_GNULIB_WARNINGS) +libgnu_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@ +libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@ +EXTRA_libgnu_a_SOURCES = alloca.c fnmatch.c glob.c + +# In 'sed', replace the pattern space with a "DO NOT EDIT" comment. +SED_HEADER_NOEDIT = s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! */, + +# '$(SED_HEADER_STDOUT) -e "..."' runs 'sed' but first outputs "DO NOT EDIT". +SED_HEADER_STDOUT = sed -e 1h -e '1$(SED_HEADER_NOEDIT)' -e 1G + +# '$(SED_HEADER_TO_AT_t) FILE' copies FILE to $@-t, prepending a leading +# "DO_NOT_EDIT". Although this could be done more simply via: +# SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) > $@-t +# the -n and 'w' avoid a fork+exec, at least when GNU Make is used. +SED_HEADER_TO_AT_t = $(SED_HEADER_STDOUT) -n -e 'w $@-t' + +# Use $(gl_V_at) instead of $(AM_V_GEN) or $(AM_V_at) on a line that +gl_V_at = $(AM_V_GEN) + +# Because this Makefile snippet defines a variable used by other +# gnulib Makefile snippets, it must be present in all makefiles that +# need it. This is ensured by the applicability 'all' defined above. +WARN_ON_USE_H = $(srcdir)/warn-on-use.h +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.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) --gnits lib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnits lib/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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: + -$(am__rm_f) $(noinst_LIBRARIES) + +clean-noinstLTLIBRARIES: + -$(am__rm_f) $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + echo rm -f $${locs}; \ + $(am__rm_f) $${locs} + +libgnu.a: $(libgnu_a_OBJECTS) $(libgnu_a_DEPENDENCIES) $(EXTRA_libgnu_a_DEPENDENCIES) + $(AM_V_at)-rm -f libgnu.a + $(AM_V_AR)$(libgnu_a_AR) libgnu.a $(libgnu_a_OBJECTS) $(libgnu_a_LIBADD) + $(AM_V_at)$(libgnu_a_RANLIB) libgnu.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-alloca.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-concat-filename.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-findprog-in.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-fnmatch.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-getloadavg.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnu_a-glob.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @: >>$@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@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@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +libgnu_a-concat-filename.o: concat-filename.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-concat-filename.o -MD -MP -MF $(DEPDIR)/libgnu_a-concat-filename.Tpo -c -o libgnu_a-concat-filename.o `test -f 'concat-filename.c' || echo '$(srcdir)/'`concat-filename.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-concat-filename.Tpo $(DEPDIR)/libgnu_a-concat-filename.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concat-filename.c' object='libgnu_a-concat-filename.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-concat-filename.o `test -f 'concat-filename.c' || echo '$(srcdir)/'`concat-filename.c + +libgnu_a-concat-filename.obj: concat-filename.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-concat-filename.obj -MD -MP -MF $(DEPDIR)/libgnu_a-concat-filename.Tpo -c -o libgnu_a-concat-filename.obj `if test -f 'concat-filename.c'; then $(CYGPATH_W) 'concat-filename.c'; else $(CYGPATH_W) '$(srcdir)/concat-filename.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-concat-filename.Tpo $(DEPDIR)/libgnu_a-concat-filename.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concat-filename.c' object='libgnu_a-concat-filename.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-concat-filename.obj `if test -f 'concat-filename.c'; then $(CYGPATH_W) 'concat-filename.c'; else $(CYGPATH_W) '$(srcdir)/concat-filename.c'; fi` + +libgnu_a-findprog-in.o: findprog-in.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-findprog-in.o -MD -MP -MF $(DEPDIR)/libgnu_a-findprog-in.Tpo -c -o libgnu_a-findprog-in.o `test -f 'findprog-in.c' || echo '$(srcdir)/'`findprog-in.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-findprog-in.Tpo $(DEPDIR)/libgnu_a-findprog-in.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='findprog-in.c' object='libgnu_a-findprog-in.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-findprog-in.o `test -f 'findprog-in.c' || echo '$(srcdir)/'`findprog-in.c + +libgnu_a-findprog-in.obj: findprog-in.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-findprog-in.obj -MD -MP -MF $(DEPDIR)/libgnu_a-findprog-in.Tpo -c -o libgnu_a-findprog-in.obj `if test -f 'findprog-in.c'; then $(CYGPATH_W) 'findprog-in.c'; else $(CYGPATH_W) '$(srcdir)/findprog-in.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-findprog-in.Tpo $(DEPDIR)/libgnu_a-findprog-in.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='findprog-in.c' object='libgnu_a-findprog-in.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-findprog-in.obj `if test -f 'findprog-in.c'; then $(CYGPATH_W) 'findprog-in.c'; else $(CYGPATH_W) '$(srcdir)/findprog-in.c'; fi` + +libgnu_a-getloadavg.o: getloadavg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-getloadavg.o -MD -MP -MF $(DEPDIR)/libgnu_a-getloadavg.Tpo -c -o libgnu_a-getloadavg.o `test -f 'getloadavg.c' || echo '$(srcdir)/'`getloadavg.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-getloadavg.Tpo $(DEPDIR)/libgnu_a-getloadavg.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getloadavg.c' object='libgnu_a-getloadavg.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-getloadavg.o `test -f 'getloadavg.c' || echo '$(srcdir)/'`getloadavg.c + +libgnu_a-getloadavg.obj: getloadavg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-getloadavg.obj -MD -MP -MF $(DEPDIR)/libgnu_a-getloadavg.Tpo -c -o libgnu_a-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)/libgnu_a-getloadavg.Tpo $(DEPDIR)/libgnu_a-getloadavg.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getloadavg.c' object='libgnu_a-getloadavg.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-getloadavg.obj `if test -f 'getloadavg.c'; then $(CYGPATH_W) 'getloadavg.c'; else $(CYGPATH_W) '$(srcdir)/getloadavg.c'; fi` + +libgnu_a-fnmatch.o: fnmatch.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-fnmatch.o -MD -MP -MF $(DEPDIR)/libgnu_a-fnmatch.Tpo -c -o libgnu_a-fnmatch.o `test -f 'fnmatch.c' || echo '$(srcdir)/'`fnmatch.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-fnmatch.Tpo $(DEPDIR)/libgnu_a-fnmatch.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fnmatch.c' object='libgnu_a-fnmatch.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-fnmatch.o `test -f 'fnmatch.c' || echo '$(srcdir)/'`fnmatch.c + +libgnu_a-fnmatch.obj: fnmatch.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-fnmatch.obj -MD -MP -MF $(DEPDIR)/libgnu_a-fnmatch.Tpo -c -o libgnu_a-fnmatch.obj `if test -f 'fnmatch.c'; then $(CYGPATH_W) 'fnmatch.c'; else $(CYGPATH_W) '$(srcdir)/fnmatch.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-fnmatch.Tpo $(DEPDIR)/libgnu_a-fnmatch.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fnmatch.c' object='libgnu_a-fnmatch.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-fnmatch.obj `if test -f 'fnmatch.c'; then $(CYGPATH_W) 'fnmatch.c'; else $(CYGPATH_W) '$(srcdir)/fnmatch.c'; fi` + +libgnu_a-glob.o: glob.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-glob.o -MD -MP -MF $(DEPDIR)/libgnu_a-glob.Tpo -c -o libgnu_a-glob.o `test -f 'glob.c' || echo '$(srcdir)/'`glob.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-glob.Tpo $(DEPDIR)/libgnu_a-glob.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glob.c' object='libgnu_a-glob.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-glob.o `test -f 'glob.c' || echo '$(srcdir)/'`glob.c + +libgnu_a-glob.obj: glob.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-glob.obj -MD -MP -MF $(DEPDIR)/libgnu_a-glob.Tpo -c -o libgnu_a-glob.obj `if test -f 'glob.c'; then $(CYGPATH_W) 'glob.c'; else $(CYGPATH_W) '$(srcdir)/glob.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-glob.Tpo $(DEPDIR)/libgnu_a-glob.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glob.c' object='libgnu_a-glob.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-glob.obj `if test -f 'glob.c'; then $(CYGPATH_W) 'glob.c'; else $(CYGPATH_W) '$(srcdir)/glob.c'; fi` + +libgnu_a-alloca.o: alloca.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-alloca.o -MD -MP -MF $(DEPDIR)/libgnu_a-alloca.Tpo -c -o libgnu_a-alloca.o `test -f 'alloca.c' || echo '$(srcdir)/'`alloca.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-alloca.Tpo $(DEPDIR)/libgnu_a-alloca.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alloca.c' object='libgnu_a-alloca.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-alloca.o `test -f 'alloca.c' || echo '$(srcdir)/'`alloca.c + +libgnu_a-alloca.obj: alloca.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -MT libgnu_a-alloca.obj -MD -MP -MF $(DEPDIR)/libgnu_a-alloca.Tpo -c -o libgnu_a-alloca.obj `if test -f 'alloca.c'; then $(CYGPATH_W) 'alloca.c'; else $(CYGPATH_W) '$(srcdir)/alloca.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnu_a-alloca.Tpo $(DEPDIR)/libgnu_a-alloca.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alloca.c' object='libgnu_a-alloca.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) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnu_a_CFLAGS) $(CFLAGS) -c -o libgnu_a-alloca.obj `if test -f 'alloca.c'; then $(CYGPATH_W) 'alloca.c'; else $(CYGPATH_W) '$(srcdir)/alloca.c'; fi` + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + 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-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + 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" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(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 + @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; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + 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: + -$(am__rm_f) $(MOSTLYCLEANFILES) + +clean-generic: + -$(am__rm_f) $(CLEANFILES) + +distclean-generic: + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + -$(am__rm_f) $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -$(am__rm_f) $(BUILT_SOURCES) + -$(am__rm_f) $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-recursive + -rm -f ./$(DEPDIR)/alloca.Po + -rm -f ./$(DEPDIR)/libgnu_a-alloca.Po + -rm -f ./$(DEPDIR)/libgnu_a-concat-filename.Po + -rm -f ./$(DEPDIR)/libgnu_a-findprog-in.Po + -rm -f ./$(DEPDIR)/libgnu_a-fnmatch.Po + -rm -f ./$(DEPDIR)/libgnu_a-getloadavg.Po + -rm -f ./$(DEPDIR)/libgnu_a-glob.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-local distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f ./$(DEPDIR)/alloca.Po + -rm -f ./$(DEPDIR)/libgnu_a-alloca.Po + -rm -f ./$(DEPDIR)/libgnu_a-concat-filename.Po + -rm -f ./$(DEPDIR)/libgnu_a-findprog-in.Po + -rm -f ./$(DEPDIR)/libgnu_a-fnmatch.Po + -rm -f ./$(DEPDIR)/libgnu_a-getloadavg.Po + -rm -f ./$(DEPDIR)/libgnu_a-glob.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic \ + maintainer-clean-local + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-local + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) all check install install-am \ + install-exec install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--depfiles check check-am clean clean-generic \ + clean-noinstLIBRARIES clean-noinstLTLIBRARIES cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-local 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 installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-local mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-local pdf \ + pdf-am ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +@GL_GENERATE_ALLOCA_H_TRUE@alloca.h: alloca.in.h $(top_builddir)/config.status +@GL_GENERATE_ALLOCA_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ +@GL_GENERATE_ALLOCA_H_TRUE@ -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' \ +@GL_GENERATE_ALLOCA_H_TRUE@ $(srcdir)/alloca.in.h > $@-t +@GL_GENERATE_ALLOCA_H_TRUE@ $(AM_V_at)mv $@-t $@ +@GL_GENERATE_ALLOCA_H_FALSE@alloca.h: $(top_builddir)/config.status +@GL_GENERATE_ALLOCA_H_FALSE@ rm -f $@ + +@USE_SYSTEM_GLOB_FALSE@fnmatch.h: fnmatch.in.h $(top_builddir)/config.status +@USE_SYSTEM_GLOB_FALSE@ $(AM_V_GEN)rm -f $@-t $@ && \ +@USE_SYSTEM_GLOB_FALSE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ +@USE_SYSTEM_GLOB_FALSE@ cat $(srcdir)/fnmatch.in.h; \ +@USE_SYSTEM_GLOB_FALSE@ } > $@-t && \ +@USE_SYSTEM_GLOB_FALSE@ mv -f $@-t $@ + +@USE_SYSTEM_GLOB_FALSE@glob.h: glob.in.h $(top_builddir)/config.status +@USE_SYSTEM_GLOB_FALSE@ $(AM_V_GEN)rm -f $@-t $@ && \ +@USE_SYSTEM_GLOB_FALSE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ +@USE_SYSTEM_GLOB_FALSE@ cat $(srcdir)/glob.in.h; \ +@USE_SYSTEM_GLOB_FALSE@ } > $@-t && \ +@USE_SYSTEM_GLOB_FALSE@ mv -f $@-t $@ + +# We need the following in order to create when the system +# doesn't have one that works. +@GL_GENERATE_STDBOOL_H_TRUE@stdbool.h: stdbool.in.h $(top_builddir)/config.status +@GL_GENERATE_STDBOOL_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ +@GL_GENERATE_STDBOOL_H_TRUE@ -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' \ +@GL_GENERATE_STDBOOL_H_TRUE@ $(srcdir)/stdbool.in.h > $@-t +@GL_GENERATE_STDBOOL_H_TRUE@ $(AM_V_at)mv $@-t $@ +@GL_GENERATE_STDBOOL_H_FALSE@stdbool.h: $(top_builddir)/config.status +@GL_GENERATE_STDBOOL_H_FALSE@ rm -f $@ + +mostlyclean-local: mostlyclean-generic + @for dir in '' $(MOSTLYCLEANDIRS); do \ + if test -n "$$dir" && test -d $$dir; then \ + echo "rmdir $$dir"; rmdir $$dir; \ + fi; \ + done; \ + : +distclean-local: distclean-gnulib-libobjs +distclean-gnulib-libobjs: + -rm -f @gl_LIBOBJDEPS@ +maintainer-clean-local: distclean-gnulib-libobjs + +# 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: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/local/recipes/dev/gnu-make/source/lib/alloca.c b/local/recipes/dev/gnu-make/source/lib/alloca.c new file mode 100644 index 0000000000..5eb16a9ff5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/alloca.c @@ -0,0 +1,167 @@ +/* alloca.c -- allocate automatically reclaimed memory + This file is in the public domain. */ + +/* (Mostly) portable implementation -- D A Gwyn + + This implementation of the PWB library alloca function, + which is used to allocate space off the run-time stack so + that it is automatically reclaimed upon procedure exit, + was inspired by discussions with J. Q. Johnson of Cornell. + J.Otto Tennant contributed the Cray support. + + There are some preprocessor constants that can + be defined when compiling for your specific system, for + improved efficiency; however, the defaults should be okay. + + The general concept of this implementation is to keep + track of all alloca-allocated blocks, and reclaim any + that are found to be deeper in the stack than the current + invocation. This heuristic does not reclaim storage as + soon as it becomes invalid, but it will do so eventually. + + As a special case, alloca(0) reclaims storage without + allocating any. It is a good idea to use alloca(0) in + your main control loop, etc. to force garbage collection. */ + +#include + +#include + +#include +#include + +/* If compiling with GCC or clang, this file is not needed. */ +#if !(defined __GNUC__ || defined __clang__) + +/* If someone has defined alloca as a macro, + there must be some other way alloca is supposed to work. */ +# ifndef alloca + +/* Define STACK_DIRECTION 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 */ + +# ifndef STACK_DIRECTION +# define STACK_DIRECTION 0 /* Direction unknown. */ +# endif + +# if STACK_DIRECTION != 0 + +# define STACK_DIR STACK_DIRECTION /* Known at compile-time. */ + +# else /* STACK_DIRECTION == 0; need run-time code. */ + +static int stack_dir; /* 1 or -1 once known. */ +# define STACK_DIR stack_dir + +static int +find_stack_direction (int *addr, int depth) +{ + 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; +} + +# endif /* STACK_DIRECTION == 0 */ + +/* An "alloca header" is used to: + (a) chain together all alloca'ed blocks; + (b) keep track of stack depth. + + It is very important that sizeof(header) agree with malloc + alignment chunk size. The following default should work okay. */ + +# ifndef ALIGN_SIZE +# define ALIGN_SIZE sizeof(double) +# endif + +typedef union hdr +{ + char align[ALIGN_SIZE]; /* To force sizeof(header). */ + struct + { + union hdr *next; /* For chaining headers. */ + char *deep; /* For stack depth measure. */ + } h; +} header; + +static header *last_alloca_header = NULL; /* -> last alloca header. */ + +/* Return a pointer to at least SIZE bytes of storage, + which will be automatically reclaimed upon exit from + the procedure that called alloca. Originally, this space + was supposed to be taken from the current stack frame of the + caller, but that method cannot be made to work for some + implementations of C, for example under Gould's UTX/32. */ + +void * +alloca (size_t size) +{ + auto char probe; /* Probes stack depth: */ + register char *depth = &probe; + +# if STACK_DIRECTION == 0 + if (STACK_DIR == 0) /* Unknown growth direction. */ + STACK_DIR = find_stack_direction (NULL, (size & 1) + 20); +# endif + + /* Reclaim garbage, defined as all alloca'd storage that + was allocated from deeper in the stack than currently. */ + + { + register header *hp; /* Traverses linked list. */ + + for (hp = last_alloca_header; hp != NULL;) + if ((STACK_DIR > 0 && hp->h.deep > depth) + || (STACK_DIR < 0 && hp->h.deep < depth)) + { + register header *np = hp->h.next; + + free (hp); /* Collect garbage. */ + + hp = np; /* -> next header. */ + } + else + break; /* Rest are not deeper. */ + + last_alloca_header = hp; /* -> last valid storage. */ + } + + if (size == 0) + return NULL; /* No allocation required. */ + + /* Allocate combined header + user data storage. */ + + { + /* Address of header. */ + register header *new; + + size_t combined_size = sizeof (header) + size; + if (combined_size < sizeof (header)) + memory_full (); + + new = malloc (combined_size); + + if (! new) + memory_full (); + + new->h.next = last_alloca_header; + new->h.deep = depth; + + last_alloca_header = new; + + /* User storage begins just after header. */ + + return (void *) (new + 1); + } +} + +# endif /* no alloca */ +#endif /* not GCC || clang */ diff --git a/local/recipes/dev/gnu-make/source/lib/alloca.in.h b/local/recipes/dev/gnu-make/source/lib/alloca.in.h new file mode 100644 index 0000000000..e2b146138d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/alloca.in.h @@ -0,0 +1,72 @@ +/* Memory allocation on the stack. + + Copyright (C) 1995, 1999, 2001-2004, 2006-2022 Free Software Foundation, + Inc. + + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This file is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H + means there is a real alloca function. */ +#ifndef _GL_ALLOCA_H +#define _GL_ALLOCA_H + +/* alloca (N) returns a pointer to N bytes of memory + allocated on the stack, which will last until the function returns. + Use of alloca should be avoided: + - inside arguments of function calls - undefined behaviour, + - in inline functions - the allocation may actually last until the + calling function returns, + - for huge N (say, N >= 65536) - you never know how large (or small) + the stack is, and when the stack cannot fulfill the memory allocation + request, the program just crashes. + */ + +#ifndef alloca + /* Some version of mingw have an that causes trouble when + included after 'alloca' gets defined as a macro. As a workaround, + include this first and define 'alloca' as a macro afterwards + if needed. */ +# if defined __GNUC__ && (defined _WIN32 && ! defined __CYGWIN__) && @HAVE_ALLOCA_H@ +# include_next +# endif +#endif +#ifndef alloca +# if defined __GNUC__ || (__clang_major__ >= 4) +# define alloca __builtin_alloca +# elif defined _AIX +# define alloca __alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# elif defined __DECC && defined __VMS +# define alloca __ALLOCA +# elif defined __TANDEM && defined _TNS_E_TARGET +# ifdef __cplusplus +extern "C" +# endif +void *_alloca (unsigned short); +# pragma intrinsic (_alloca) +# define alloca _alloca +# elif defined __MVS__ +# include +# else +# include +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +#endif /* _GL_ALLOCA_H */ diff --git a/local/recipes/dev/gnu-make/source/lib/concat-filename.c b/local/recipes/dev/gnu-make/source/lib/concat-filename.c new file mode 100644 index 0000000000..f05484904e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/concat-filename.c @@ -0,0 +1,73 @@ +/* Construct a full filename from a directory and a relative filename. + Copyright (C) 2001-2004, 2006-2022 Free Software Foundation, Inc. + + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This file is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible . */ + +#include + +/* Specification. */ +#include "concat-filename.h" + +#include +#include +#include + +#include "filename.h" + +/* Concatenate a directory filename, a relative filename and an optional + suffix. The directory may end with the directory separator. The second + argument may not start with the directory separator (it is relative). + Return a freshly allocated filename. Return NULL and set errno + upon memory allocation failure. */ +char * +concatenated_filename (const char *directory, const char *filename, + const char *suffix) +{ + char *result; + char *p; + + if (strcmp (directory, ".") == 0) + { + /* No need to prepend the directory. */ + result = (char *) malloc (strlen (filename) + + (suffix != NULL ? strlen (suffix) : 0) + + 1); + if (result == NULL) + return NULL; /* errno is set here */ + p = result; + } + else + { + size_t directory_len = strlen (directory); + int need_slash = + (directory_len > FILE_SYSTEM_PREFIX_LEN (directory) + && !ISSLASH (directory[directory_len - 1])); + result = (char *) malloc (directory_len + need_slash + + strlen (filename) + + (suffix != NULL ? strlen (suffix) : 0) + + 1); + if (result == NULL) + return NULL; /* errno is set here */ + memcpy (result, directory, directory_len); + p = result + directory_len; + if (need_slash) + *p++ = '/'; + } + p = stpcpy (p, filename); + if (suffix != NULL) + stpcpy (p, suffix); + return result; +} diff --git a/local/recipes/dev/gnu-make/source/lib/concat-filename.h b/local/recipes/dev/gnu-make/source/lib/concat-filename.h new file mode 100644 index 0000000000..0348b0d93a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/concat-filename.h @@ -0,0 +1,46 @@ +/* Construct a full filename from a directory and a relative filename. + Copyright (C) 2001-2004, 2007-2022 Free Software Foundation, Inc. + + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This file is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#ifndef _CONCAT_FILENAME_H +#define _CONCAT_FILENAME_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Concatenate a directory filename, a relative filename and an optional + suffix. Return a freshly allocated filename. Return NULL and set errno + upon memory allocation failure. */ +extern char *concatenated_filename (const char *directory, + const char *filename, const char *suffix) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE; + +/* Concatenate a directory filename, a relative filename and an optional + suffix. Return a freshly allocated filename. */ +extern char *xconcatenated_filename (const char *directory, + const char *filename, const char *suffix) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE + _GL_ATTRIBUTE_RETURNS_NONNULL; + + +#ifdef __cplusplus +} +#endif + +#endif /* _CONCAT_FILENAME_H */ diff --git a/local/recipes/dev/gnu-make/source/lib/filename.h b/local/recipes/dev/gnu-make/source/lib/filename.h new file mode 100644 index 0000000000..ab77ca2df9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/filename.h @@ -0,0 +1,112 @@ +/* Basic filename support macros. + Copyright (C) 2001-2022 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* From Paul Eggert and Jim Meyering. */ + +#ifndef _FILENAME_H +#define _FILENAME_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Filename support. + ISSLASH(C) tests whether C is a directory separator + character. + HAS_DEVICE(Filename) tests whether Filename contains a device + specification. + FILE_SYSTEM_PREFIX_LEN(Filename) length of the device specification + at the beginning of Filename, + index of the part consisting of + alternating components and slashes. + FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE + 1 when a non-empty device specification + can be followed by an empty or relative + part, + 0 when a non-empty device specification + must be followed by a slash, + 0 when device specification don't exist. + IS_ABSOLUTE_FILE_NAME(Filename) + tests whether Filename is independent of + any notion of "current directory". + IS_RELATIVE_FILE_NAME(Filename) + tests whether Filename may be concatenated + to a directory filename. + Note: On native Windows, OS/2, DOS, "c:" is neither an absolute nor a + relative file name! + IS_FILE_NAME_WITH_DIR(Filename) tests whether Filename contains a device + or directory specification. + */ +#if defined _WIN32 || defined __CYGWIN__ \ + || defined __EMX__ || defined __MSDOS__ || defined __DJGPP__ + /* Native Windows, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') + /* Internal macro: Tests whether a character is a drive letter. */ +# define _IS_DRIVE_LETTER(C) \ + (((C) >= 'A' && (C) <= 'Z') || ((C) >= 'a' && (C) <= 'z')) + /* Help the compiler optimizing it. This assumes ASCII. */ +# undef _IS_DRIVE_LETTER +# define _IS_DRIVE_LETTER(C) \ + (((unsigned int) (C) | ('a' - 'A')) - 'a' <= 'z' - 'a') +# define HAS_DEVICE(Filename) \ + (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':') +# define FILE_SYSTEM_PREFIX_LEN(Filename) (HAS_DEVICE (Filename) ? 2 : 0) +# ifdef __CYGWIN__ +# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0 +# else + /* On native Windows, OS/2, DOS, the system has the notion of a + "current directory" on each drive. */ +# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1 +# endif +# if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE +# define IS_ABSOLUTE_FILE_NAME(Filename) \ + ISSLASH ((Filename)[FILE_SYSTEM_PREFIX_LEN (Filename)]) +# else +# define IS_ABSOLUTE_FILE_NAME(Filename) \ + (ISSLASH ((Filename)[0]) || HAS_DEVICE (Filename)) +# endif +# define IS_RELATIVE_FILE_NAME(Filename) \ + (! (ISSLASH ((Filename)[0]) || HAS_DEVICE (Filename))) +# define IS_FILE_NAME_WITH_DIR(Filename) \ + (strchr ((Filename), '/') != NULL || strchr ((Filename), '\\') != NULL \ + || HAS_DEVICE (Filename)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define HAS_DEVICE(Filename) ((void) (Filename), 0) +# define FILE_SYSTEM_PREFIX_LEN(Filename) ((void) (Filename), 0) +# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0 +# define IS_ABSOLUTE_FILE_NAME(Filename) ISSLASH ((Filename)[0]) +# define IS_RELATIVE_FILE_NAME(Filename) (! ISSLASH ((Filename)[0])) +# define IS_FILE_NAME_WITH_DIR(Filename) (strchr ((Filename), '/') != NULL) +#endif + +/* Deprecated macros. For backward compatibility with old users of the + 'filename' module. */ +#define IS_ABSOLUTE_PATH IS_ABSOLUTE_FILE_NAME +#define IS_PATH_WITH_DIR IS_FILE_NAME_WITH_DIR + + +#ifdef __cplusplus +} +#endif + +#endif /* _FILENAME_H */ diff --git a/local/recipes/dev/gnu-make/source/lib/findprog-in.c b/local/recipes/dev/gnu-make/source/lib/findprog-in.c new file mode 100644 index 0000000000..72a05dbf50 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/findprog-in.c @@ -0,0 +1,399 @@ +/* Locating a program in a given path. + Copyright (C) 2001-2004, 2006-2022 Free Software Foundation, Inc. + Written by Bruno Haible , 2001, 2019. + + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This file is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + + +#include + +/* Specification. */ +#include "findprog.h" + +#include +#include +#include +#include +#include +#include + +#include "filename.h" +#include "concat-filename.h" + +#if (defined _WIN32 && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__ + /* Native Windows, OS/2, DOS */ +# define NATIVE_SLASH '\\' +#else + /* Unix */ +# define NATIVE_SLASH '/' +#endif + +/* Separator in PATH like lists of pathnames. */ +#if (defined _WIN32 && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__ + /* Native Windows, OS/2, DOS */ +# define PATH_SEPARATOR ';' +#else + /* Unix */ +# define PATH_SEPARATOR ':' +#endif + +/* The list of suffixes that the execlp/execvp function tries when searching + for the program. */ +static const char * const suffixes[] = + { + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ + "", ".com", ".exe", ".bat", ".cmd" + /* Note: Files without any suffix are not considered executable. */ + /* Note: The cmd.exe program does a different lookup: It searches according + to the PATHEXT environment variable. + See . + Also, it executes files ending in .bat and .cmd directly without letting + the kernel interpret the program file. */ + #elif defined __CYGWIN__ + "", ".exe", ".com" + #elif defined __EMX__ + "", ".exe" + #elif defined __DJGPP__ + "", ".com", ".exe", ".bat" + #else /* Unix */ + "" + #endif + }; + +const char * +find_in_given_path (const char *progname, const char *path, + const char *directory, bool optimize_for_exec) +{ + { + bool has_slash = false; + { + const char *p; + + for (p = progname; *p != '\0'; p++) + if (ISSLASH (*p)) + { + has_slash = true; + break; + } + } + if (has_slash) + { + /* If progname contains a slash, it is either absolute or relative to + the current directory. PATH is not used. */ + if (optimize_for_exec) + /* The execl/execv/execlp/execvp functions will try the various + suffixes anyway and fail if no executable is found. */ + return progname; + else + { + /* Try the various suffixes and see whether one of the files + with such a suffix is actually executable. */ + int failure_errno; + size_t i; + + const char *directory_as_prefix = + (directory != NULL && IS_RELATIVE_FILE_NAME (progname) + ? directory + : ""); + + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ + const char *progbasename; + + { + const char *p; + + progbasename = progname; + for (p = progname; *p != '\0'; p++) + if (ISSLASH (*p)) + progbasename = p + 1; + } + + bool progbasename_has_dot = (strchr (progbasename, '.') != NULL); + #endif + + /* Try all platform-dependent suffixes. */ + failure_errno = ENOENT; + for (i = 0; i < sizeof (suffixes) / sizeof (suffixes[0]); i++) + { + const char *suffix = suffixes[i]; + + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ + /* File names without a '.' are not considered executable, and + for file names with a '.' no additional suffix is tried. */ + if ((*suffix != '\0') != progbasename_has_dot) + #endif + { + /* Concatenate directory_as_prefix, progname, suffix. */ + char *progpathname = + concatenated_filename (directory_as_prefix, progname, + suffix); + + if (progpathname == NULL) + return NULL; /* errno is set here */ + + /* On systems which have the eaccess() system call, let's + use it. On other systems, let's hope that this program + is not installed setuid or setgid, so that it is ok to + call access() despite its design flaw. */ + if (eaccess (progpathname, X_OK) == 0) + { + /* Check that the progpathname does not point to a + directory. */ + struct stat statbuf; + + if (stat (progpathname, &statbuf) >= 0) + { + if (! S_ISDIR (statbuf.st_mode)) + { + /* Found! */ + if (strcmp (progpathname, progname) == 0) + { + free (progpathname); + return progname; + } + else + return progpathname; + } + + errno = EACCES; + } + } + + if (errno != ENOENT) + failure_errno = errno; + + free (progpathname); + } + } + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ + if (failure_errno == ENOENT && !progbasename_has_dot) + { + /* In the loop above, we skipped suffix = "". Do this loop + round now, merely to provide a better errno than ENOENT. */ + + char *progpathname = + concatenated_filename (directory_as_prefix, progname, ""); + + if (progpathname == NULL) + return NULL; /* errno is set here */ + + if (eaccess (progpathname, X_OK) == 0) + { + struct stat statbuf; + + if (stat (progpathname, &statbuf) >= 0) + { + if (! S_ISDIR (statbuf.st_mode)) + errno = ENOEXEC; + else + errno = EACCES; + } + } + + failure_errno = errno; + + free (progpathname); + } + #endif + + errno = failure_errno; + return NULL; + } + } + } + + if (path == NULL) + /* If PATH is not set, the default search path is implementation dependent. + In practice, it is treated like an empty PATH. */ + path = ""; + + { + /* Make a copy, to prepare for destructive modifications. */ + char *path_copy = strdup (path); + if (path_copy == NULL) + return NULL; /* errno is set here */ + + int failure_errno; + char *path_rest; + char *cp; + + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ + bool progname_has_dot = (strchr (progname, '.') != NULL); + #endif + + failure_errno = ENOENT; + for (path_rest = path_copy; ; path_rest = cp + 1) + { + const char *dir; + bool last; + char *dir_as_prefix_to_free; + const char *dir_as_prefix; + size_t i; + + /* Extract next directory in PATH. */ + dir = path_rest; + for (cp = path_rest; *cp != '\0' && *cp != PATH_SEPARATOR; cp++) + ; + last = (*cp == '\0'); + *cp = '\0'; + + /* Empty PATH components designate the current directory. */ + if (dir == cp) + dir = "."; + + /* Concatenate directory and dir. */ + if (directory != NULL && IS_RELATIVE_FILE_NAME (dir)) + { + dir_as_prefix_to_free = + concatenated_filename (directory, dir, NULL); + if (dir_as_prefix_to_free == NULL) + { + /* errno is set here. */ + failure_errno = errno; + goto failed; + } + dir_as_prefix = dir_as_prefix_to_free; + } + else + { + dir_as_prefix_to_free = NULL; + dir_as_prefix = dir; + } + + /* Try all platform-dependent suffixes. */ + for (i = 0; i < sizeof (suffixes) / sizeof (suffixes[0]); i++) + { + const char *suffix = suffixes[i]; + + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ + /* File names without a '.' are not considered executable, and + for file names with a '.' no additional suffix is tried. */ + if ((*suffix != '\0') != progname_has_dot) + #endif + { + /* Concatenate dir_as_prefix, progname, and suffix. */ + char *progpathname = + concatenated_filename (dir_as_prefix, progname, suffix); + + if (progpathname == NULL) + { + /* errno is set here. */ + failure_errno = errno; + free (dir_as_prefix_to_free); + goto failed; + } + + /* On systems which have the eaccess() system call, let's + use it. On other systems, let's hope that this program + is not installed setuid or setgid, so that it is ok to + call access() despite its design flaw. */ + if (eaccess (progpathname, X_OK) == 0) + { + /* Check that the progpathname does not point to a + directory. */ + struct stat statbuf; + + if (stat (progpathname, &statbuf) >= 0) + { + if (! S_ISDIR (statbuf.st_mode)) + { + /* Found! */ + if (strcmp (progpathname, progname) == 0) + { + free (progpathname); + + /* Add the "./" prefix for real, that + concatenated_filename() optimized away. + This avoids a second PATH search when the + caller uses execl/execv/execlp/execvp. */ + progpathname = + (char *) malloc (2 + strlen (progname) + 1); + if (progpathname == NULL) + { + /* errno is set here. */ + failure_errno = errno; + free (dir_as_prefix_to_free); + goto failed; + } + progpathname[0] = '.'; + progpathname[1] = NATIVE_SLASH; + memcpy (progpathname + 2, progname, + strlen (progname) + 1); + } + + free (dir_as_prefix_to_free); + free (path_copy); + return progpathname; + } + + errno = EACCES; + } + } + + if (errno != ENOENT) + failure_errno = errno; + + free (progpathname); + } + } + #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */ + if (failure_errno == ENOENT && !progname_has_dot) + { + /* In the loop above, we skipped suffix = "". Do this loop + round now, merely to provide a better errno than ENOENT. */ + + char *progpathname = + concatenated_filename (dir_as_prefix, progname, ""); + + if (progpathname == NULL) + { + /* errno is set here. */ + failure_errno = errno; + free (dir_as_prefix_to_free); + goto failed; + } + + if (eaccess (progpathname, X_OK) == 0) + { + struct stat statbuf; + + if (stat (progpathname, &statbuf) >= 0) + { + if (! S_ISDIR (statbuf.st_mode)) + errno = ENOEXEC; + else + errno = EACCES; + } + } + + failure_errno = errno; + + free (progpathname); + } + #endif + + free (dir_as_prefix_to_free); + + if (last) + break; + } + + failed: + /* Not found in PATH. */ + free (path_copy); + + errno = failure_errno; + return NULL; + } +} diff --git a/local/recipes/dev/gnu-make/source/lib/findprog.h b/local/recipes/dev/gnu-make/source/lib/findprog.h new file mode 100644 index 0000000000..e47acc5e47 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/findprog.h @@ -0,0 +1,77 @@ +/* Locating a program in PATH. + Copyright (C) 2001-2003, 2009-2022 Free Software Foundation, Inc. + Written by Bruno Haible , 2001. + + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This file is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#ifndef _FINDPROG_H +#define _FINDPROG_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Looks up a program in the PATH. + Attempts to determine the pathname that would be called by execlp/execvp + of PROGNAME. If successful, it returns a pathname containing a slash + (either absolute or relative to the current directory). Otherwise, it + returns PROGNAME unmodified. + Because of the latter case, callers should use execlp/execvp, not + execl/execv on the returned pathname. + The returned string is freshly malloc()ed if it is != PROGNAME. */ +extern const char *find_in_path (const char *progname); + +/* Looks up a program in the given PATH-like string. + + The PATH argument consists of a list of directories, separated by ':' or + (on native Windows) by ';'. An empty PATH element designates the current + directory. A null PATH is equivalent to an empty PATH, that is, to the + singleton list that contains only the current directory. + + If DIRECTORY is not NULL, all relative filenames (i.e. PROGNAME when it + contains a slash, and the PATH elements) are considered relative to + DIRECTORY instead of relative to the current directory of this process. + + Determines the pathname that would be called by execlp/execvp of PROGNAME. + - If successful, it returns a pathname containing a slash (either absolute + or relative to the current directory). The returned string can be used + with either execl/execv or execlp/execvp. It is freshly malloc()ed if it + is != PROGNAME. + - Otherwise, it sets errno and returns NULL. + Specific errno values include: + - ENOENT: means that the program's file was not found. + - EACCES: means that the program's file cannot be accessed (due to some + issue with one of the ancestor directories) or lacks the execute + permissions. + - ENOMEM: means out of memory. + If OPTIMIZE_FOR_EXEC is true, the function saves some work, under the + assumption that the resulting pathname will not be accessed directly, + only through execl/execv or execlp/execvp. + + Here, a "slash" means: + - On POSIX systems excluding Cygwin: a '/', + - On Windows, OS/2, DOS platforms: a '/' or '\'. */ +extern const char *find_in_given_path (const char *progname, const char *path, + const char *directory, + bool optimize_for_exec); + + +#ifdef __cplusplus +} +#endif + +#endif /* _FINDPROG_H */ diff --git a/local/recipes/dev/gnu-make/source/lib/fnmatch.c b/local/recipes/dev/gnu-make/source/lib/fnmatch.c new file mode 100644 index 0000000000..4da8c5fb65 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/fnmatch.c @@ -0,0 +1,489 @@ +/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999 Free Software +Foundation, Inc. +This file is part of the GNU C Library. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License +along with this library; see the file COPYING.LIB. If not, write to the Free +Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +/* Enable GNU extensions in fnmatch.h. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include +#include +#include + +#if HAVE_STRING_H || defined _LIBC +# include +#else +# include +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +/* For platform which support the ISO C amendement 1 functionality we + support user defined character classes. */ +#if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) +/* Solaris 2.5 has a bug: must be included before . */ +# include +# include +#endif + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#if defined _LIBC || !defined __GNU_LIBRARY__ + + +# if defined STDC_HEADERS || !defined isascii +# define ISASCII(c) 1 +# else +# define ISASCII(c) isascii(c) +# endif + +# ifdef isblank +# define ISBLANK(c) (ISASCII (c) && isblank (c)) +# else +# define ISBLANK(c) ((c) == ' ' || (c) == '\t') +# endif +# ifdef isgraph +# define ISGRAPH(c) (ISASCII (c) && isgraph (c)) +# else +# define ISGRAPH(c) (ISASCII (c) && isprint (c) && !isspace (c)) +# endif + +# define ISPRINT(c) (ISASCII (c) && isprint (c)) +# define ISDIGIT(c) (ISASCII (c) && isdigit (c)) +# define ISALNUM(c) (ISASCII (c) && isalnum (c)) +# define ISALPHA(c) (ISASCII (c) && isalpha (c)) +# define ISCNTRL(c) (ISASCII (c) && iscntrl (c)) +# define ISLOWER(c) (ISASCII (c) && islower (c)) +# define ISPUNCT(c) (ISASCII (c) && ispunct (c)) +# define ISSPACE(c) (ISASCII (c) && isspace (c)) +# define ISUPPER(c) (ISASCII (c) && isupper (c)) +# define ISXDIGIT(c) (ISASCII (c) && isxdigit (c)) + +# define STREQ(s1, s2) ((strcmp (s1, s2) == 0)) + +# if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) +/* The GNU C library provides support for user-defined character classes + and the functions from ISO C amendement 1. */ +# ifdef CHARCLASS_NAME_MAX +# define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX +# else +/* This shouldn't happen but some implementation might still have this + problem. Use a reasonable default value. */ +# define CHAR_CLASS_MAX_LENGTH 256 +# endif + +# ifdef _LIBC +# define IS_CHAR_CLASS(string) __wctype (string) +# else +# define IS_CHAR_CLASS(string) wctype (string) +# endif +# else +# define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */ + +# define IS_CHAR_CLASS(string) \ + (STREQ (string, "alpha") || STREQ (string, "upper") \ + || STREQ (string, "lower") || STREQ (string, "digit") \ + || STREQ (string, "alnum") || STREQ (string, "xdigit") \ + || STREQ (string, "space") || STREQ (string, "print") \ + || STREQ (string, "punct") || STREQ (string, "graph") \ + || STREQ (string, "cntrl") || STREQ (string, "blank")) +# endif + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +# if !defined _LIBC && !defined getenv +extern char *getenv (); +# endif + +# ifndef errno +extern int errno; +# endif + +/* This function doesn't exist on most systems. */ + +# if !defined HAVE___STRCHRNUL && !defined _LIBC +static char * +__strchrnul (s, c) + const char *s; + int c; +{ + char *result = strchr (s, c); + if (result == NULL) + result = strchr (s, '\0'); + return result; +} +# endif + +# ifndef internal_function +/* Inside GNU libc we mark some function in a special way. In other + environments simply ignore the marking. */ +# define internal_function +# endif + +/* Match STRING against the filename pattern PATTERN, returning zero if + it matches, nonzero if not. */ +static int internal_fnmatch __P ((const char *pattern, const char *string, + int no_leading_period, int flags)) + internal_function; +static int +internal_function +internal_fnmatch (pattern, string, no_leading_period, flags) + const char *pattern; + const char *string; + int no_leading_period; + int flags; +{ + register const char *p = pattern, *n = string; + register unsigned char c; + +/* Note that this evaluates C many times. */ +# ifdef _LIBC +# define FOLD(c) ((flags & FNM_CASEFOLD) ? tolower (c) : (c)) +# else +# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c)) +# endif + + while ((c = *p++) != '\0') + { + c = FOLD (c); + + switch (c) + { + case '?': + if (*n == '\0') + return FNM_NOMATCH; + else if (*n == '/' && (flags & FNM_FILE_NAME)) + return FNM_NOMATCH; + else if (*n == '.' && no_leading_period + && (n == string + || (n[-1] == '/' && (flags & FNM_FILE_NAME)))) + return FNM_NOMATCH; + break; + + case '\\': + if (!(flags & FNM_NOESCAPE)) + { + c = *p++; + if (c == '\0') + /* Trailing \ loses. */ + return FNM_NOMATCH; + c = FOLD (c); + } + if (FOLD ((unsigned char) *n) != c) + return FNM_NOMATCH; + break; + + case '*': + if (*n == '.' && no_leading_period + && (n == string + || (n[-1] == '/' && (flags & FNM_FILE_NAME)))) + return FNM_NOMATCH; + + for (c = *p++; c == '?' || c == '*'; c = *p++) + { + if (*n == '/' && (flags & FNM_FILE_NAME)) + /* A slash does not match a wildcard under FNM_FILE_NAME. */ + return FNM_NOMATCH; + else if (c == '?') + { + /* A ? needs to match one character. */ + if (*n == '\0') + /* There isn't another character; no match. */ + return FNM_NOMATCH; + else + /* One character of the string is consumed in matching + this ? wildcard, so *??? won't match if there are + less than three characters. */ + ++n; + } + } + + if (c == '\0') + /* The wildcard(s) is/are the last element of the pattern. + If the name is a file name and contains another slash + this does mean it cannot match. */ + return ((flags & FNM_FILE_NAME) && strchr (n, '/') != NULL + ? FNM_NOMATCH : 0); + else + { + const char *endp; + + endp = __strchrnul (n, (flags & FNM_FILE_NAME) ? '/' : '\0'); + + if (c == '[') + { + int flags2 = ((flags & FNM_FILE_NAME) + ? flags : (flags & ~FNM_PERIOD)); + + for (--p; n < endp; ++n) + if (internal_fnmatch (p, n, + (no_leading_period + && (n == string + || (n[-1] == '/' + && (flags + & FNM_FILE_NAME)))), + flags2) + == 0) + return 0; + } + else if (c == '/' && (flags & FNM_FILE_NAME)) + { + while (*n != '\0' && *n != '/') + ++n; + if (*n == '/' + && (internal_fnmatch (p, n + 1, flags & FNM_PERIOD, + flags) == 0)) + return 0; + } + else + { + int flags2 = ((flags & FNM_FILE_NAME) + ? flags : (flags & ~FNM_PERIOD)); + + if (c == '\\' && !(flags & FNM_NOESCAPE)) + c = *p; + c = FOLD (c); + for (--p; n < endp; ++n) + if (FOLD ((unsigned char) *n) == c + && (internal_fnmatch (p, n, + (no_leading_period + && (n == string + || (n[-1] == '/' + && (flags + & FNM_FILE_NAME)))), + flags2) == 0)) + return 0; + } + } + + /* If we come here no match is possible with the wildcard. */ + return FNM_NOMATCH; + + case '[': + { + /* Nonzero if the sense of the character class is inverted. */ + static int posixly_correct; + register int not; + char cold; + + if (posixly_correct == 0) + posixly_correct = getenv ("POSIXLY_CORRECT") != NULL ? 1 : -1; + + if (*n == '\0') + return FNM_NOMATCH; + + if (*n == '.' && no_leading_period && (n == string + || (n[-1] == '/' + && (flags + & FNM_FILE_NAME)))) + return FNM_NOMATCH; + + if (*n == '/' && (flags & FNM_FILE_NAME)) + /* `/' cannot be matched. */ + return FNM_NOMATCH; + + not = (*p == '!' || (posixly_correct < 0 && *p == '^')); + if (not) + ++p; + + c = *p++; + for (;;) + { + unsigned char fn = FOLD ((unsigned char) *n); + + if (!(flags & FNM_NOESCAPE) && c == '\\') + { + if (*p == '\0') + return FNM_NOMATCH; + c = FOLD ((unsigned char) *p); + ++p; + + if (c == fn) + goto matched; + } + else if (c == '[' && *p == ':') + { + /* Leave room for the null. */ + char str[CHAR_CLASS_MAX_LENGTH + 1]; + size_t c1 = 0; +# if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) + wctype_t wt; +# endif + const char *startp = p; + + for (;;) + { + if (c1 == CHAR_CLASS_MAX_LENGTH) + /* The name is too long and therefore the pattern + is ill-formed. */ + return FNM_NOMATCH; + + c = *++p; + if (c == ':' && p[1] == ']') + { + p += 2; + break; + } + if (c < 'a' || c >= 'z') + { + /* This cannot possibly be a character class name. + Match it as a normal range. */ + p = startp; + c = '['; + goto normal_bracket; + } + str[c1++] = c; + } + str[c1] = '\0'; + +# if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H) + wt = IS_CHAR_CLASS (str); + if (wt == 0) + /* Invalid character class name. */ + return FNM_NOMATCH; + + if (__iswctype (__btowc ((unsigned char) *n), wt)) + goto matched; +# else + if ((STREQ (str, "alnum") && ISALNUM ((unsigned char) *n)) + || (STREQ (str, "alpha") && ISALPHA ((unsigned char) *n)) + || (STREQ (str, "blank") && ISBLANK ((unsigned char) *n)) + || (STREQ (str, "cntrl") && ISCNTRL ((unsigned char) *n)) + || (STREQ (str, "digit") && ISDIGIT ((unsigned char) *n)) + || (STREQ (str, "graph") && ISGRAPH ((unsigned char) *n)) + || (STREQ (str, "lower") && ISLOWER ((unsigned char) *n)) + || (STREQ (str, "print") && ISPRINT ((unsigned char) *n)) + || (STREQ (str, "punct") && ISPUNCT ((unsigned char) *n)) + || (STREQ (str, "space") && ISSPACE ((unsigned char) *n)) + || (STREQ (str, "upper") && ISUPPER ((unsigned char) *n)) + || (STREQ (str, "xdigit") && ISXDIGIT ((unsigned char) *n))) + goto matched; +# endif + } + else if (c == '\0') + /* [ (unterminated) loses. */ + return FNM_NOMATCH; + else + { + normal_bracket: + if (FOLD (c) == fn) + goto matched; + + cold = c; + c = *p++; + + if (c == '-' && *p != ']') + { + /* It is a range. */ + unsigned char cend = *p++; + if (!(flags & FNM_NOESCAPE) && cend == '\\') + cend = *p++; + if (cend == '\0') + return FNM_NOMATCH; + + if (cold <= fn && fn <= FOLD (cend)) + goto matched; + + c = *p++; + } + } + + if (c == ']') + break; + } + + if (!not) + return FNM_NOMATCH; + break; + + matched: + /* Skip the rest of the [...] that already matched. */ + while (c != ']') + { + if (c == '\0') + /* [... (unterminated) loses. */ + return FNM_NOMATCH; + + c = *p++; + if (!(flags & FNM_NOESCAPE) && c == '\\') + { + if (*p == '\0') + return FNM_NOMATCH; + /* XXX 1003.2d11 is unclear if this is right. */ + ++p; + } + else if (c == '[' && *p == ':') + { + do + if (*++p == '\0') + return FNM_NOMATCH; + while (*p != ':' || p[1] == ']'); + p += 2; + c = *p; + } + } + if (not) + return FNM_NOMATCH; + } + break; + + default: + if (c != FOLD ((unsigned char) *n)) + return FNM_NOMATCH; + } + + ++n; + } + + if (*n == '\0') + return 0; + + if ((flags & FNM_LEADING_DIR) && *n == '/') + /* The FNM_LEADING_DIR flag says that "foo*" matches "foobar/frobozz". */ + return 0; + + return FNM_NOMATCH; + +# undef FOLD +} + + +int +fnmatch (pattern, string, flags) + const char *pattern; + const char *string; + int flags; +{ + return internal_fnmatch (pattern, string, flags & FNM_PERIOD, flags); +} + +#endif /* _LIBC or not __GNU_LIBRARY__. */ diff --git a/local/recipes/dev/gnu-make/source/lib/fnmatch.in.h b/local/recipes/dev/gnu-make/source/lib/fnmatch.in.h new file mode 100644 index 0000000000..a788c8e1c7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/fnmatch.in.h @@ -0,0 +1,85 @@ +/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999 Free Software +Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License +along with this library; see the file COPYING.LIB. If not, write to the Free +Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +USA. */ + +#ifndef _FNMATCH_H +#define _FNMATCH_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 +# if !defined __GLIBC__ +# undef __P +# define __P(protos) protos +# endif +#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. */ +#endif /* C++ or ANSI C. */ + +#ifndef const +# if (defined __STDC__ && __STDC__) || defined __cplusplus || defined WINDOWS32 +# define __const const +# else +# define __const +# endif +#endif + +/* We #undef these before defining them because some losing systems + (HP-UX A.08.07 for example) define these in . */ +#undef FNM_PATHNAME +#undef FNM_NOESCAPE +#undef FNM_PERIOD + +/* Bits set in the FLAGS argument to `fnmatch'. */ +#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */ +#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */ +#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */ + +#if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE +# define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */ +# define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */ +# define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ +#endif + +/* Value returned by `fnmatch' if STRING does not match PATTERN. */ +#define FNM_NOMATCH 1 + +/* This value is returned if the implementation does not support + `fnmatch'. Since this is not the case here it will never be + returned but the conformance test suites still require the symbol + to be defined. */ +#ifdef _XOPEN_SOURCE +# define FNM_NOSYS (-1) +#endif + +/* Match NAME against the filename pattern PATTERN, + returning zero if it matches, FNM_NOMATCH if not. */ +extern int fnmatch __P ((__const char *__pattern, __const char *__name, + int __flags)); + +#ifdef __cplusplus +} +#endif + +#endif /* fnmatch.h */ diff --git a/local/recipes/dev/gnu-make/source/lib/getloadavg.c b/local/recipes/dev/gnu-make/source/lib/getloadavg.c new file mode 100644 index 0000000000..37e8280867 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/getloadavg.c @@ -0,0 +1,944 @@ +/* Get the system load averages. + + Copyright (C) 1985-1989, 1991-1995, 1997, 1999-2000, 2003-2022 Free Software + Foundation, Inc. + + NOTE: The canonical source of this file is maintained with gnulib. + Bugs can be reported to bug-gnulib@gnu.org. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 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. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Compile-time symbols that this file uses: + + HAVE_PSTAT_GETDYNAMIC Define this if your system has the + pstat_getdynamic function. I think it + is unique to HPUX9. The best way to get the + definition is through the AC_FUNC_GETLOADAVG + macro that comes with autoconf 2.13 or newer. + If that isn't an option, then just put + AC_CHECK_FUNCS(pstat_getdynamic) in your + configure.ac file. + HAVE_LIBPERFSTAT Define this if your system has the + perfstat_cpu_total function in libperfstat (AIX). + FIXUP_KERNEL_SYMBOL_ADDR() Adjust address in returned struct nlist. + KERNEL_FILE Name of the kernel file to nlist. + LDAV_CVT() Scale the load average from the kernel. + Returns a double. + LDAV_SYMBOL Name of kernel symbol giving load average. + LOAD_AVE_TYPE Type of the load average array in the kernel. + Must be defined unless one of + apollo, DGUX, NeXT, or UMAX is defined; + or we have libkstat; + otherwise, no load average is available. + HAVE_NLIST_H nlist.h is available. NLIST_STRUCT defaults + to this. + NLIST_STRUCT Include nlist.h, not a.out.h. + N_NAME_POINTER The nlist n_name element is a pointer, + not an array. + HAVE_STRUCT_NLIST_N_UN_N_NAME 'n_un.n_name' is member of 'struct nlist'. + LINUX_LDAV_FILE [__linux__, __ANDROID__, __CYGWIN__]: File + containing load averages. + + Specific system predefines this file uses, aside from setting + default values if not emacs: + + apollo + BSD Real BSD, not just BSD-like. + DGUX + eunice UNIX emulator under VMS. + hpux + __MSDOS__ No-op for MSDOS. + NeXT + sgi + UMAX + UMAX4_3 + VMS + _WIN32 Native Windows (possibly also defined on Cygwin) + __linux__, __ANDROID__ Linux: assumes /proc file system mounted. + Support from Michael K. Johnson. + __CYGWIN__ Cygwin emulates linux /proc/loadavg. + __NetBSD__ NetBSD: assumes /kern file system mounted. + + In addition, to avoid nesting many #ifdefs, we internally set + LDAV_DONE to indicate that the load average has been computed. + + We also #define LDAV_PRIVILEGED if a program will require + special installation to be able to call getloadavg. */ + +#include + +/* Specification. */ +#include + +#include +#include +#include + +# include + +# if HAVE_SYS_PARAM_H +# include +# endif + +# include "intprops.h" + +# if defined _WIN32 && ! defined __CYGWIN__ && ! defined WINDOWS32 +# define WINDOWS32 +# endif + +# ifdef NeXT +/* NeXT in the 2.{0,1,2} releases defines BSD in , which + conflicts with the definition understood in this file, that this + really is BSD. */ +# undef BSD + +/* NeXT defines FSCALE in . However, we take FSCALE being + defined to mean that the nlist method should be used, which is not true. */ +# undef FSCALE +# endif + +/* Same issues as for NeXT apply to the HURD-based GNU system. */ +# ifdef __GNU__ +# undef BSD +# undef FSCALE +# endif /* __GNU__ */ + +/* Set values that are different from the defaults, which are + set a little farther down with #ifndef. */ + + +/* Some shorthands. */ + +# if defined (HPUX) && !defined (hpux) +# define hpux +# endif + +# if defined (__hpux) && !defined (hpux) +# define hpux +# endif + +# if defined (__sun) && !defined (sun) +# define sun +# endif + +# if defined (hp300) && !defined (hpux) +# define MORE_BSD +# endif + +# if defined (__SVR4) && !defined (SVR4) +# define SVR4 +# endif + +# if (defined (sun) && defined (SVR4)) || defined (SOLARIS2) +# define SUNOS_5 +# endif + +# if defined (__osf__) && (defined (__alpha) || defined (__alpha__)) +# define OSF_ALPHA +# include +# include +# include +# include +/* Tru64 4.0D's table.h redefines sys */ +# undef sys +# endif + +# if defined (__osf__) && (defined (mips) || defined (__mips__)) +# define OSF_MIPS +# include +# endif + + +/* VAX C can't handle multi-line #ifs, or lines longer than 256 chars. */ +# ifndef LOAD_AVE_TYPE + +# ifdef MORE_BSD +# define LOAD_AVE_TYPE long +# endif + +# ifdef sun +# define LOAD_AVE_TYPE long +# endif + +# ifdef sgi +# define LOAD_AVE_TYPE long +# endif + +# ifdef SVR4 +# define LOAD_AVE_TYPE long +# endif + +# ifdef OSF_ALPHA +# define LOAD_AVE_TYPE long +# endif + +# if defined _AIX && ! defined HAVE_LIBPERFSTAT +# define LOAD_AVE_TYPE long +# endif + +# endif /* No LOAD_AVE_TYPE. */ + +# ifdef OSF_ALPHA +/* defines an incorrect value for FSCALE on Alpha OSF/1, + according to ghazi@noc.rutgers.edu. */ +# undef FSCALE +# define FSCALE 1024.0 +# endif + + +# ifndef FSCALE + +/* SunOS and some others define FSCALE in sys/param.h. */ + +# ifdef MORE_BSD +# define FSCALE 2048.0 +# endif + +# if defined (MIPS) || defined (SVR4) +# define FSCALE 256 +# endif + +# if defined (sgi) +/* Sometimes both MIPS and sgi are defined, so FSCALE was just defined + above under #ifdef MIPS. But we want the sgi value. */ +# undef FSCALE +# define FSCALE 1000.0 +# endif + +# if defined _AIX && !defined HAVE_LIBPERFSTAT +# define FSCALE 65536.0 +# endif + +# endif /* Not FSCALE. */ + +# if !defined (LDAV_CVT) && defined (FSCALE) +# define LDAV_CVT(n) (((double) (n)) / FSCALE) +# endif + +# ifndef NLIST_STRUCT +# if HAVE_NLIST_H +# define NLIST_STRUCT +# endif +# endif + +# if defined (sgi) || (defined (mips) && !defined (BSD)) +# define FIXUP_KERNEL_SYMBOL_ADDR(nl) ((nl)[0].n_value &= ~(1 << 31)) +# endif + + +# if !defined (KERNEL_FILE) && defined (hpux) +# define KERNEL_FILE "/hp-ux" +# endif + +# if !defined (KERNEL_FILE) && (defined (MIPS) || defined (SVR4) || defined (ISC) || defined (sgi)) +# define KERNEL_FILE "/unix" +# endif + + +# if !defined (LDAV_SYMBOL) && (defined (hpux) || defined (SVR4) || defined (ISC) || defined (sgi) || (defined (_AIX) && !defined(HAVE_LIBPERFSTAT))) +# define LDAV_SYMBOL "avenrun" +# endif + +# ifdef HAVE_UNISTD_H +# include +# endif + +/* LOAD_AVE_TYPE should only get defined if we're going to use the + nlist method. */ +# if !defined (LOAD_AVE_TYPE) && (defined (BSD) || defined (LDAV_CVT) || defined (KERNEL_FILE) || defined (LDAV_SYMBOL)) +# define LOAD_AVE_TYPE double +# endif + +# ifdef LOAD_AVE_TYPE + +# ifndef __VMS +# if !(defined __linux__ || defined __ANDROID__) +# ifndef NLIST_STRUCT +# include +# else /* NLIST_STRUCT */ +# include +# endif /* NLIST_STRUCT */ + +# ifdef SUNOS_5 +# include +# include +# endif + +# if defined (hpux) && defined (HAVE_PSTAT_GETDYNAMIC) +# include +# endif + +# ifndef KERNEL_FILE +# define KERNEL_FILE "/vmunix" +# endif /* KERNEL_FILE */ + +# ifndef LDAV_SYMBOL +# define LDAV_SYMBOL "_avenrun" +# endif /* LDAV_SYMBOL */ +# endif /* __linux__ || __ANDROID__ */ + +# else /* __VMS */ + +# ifndef eunice +# include +# include +# else /* eunice */ +# include +# endif /* eunice */ +# endif /* __VMS */ + +# ifndef LDAV_CVT +# define LDAV_CVT(n) ((double) (n)) +# endif /* !LDAV_CVT */ + +# endif /* LOAD_AVE_TYPE */ + +# if defined HAVE_LIBPERFSTAT +# include +# include +# include +# ifndef SBITS +# define SBITS 16 +# endif +# endif + +# if defined (__GNU__) && !defined (NeXT) +/* Note that NeXT Openstep defines __GNU__ even though it should not. */ +/* GNU system acts much like NeXT, for load average purposes, + but not exactly. */ +# define NeXT +# define host_self mach_host_self +# endif + +# ifdef NeXT +# ifdef HAVE_MACH_MACH_H +# include +# else +# include +# endif +# endif /* NeXT */ + +# ifdef sgi +# include +# endif /* sgi */ + +# ifdef UMAX +# include +# include +# include +# include + +# ifdef UMAX_43 +# include +# include +# include +# include +# include +# else /* Not UMAX_43. */ +# include +# include +# include +# include +# include +# include +# endif /* Not UMAX_43. */ +# endif /* UMAX */ + +# ifdef DGUX +# include +# endif + +# if (defined __linux__ || defined __ANDROID__ \ + || defined __CYGWIN__ || defined SUNOS_5 \ + || (defined LOAD_AVE_TYPE && ! defined __VMS)) +# include +# endif + +/* Avoid static vars inside a function since in HPUX they dump as pure. */ + +# ifdef NeXT +static processor_set_t default_set; +static bool getloadavg_initialized; +# endif /* NeXT */ + +# ifdef UMAX +static unsigned int cpus = 0; +static unsigned int samples; +# endif /* UMAX */ + +# ifdef DGUX +static struct dg_sys_info_load_info load_info; /* what-a-mouthful! */ +# endif /* DGUX */ + +# if !defined (HAVE_LIBKSTAT) && defined (LOAD_AVE_TYPE) +/* File descriptor open to /dev/kmem or VMS load ave driver. */ +static int channel; +/* True if channel is valid. */ +static bool getloadavg_initialized; +/* Offset in kmem to seek to read load average, or 0 means invalid. */ +static long offset; + +# if ! defined __VMS && ! defined sgi && ! (defined __linux__ || defined __ANDROID__) +static struct nlist name_list[2]; +# endif + +# ifdef SUNOS_5 +static kvm_t *kd; +# endif /* SUNOS_5 */ + +# endif /* LOAD_AVE_TYPE && !HAVE_LIBKSTAT */ + +/* Put the 1 minute, 5 minute and 15 minute load averages + into the first NELEM elements of LOADAVG. + Return the number written (never more than 3, but may be less than NELEM), + or -1 (setting errno) if an error occurred. */ + +int +getloadavg (double loadavg[], int nelem) +{ + int elem = 0; /* Return value. */ + +# ifdef NO_GET_LOAD_AVG +# define LDAV_DONE + errno = ENOSYS; + elem = -1; +# endif + +# if !defined (LDAV_DONE) && defined (HAVE_LIBKSTAT) /* Solaris <= 2.6 */ +/* Use libkstat because we don't have to be root. */ +# define LDAV_DONE + kstat_ctl_t *kc; + kstat_t *ksp; + kstat_named_t *kn; + int saved_errno; + + kc = kstat_open (); + if (kc == NULL) + return -1; + ksp = kstat_lookup (kc, "unix", 0, "system_misc"); + if (ksp == NULL) + return -1; + if (kstat_read (kc, ksp, 0) == -1) + return -1; + + + kn = kstat_data_lookup (ksp, "avenrun_1min"); + if (kn == NULL) + { + /* Return -1 if no load average information is available. */ + nelem = 0; + elem = -1; + } + + if (nelem >= 1) + loadavg[elem++] = (double) kn->value.ul / FSCALE; + + if (nelem >= 2) + { + kn = kstat_data_lookup (ksp, "avenrun_5min"); + if (kn != NULL) + { + loadavg[elem++] = (double) kn->value.ul / FSCALE; + + if (nelem >= 3) + { + kn = kstat_data_lookup (ksp, "avenrun_15min"); + if (kn != NULL) + loadavg[elem++] = (double) kn->value.ul / FSCALE; + } + } + } + + saved_errno = errno; + kstat_close (kc); + errno = saved_errno; +# endif /* HAVE_LIBKSTAT */ + +# if !defined (LDAV_DONE) && defined (hpux) && defined (HAVE_PSTAT_GETDYNAMIC) + /* HP-UX */ +/* Use pstat_getdynamic() because we don't have to be root. */ +# define LDAV_DONE +# undef LOAD_AVE_TYPE + + struct pst_dynamic dyn_info; + if (pstat_getdynamic (&dyn_info, sizeof (dyn_info), 0, 0) < 0) + return -1; + if (nelem > 0) + loadavg[elem++] = dyn_info.psd_avg_1_min; + if (nelem > 1) + loadavg[elem++] = dyn_info.psd_avg_5_min; + if (nelem > 2) + loadavg[elem++] = dyn_info.psd_avg_15_min; + +# endif /* hpux && HAVE_PSTAT_GETDYNAMIC */ + +# if ! defined LDAV_DONE && defined HAVE_LIBPERFSTAT /* AIX */ +# define LDAV_DONE +# undef LOAD_AVE_TYPE +/* Use perfstat_cpu_total because we don't have to be root. */ + { + perfstat_cpu_total_t cpu_stats; + int result = perfstat_cpu_total (NULL, &cpu_stats, sizeof cpu_stats, 1); + if (result == -1) + return result; + loadavg[0] = cpu_stats.loadavg[0] / (double)(1 << SBITS); + loadavg[1] = cpu_stats.loadavg[1] / (double)(1 << SBITS); + loadavg[2] = cpu_stats.loadavg[2] / (double)(1 << SBITS); + elem = 3; + } +# endif + +# if !defined (LDAV_DONE) && (defined __linux__ || defined __ANDROID__ || defined __CYGWIN__) + /* Linux without glibc, Android, Cygwin */ +# define LDAV_DONE +# undef LOAD_AVE_TYPE + +# ifndef LINUX_LDAV_FILE +# define LINUX_LDAV_FILE "/proc/loadavg" +# endif + + char ldavgbuf[3 * (INT_STRLEN_BOUND (int) + sizeof ".00 ")]; + char const *ptr = ldavgbuf; + int fd, count, saved_errno; + + fd = open (LINUX_LDAV_FILE, O_RDONLY | O_CLOEXEC); + if (fd == -1) + return -1; + count = read (fd, ldavgbuf, sizeof ldavgbuf - 1); + saved_errno = errno; + (void) close (fd); + errno = saved_errno; + if (count <= 0) + return -1; + ldavgbuf[count] = '\0'; + + for (elem = 0; elem < nelem; elem++) + { + double numerator = 0; + double denominator = 1; + + while (*ptr == ' ') + ptr++; + + /* Finish if this number is missing, and report an error if all + were missing. */ + if (! ('0' <= *ptr && *ptr <= '9')) + { + if (elem == 0) + { + errno = ENOTSUP; + return -1; + } + break; + } + + while ('0' <= *ptr && *ptr <= '9') + numerator = 10 * numerator + (*ptr++ - '0'); + + if (*ptr == '.') + for (ptr++; '0' <= *ptr && *ptr <= '9'; ptr++) + numerator = 10 * numerator + (*ptr - '0'), denominator *= 10; + + loadavg[elem] = numerator / denominator; + } + + return elem; + +# endif /* __linux__ || __ANDROID__ || __CYGWIN__ */ + +# if !defined (LDAV_DONE) && defined (__NetBSD__) /* NetBSD < 0.9 */ +# define LDAV_DONE +# undef LOAD_AVE_TYPE + +# ifndef NETBSD_LDAV_FILE +# define NETBSD_LDAV_FILE "/kern/loadavg" +# endif + + unsigned long int load_ave[3], scale; + int count; + char readbuf[4 * INT_BUFSIZE_BOUND (unsigned long int) + 1]; + int fd = open (NETBSD_LDAV_FILE, O_RDONLY | O_CLOEXEC); + if (fd < 0) + return fd; + int nread = read (fd, readbuf, sizeof readbuf - 1); + int err = errno; + close (fd); + if (nread < 0) + { + errno = err; + return -1; + } + readbuf[nread] = '\0'; + count = sscanf (readbuf, "%lu %lu %lu %lu\n", + &load_ave[0], &load_ave[1], &load_ave[2], + &scale); + if (count != 4) + { + errno = ENOTSUP; + return -1; + } + + for (elem = 0; elem < nelem; elem++) + loadavg[elem] = (double) load_ave[elem] / (double) scale; + + return elem; + +# endif /* __NetBSD__ */ + +# if !defined (LDAV_DONE) && defined (NeXT) /* NeXTStep */ +# define LDAV_DONE + /* The NeXT code was adapted from iscreen 3.2. */ + + host_t host; + struct processor_set_basic_info info; + unsigned int info_count; + + /* We only know how to get the 1-minute average for this system, + so even if the caller asks for more than 1, we only return 1. */ + + if (!getloadavg_initialized) + { + if (processor_set_default (host_self (), &default_set) == KERN_SUCCESS) + getloadavg_initialized = true; + } + + if (getloadavg_initialized) + { + info_count = PROCESSOR_SET_BASIC_INFO_COUNT; + if (processor_set_info (default_set, PROCESSOR_SET_BASIC_INFO, &host, + (processor_set_info_t) &info, &info_count) + != KERN_SUCCESS) + getloadavg_initialized = false; + else + { + if (nelem > 0) + loadavg[elem++] = (double) info.load_average / LOAD_SCALE; + } + } + + if (!getloadavg_initialized) + { + errno = ENOTSUP; + return -1; + } +# endif /* NeXT */ + +# if !defined (LDAV_DONE) && defined (UMAX) +# define LDAV_DONE +/* UMAX 4.2, which runs on the Encore Multimax multiprocessor, does not + have a /dev/kmem. Information about the workings of the running kernel + can be gathered with inq_stats system calls. + We only know how to get the 1-minute average for this system. */ + + struct proc_summary proc_sum_data; + struct stat_descr proc_info; + double load; + register unsigned int i, j; + + if (cpus == 0) + { + register unsigned int c, i; + struct cpu_config conf; + struct stat_descr desc; + + desc.sd_next = 0; + desc.sd_subsys = SUBSYS_CPU; + desc.sd_type = CPUTYPE_CONFIG; + desc.sd_addr = (char *) &conf; + desc.sd_size = sizeof conf; + + if (inq_stats (1, &desc)) + return -1; + + c = 0; + for (i = 0; i < conf.config_maxclass; ++i) + { + struct class_stats stats; + memset (&stats, 0, sizeof stats); + + desc.sd_type = CPUTYPE_CLASS; + desc.sd_objid = i; + desc.sd_addr = (char *) &stats; + desc.sd_size = sizeof stats; + + if (inq_stats (1, &desc)) + return -1; + + c += stats.class_numcpus; + } + cpus = c; + samples = cpus < 2 ? 3 : (2 * cpus / 3); + } + + proc_info.sd_next = 0; + proc_info.sd_subsys = SUBSYS_PROC; + proc_info.sd_type = PROCTYPE_SUMMARY; + proc_info.sd_addr = (char *) &proc_sum_data; + proc_info.sd_size = sizeof (struct proc_summary); + proc_info.sd_sizeused = 0; + + if (inq_stats (1, &proc_info) != 0) + return -1; + + load = proc_sum_data.ps_nrunnable; + j = 0; + for (i = samples - 1; i > 0; --i) + { + load += proc_sum_data.ps_nrun[j]; + if (j++ == PS_NRUNSIZE) + j = 0; + } + + if (nelem > 0) + loadavg[elem++] = load / samples / cpus; +# endif /* UMAX */ + +# if !defined (LDAV_DONE) && defined (DGUX) +# 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 *'. */ + dg_sys_info ((long int *) &load_info, + DG_SYS_INFO_LOAD_INFO_TYPE, + DG_SYS_INFO_LOAD_VERSION_0); + + if (nelem > 0) + loadavg[elem++] = load_info.one_minute; + if (nelem > 1) + loadavg[elem++] = load_info.five_minute; + if (nelem > 2) + loadavg[elem++] = load_info.fifteen_minute; +# endif /* DGUX */ + +# if !defined (LDAV_DONE) && defined (apollo) +# define LDAV_DONE +/* Apollo code from lisch@mentorg.com (Ray Lischner). + + This system call is not documented. The load average is obtained as + three long integers, for the load average over the past minute, + five minutes, and fifteen minutes. Each value is a scaled integer, + with 16 bits of integer part and 16 bits of fraction part. + + I'm not sure which operating system first supported this system call, + but I know that SR10.2 supports it. */ + + extern void proc1_$get_loadav (); + unsigned long load_ave[3]; + + proc1_$get_loadav (load_ave); + + if (nelem > 0) + loadavg[elem++] = load_ave[0] / 65536.0; + if (nelem > 1) + loadavg[elem++] = load_ave[1] / 65536.0; + if (nelem > 2) + loadavg[elem++] = load_ave[2] / 65536.0; +# endif /* apollo */ + +# if !defined (LDAV_DONE) && defined (OSF_MIPS) +# define LDAV_DONE + + struct tbl_loadavg load_ave; + table (TBL_LOADAVG, 0, &load_ave, 1, sizeof (load_ave)); + loadavg[elem++] + = (load_ave.tl_lscale == 0 + ? load_ave.tl_avenrun.d[0] + : (load_ave.tl_avenrun.l[0] / (double) load_ave.tl_lscale)); +# endif /* OSF_MIPS */ + +# if !defined (LDAV_DONE) && (defined (__MSDOS__) || defined (WINDOWS32)) + /* DJGPP */ +# define LDAV_DONE + + /* A faithful emulation is going to have to be saved for a rainy day. */ + for ( ; elem < nelem; elem++) + { + loadavg[elem] = 0.0; + } +# endif /* __MSDOS__ || WINDOWS32 */ + +# if !defined (LDAV_DONE) && defined (OSF_ALPHA) /* OSF/1 */ +# define LDAV_DONE + + struct tbl_loadavg load_ave; + table (TBL_LOADAVG, 0, &load_ave, 1, sizeof (load_ave)); + for (elem = 0; elem < nelem; elem++) + loadavg[elem] + = (load_ave.tl_lscale == 0 + ? load_ave.tl_avenrun.d[elem] + : (load_ave.tl_avenrun.l[elem] / (double) load_ave.tl_lscale)); +# endif /* OSF_ALPHA */ + +# if ! defined LDAV_DONE && defined __VMS /* VMS */ + /* VMS specific code -- read from the Load Ave driver. */ + + LOAD_AVE_TYPE load_ave[3]; + static bool getloadavg_initialized; +# ifdef eunice + struct + { + int dsc$w_length; + char *dsc$a_pointer; + } descriptor; +# endif + + /* Ensure that there is a channel open to the load ave device. */ + if (!getloadavg_initialized) + { + /* Attempt to open the channel. */ +# ifdef eunice + descriptor.dsc$w_length = 18; + descriptor.dsc$a_pointer = "$$VMS_LOAD_AVERAGE"; +# else + $DESCRIPTOR (descriptor, "LAV0:"); +# endif + if (sys$assign (&descriptor, &channel, 0, 0) & 1) + getloadavg_initialized = true; + } + + /* Read the load average vector. */ + if (getloadavg_initialized + && !(sys$qiow (0, channel, IO$_READVBLK, 0, 0, 0, + load_ave, 12, 0, 0, 0, 0) & 1)) + { + sys$dassgn (channel); + getloadavg_initialized = false; + } + + if (!getloadavg_initialized) + { + errno = ENOTSUP; + return -1; + } +# endif /* ! defined LDAV_DONE && defined __VMS */ + +# if ! defined LDAV_DONE && defined LOAD_AVE_TYPE && ! defined __VMS + /* IRIX, other old systems */ + + /* UNIX-specific code -- read the average from /dev/kmem. */ + +# define LDAV_PRIVILEGED /* This code requires special installation. */ + + LOAD_AVE_TYPE load_ave[3]; + + /* Get the address of LDAV_SYMBOL. */ + if (offset == 0) + { +# ifndef sgi +# if ! defined NLIST_STRUCT || ! defined N_NAME_POINTER + strcpy (name_list[0].n_name, LDAV_SYMBOL); + strcpy (name_list[1].n_name, ""); +# else /* NLIST_STRUCT */ +# ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + name_list[0].n_un.n_name = LDAV_SYMBOL; + name_list[1].n_un.n_name = 0; +# else /* not HAVE_STRUCT_NLIST_N_UN_N_NAME */ + name_list[0].n_name = LDAV_SYMBOL; + name_list[1].n_name = 0; +# endif /* not HAVE_STRUCT_NLIST_N_UN_N_NAME */ +# endif /* NLIST_STRUCT */ + +# ifndef SUNOS_5 + if ( +# if !defined (_AIX) + nlist (KERNEL_FILE, name_list) +# else /* _AIX */ + knlist (name_list, 1, sizeof (name_list[0])) +# endif + >= 0) + /* Omit "&& name_list[0].n_type != 0 " -- it breaks on Sun386i. */ + { +# ifdef FIXUP_KERNEL_SYMBOL_ADDR + FIXUP_KERNEL_SYMBOL_ADDR (name_list); +# endif + offset = name_list[0].n_value; + } +# endif /* !SUNOS_5 */ +# else /* sgi */ + ptrdiff_t ldav_off = sysmp (MP_KERNADDR, MPKA_AVENRUN); + if (ldav_off != -1) + offset = (long int) ldav_off & 0x7fffffff; +# endif /* sgi */ + } + + /* Make sure we have /dev/kmem open. */ + if (!getloadavg_initialized) + { +# ifndef SUNOS_5 + int fd = open ("/dev/kmem", O_RDONLY | O_CLOEXEC); + if (0 <= fd) + { + channel = fd; + getloadavg_initialized = true; + } +# else /* SUNOS_5 */ + /* We pass 0 for the kernel, corefile, and swapfile names + to use the currently running kernel. */ + kd = kvm_open (0, 0, 0, O_RDONLY, 0); + if (kd != NULL) + { + /* nlist the currently running kernel. */ + kvm_nlist (kd, name_list); + offset = name_list[0].n_value; + getloadavg_initialized = true; + } +# endif /* SUNOS_5 */ + } + + /* If we can, get the load average values. */ + if (offset && getloadavg_initialized) + { + /* Try to read the load. */ +# ifndef SUNOS_5 + if (lseek (channel, offset, 0) == -1L + || read (channel, (char *) load_ave, sizeof (load_ave)) + != sizeof (load_ave)) + { + close (channel); + getloadavg_initialized = false; + } +# else /* SUNOS_5 */ + if (kvm_read (kd, offset, (char *) load_ave, sizeof (load_ave)) + != sizeof (load_ave)) + { + kvm_close (kd); + getloadavg_initialized = false; + } +# endif /* SUNOS_5 */ + } + + if (offset == 0 || !getloadavg_initialized) + { + errno = ENOTSUP; + return -1; + } +# endif /* ! defined LDAV_DONE && defined LOAD_AVE_TYPE && ! defined __VMS */ + +# if !defined (LDAV_DONE) && defined (LOAD_AVE_TYPE) /* Including VMS. */ + if (nelem > 0) + loadavg[elem++] = LDAV_CVT (load_ave[0]); + if (nelem > 1) + loadavg[elem++] = LDAV_CVT (load_ave[1]); + if (nelem > 2) + loadavg[elem++] = LDAV_CVT (load_ave[2]); + +# define LDAV_DONE +# endif /* !LDAV_DONE && LOAD_AVE_TYPE */ + +# if !defined LDAV_DONE + errno = ENOSYS; + elem = -1; +# endif + return elem; +} diff --git a/local/recipes/dev/gnu-make/source/lib/glob.c b/local/recipes/dev/gnu-make/source/lib/glob.c new file mode 100644 index 0000000000..adad16fa6d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/glob.c @@ -0,0 +1,1437 @@ +/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 Free +Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License +along with this library; see the file COPYING.LIB. If not, write to the Free +Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +USA. */ + +/* AIX requires this to be the first thing in the file. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Enable GNU extensions in glob.h. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include +#include +#include + +/* Outcomment the following line for production quality code. */ +/* #define NDEBUG 1 */ +#include + +#include /* Needed on stupid SunOS for assert. */ + + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GLOB_INTERFACE_VERSION 1 +#if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 +# include +# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION +# define ELIDE_CODE +# endif +#endif + +#ifndef ELIDE_CODE + +#if defined STDC_HEADERS || defined __GNU_LIBRARY__ +# include +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +# ifndef POSIX +# ifdef _POSIX_VERSION +# define POSIX +# endif +# endif +#endif + +#if !defined _AMIGA && !defined VMS && !defined WINDOWS32 +# include +#endif + +#if !defined __GNU_LIBRARY__ && !defined STDC_HEADERS +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(val) errno = (val) +#endif + +#ifndef NULL +# define NULL 0 +#endif + + +#if defined HAVE_DIRENT_H || defined __GNU_LIBRARY__ +# include +# define NAMLEN(dirent) strlen((dirent)->d_name) +#else +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +# ifdef HAVE_VMSDIR_H +# include "vmsdir.h" +# endif /* HAVE_VMSDIR_H */ +#endif + + +/* In GNU systems, defines this macro for us. */ +#ifdef _D_NAMLEN +# undef NAMLEN +# define NAMLEN(d) _D_NAMLEN(d) +#endif + +/* When used in the GNU libc the symbol _DIRENT_HAVE_D_TYPE is available + if the `d_type' member for `struct dirent' is available. */ +#if defined(_DIRENT_HAVE_D_TYPE) || defined(HAVE_STRUCT_DIRENT_D_TYPE) +# define HAVE_D_TYPE 1 +#endif + + +#if (defined POSIX || defined WINDOWS32) && !defined __GNU_LIBRARY__ +/* Posix does not require that the d_ino field be present, and some + systems do not provide it. */ +# define REAL_DIR_ENTRY(dp) 1 +#else +# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0) +#endif /* POSIX */ + +#if defined STDC_HEADERS || defined __GNU_LIBRARY__ +# include +# include +# define ANSI_STRING +#else /* No standard headers. */ + +extern char *getenv (); + +# ifdef HAVE_STRING_H +# include +# define ANSI_STRING +# else +# include +# endif +# ifdef HAVE_MEMORY_H +# include +# endif + +extern char *malloc (), *realloc (); +extern void free (); + +extern void qsort (); +extern void abort (), exit (); + +#endif /* Standard headers. */ + +#ifndef ANSI_STRING + +# ifndef bzero +extern void bzero (); +# endif +# ifndef bcopy +extern void bcopy (); +# endif + +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define strrchr rindex +/* memset is only used for zero here, but let's be paranoid. */ +# define memset(s, better_be_zero, n) \ + ((void) ((better_be_zero) == 0 ? (bzero((s), (n)), 0) : (abort(), 0))) +#endif /* Not ANSI_STRING. */ + +#if !defined HAVE_STRCOLL && !defined _LIBC +# define strcoll strcmp +#endif + +#if !defined HAVE_MEMPCPY && __GLIBC__ - 0 == 2 && __GLIBC_MINOR__ >= 1 +# define HAVE_MEMPCPY 1 +# undef mempcpy +# define mempcpy(Dest, Src, Len) __mempcpy (Dest, Src, Len) +#endif + +#if !defined __GNU_LIBRARY__ && !defined __DJGPP__ +# ifdef __GNUC__ +__inline +# endif +# ifndef __SASC +# ifdef WINDOWS32 +static void * +my_realloc (void *p, unsigned int n) +# else +static char * +my_realloc (p, n) + char *p; + unsigned int n; +# endif +{ + /* These casts are the for sake of the broken Ultrix compiler, + which warns of illegal pointer combinations otherwise. */ + if (p == NULL) + return (char *) malloc (n); + return (char *) realloc (p, n); +} +# define realloc my_realloc +# endif /* __SASC */ +#endif /* __GNU_LIBRARY__ || __DJGPP__ */ + + +#if !defined __alloca && !defined __GNU_LIBRARY__ + +# ifdef __GNUC__ +# undef alloca +# define alloca(n) __builtin_alloca (n) +# else /* Not GCC. */ +# ifdef HAVE_ALLOCA_H +# include +# else /* Not HAVE_ALLOCA_H. */ +# ifndef _AIX +# ifdef WINDOWS32 +# include +# else +extern char *alloca (); +# endif /* WINDOWS32 */ +# endif /* Not _AIX. */ +# endif /* sparc or HAVE_ALLOCA_H. */ +# endif /* GCC. */ +#endif + +#ifndef __GNU_LIBRARY__ +# define __stat stat +# ifdef STAT_MACROS_BROKEN +# undef S_ISDIR +# endif +# ifndef S_ISDIR +# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +# endif +#endif + +#ifdef _LIBC +# undef strdup +# define strdup(str) __strdup (str) +# define sysconf(id) __sysconf (id) +# define closedir(dir) __closedir (dir) +# define opendir(name) __opendir (name) +# define readdir(str) __readdir (str) +# define getpwnam_r(name, bufp, buf, len, res) \ + __getpwnam_r (name, bufp, buf, len, res) +# ifndef __stat +# define __stat(fname, buf) __xstat (_STAT_VER, fname, buf) +# endif +#endif + +#if !(defined STDC_HEADERS || defined __GNU_LIBRARY__) +# undef size_t +# define size_t unsigned int +#endif + +/* Some system header files erroneously define these. + We want our own definitions from to take precedence. */ +#ifndef __GNU_LIBRARY__ +# undef FNM_PATHNAME +# undef FNM_NOESCAPE +# undef FNM_PERIOD +#endif +#include + +/* Some system header files erroneously define these. + We want our own definitions from to take precedence. */ +#ifndef __GNU_LIBRARY__ +# undef GLOB_ERR +# undef GLOB_MARK +# undef GLOB_NOSORT +# undef GLOB_DOOFFS +# undef GLOB_NOCHECK +# undef GLOB_APPEND +# undef GLOB_NOESCAPE +# undef GLOB_PERIOD +#endif +#include + +#if !defined __alloca +# define __alloca alloca +#endif + +#if !defined __stat +# define __stat stat +#endif + +#ifdef HAVE_GETLOGIN_R +extern int getlogin_r __P ((char *, size_t)); +#else +extern char *getlogin __P ((void)); +#endif + +static +#if __GNUC__ - 0 >= 2 +inline +#endif +const char *next_brace_sub __P ((const char *begin)); +static int glob_in_dir __P ((const char *pattern, const char *directory, + int flags, + int (*errfunc) (const char *, int), + glob_t *pglob)); +static int prefix_array __P ((const char *prefix, char **array, size_t n)); +static int collated_compare __P ((const __ptr_t, const __ptr_t)); + +#if !defined _LIBC || !defined NO_GLOB_PATTERN_P +int __glob_pattern_p __P ((const char *pattern, int quote)); +#endif + +/* Find the end of the sub-pattern in a brace expression. We define + this as an inline function if the compiler permits. */ +static +#if __GNUC__ - 0 >= 2 +inline +#endif +const char * +next_brace_sub (begin) + const char *begin; +{ + unsigned int depth = 0; + const char *cp = begin; + + while (1) + { + if (depth == 0) + { + if (*cp != ',' && *cp != '}' && *cp != '\0') + { + if (*cp == '{') + ++depth; + ++cp; + continue; + } + } + else + { + while (*cp != '\0' && (*cp != '}' || depth > 0)) + { + if (*cp == '}') + --depth; + ++cp; + } + if (*cp == '\0') + /* An incorrectly terminated brace expression. */ + return NULL; + + continue; + } + break; + } + + return cp; +} + +/* Do glob searching for PATTERN, placing results in PGLOB. + The bits defined above may be set in FLAGS. + If a directory cannot be opened or read and ERRFUNC is not nil, + it is called with the pathname that caused the error, and the + `errno' value from the failing call; if it returns non-zero + `glob' returns GLOB_ABORTED; if it returns zero, the error is ignored. + If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. + Otherwise, `glob' returns zero. */ +int +glob (pattern, flags, errfunc, pglob) + const char *pattern; + int flags; + int (*errfunc) __P ((const char *, int)); + glob_t *pglob; +{ + const char *filename; + const char *dirname; + size_t dirlen; + int status; + size_t oldcount; + + if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0) + { + __set_errno (EINVAL); + return -1; + } + + /* POSIX requires all slashes to be matched. This means that with + a trailing slash we must match only directories. */ + if (pattern[0] && pattern[strlen (pattern) - 1] == '/') + flags |= GLOB_ONLYDIR; + + if (flags & GLOB_BRACE) + { + const char *begin = strchr (pattern, '{'); + if (begin != NULL) + { + /* Allocate working buffer large enough for our work. Note that + we have at least an opening and closing brace. */ + size_t firstc; + char *alt_start; + const char *p; + const char *next; + const char *rest; + size_t rest_len; +#ifdef __GNUC__ + char onealt[strlen (pattern) - 1]; +#else + char *onealt = (char *) malloc (strlen (pattern) - 1); + if (onealt == NULL) + { + if (!(flags & GLOB_APPEND)) + globfree (pglob); + return GLOB_NOSPACE; + } +#endif + + /* We know the prefix for all sub-patterns. */ +#ifdef HAVE_MEMPCPY + alt_start = mempcpy (onealt, pattern, begin - pattern); +#else + memcpy (onealt, pattern, begin - pattern); + alt_start = &onealt[begin - pattern]; +#endif + + /* Find the first sub-pattern and at the same time find the + rest after the closing brace. */ + next = next_brace_sub (begin + 1); + if (next == NULL) + { + /* It is an illegal expression. */ +#ifndef __GNUC__ + free (onealt); +#endif + return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); + } + + /* Now find the end of the whole brace expression. */ + rest = next; + while (*rest != '}') + { + rest = next_brace_sub (rest + 1); + if (rest == NULL) + { + /* It is an illegal expression. */ +#ifndef __GNUC__ + free (onealt); +#endif + return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); + } + } + /* Please note that we now can be sure the brace expression + is well-formed. */ + rest_len = strlen (++rest) + 1; + + /* We have a brace expression. BEGIN points to the opening {, + NEXT points past the terminator of the first element, and END + points past the final }. We will accumulate result names from + recursive runs for each brace alternative in the buffer using + GLOB_APPEND. */ + + if (!(flags & GLOB_APPEND)) + { + /* This call is to set a new vector, so clear out the + vector so we can append to it. */ + pglob->gl_pathc = 0; + pglob->gl_pathv = NULL; + } + firstc = pglob->gl_pathc; + + p = begin + 1; + while (1) + { + int result; + + /* Construct the new glob expression. */ +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (alt_start, p, next - p), rest, rest_len); +#else + memcpy (alt_start, p, next - p); + memcpy (&alt_start[next - p], rest, rest_len); +#endif + + result = glob (onealt, + ((flags & ~(GLOB_NOCHECK|GLOB_NOMAGIC)) + | GLOB_APPEND), errfunc, pglob); + + /* If we got an error, return it. */ + if (result && result != GLOB_NOMATCH) + { +#ifndef __GNUC__ + free (onealt); +#endif + if (!(flags & GLOB_APPEND)) + globfree (pglob); + return result; + } + + if (*next == '}') + /* We saw the last entry. */ + break; + + p = next + 1; + next = next_brace_sub (p); + assert (next != NULL); + } + +#ifndef __GNUC__ + free (onealt); +#endif + + if (pglob->gl_pathc != firstc) + /* We found some entries. */ + return 0; + else if (!(flags & (GLOB_NOCHECK|GLOB_NOMAGIC))) + return GLOB_NOMATCH; + } + } + + /* Find the filename. */ + filename = strrchr (pattern, '/'); +#if defined __MSDOS__ || defined WINDOWS32 + /* The case of "d:pattern". Since `:' is not allowed in + file names, we can safely assume that wherever it + happens in pattern, it signals the filename part. This + is so we could some day support patterns like "[a-z]:foo". */ + if (filename == NULL) + filename = strchr (pattern, ':'); +#endif /* __MSDOS__ || WINDOWS32 */ + if (filename == NULL) + { + /* This can mean two things: a simple name or "~name". The later + case is nothing but a notation for a directory. */ + if ((flags & (GLOB_TILDE|GLOB_TILDE_CHECK)) && pattern[0] == '~') + { + dirname = pattern; + dirlen = strlen (pattern); + + /* Set FILENAME to NULL as a special flag. This is ugly but + other solutions would require much more code. We test for + this special case below. */ + filename = NULL; + } + else + { + filename = pattern; +#ifdef _AMIGA + dirname = ""; +#else + dirname = "."; +#endif + dirlen = 0; + } + } + else if (filename == pattern) + { + /* "/pattern". */ + dirname = "/"; + dirlen = 1; + ++filename; + } + else + { + char *newp; + dirlen = filename - pattern; +#if defined __MSDOS__ || defined WINDOWS32 + if (*filename == ':' + || (filename > pattern + 1 && filename[-1] == ':')) + { + char *drive_spec; + + ++dirlen; + drive_spec = (char *) __alloca (dirlen + 1); +#ifdef HAVE_MEMPCPY + *((char *) mempcpy (drive_spec, pattern, dirlen)) = '\0'; +#else + memcpy (drive_spec, pattern, dirlen); + drive_spec[dirlen] = '\0'; +#endif + /* For now, disallow wildcards in the drive spec, to + prevent infinite recursion in glob. */ + if (__glob_pattern_p (drive_spec, !(flags & GLOB_NOESCAPE))) + return GLOB_NOMATCH; + /* If this is "d:pattern", we need to copy `:' to DIRNAME + as well. If it's "d:/pattern", don't remove the slash + from "d:/", since "d:" and "d:/" are not the same.*/ + } +#endif + newp = (char *) __alloca (dirlen + 1); +#ifdef HAVE_MEMPCPY + *((char *) mempcpy (newp, pattern, dirlen)) = '\0'; +#else + memcpy (newp, pattern, dirlen); + newp[dirlen] = '\0'; +#endif + dirname = newp; + ++filename; + + if (filename[0] == '\0' +#if defined __MSDOS__ || defined WINDOWS32 + && dirname[dirlen - 1] != ':' + && (dirlen < 3 || dirname[dirlen - 2] != ':' + || dirname[dirlen - 1] != '/') +#endif + && dirlen > 1) + /* "pattern/". Expand "pattern", appending slashes. */ + { + int val = glob (dirname, flags | GLOB_MARK, errfunc, pglob); + if (val == 0) + pglob->gl_flags = ((pglob->gl_flags & ~GLOB_MARK) + | (flags & GLOB_MARK)); + return val; + } + } + + if (!(flags & GLOB_APPEND)) + { + pglob->gl_pathc = 0; + pglob->gl_pathv = NULL; + } + + oldcount = pglob->gl_pathc; + +#ifndef VMS + if ((flags & (GLOB_TILDE|GLOB_TILDE_CHECK)) && dirname[0] == '~') + { + if (dirname[1] == '\0' || dirname[1] == '/') + { + /* Look up home directory. */ +#ifdef VMS +/* This isn't obvious, RTLs of DECC and VAXC know about "HOME" */ + const char *home_dir = getenv ("SYS$LOGIN"); +#else + const char *home_dir = getenv ("HOME"); +#endif +# ifdef _AMIGA + if (home_dir == NULL || home_dir[0] == '\0') + home_dir = "SYS:"; +# else +# ifdef WINDOWS32 + if (home_dir == NULL || home_dir[0] == '\0') + home_dir = "c:/users/default"; /* poor default */ +# else +# ifdef VMS +/* Again, this isn't obvious, if "HOME" isn't known "SYS$LOGIN" should be set */ + if (home_dir == NULL || home_dir[0] == '\0') + home_dir = "SYS$DISK:[]"; +# else + if (home_dir == NULL || home_dir[0] == '\0') + { + int success; + char *name; +# if defined HAVE_GETLOGIN_R || defined _LIBC + size_t buflen = sysconf (_SC_LOGIN_NAME_MAX) + 1; + + if (buflen == 0) + /* `sysconf' does not support _SC_LOGIN_NAME_MAX. Try + a moderate value. */ + buflen = 20; + name = (char *) __alloca (buflen); + + success = getlogin_r (name, buflen) >= 0; +# else + success = (name = getlogin ()) != NULL; +# endif + if (success) + { + struct passwd *p; +# if defined HAVE_GETPWNAM_R || defined _LIBC + size_t pwbuflen = sysconf (_SC_GETPW_R_SIZE_MAX); + char *pwtmpbuf; + struct passwd pwbuf; + int save = errno; + + if (pwbuflen == -1) + /* `sysconf' does not support _SC_GETPW_R_SIZE_MAX. + Try a moderate value. */ + pwbuflen = 1024; + pwtmpbuf = (char *) __alloca (pwbuflen); + + while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p) + != 0) + { + if (errno != ERANGE) + { + p = NULL; + break; + } + pwbuflen *= 2; + pwtmpbuf = (char *) __alloca (pwbuflen); + __set_errno (save); + } +# else + p = getpwnam (name); +# endif + if (p != NULL) + home_dir = p->pw_dir; + } + } + if (home_dir == NULL || home_dir[0] == '\0') + { + if (flags & GLOB_TILDE_CHECK) + return GLOB_NOMATCH; + else + home_dir = "~"; /* No luck. */ + } +# endif /* VMS */ +# endif /* WINDOWS32 */ +# endif + /* Now construct the full directory. */ + if (dirname[1] == '\0') + dirname = home_dir; + else + { + char *newp; + size_t home_len = strlen (home_dir); + newp = (char *) __alloca (home_len + dirlen); +# ifdef HAVE_MEMPCPY + mempcpy (mempcpy (newp, home_dir, home_len), + &dirname[1], dirlen); +# else + memcpy (newp, home_dir, home_len); + memcpy (&newp[home_len], &dirname[1], dirlen); +# endif + dirname = newp; + } + } +# if !defined _AMIGA && !defined WINDOWS32 && !defined VMS + else + { + char *end_name = strchr (dirname, '/'); + const char *user_name; + const char *home_dir; + + if (end_name == NULL) + user_name = dirname + 1; + else + { + char *newp; + newp = (char *) __alloca (end_name - dirname); +# ifdef HAVE_MEMPCPY + *((char *) mempcpy (newp, dirname + 1, end_name - dirname)) + = '\0'; +# else + memcpy (newp, dirname + 1, end_name - dirname); + newp[end_name - dirname - 1] = '\0'; +# endif + user_name = newp; + } + + /* Look up specific user's home directory. */ + { + struct passwd *p; +# if defined HAVE_GETPWNAM_R || defined _LIBC + size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX); + char *pwtmpbuf; + struct passwd pwbuf; + int save = errno; + + if (buflen == -1) + /* `sysconf' does not support _SC_GETPW_R_SIZE_MAX. Try a + moderate value. */ + buflen = 1024; + pwtmpbuf = (char *) __alloca (buflen); + + while (getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) != 0) + { + if (errno != ERANGE) + { + p = NULL; + break; + } + buflen *= 2; + pwtmpbuf = __alloca (buflen); + __set_errno (save); + } +# else + p = getpwnam (user_name); +# endif + if (p != NULL) + home_dir = p->pw_dir; + else + home_dir = NULL; + } + /* If we found a home directory use this. */ + if (home_dir != NULL) + { + char *newp; + size_t home_len = strlen (home_dir); + size_t rest_len = end_name == NULL ? 0 : strlen (end_name); + newp = (char *) __alloca (home_len + rest_len + 1); +# ifdef HAVE_MEMPCPY + *((char *) mempcpy (mempcpy (newp, home_dir, home_len), + end_name, rest_len)) = '\0'; +# else + memcpy (newp, home_dir, home_len); + memcpy (&newp[home_len], end_name, rest_len); + newp[home_len + rest_len] = '\0'; +# endif + dirname = newp; + } + else + if (flags & GLOB_TILDE_CHECK) + /* We have to regard it as an error if we cannot find the + home directory. */ + return GLOB_NOMATCH; + } +# endif /* Not Amiga && not WINDOWS32 && not VMS. */ + } +#endif /* Not VMS. */ + + /* Now test whether we looked for "~" or "~NAME". In this case we + can give the answer now. */ + if (filename == NULL) + { + struct stat st; + + /* Return the directory if we don't check for error or if it exists. */ + if ((flags & GLOB_NOCHECK) + || (((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_stat) (dirname, &st) + : __stat (dirname, &st)) == 0 + && S_ISDIR (st.st_mode))) + { + pglob->gl_pathv + = (char **) realloc (pglob->gl_pathv, + (pglob->gl_pathc + + ((flags & GLOB_DOOFFS) ? + pglob->gl_offs : 0) + + 1 + 1) * + sizeof (char *)); + if (pglob->gl_pathv == NULL) + return GLOB_NOSPACE; + + if (flags & GLOB_DOOFFS) + while (pglob->gl_pathc < pglob->gl_offs) + pglob->gl_pathv[pglob->gl_pathc++] = NULL; + +#if defined HAVE_STRDUP || defined _LIBC + pglob->gl_pathv[pglob->gl_pathc] = strdup (dirname); +#else + { + size_t len = strlen (dirname) + 1; + char *dircopy = malloc (len); + if (dircopy != NULL) + pglob->gl_pathv[pglob->gl_pathc] = memcpy (dircopy, dirname, + len); + } +#endif + if (pglob->gl_pathv[pglob->gl_pathc] == NULL) + { + free (pglob->gl_pathv); + return GLOB_NOSPACE; + } + pglob->gl_pathv[++pglob->gl_pathc] = NULL; + pglob->gl_flags = flags; + + return 0; + } + + /* Not found. */ + return GLOB_NOMATCH; + } + + if (__glob_pattern_p (dirname, !(flags & GLOB_NOESCAPE))) + { + /* The directory name contains metacharacters, so we + have to glob for the directory, and then glob for + the pattern in each directory found. */ + glob_t dirs; + register size_t i; + + status = glob (dirname, + ((flags & (GLOB_ERR | GLOB_NOCHECK | GLOB_NOESCAPE)) + | GLOB_NOSORT | GLOB_ONLYDIR), + errfunc, &dirs); + if (status != 0) + return status; + + /* We have successfully globbed the preceding directory name. + For each name we found, call glob_in_dir on it and FILENAME, + appending the results to PGLOB. */ + for (i = 0; i < dirs.gl_pathc; ++i) + { + int old_pathc; + +#ifdef SHELL + { + /* Make globbing interruptible in the bash shell. */ + extern int interrupt_state; + + if (interrupt_state) + { + globfree (&dirs); + globfree (&files); + return GLOB_ABORTED; + } + } +#endif /* SHELL. */ + + old_pathc = pglob->gl_pathc; + status = glob_in_dir (filename, dirs.gl_pathv[i], + ((flags | GLOB_APPEND) + & ~(GLOB_NOCHECK | GLOB_ERR)), + errfunc, pglob); + if (status == GLOB_NOMATCH) + /* No matches in this directory. Try the next. */ + continue; + + if (status != 0) + { + globfree (&dirs); + globfree (pglob); + return status; + } + + /* Stick the directory on the front of each name. */ + if (prefix_array (dirs.gl_pathv[i], + &pglob->gl_pathv[old_pathc], + pglob->gl_pathc - old_pathc)) + { + globfree (&dirs); + globfree (pglob); + return GLOB_NOSPACE; + } + } + + flags |= GLOB_MAGCHAR; + + /* We have ignored the GLOB_NOCHECK flag in the `glob_in_dir' calls. + But if we have not found any matching entry and thie GLOB_NOCHECK + flag was set we must return the list consisting of the disrectory + names followed by the filename. */ + if (pglob->gl_pathc == oldcount) + { + /* No matches. */ + if (flags & GLOB_NOCHECK) + { + size_t filename_len = strlen (filename) + 1; + char **new_pathv; + struct stat st; + + /* This is an pessimistic guess about the size. */ + pglob->gl_pathv + = (char **) realloc (pglob->gl_pathv, + (pglob->gl_pathc + + ((flags & GLOB_DOOFFS) ? + pglob->gl_offs : 0) + + dirs.gl_pathc + 1) * + sizeof (char *)); + if (pglob->gl_pathv == NULL) + { + globfree (&dirs); + return GLOB_NOSPACE; + } + + if (flags & GLOB_DOOFFS) + while (pglob->gl_pathc < pglob->gl_offs) + pglob->gl_pathv[pglob->gl_pathc++] = NULL; + + for (i = 0; i < dirs.gl_pathc; ++i) + { + const char *dir = dirs.gl_pathv[i]; + size_t dir_len = strlen (dir); + + /* First check whether this really is a directory. */ + if (((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_stat) (dir, &st) : __stat (dir, &st)) != 0 + || !S_ISDIR (st.st_mode)) + /* No directory, ignore this entry. */ + continue; + + pglob->gl_pathv[pglob->gl_pathc] = malloc (dir_len + 1 + + filename_len); + if (pglob->gl_pathv[pglob->gl_pathc] == NULL) + { + globfree (&dirs); + globfree (pglob); + return GLOB_NOSPACE; + } + +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (mempcpy (pglob->gl_pathv[pglob->gl_pathc], + dir, dir_len), + "/", 1), + filename, filename_len); +#else + memcpy (pglob->gl_pathv[pglob->gl_pathc], dir, dir_len); + pglob->gl_pathv[pglob->gl_pathc][dir_len] = '/'; + memcpy (&pglob->gl_pathv[pglob->gl_pathc][dir_len + 1], + filename, filename_len); +#endif + ++pglob->gl_pathc; + } + + pglob->gl_pathv[pglob->gl_pathc] = NULL; + pglob->gl_flags = flags; + + /* Now we know how large the gl_pathv vector must be. */ + new_pathv = (char **) realloc (pglob->gl_pathv, + ((pglob->gl_pathc + 1) + * sizeof (char *))); + if (new_pathv != NULL) + pglob->gl_pathv = new_pathv; + } + else + return GLOB_NOMATCH; + } + + globfree (&dirs); + } + else + { + status = glob_in_dir (filename, dirname, flags, errfunc, pglob); + if (status != 0) + return status; + + if (dirlen > 0) + { + /* Stick the directory on the front of each name. */ + size_t ignore = oldcount; + + if ((flags & GLOB_DOOFFS) && ignore < pglob->gl_offs) + ignore = pglob->gl_offs; + + if (prefix_array (dirname, + &pglob->gl_pathv[ignore], + pglob->gl_pathc - ignore)) + { + globfree (pglob); + return GLOB_NOSPACE; + } + } + } + + if (flags & GLOB_MARK) + { + /* Append slashes to directory names. */ + size_t i; + struct stat st; + for (i = oldcount; i < pglob->gl_pathc; ++i) + if (((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_stat) (pglob->gl_pathv[i], &st) + : __stat (pglob->gl_pathv[i], &st)) == 0 + && S_ISDIR (st.st_mode)) + { + size_t len = strlen (pglob->gl_pathv[i]) + 2; + char *new = realloc (pglob->gl_pathv[i], len); + if (new == NULL) + { + globfree (pglob); + return GLOB_NOSPACE; + } + strcpy (&new[len - 2], "/"); + pglob->gl_pathv[i] = new; + } + } + + if (!(flags & GLOB_NOSORT)) + { + /* Sort the vector. */ + int non_sort = oldcount; + + if ((flags & GLOB_DOOFFS) && pglob->gl_offs > oldcount) + non_sort = pglob->gl_offs; + + qsort ((__ptr_t) &pglob->gl_pathv[non_sort], + pglob->gl_pathc - non_sort, + sizeof (char *), collated_compare); + } + + return 0; +} + + +/* Free storage allocated in PGLOB by a previous `glob' call. */ +void +globfree (pglob) + register glob_t *pglob; +{ + if (pglob->gl_pathv != NULL) + { + register size_t i; + for (i = 0; i < pglob->gl_pathc; ++i) + if (pglob->gl_pathv[i] != NULL) + free ((__ptr_t) pglob->gl_pathv[i]); + free ((__ptr_t) pglob->gl_pathv); + } +} + + +/* Do a collated comparison of A and B. */ +static int +collated_compare (a, b) + const __ptr_t a; + const __ptr_t b; +{ + const char *const s1 = *(const char *const * const) a; + const char *const s2 = *(const char *const * const) b; + + if (s1 == s2) + return 0; + if (s1 == NULL) + return 1; + if (s2 == NULL) + return -1; + return strcoll (s1, s2); +} + + +/* Prepend DIRNAME to each of N members of ARRAY, replacing ARRAY's + elements in place. Return nonzero if out of memory, zero if successful. + A slash is inserted between DIRNAME and each elt of ARRAY, + unless DIRNAME is just "/". Each old element of ARRAY is freed. */ +static int +prefix_array (dirname, array, n) + const char *dirname; + char **array; + size_t n; +{ + register size_t i; + size_t dirlen = strlen (dirname); +#if defined __MSDOS__ || defined WINDOWS32 + int sep_char = '/'; +# define DIRSEP_CHAR sep_char +#else +# define DIRSEP_CHAR '/' +#endif + + if (dirlen == 1 && dirname[0] == '/') + /* DIRNAME is just "/", so normal prepending would get us "//foo". + We want "/foo" instead, so don't prepend any chars from DIRNAME. */ + dirlen = 0; +#if defined __MSDOS__ || defined WINDOWS32 + else if (dirlen > 1) + { + if (dirname[dirlen - 1] == '/' && dirname[dirlen - 2] == ':') + /* DIRNAME is "d:/". Don't prepend the slash from DIRNAME. */ + --dirlen; + else if (dirname[dirlen - 1] == ':') + { + /* DIRNAME is "d:". Use `:' instead of `/'. */ + --dirlen; + sep_char = ':'; + } + } +#endif + + for (i = 0; i < n; ++i) + { + size_t eltlen = strlen (array[i]) + 1; + char *new = (char *) malloc (dirlen + 1 + eltlen); + if (new == NULL) + { + while (i > 0) + free ((__ptr_t) array[--i]); + return 1; + } + +#ifdef HAVE_MEMPCPY + { + char *endp = (char *) mempcpy (new, dirname, dirlen); + *endp++ = DIRSEP_CHAR; + mempcpy (endp, array[i], eltlen); + } +#else + memcpy (new, dirname, dirlen); + new[dirlen] = DIRSEP_CHAR; + memcpy (&new[dirlen + 1], array[i], eltlen); +#endif + free ((__ptr_t) array[i]); + array[i] = new; + } + + return 0; +} + + +/* We must not compile this function twice. */ +#if !defined _LIBC || !defined NO_GLOB_PATTERN_P +/* Return nonzero if PATTERN contains any metacharacters. + Metacharacters can be quoted with backslashes if QUOTE is nonzero. */ +int +__glob_pattern_p (pattern, quote) + const char *pattern; + int quote; +{ + register const char *p; + int open = 0; + + for (p = pattern; *p != '\0'; ++p) + switch (*p) + { + case '?': + case '*': + return 1; + + case '\\': + if (quote && p[1] != '\0') + ++p; + break; + + case '[': + open = 1; + break; + + case ']': + if (open) + return 1; + break; + } + + return 0; +} +# ifdef _LIBC +weak_alias (__glob_pattern_p, glob_pattern_p) +# endif +#endif + + +/* Like `glob', but PATTERN is a final pathname component, + and matches are searched for in DIRECTORY. + The GLOB_NOSORT bit in FLAGS is ignored. No sorting is ever done. + The GLOB_APPEND flag is assumed to be set (always appends). */ +static int +glob_in_dir (pattern, directory, flags, errfunc, pglob) + const char *pattern; + const char *directory; + int flags; + int (*errfunc) __P ((const char *, int)); + glob_t *pglob; +{ + __ptr_t stream = NULL; + + struct globlink + { + struct globlink *next; + char *name; + }; + struct globlink *names = NULL; + size_t nfound; + int meta; + int save; + +#ifdef VMS + if (*directory == 0) + directory = "[]"; +#endif + meta = __glob_pattern_p (pattern, !(flags & GLOB_NOESCAPE)); + if (meta == 0) + { + if (flags & (GLOB_NOCHECK|GLOB_NOMAGIC)) + /* We need not do any tests. The PATTERN contains no meta + characters and we must not return an error therefore the + result will always contain exactly one name. */ + flags |= GLOB_NOCHECK; + else + { + /* Since we use the normal file functions we can also use stat() + to verify the file is there. */ + struct stat st; + size_t patlen = strlen (pattern); + size_t dirlen = strlen (directory); + char *fullname = (char *) __alloca (dirlen + 1 + patlen + 1); + +# ifdef HAVE_MEMPCPY + mempcpy (mempcpy (mempcpy (fullname, directory, dirlen), + "/", 1), + pattern, patlen + 1); +# else + memcpy (fullname, directory, dirlen); + fullname[dirlen] = '/'; + memcpy (&fullname[dirlen + 1], pattern, patlen + 1); +# endif + if (((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_stat) (fullname, &st) + : __stat (fullname, &st)) == 0) + /* We found this file to be existing. Now tell the rest + of the function to copy this name into the result. */ + flags |= GLOB_NOCHECK; + } + + nfound = 0; + } + else + { + if (pattern[0] == '\0') + { + /* This is a special case for matching directories like in + "*a/". */ + names = (struct globlink *) __alloca (sizeof (struct globlink)); + names->name = (char *) malloc (1); + if (names->name == NULL) + goto memory_error; + names->name[0] = '\0'; + names->next = NULL; + nfound = 1; + meta = 0; + } + else + { + stream = ((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_opendir) (directory) + : (__ptr_t) opendir (directory)); + if (stream == NULL) + { + if (errno != ENOTDIR + && ((errfunc != NULL && (*errfunc) (directory, errno)) + || (flags & GLOB_ERR))) + return GLOB_ABORTED; + nfound = 0; + meta = 0; + } + else + { + int fnm_flags = ((!(flags & GLOB_PERIOD) ? FNM_PERIOD : 0) + | ((flags & GLOB_NOESCAPE) ? FNM_NOESCAPE : 0) +#if defined HAVE_CASE_INSENSITIVE_FS + | FNM_CASEFOLD +#endif + ); + nfound = 0; + flags |= GLOB_MAGCHAR; + + while (1) + { + const char *name; + size_t len; + struct dirent *d = ((flags & GLOB_ALTDIRFUNC) + ? (*pglob->gl_readdir) (stream) + : readdir ((DIR *) stream)); + if (d == NULL) + break; + if (! REAL_DIR_ENTRY (d)) + continue; + +#ifdef HAVE_D_TYPE + /* If we shall match only directories use the information + provided by the dirent call if possible. */ + if ((flags & GLOB_ONLYDIR) + && d->d_type != DT_UNKNOWN && d->d_type != DT_DIR && d->d_type != DT_LNK) + continue; +#endif + + name = d->d_name; + + if (fnmatch (pattern, name, fnm_flags) == 0) + { + struct globlink *new = (struct globlink *) + __alloca (sizeof (struct globlink)); + len = NAMLEN (d); + new->name = (char *) malloc (len + 1); + if (new->name == NULL) + goto memory_error; +#ifdef HAVE_MEMPCPY + *((char *) mempcpy ((__ptr_t) new->name, name, len)) + = '\0'; +#else + memcpy ((__ptr_t) new->name, name, len); + new->name[len] = '\0'; +#endif + new->next = names; + names = new; + ++nfound; + } + } + } + } + } + + if (nfound == 0 && (flags & GLOB_NOCHECK)) + { + size_t len = strlen (pattern); + nfound = 1; + names = (struct globlink *) __alloca (sizeof (struct globlink)); + names->next = NULL; + names->name = (char *) malloc (len + 1); + if (names->name == NULL) + goto memory_error; +#ifdef HAVE_MEMPCPY + *((char *) mempcpy (names->name, pattern, len)) = '\0'; +#else + memcpy (names->name, pattern, len); + names->name[len] = '\0'; +#endif + } + + if (nfound != 0) + { + pglob->gl_pathv + = (char **) realloc (pglob->gl_pathv, + (pglob->gl_pathc + + ((flags & GLOB_DOOFFS) ? pglob->gl_offs : 0) + + nfound + 1) * + sizeof (char *)); + if (pglob->gl_pathv == NULL) + goto memory_error; + + if (flags & GLOB_DOOFFS) + while (pglob->gl_pathc < pglob->gl_offs) + pglob->gl_pathv[pglob->gl_pathc++] = NULL; + + for (; names != NULL; names = names->next) + pglob->gl_pathv[pglob->gl_pathc++] = names->name; + pglob->gl_pathv[pglob->gl_pathc] = NULL; + + pglob->gl_flags = flags; + } + + save = errno; + if (stream != NULL) + { + if (flags & GLOB_ALTDIRFUNC) + (*pglob->gl_closedir) (stream); + else + closedir ((DIR *) stream); + } + __set_errno (save); + + return nfound == 0 ? GLOB_NOMATCH : 0; + + memory_error: + { + save = errno; + if (flags & GLOB_ALTDIRFUNC) + (*pglob->gl_closedir) (stream); + else + closedir ((DIR *) stream); + __set_errno (save); + } + while (names != NULL) + { + if (names->name != NULL) + free ((__ptr_t) names->name); + names = names->next; + } + return GLOB_NOSPACE; +} + +#endif /* Not ELIDE_CODE. */ diff --git a/local/recipes/dev/gnu-make/source/lib/glob.in.h b/local/recipes/dev/gnu-make/source/lib/glob.in.h new file mode 100644 index 0000000000..0992de36d2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/glob.in.h @@ -0,0 +1,210 @@ +/* Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998 Free Software Foundation, +Inc. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public License +along with this library; see the file COPYING.LIB. If not, write to the Free +Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +USA. */ + +#ifndef _GLOB_H +#define _GLOB_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#undef __ptr_t +#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 +# if !defined __GLIBC__ +# undef __P +# undef __PMT +# define __P(protos) protos +# define __PMT(protos) protos +# if !defined __GNUC__ || __GNUC__ < 2 +# undef __const +# define __const const +# endif +# endif +# define __ptr_t void * +#else /* Not C++ or ANSI C. */ +# undef __P +# undef __PMT +# define __P(protos) () +# define __PMT(protos) () +# undef __const +# define __const +# define __ptr_t char * +#endif /* C++ or ANSI C. */ + +/* We need `size_t' for the following definitions. */ +#ifndef __size_t +# if defined __FreeBSD__ +# define __size_t size_t +# else +# if defined __GNUC__ && __GNUC__ >= 2 +typedef __SIZE_TYPE__ __size_t; +# else +/* This is a guess. */ +/*hb + * 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). + */ +# if !(defined __DECC && defined __SIZE_T) +typedef unsigned long int __size_t; +# endif +# endif +# endif +#else +/* The GNU CC stddef.h version defines __size_t as empty. We need a real + definition. */ +# undef __size_t +# define __size_t size_t +#endif + +/* Bits set in the FLAGS argument to `glob'. */ +#define GLOB_ERR (1 << 0)/* Return on read errors. */ +#define GLOB_MARK (1 << 1)/* Append a slash to each name. */ +#define GLOB_NOSORT (1 << 2)/* Don't sort the names. */ +#define GLOB_DOOFFS (1 << 3)/* Insert PGLOB->gl_offs NULLs. */ +#define GLOB_NOCHECK (1 << 4)/* If nothing matches, return the pattern. */ +#define GLOB_APPEND (1 << 5)/* Append to results of a previous call. */ +#define GLOB_NOESCAPE (1 << 6)/* Backslashes don't quote metacharacters. */ +#define GLOB_PERIOD (1 << 7)/* Leading `.' can be matched by metachars. */ + +#if (!defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _BSD_SOURCE \ + || defined _GNU_SOURCE) +# define GLOB_MAGCHAR (1 << 8)/* Set in gl_flags if any metachars seen. */ +# define GLOB_ALTDIRFUNC (1 << 9)/* Use gl_opendir et al functions. */ +# define GLOB_BRACE (1 << 10)/* Expand "{a,b}" to "a" "b". */ +# define GLOB_NOMAGIC (1 << 11)/* If no magic chars, return the pattern. */ +# define GLOB_TILDE (1 << 12)/* Expand ~user and ~ to home directories. */ +# define GLOB_ONLYDIR (1 << 13)/* Match only directories. */ +# define GLOB_TILDE_CHECK (1 << 14)/* Like GLOB_TILDE but return an error + if the user name is not available. */ +# define __GLOB_FLAGS (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \ + GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND| \ + GLOB_PERIOD|GLOB_ALTDIRFUNC|GLOB_BRACE| \ + GLOB_NOMAGIC|GLOB_TILDE|GLOB_ONLYDIR|GLOB_TILDE_CHECK) +#else +# define __GLOB_FLAGS (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \ + GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND| \ + GLOB_PERIOD) +#endif + +/* Error returns from `glob'. */ +#define GLOB_NOSPACE 1 /* Ran out of memory. */ +#define GLOB_ABORTED 2 /* Read error. */ +#define GLOB_NOMATCH 3 /* No matches found. */ +#define GLOB_NOSYS 4 /* Not implemented. */ +#ifdef _GNU_SOURCE +/* Previous versions of this file defined GLOB_ABEND instead of + GLOB_ABORTED. Provide a compatibility definition here. */ +# define GLOB_ABEND GLOB_ABORTED +#endif + +/* Structure describing a globbing run. */ +#if !defined _AMIGA && !defined VMS /* Buggy compiler. */ +struct stat; +#endif +typedef struct + { + __size_t gl_pathc; /* Count of paths matched by the pattern. */ + char **gl_pathv; /* List of matched pathnames. */ + __size_t gl_offs; /* Slots to reserve in `gl_pathv'. */ + int gl_flags; /* Set to FLAGS, maybe | GLOB_MAGCHAR. */ + + /* If the GLOB_ALTDIRFUNC flag is set, the following functions + are used instead of the normal file access functions. */ + void (*gl_closedir) __PMT ((void *)); + struct dirent *(*gl_readdir) __PMT ((void *)); + __ptr_t (*gl_opendir) __PMT ((__const char *)); + int (*gl_lstat) __PMT ((__const char *, struct stat *)); +#if defined(VMS) && defined(__DECC) && !defined(_POSIX_C_SOURCE) + int (*gl_stat) __PMT ((__const char *, struct stat *, ...)); +#else + int (*gl_stat) __PMT ((__const char *, struct stat *)); +#endif + } glob_t; + +#ifdef _LARGEFILE64_SOURCE +struct stat64; +typedef struct + { + __size_t gl_pathc; + char **gl_pathv; + __size_t gl_offs; + int gl_flags; + + /* If the GLOB_ALTDIRFUNC flag is set, the following functions + are used instead of the normal file access functions. */ + void (*gl_closedir) __PMT ((void *)); + struct dirent64 *(*gl_readdir) __PMT ((void *)); + __ptr_t (*gl_opendir) __PMT ((__const char *)); + int (*gl_lstat) __PMT ((__const char *, struct stat64 *)); + int (*gl_stat) __PMT ((__const char *, struct stat64 *)); + } glob64_t; +#endif + +#if _FILE_OFFSET_BITS == 64 && __GNUC__ < 2 +# define glob glob64 +# define globfree globfree64 +#else +# ifdef _LARGEFILE64_SOURCE +extern int glob64 __P ((__const char *__pattern, int __flags, + int (*__errfunc) (__const char *, int), + glob64_t *__pglob)); + +extern void globfree64 __P ((glob64_t *__pglob)); +# endif +#endif + +/* Do glob searching for PATTERN, placing results in PGLOB. + The bits defined above may be set in FLAGS. + If a directory cannot be opened or read and ERRFUNC is not nil, + it is called with the pathname that caused the error, and the + `errno' value from the failing call; if it returns non-zero + `glob' returns GLOB_ABEND; if it returns zero, the error is ignored. + If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. + Otherwise, `glob' returns zero. */ +#if _FILE_OFFSET_BITS != 64 || __GNUC__ < 2 +extern int glob __P ((__const char *__pattern, int __flags, + int (*__errfunc) (__const char *, int), + glob_t *__pglob)); + +/* Free storage allocated in PGLOB by a previous `glob' call. */ +extern void globfree __P ((glob_t *__pglob)); +#else +extern int glob __P ((__const char *__pattern, int __flags, + int (*__errfunc) (__const char *, int), + glob_t *__pglob)) __asm__ ("glob64"); + +extern void globfree __P ((glob_t *__pglob)) __asm__ ("globfree64"); +#endif + + +#ifdef _GNU_SOURCE +/* Return nonzero if PATTERN contains any metacharacters. + Metacharacters can be quoted with backslashes if QUOTE is nonzero. + + This function is not part of the interface specified by POSIX.2 + but several programs want to use it. */ +extern int glob_pattern_p __P ((__const char *__pattern, int __quote)); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* glob.h */ diff --git a/local/recipes/dev/gnu-make/source/lib/intprops.h b/local/recipes/dev/gnu-make/source/lib/intprops.h new file mode 100644 index 0000000000..d4a917f72a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/intprops.h @@ -0,0 +1,642 @@ +/* intprops.h -- properties of integer types + + Copyright (C) 2001-2022 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + + +#ifndef _GL_INTPROPS_H +#define _GL_INTPROPS_H + +#include + +/* Return a value with the common real type of E and V and the value of V. + Do not evaluate E. */ +#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v)) + +/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see + . */ +#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v)) + +/* The extra casts in the following macros work around compiler bugs, + e.g., in Cray C 5.0.3.0. */ + +/* True if the arithmetic type T is an integer type. bool counts as + an integer. */ +#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) + +/* True if the real type T is signed. */ +#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* Return 1 if the real expression E, after promotion, has a + signed or floating type. Do not evaluate E. */ +#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) + + +/* Minimum and maximum values for integer types and expressions. */ + +/* The width in bits of the integer type or expression T. + Do not evaluate T. T must not be a bit-field expression. + Padding bits are not supported; this is checked at compile-time below. */ +#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) + +/* The maximum and minimum values for the integer type T. */ +#define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) +#define TYPE_MAXIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) -1 \ + : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) + +/* The maximum and minimum values for the type of the expression E, + after integer promotion. E is not evaluated. */ +#define _GL_INT_MINIMUM(e) \ + (EXPR_SIGNED (e) \ + ? ~ _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_CONVERT (e, 0)) +#define _GL_INT_MAXIMUM(e) \ + (EXPR_SIGNED (e) \ + ? _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_NEGATE_CONVERT (e, 1)) +#define _GL_SIGNED_INT_MAXIMUM(e) \ + (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1) + +/* Work around OpenVMS incompatibility with C99. */ +#if !defined LLONG_MAX && defined __INT64_MAX +# define LLONG_MAX __INT64_MAX +# define LLONG_MIN __INT64_MIN +#endif + +/* This include file assumes that signed types are two's complement without + padding bits; the above macros have undefined behavior otherwise. + If this is a problem for you, please let us know how to fix it for your host. + This assumption is tested by the intprops-tests module. */ + +/* Does the __typeof__ keyword work? This could be done by + 'configure', but for now it's easier to do it by hand. */ +#if (2 <= __GNUC__ \ + || (4 <= __clang_major__) \ + || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ + || (0x5110 <= __SUNPRO_C && !__STDC__)) +# define _GL_HAVE___TYPEOF__ 1 +#else +# define _GL_HAVE___TYPEOF__ 0 +#endif + +/* Return 1 if the integer type or expression T might be signed. Return 0 + if it is definitely unsigned. T must not be a bit-field expression. + This macro does not evaluate its argument, and expands to an + integer constant expression. */ +#if _GL_HAVE___TYPEOF__ +# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t)) +#else +# define _GL_SIGNED_TYPE_OR_EXPR(t) 1 +#endif + +/* Bound on length of the string representing an unsigned integer + value representable in B bits. log10 (2.0) < 146/485. The + smallest value of B where this bound is not tight is 2621. */ +#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) + +/* Bound on length of the string representing an integer type or expression T. + T must not be a bit-field expression. + + Subtract 1 for the sign bit if T is signed, and then add 1 more for + a minus sign if needed. + + Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 1 when its argument is + unsigned, this macro may overestimate the true bound by one byte when + applied to unsigned types of size 2, 4, 16, ... bytes. */ +#define INT_STRLEN_BOUND(t) \ + (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - _GL_SIGNED_TYPE_OR_EXPR (t)) \ + + _GL_SIGNED_TYPE_OR_EXPR (t)) + +/* Bound on buffer size needed to represent an integer type or expression T, + including the terminating null. T must not be a bit-field expression. */ +#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) + + +/* Range overflow checks. + + The INT__RANGE_OVERFLOW macros return 1 if the corresponding C + operators might not yield numerically correct answers due to + arithmetic overflow. They do not rely on undefined or + implementation-defined behavior. Their implementations are simple + and straightforward, but they are harder to use and may be less + efficient than the INT__WRAPV, INT__OK, and + INT__OVERFLOW macros described below. + + Example usage: + + long int i = ...; + long int j = ...; + if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX)) + printf ("multiply would overflow"); + else + printf ("product is %ld", i * j); + + Restrictions on *_RANGE_OVERFLOW macros: + + These macros do not check for all possible numerical problems or + undefined or unspecified behavior: they do not check for division + by zero, for bad shift counts, or for shifting negative numbers. + + These macros may evaluate their arguments zero or multiple times, + so the arguments should not have side effects. The arithmetic + arguments (including the MIN and MAX arguments) must be of the same + integer type after the usual arithmetic conversions, and the type + must have minimum value MIN and maximum MAX. Unsigned types should + use a zero MIN of the proper type. + + Because all arguments are subject to integer promotions, these + macros typically do not work on types narrower than 'int'. + + These macros are tuned for constant MIN and MAX. For commutative + operations such as A + B, they are also tuned for constant B. */ + +/* Return 1 if A + B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. */ +#define INT_ADD_RANGE_OVERFLOW(a, b, min, max) \ + ((b) < 0 \ + ? (a) < (min) - (b) \ + : (max) - (b) < (a)) + +/* Return 1 if A - B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. */ +#define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max) \ + ((b) < 0 \ + ? (max) + (b) < (a) \ + : (a) < (min) + (b)) + +/* Return 1 if - A would overflow in [MIN,MAX] arithmetic. + See above for restrictions. */ +#define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ + ((min) < 0 \ + ? (a) < - (max) \ + : 0 < (a)) + +/* Return 1 if A * B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. Avoid && and || as they tickle + bugs in Sun C 5.11 2010/08/13 and other compilers; see + . */ +#define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max) \ + ((b) < 0 \ + ? ((a) < 0 \ + ? (a) < (max) / (b) \ + : (b) == -1 \ + ? 0 \ + : (min) / (b) < (a)) \ + : (b) == 0 \ + ? 0 \ + : ((a) < 0 \ + ? (a) < (min) / (b) \ + : (max) / (b) < (a))) + +/* Return 1 if A / B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. Do not check for division by zero. */ +#define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max) \ + ((min) < 0 && (b) == -1 && (a) < - (max)) + +/* Return 1 if A % B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. Do not check for division by zero. + Mathematically, % should never overflow, but on x86-like hosts + INT_MIN % -1 traps, and the C standard permits this, so treat this + as an overflow too. */ +#define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max) \ + INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max) + +/* Return 1 if A << B would overflow in [MIN,MAX] arithmetic. + See above for restrictions. Here, MIN and MAX are for A only, and B need + not be of the same type as the other arguments. The C standard says that + behavior is undefined for shifts unless 0 <= B < wordwidth, and that when + A is negative then A << B has undefined behavior and A >> B has + implementation-defined behavior, but do not check these other + restrictions. */ +#define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max) \ + ((a) < 0 \ + ? (a) < (min) >> (b) \ + : (max) >> (b) < (a)) + +/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow + (A, B, P) work when P is non-null. */ +#ifdef __EDG__ +/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned + . */ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) +/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, + see . */ +#elif 7 <= __GNUC__ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 +#else +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#endif + +/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ +#if defined __clang_major__ && __clang_major__ < 14 +/* Work around Clang bug . */ +# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 +#else +# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW +#endif + +/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for + __builtin_sub_overflow_p and __builtin_mul_overflow_p. */ +#ifdef __EDG__ +/* In EDG-based compilers like ICC 2021.3 and earlier, + __builtin_add_overflow_p etc. are not treated as integral constant + expressions even when all arguments are. */ +# define _GL_HAS_BUILTIN_OVERFLOW_P 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_OVERFLOW_P __has_builtin (__builtin_mul_overflow_p) +#else +# define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) +#endif + +/* The _GL*_OVERFLOW macros have the same restrictions as the + *_RANGE_OVERFLOW macros, except that they do not assume that operands + (e.g., A and B) have the same type as MIN and MAX. Instead, they assume + that the result (e.g., A + B) has that type. */ +#if _GL_HAS_BUILTIN_OVERFLOW_P +# define _GL_ADD_OVERFLOW(a, b, min, max) \ + __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0) +# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ + __builtin_sub_overflow_p (a, b, (__typeof__ ((a) - (b))) 0) +# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ + __builtin_mul_overflow_p (a, b, (__typeof__ ((a) * (b))) 0) +#else +# define _GL_ADD_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ + : (a) < 0 ? (b) <= (a) + (b) \ + : (b) < 0 ? (a) <= (a) + (b) \ + : (a) + (b) < (b)) +# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \ + : (a) < 0 ? 1 \ + : (b) < 0 ? (a) - (b) <= (a) \ + : (a) < (b)) +# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ + (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \ + || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max)) +#endif +#define _GL_DIVIDE_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ + : (a) < 0 ? (b) <= (a) + (b) - 1 \ + : (b) < 0 && (a) + (b) <= (a)) +#define _GL_REMAINDER_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ + : (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b) \ + : (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max)) + +/* Return a nonzero value if A is a mathematical multiple of B, where + A is unsigned, B is negative, and MAX is the maximum value of A's + type. A's type must be the same as (A % B)'s type. Normally (A % + -B == 0) suffices, but things get tricky if -B would overflow. */ +#define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max) \ + (((b) < -_GL_SIGNED_INT_MAXIMUM (b) \ + ? (_GL_SIGNED_INT_MAXIMUM (b) == (max) \ + ? (a) \ + : (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1)) \ + : (a) % - (b)) \ + == 0) + +/* Check for integer overflow, and report low order bits of answer. + + The INT__OVERFLOW macros return 1 if the corresponding C operators + might not yield numerically correct answers due to arithmetic overflow. + The INT__WRAPV macros compute the low-order bits of the sum, + difference, and product of two C integers, and return 1 if these + low-order bits are not numerically correct. + These macros work correctly on all known practical hosts, and do not rely + on undefined behavior due to signed arithmetic overflow. + + Example usage, assuming A and B are long int: + + if (INT_MULTIPLY_OVERFLOW (a, b)) + printf ("result would overflow\n"); + else + printf ("result is %ld (no overflow)\n", a * b); + + Example usage with WRAPV flavor: + + long int result; + bool overflow = INT_MULTIPLY_WRAPV (a, b, &result); + printf ("result is %ld (%s)\n", result, + overflow ? "after overflow" : "no overflow"); + + Restrictions on these macros: + + These macros do not check for all possible numerical problems or + undefined or unspecified behavior: they do not check for division + by zero, for bad shift counts, or for shifting negative numbers. + + These macros may evaluate their arguments zero or multiple times, so the + arguments should not have side effects. + + The WRAPV macros are not constant expressions. They support only + +, binary -, and *. + + Because the WRAPV macros convert the result, they report overflow + in different circumstances than the OVERFLOW macros do. For + example, in the typical case with 16-bit 'short' and 32-bit 'int', + if A, B and R are all of type 'short' then INT_ADD_OVERFLOW (A, B) + returns false because the addition cannot overflow after A and B + are converted to 'int', whereas INT_ADD_WRAPV (A, B, &R) returns + true or false depending on whether the sum fits into 'short'. + + These macros are tuned for their last input argument being a constant. + + Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, + A % B, and A << B would overflow, respectively. */ + +#define INT_ADD_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) +#define INT_SUBTRACT_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) +#if _GL_HAS_BUILTIN_OVERFLOW_P +# define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) +#else +# define INT_NEGATE_OVERFLOW(a) \ + INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) +#endif +#define INT_MULTIPLY_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW) +#define INT_DIVIDE_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW) +#define INT_REMAINDER_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW) +#define INT_LEFT_SHIFT_OVERFLOW(a, b) \ + INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \ + _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) + +/* Return 1 if the expression A B would overflow, + where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test, + assuming MIN and MAX are the minimum and maximum for the result type. + Arguments should be free of side effects. */ +#define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow) \ + op_result_overflow (a, b, \ + _GL_INT_MINIMUM (_GL_INT_CONVERT (a, b)), \ + _GL_INT_MAXIMUM (_GL_INT_CONVERT (a, b))) + +/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. + Return 1 if the result overflows. See above for restrictions. */ +#if _GL_HAS_BUILTIN_ADD_OVERFLOW +# define INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r) +# define INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r) +#else +# define INT_ADD_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW) +# define INT_SUBTRACT_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW) +#endif +#if _GL_HAS_BUILTIN_MUL_OVERFLOW +# if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \ + || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \ + && !defined __EDG__) +# define INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) +# else + /* Work around GCC bug 91450. */ +# define INT_MULTIPLY_WRAPV(a, b, r) \ + ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && EXPR_SIGNED (a) && EXPR_SIGNED (b) \ + && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \ + ? ((void) __builtin_mul_overflow (a, b, r), 1) \ + : __builtin_mul_overflow (a, b, r)) +# endif +#else +# define INT_MULTIPLY_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW) +#endif + +/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 + https://llvm.org/bugs/show_bug.cgi?id=25390 + For now, assume all versions of GCC-like compilers generate bogus + warnings for _Generic. This matters only for compilers that + lack relevant builtins. */ +#if __GNUC__ || defined __clang__ +# define _GL__GENERIC_BOGUS 1 +#else +# define _GL__GENERIC_BOGUS 0 +#endif + +/* Store the low-order bits of A B into *R, where OP specifies + the operation and OVERFLOW the overflow predicate. Return 1 if the + result overflows. See above for restrictions. */ +#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ + (_Generic \ + (*(r), \ + signed char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + signed char, SCHAR_MIN, SCHAR_MAX), \ + unsigned char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned char, 0, UCHAR_MAX), \ + short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + short int, SHRT_MIN, SHRT_MAX), \ + unsigned short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned short int, 0, USHRT_MAX), \ + int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX), \ + unsigned int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX), \ + long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX), \ + unsigned long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX), \ + long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX), \ + unsigned long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +#else +/* Store the low-order bits of A B into *R, where OP specifies + the operation and OVERFLOW the overflow predicate. If *R is + signed, its type is ST with bounds SMIN..SMAX; otherwise its type + is UT with bounds U..UMAX. ST and UT are narrower than int. + Return 1 if the result overflows. See above for restrictions. */ +# if _GL_HAVE___TYPEOF__ +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (TYPE_SIGNED (__typeof__ (*(r))) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax)) +# else +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (overflow (a, b, smin, smax) \ + ? (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \ + : (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) +# endif + +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (signed char) \ + ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ + signed char, SCHAR_MIN, SCHAR_MAX, \ + unsigned char, UCHAR_MAX) \ + : sizeof *(r) == sizeof (short int) \ + ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ + short int, SHRT_MIN, SHRT_MAX, \ + unsigned short int, USHRT_MAX) \ + : sizeof *(r) == sizeof (int) \ + ? (EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX)) \ + : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) +# ifdef LLONG_MAX +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (long int) \ + ? (EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) \ + : (EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +# else +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) +# endif +#endif + +/* Store the low-order bits of A B into *R, where the operation + is given by OP. Use the unsigned type UT for calculation to avoid + overflow problems. *R's type is T, with extrema TMIN and TMAX. + T must be a signed integer type. Return 1 if the result overflows. */ +#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ + (overflow (a, b, tmin, tmax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0)) + +/* Return the low-order bits of A B, where the operation is given + by OP. Use the unsigned type UT for calculation to avoid undefined + behavior on signed integer overflow, and convert the result to type T. + UT is at least as wide as T and is no narrower than unsigned int, + T is two's complement, and there is no padding or trap representations. + Assume that converting UT to T yields the low-order bits, as is + done in all known two's-complement C compilers. E.g., see: + https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html + + According to the C standard, converting UT to T yields an + implementation-defined result or signal for values outside T's + range. However, code that works around this theoretical problem + runs afoul of a compiler bug in Oracle Studio 12.3 x86. See: + https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html + As the compiler bug is real, don't try to work around the + theoretical problem. */ + +#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \ + ((t) ((ut) (a) op (ut) (b))) + +/* Return true if the numeric values A + B, A - B, A * B fall outside + the range TMIN..TMAX. Arguments should be integer expressions + without side effects. TMIN should be signed and nonpositive. + TMAX should be positive, and should be signed unless TMIN is zero. */ +#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? (((tmin) \ + ? ((EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \ + && (a) < (tmin) - (b)) \ + : (a) <= -1 - (b)) \ + || ((EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \ + : (a) < 0 \ + ? (((tmin) \ + ? ((EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \ + && (b) < (tmin) - (a)) \ + : (b) <= -1 - (a)) \ + || ((EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \ + && (tmax) < (a) + (b))) \ + : (tmax) < (b) || (tmax) - (b) < (a)) +#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \ + (((a) < 0) == ((b) < 0) \ + ? ((a) < (b) \ + ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \ + : (tmax) < (a) - (b)) \ + : (a) < 0 \ + ? ((!EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \ + || (a) - (tmin) < (b)) \ + : ((! (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + && EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \ + && (tmax) <= -1 - (b)) \ + || (tmax) + (b) < (a))) +#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? ((a) < 0 \ + ? (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + ? (a) < (tmax) / (b) \ + : ((INT_NEGATE_OVERFLOW (b) \ + ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (+ (b)) - 1) \ + : (tmax) / -(b)) \ + <= -1 - (a))) \ + : INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ + ? (EXPR_SIGNED (a) \ + ? 0 < (a) + (tmin) \ + : 0 < (a) && -1 - (tmin) < (a) - 1) \ + : (tmin) / (b) < (a)) \ + : (b) == 0 \ + ? 0 \ + : ((a) < 0 \ + ? (INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \ + ? (EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \ + : (tmin) / (a) < (b)) \ + : (tmax) / (b) < (a))) + +/* The following macros compute A + B, A - B, and A * B, respectively. + If no overflow occurs, they set *R to the result and return 1; + otherwise, they return 0 and may modify *R. + + Example usage: + + long int result; + if (INT_ADD_OK (a, b, &result)) + printf ("result is %ld\n", result); + else + printf ("overflow\n"); + + A, B, and *R should be integers; they need not be the same type, + and they need not be all signed or all unsigned. + + These macros work correctly on all known practical hosts, and do not rely + on undefined behavior due to signed arithmetic overflow. + + These macros are not constant expressions. + + These macros may evaluate their arguments zero or multiple times, so the + arguments should not have side effects. + + These macros are tuned for B being a constant. */ + +#define INT_ADD_OK(a, b, r) ! INT_ADD_WRAPV (a, b, r) +#define INT_SUBTRACT_OK(a, b, r) ! INT_SUBTRACT_WRAPV (a, b, r) +#define INT_MULTIPLY_OK(a, b, r) ! INT_MULTIPLY_WRAPV (a, b, r) + +#endif /* _GL_INTPROPS_H */ diff --git a/local/recipes/dev/gnu-make/source/lib/stdbool.in.h b/local/recipes/dev/gnu-make/source/lib/stdbool.in.h new file mode 100644 index 0000000000..125de5a25e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/stdbool.in.h @@ -0,0 +1,143 @@ +/* Copyright (C) 2001-2003, 2006-2022 Free Software Foundation, Inc. + Written by Bruno Haible , 2001. + + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + This file is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +#ifndef _GL_STDBOOL_H +#define _GL_STDBOOL_H + +/* ISO C 99 for platforms that lack it. */ + +/* Usage suggestions: + + Programs that use should be aware of some limitations + and standards compliance issues. + + Standards compliance: + + - must be #included before 'bool', 'false', 'true' + can be used. + + - You cannot assume that sizeof (bool) == 1. + + - Programs should not undefine the macros bool, true, and false, + as C99 lists that as an "obsolescent feature". + + Limitations of this substitute, when used in a C89 environment: + + - must be #included before the '_Bool' type can be used. + + - You cannot assume that _Bool is a typedef; it might be a macro. + + - Bit-fields of type 'bool' are not supported. Portable code + should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'. + + - In C99, casts and automatic conversions to '_Bool' or 'bool' are + performed in such a way that every nonzero value gets converted + to 'true', and zero gets converted to 'false'. This doesn't work + with this substitute. With this substitute, only the values 0 and 1 + give the expected result when converted to _Bool' or 'bool'. + + - C99 allows the use of (_Bool)0.0 in constant expressions, but + this substitute cannot always provide this property. + + Also, it is suggested that programs use 'bool' rather than '_Bool'; + this isn't required, but 'bool' is more common. */ + + +/* 7.16. Boolean type and values */ + +/* BeOS already #defines false 0, true 1. We use the same + definitions below, but temporarily we have to #undef them. */ +#if defined __BEOS__ && !defined __HAIKU__ +# include /* defines bool but not _Bool */ +# undef false +# undef true +#endif + +#ifdef __cplusplus +# if !defined _MSC_VER +# define _Bool bool +# define bool bool +# endif +#else +# if defined __BEOS__ && !defined __HAIKU__ + /* A compiler known to have 'bool'. */ + /* If the compiler already has both 'bool' and '_Bool', we can assume they + are the same types. */ +# if !@HAVE__BOOL@ +typedef bool _Bool; +# endif +# else +# if !defined __GNUC__ + /* If @HAVE__BOOL@: + Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when + the built-in _Bool type is used. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + https://lists.gnu.org/r/bug-coreutils/2005-10/msg00086.html + Similar bugs are likely with other compilers as well; this file + wouldn't be used if was working. + So we override the _Bool type. + If !@HAVE__BOOL@: + Need to define _Bool ourselves. As 'signed char' or as an enum type? + Use of a typedef, with SunPRO C, leads to a stupid + "warning: _Bool is a keyword in ISO C99". + Use of an enum type, with IRIX cc, leads to a stupid + "warning(1185): enumerated type mixed with another type". + Even the existence of an enum type, without a typedef, + "Invalid enumerator. (badenum)" with HP-UX cc on Tru64. + The only benefit of the enum, debuggability, is not important + with these compilers. So use 'signed char' and no enum. */ +# define _Bool signed char +# else + /* With this compiler, trust the _Bool type if the compiler has it. */ +# if !@HAVE__BOOL@ + /* For the sake of symbolic names in gdb, define true and false as + enum constants, not only as macros. + It is tempting to write + typedef enum { false = 0, true = 1 } _Bool; + so that gdb prints values of type 'bool' symbolically. But then + values of type '_Bool' might promote to 'int' or 'unsigned int' + (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int' + (see ISO C 99 6.3.1.1.(2)). So add a negative value to the + enum; this ensures that '_Bool' promotes to 'int'. */ +typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; +# endif +# endif +# endif +# define bool _Bool +#endif + +/* The other macros must be usable in preprocessor directives. */ +#ifdef __cplusplus +# if !defined _MSC_VER +# define false false +# define true true +# endif +/* In Sun C++ 5.11 (Solaris Studio 12.2) and older, 'true' as a preprocessor + expression evaluates to 0, not 1. Fix this by overriding 'true'. Note that + the replacement has to be of type 'bool'. */ +# if defined __SUNPRO_CC && true != 1 +# undef true +# define true (!false) +# endif +#else +# define false 0 +# define true 1 +#endif + +#define __bool_true_false_are_defined 1 + +#endif /* _GL_STDBOOL_H */ diff --git a/local/recipes/dev/gnu-make/source/lib/warn-on-use.h b/local/recipes/dev/gnu-make/source/lib/warn-on-use.h new file mode 100644 index 0000000000..94f5b9201e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/lib/warn-on-use.h @@ -0,0 +1,149 @@ +/* A C macro for emitting warnings if a function is used. + Copyright (C) 2010-2022 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + +/* _GL_WARN_ON_USE (function, "literal string") issues a declaration + for FUNCTION which will then trigger a compiler warning containing + the text of "literal string" anywhere that function is called, if + supported by the compiler. If the compiler does not support this + feature, the macro expands to an unused extern declaration. + + _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the + attribute used in _GL_WARN_ON_USE. If the compiler does not support + this feature, it expands to empty. + + These macros are useful for marking a function as a potential + portability trap, with the intent that "literal string" include + instructions on the replacement function that should be used + instead. + _GL_WARN_ON_USE is for functions with 'extern' linkage. + _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline' + linkage. + + However, one of the reasons that a function is a portability trap is + if it has the wrong signature. Declaring FUNCTION with a different + signature in C is a compilation error, so this macro must use the + same type as any existing declaration so that programs that avoid + the problematic FUNCTION do not fail to compile merely because they + included a header that poisoned the function. But this implies that + _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already + have a declaration. Use of this macro implies that there must not + be any other macro hiding the declaration of FUNCTION; but + undefining FUNCTION first is part of the poisoning process anyway + (although for symbols that are provided only via a macro, the result + is a compilation error rather than a warning containing + "literal string"). Also note that in C++, it is only safe to use if + FUNCTION has no overloads. + + For an example, it is possible to poison 'getline' by: + - adding a call to gl_WARN_ON_USE_PREPARE([[#include ]], + [getline]) in configure.ac, which potentially defines + HAVE_RAW_DECL_GETLINE + - adding this code to a header that wraps the system : + #undef getline + #if HAVE_RAW_DECL_GETLINE + _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but" + "not universally present; use the gnulib module getline"); + #endif + + It is not possible to directly poison global variables. But it is + possible to write a wrapper accessor function, and poison that + (less common usage, like &environ, will cause a compilation error + rather than issue the nice warning, but the end result of informing + the developer about their portability problem is still achieved): + #if HAVE_RAW_DECL_ENVIRON + static char *** + rpl_environ (void) { return &environ; } + _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared"); + # undef environ + # define environ (*rpl_environ ()) + #endif + or better (avoiding contradictory use of 'static' and 'extern'): + #if HAVE_RAW_DECL_ENVIRON + static char *** + _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared") + rpl_environ (void) { return &environ; } + # undef environ + # define environ (*rpl_environ ()) + #endif + */ +#ifndef _GL_WARN_ON_USE + +# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) +/* A compiler attribute is available in gcc versions 4.3.0 and later. */ +# define _GL_WARN_ON_USE(function, message) \ +_GL_WARN_EXTERN_C __typeof__ (function) function __attribute__ ((__warning__ (message))) +# define _GL_WARN_ON_USE_ATTRIBUTE(message) \ + __attribute__ ((__warning__ (message))) +# elif __clang_major__ >= 4 +/* Another compiler attribute is available in clang. */ +# define _GL_WARN_ON_USE(function, message) \ +_GL_WARN_EXTERN_C __typeof__ (function) function \ + __attribute__ ((__diagnose_if__ (1, message, "warning"))) +# define _GL_WARN_ON_USE_ATTRIBUTE(message) \ + __attribute__ ((__diagnose_if__ (1, message, "warning"))) +# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING +/* Verify the existence of the function. */ +# define _GL_WARN_ON_USE(function, message) \ +_GL_WARN_EXTERN_C __typeof__ (function) function +# define _GL_WARN_ON_USE_ATTRIBUTE(message) +# else /* Unsupported. */ +# define _GL_WARN_ON_USE(function, message) \ +_GL_WARN_EXTERN_C int _gl_warn_on_use +# define _GL_WARN_ON_USE_ATTRIBUTE(message) +# endif +#endif + +/* _GL_WARN_ON_USE_CXX (function, rettype_gcc, rettype_clang, parameters_and_attributes, "message") + is like _GL_WARN_ON_USE (function, "message"), except that in C++ mode the + function is declared with the given prototype, consisting of return type, + parameters, and attributes. + This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does + not work in this case. */ +#ifndef _GL_WARN_ON_USE_CXX +# if !defined __cplusplus +# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ + _GL_WARN_ON_USE (function, msg) +# else +# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) +/* A compiler attribute is available in gcc versions 4.3.0 and later. */ +# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ +extern rettype_gcc function parameters_and_attributes \ + __attribute__ ((__warning__ (msg))) +# elif __clang_major__ >= 4 +/* Another compiler attribute is available in clang. */ +# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ +extern rettype_clang function parameters_and_attributes \ + __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING +/* Verify the existence of the function. */ +# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ +extern rettype_gcc function parameters_and_attributes +# else /* Unsupported. */ +# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ +_GL_WARN_EXTERN_C int _gl_warn_on_use +# endif +# endif +#endif + +/* _GL_WARN_EXTERN_C declaration; + performs the declaration with C linkage. */ +#ifndef _GL_WARN_EXTERN_C +# if defined __cplusplus +# define _GL_WARN_EXTERN_C extern "C" +# else +# define _GL_WARN_EXTERN_C extern +# endif +#endif diff --git a/local/recipes/dev/gnu-make/source/m4/00gnulib.m4 b/local/recipes/dev/gnu-make/source/m4/00gnulib.m4 new file mode 100644 index 0000000000..dea34e8341 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/00gnulib.m4 @@ -0,0 +1,85 @@ +# 00gnulib.m4 serial 8 +dnl Copyright (C) 2009-2022 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 This file must be named something that sorts before all other +dnl gnulib-provided .m4 files. It is needed until the clang fix has +dnl been included in Autoconf. + +# The following definitions arrange to use a compiler option +# -Werror=implicit-function-declaration in AC_CHECK_DECL, when the +# compiler is clang. Without it, clang implicitly declares "known" +# library functions in C mode, but not in C++ mode, which would cause +# Gnulib to omit a declaration and thus later produce an error in C++ +# mode. As of clang 9.0, these "known" functions are identified through +# LIBBUILTIN invocations in the LLVM source file +# llvm/tools/clang/include/clang/Basic/Builtins.def. +# It's not possible to AC_REQUIRE the extra tests from AC_CHECK_DECL, +# because AC_CHECK_DECL, like other Autoconf built-ins, is not supposed +# to AC_REQUIRE anything: some configure.ac files have their first +# AC_CHECK_DECL executed conditionally. Therefore append the extra tests +# to AC_PROG_CC. +AC_DEFUN([gl_COMPILER_CLANG], +[ +dnl AC_REQUIRE([AC_PROG_CC]) + AC_CACHE_CHECK([whether the compiler is clang], + [gl_cv_compiler_clang], + [dnl Use _AC_COMPILE_IFELSE instead of AC_EGREP_CPP, to avoid error + dnl "circular dependency of AC_LANG_COMPILER(C)" if AC_PROG_CC has + dnl not yet been invoked. + _AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #ifdef __clang__ + barfbarf + #endif + ]],[[]]) + ], + [gl_cv_compiler_clang=no], + [gl_cv_compiler_clang=yes]) + ]) +]) +AC_DEFUN([gl_COMPILER_PREPARE_CHECK_DECL], +[ +dnl AC_REQUIRE([AC_PROG_CC]) +dnl AC_REQUIRE([gl_COMPILER_CLANG]) + AC_CACHE_CHECK([for compiler option needed when checking for declarations], + [gl_cv_compiler_check_decl_option], + [if test $gl_cv_compiler_clang = yes; then + dnl Test whether the compiler supports the option + dnl '-Werror=implicit-function-declaration'. + save_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=implicit-function-declaration" + dnl Use _AC_COMPILE_IFELSE instead of AC_COMPILE_IFELSE, to avoid a + dnl warning "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". + _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])], + [gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration'], + [gl_cv_compiler_check_decl_option=none]) + ac_compile="$save_ac_compile" + else + gl_cv_compiler_check_decl_option=none + fi + ]) + if test "x$gl_cv_compiler_check_decl_option" != xnone; then + ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" + else + ac_compile_for_check_decl="$ac_compile" + fi +]) +dnl Redefine _AC_CHECK_DECL_BODY so that it references ac_compile_for_check_decl +dnl instead of ac_compile. If, for whatever reason, the override of AC_PROG_CC +dnl in zzgnulib.m4 is inactive, use the original ac_compile. +m4_define([_AC_CHECK_DECL_BODY], +[ ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi] +m4_defn([_AC_CHECK_DECL_BODY])[ ac_compile="$ac_save_ac_compile" +]) + +# gl_00GNULIB +# ----------- +# Witness macro that this file has been included. Needed to force +# Automake to include this file prior to all other gnulib .m4 files. +AC_DEFUN([gl_00GNULIB]) diff --git a/local/recipes/dev/gnu-make/source/m4/acinclude.m4 b/local/recipes/dev/gnu-make/source/m4/acinclude.m4 new file mode 100644 index 0000000000..d7131a8105 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/acinclude.m4 @@ -0,0 +1,132 @@ +dnl acinclude.m4 -- Extra macros needed for GNU make. +dnl +dnl Automake will incorporate this into its generated aclocal.m4. +dnl Copyright (C) 1998-2022 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 +dnl the terms of the GNU General Public License as published by the Free +dnl Software Foundation; either version 3 of the License, or (at your option) +dnl any later version. +dnl +dnl GNU Make is distributed in the hope that it will be useful, but WITHOUT +dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. +dnl more details. +dnl +dnl You should have received a copy of the GNU General Public License along +dnl with this program. If not, see . + +dnl --------------------------------------------------------------------------- +dnl Got this from the lynx 2.8 distribution. +dnl by T.E.Dickey +dnl and Jim Spath +dnl and Philippe De Muyter +dnl +dnl Created: 1997/1/28 +dnl Updated: 1997/12/23 +dnl --------------------------------------------------------------------------- +dnl After checking for functions in the default $LIBS, make a further check +dnl for the functions that are netlib-related (these aren't always in the +dnl libc, etc., and have to be handled specially because there are conflicting +dnl and broken implementations. +dnl Common library requirements (in order): +dnl -lresolv -lsocket -lnsl +dnl -lnsl -lsocket +dnl -lsocket +dnl -lbsd +AC_DEFUN([CF_NETLIBS],[ +cf_test_netlibs=no +AC_MSG_CHECKING(for network libraries) +AC_CACHE_VAL(cf_cv_netlibs,[ +AC_MSG_RESULT(working...) +cf_cv_netlibs="" +cf_test_netlibs=yes +AC_CHECK_FUNCS(gethostname,,[ + CF_RECHECK_FUNC(gethostname,nsl,cf_cv_netlibs,[ + CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)])]) +# +# FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but +# I don't know the entrypoints - 97/7/22 TD +AC_CHECK_LIB(inet,main,cf_cv_netlibs="-linet $cf_cv_netlibs") +# +if test "$ac_cv_func_lsocket" != no ; then +AC_CHECK_FUNCS(socket,,[ + CF_RECHECK_FUNC(socket,socket,cf_cv_netlibs,[ + CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)])]) +fi +# +AC_CHECK_FUNCS(gethostbyname,,[ + CF_RECHECK_FUNC(gethostbyname,nsl,cf_cv_netlibs)]) +]) +LIBS="$LIBS $cf_cv_netlibs" +test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&AC_FD_MSG +])dnl +dnl --------------------------------------------------------------------------- +dnl Re-check on a function to see if we can pick it up by adding a library. +dnl $1 = function to check +dnl $2 = library to check in +dnl $3 = environment to update (e.g., $LIBS) +dnl $4 = what to do if this fails +dnl +dnl This uses 'unset' if the shell happens to support it, but leaves the +dnl configuration variable set to 'unknown' if not. This is a little better +dnl than the normal autoconf test, which gives misleading results if a test +dnl for the function is made (e.g., with AC_CHECK_FUNC) after this macro is +dnl used (autoconf does not distinguish between a null token and one that is +dnl set to 'no'). +AC_DEFUN([CF_RECHECK_FUNC],[ +AC_CHECK_LIB($2,$1,[ + CF_UPPER(cf_tr_func,$1) + AC_DEFINE_UNQUOTED(HAVE_$cf_tr_func,1,[Define if you have function $1]) + ac_cv_func_$1=yes + $3="-l$2 [$]$3"],[ + ac_cv_func_$1=unknown + unset ac_cv_func_$1 2>/dev/null + $4], + [[$]$3]) +])dnl +dnl --------------------------------------------------------------------------- +dnl Make an uppercase version of a variable +dnl $1=uppercase($2) +AC_DEFUN([CF_UPPER], +[ +changequote(,)dnl +$1=`echo $2 | tr '[a-z]' '[A-Z]'` +changequote([,])dnl +])dnl + + +dnl --------------------------------------------------------------------------- +dnl From Paul Eggert +dnl Update for Darwin by Troy Runkel +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], + ac_cv_struct_st_mtim_nsec, + [ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # 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_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 +#include + ], [struct stat s; s.ST_MTIM_NSEC;], + [ac_cv_struct_st_mtim_nsec=$ac_val; break]) + done + CPPFLAGS="$ac_save_CPPFLAGS" + ]) + + if test $ac_cv_struct_st_mtim_nsec != no; then + AC_DEFINE_UNQUOTED([ST_MTIM_NSEC], [$ac_cv_struct_st_mtim_nsec], + [Define if struct stat contains a nanoseconds field]) + fi + ] +) diff --git a/local/recipes/dev/gnu-make/source/m4/alloca.m4 b/local/recipes/dev/gnu-make/source/m4/alloca.m4 new file mode 100644 index 0000000000..dc6f47e330 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/alloca.m4 @@ -0,0 +1,106 @@ +# alloca.m4 serial 21 +dnl Copyright (C) 2002-2004, 2006-2007, 2009-2022 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. + +AC_DEFUN([gl_FUNC_ALLOCA], +[ + AC_REQUIRE([AC_FUNC_ALLOCA]) + if test $ac_cv_func_alloca_works = no; then + gl_PREREQ_ALLOCA + fi + + # Define an additional variable used in the Makefile substitution. + if test $ac_cv_working_alloca_h = yes; then + AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [ + AC_EGREP_CPP([Need own alloca], [ +#if defined __GNUC__ || defined _AIX || defined _MSC_VER + Need own alloca +#endif + ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no]) + ]) + if test $gl_cv_rpl_alloca = yes; then + dnl OK, alloca can be implemented through a compiler built-in. + AC_DEFINE([HAVE_ALLOCA], [1], + [Define to 1 if you have 'alloca' after including , + a header that may be supplied by this distribution.]) + GL_GENERATE_ALLOCA_H=true + else + dnl alloca exists as a library function, i.e. it is slow and probably + dnl a memory leak. Don't define HAVE_ALLOCA in this case. + GL_GENERATE_ALLOCA_H=false + fi + else + GL_GENERATE_ALLOCA_H=true + fi + + if test $ac_cv_working_alloca_h = yes; then + HAVE_ALLOCA_H=1 + else + HAVE_ALLOCA_H=0 + fi + AC_SUBST([HAVE_ALLOCA_H]) +]) + +# Prerequisites of lib/alloca.c. +# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA. +AC_DEFUN([gl_PREREQ_ALLOCA], [:]) + +m4_version_prereq([2.70], [], [ + +# This works around a bug in autoconf <= 2.68 and has simplifications +# from 2.70. See: +# https://lists.gnu.org/r/bug-gnulib/2011-06/msg00277.html +# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=6cd9f12520b0d6f76d3230d7565feba1ecf29497 +# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=15edf7fd8094fd14a89d9891dd72a9624762597a + +# _AC_LIBOBJ_ALLOCA +# ----------------- +# Set up the LIBOBJ replacement of 'alloca'. Well, not exactly +# AC_LIBOBJ since we actually set the output variable 'ALLOCA'. +# Nevertheless, for Automake, AC_LIBSOURCES it. +m4_define([_AC_LIBOBJ_ALLOCA], +[# The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. +AC_LIBSOURCES(alloca.c) +AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl +AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using 'alloca.c'.]) + +AC_CACHE_CHECK([stack direction for C alloca], + [ac_cv_c_stack_direction], +[AC_RUN_IFELSE([AC_LANG_SOURCE( +[AC_INCLUDES_DEFAULT +int +find_stack_direction (int *addr, int depth) +{ + 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 (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +}])], + [ac_cv_c_stack_direction=1], + [ac_cv_c_stack_direction=-1], + [ac_cv_c_stack_direction=0])]) +AH_VERBATIM([STACK_DIRECTION], +[/* 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 runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION])dnl +AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction) +])# _AC_LIBOBJ_ALLOCA +]) diff --git a/local/recipes/dev/gnu-make/source/m4/asm-underscore.m4 b/local/recipes/dev/gnu-make/source/m4/asm-underscore.m4 new file mode 100644 index 0000000000..950aa8d221 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/asm-underscore.m4 @@ -0,0 +1,83 @@ +# asm-underscore.m4 serial 5 +dnl Copyright (C) 2010-2022 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. Based on as-underscore.m4 in GNU clisp. + +# gl_ASM_SYMBOL_PREFIX +# Tests for the prefix of C symbols at the assembly language level and the +# linker level. This prefix is either an underscore or empty. Defines the +# C macro USER_LABEL_PREFIX to this prefix, and sets ASM_SYMBOL_PREFIX to +# a stringified variant of this prefix. + +AC_DEFUN([gl_ASM_SYMBOL_PREFIX], +[ + AC_REQUIRE([AC_PROG_EGREP]) + dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because + dnl 1. It works only for GCC. + dnl 2. It is incorrectly defined on some platforms, in some GCC versions. + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK( + [whether C symbols are prefixed with underscore at the linker level], + [gl_cv_prog_as_underscore], + [cat > conftest.c </dev/null 2>&1 + if LC_ALL=C $EGREP '(^|[[^a-zA-Z0-9_]])_foo([[^a-zA-Z0-9_]]|$)' conftest.$gl_asmext >/dev/null; then + gl_cv_prog_as_underscore=yes + else + gl_cv_prog_as_underscore=no + fi + rm -f conftest* + ]) + if test $gl_cv_prog_as_underscore = yes; then + USER_LABEL_PREFIX=_ + else + USER_LABEL_PREFIX= + fi + AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX], + [Define to the prefix of C symbols at the assembler and linker level, + either an underscore or empty.]) + ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"' + AC_SUBST([ASM_SYMBOL_PREFIX]) +]) + +# gl_C_ASM +# Determines how to produce an assembly language file from C source code. +# Sets the variables: +# gl_asmext - the extension of assembly language output, +# gl_c_asm_opt - the C compiler option that produces assembly language output. + +AC_DEFUN([gl_C_ASM], +[ + AC_EGREP_CPP([MicrosoftCompiler], + [ +#ifdef _MSC_VER +MicrosoftCompiler +#endif + ], + [dnl Microsoft's 'cl' and 'clang-cl' produce an .asm file, whereas 'clang' + dnl produces a .s file. Need to distinguish 'clang' and 'clang-cl'. + rm -f conftest* + echo 'int dummy;' > conftest.c + AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c) >/dev/null 2>&1 + if test -f conftest.o; then + gl_asmext='s' + gl_c_asm_opt='-S' + else + gl_asmext='asm' + gl_c_asm_opt='-c -Fa' + fi + rm -f conftest* + ], + [gl_asmext='s' + gl_c_asm_opt='-S' + ]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/codeset.m4 b/local/recipes/dev/gnu-make/source/m4/codeset.m4 new file mode 100644 index 0000000000..d7de8d67e0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/codeset.m4 @@ -0,0 +1,23 @@ +# codeset.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2000-2002, 2006, 2008-2014 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_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[char* cs = nl_langinfo(CODESET); return !cs;]])], + [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 and nl_langinfo(CODESET).]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/dospaths.m4 b/local/recipes/dev/gnu-make/source/m4/dospaths.m4 new file mode 100644 index 0000000000..51deaf0f1f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/dospaths.m4 @@ -0,0 +1,33 @@ +# Test if the system uses DOS-style pathnames (drive specs and backslashes) +# By Paul Smith . Based on dos.m4 by Jim Meyering. +# +# Copyright (C) 1993-2022 Free Software 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 . + +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])]) + + 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/local/recipes/dev/gnu-make/source/m4/eaccess.m4 b/local/recipes/dev/gnu-make/source/m4/eaccess.m4 new file mode 100644 index 0000000000..6ab3d50992 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/eaccess.m4 @@ -0,0 +1,12 @@ +# eaccess.m4 serial 2 +dnl Copyright (C) 2003, 2009-2022 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. + +AC_DEFUN([gl_FUNC_EACCESS], +[ + AC_CHECK_FUNC([eaccess], , + [AC_DEFINE([eaccess], [access], + [Define as 'access' if you don't have the eaccess() function.])]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/extensions.m4 b/local/recipes/dev/gnu-make/source/m4/extensions.m4 new file mode 100644 index 0000000000..0b3e4b5af7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/extensions.m4 @@ -0,0 +1,227 @@ +# serial 22 -*- Autoconf -*- +# Enable extensions on systems that normally disable them. + +# Copyright (C) 2003, 2006-2022 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. + +dnl Define to empty for the benefit of Autoconf 2.69 and earlier, so that +dnl AC_USE_SYSTEM_EXTENSIONS (below) can be used unchanged from Autoconf 2.70+. +m4_ifndef([AC_CHECK_INCLUDES_DEFAULT], + [AC_DEFUN([AC_CHECK_INCLUDES_DEFAULT], [])]) + +# This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from git +# Autoconf. Perhaps we can remove this once we can assume Autoconf +# is recent-enough everywhere, but since Autoconf mutates rapidly +# enough in this area it's likely we'll need to redefine +# AC_USE_SYSTEM_EXTENSIONS for quite some time. + +# If autoconf reports a warning +# warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS +# or warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS +# the fix is +# 1) to ensure that AC_USE_SYSTEM_EXTENSIONS is never directly invoked +# but always AC_REQUIREd, +# 2) to ensure that for each occurrence of +# AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) +# or +# AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) +# the corresponding gnulib module description has 'extensions' among +# its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS +# invocation occurs in gl_EARLY, not in gl_INIT. + +m4_version_prereq([2.70.1], [], [ + +# AC_USE_SYSTEM_EXTENSIONS +# ------------------------ +# Enable extensions on systems that normally disable them, +# typically due to standards-conformance issues. +# We unconditionally define as many of the known feature-enabling +# as possible, reserving conditional behavior for macros that are +# known to cause problems on some platforms (such as __EXTENSIONS__). +AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS], +[AC_BEFORE([$0], [AC_PREPROC_IFELSE])dnl +AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl +AC_BEFORE([$0], [AC_LINK_IFELSE])dnl +AC_BEFORE([$0], [AC_RUN_IFELSE])dnl +AC_BEFORE([$0], [AC_CHECK_INCLUDES_DEFAULT])dnl +dnl #undef in AH_VERBATIM gets replaced with #define by AC_DEFINE. +dnl Use a different key than __EXTENSIONS__, as that name broke existing +dnl configure.ac when using autoheader 2.62. +dnl The macros below are in alphabetical order ignoring leading _ or __ +dnl prefixes. +AH_VERBATIM([USE_SYSTEM_EXTENSIONS], +[/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif +])dnl + + AC_REQUIRE([AC_CHECK_INCLUDES_DEFAULT])dnl + _AC_CHECK_HEADER_ONCE([wchar.h]) + _AC_CHECK_HEADER_ONCE([minix/config.h]) + +dnl Defining __EXTENSIONS__ may break the system headers on some systems. +dnl (FIXME: Which ones?) + AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__], + [ac_cv_safe_to_define___extensions__], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +# define __EXTENSIONS__ 1 + ]AC_INCLUDES_DEFAULT])], + [ac_cv_safe_to_define___extensions__=yes], + [ac_cv_safe_to_define___extensions__=no])]) + +dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to +dnl 500, regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. +dnl But defining _XOPEN_SOURCE may turn *off* extensions on platforms +dnl not covered by turn-on-extensions macros (notably Dragonfly, Free, +dnl and OpenBSD, which don't have any equivalent of _NETBSD_SOURCE) so +dnl it should only be defined when necessary. + AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined], + [ac_cv_should_define__xopen_source], + [ac_cv_should_define__xopen_source=no + AS_IF([test $ac_cv_header_wchar_h = yes], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #include + mbstate_t x;]])], + [], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #define _XOPEN_SOURCE 500 + #include + mbstate_t x;]])], + [ac_cv_should_define__xopen_source=yes])])])]) + + AC_DEFINE([_ALL_SOURCE]) + AC_DEFINE([_DARWIN_C_SOURCE]) + AC_DEFINE([_GNU_SOURCE]) + AC_DEFINE([_HPUX_ALT_XOPEN_SOCKET_API]) + AC_DEFINE([_NETBSD_SOURCE]) + AC_DEFINE([_OPENBSD_SOURCE]) + AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) + AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__]) + AC_DEFINE([__STDC_WANT_LIB_EXT2__]) + AC_DEFINE([__STDC_WANT_MATH_SPEC_FUNCS__]) + AC_DEFINE([_TANDEM_SOURCE]) + AS_IF([test $ac_cv_header_minix_config_h = yes], + [MINIX=yes + AC_DEFINE([_MINIX]) + AC_DEFINE([_POSIX_SOURCE]) + AC_DEFINE([_POSIX_1_SOURCE], [2])], + [MINIX=]) + AS_IF([test $ac_cv_safe_to_define___extensions__ = yes], + [AC_DEFINE([__EXTENSIONS__])]) + AS_IF([test $ac_cv_should_define__xopen_source = yes], + [AC_DEFINE([_XOPEN_SOURCE], [500])]) +])# AC_USE_SYSTEM_EXTENSIONS +]) + +# gl_USE_SYSTEM_EXTENSIONS +# ------------------------ +# Enable extensions on systems that normally disable them, +# typically due to standards-conformance issues. +AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], +[ + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + + dnl On OpenBSD 6.8 with GCC, the include files contain a couple of + dnl definitions that are only activated with an explicit -D_ISOC11_SOURCE. + dnl That's because this version of GCC (4.2.1) supports the option + dnl '-std=gnu99' but not the option '-std=gnu11'. + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + openbsd*) + AC_DEFINE([_ISOC11_SOURCE], [1], + [Define to enable the declarations of ISO C 11 types and functions.]) + ;; + esac +]) diff --git a/local/recipes/dev/gnu-make/source/m4/extern-inline.m4 b/local/recipes/dev/gnu-make/source/m4/extern-inline.m4 new file mode 100644 index 0000000000..0edbe3c81c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/extern-inline.m4 @@ -0,0 +1,100 @@ +dnl 'extern inline' a la ISO C99. + +dnl Copyright 2012-2014 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. + +AC_DEFUN([gl_EXTERN_INLINE], +[ + AH_VERBATIM([extern_inline], +[/* Please see the Gnulib manual for how to use these macros. + + Suppress extern inline with HP-UX cc, as it appears to be broken; see + . + + Suppress extern inline with Sun C in standards-conformance mode, as it + mishandles inline functions that call each other. E.g., for 'inline void f + (void) { } inline void g (void) { f (); }', c99 incorrectly complains + 'reference to static identifier "f" in extern inline function'. + This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. + + Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) + on configurations that mistakenly use 'static inline' to implement + functions or macros in standard C headers like . For example, + if isdigit is mistakenly implemented via a static inline function, + a program containing an extern inline function that calls isdigit + may not work since the C standard prohibits extern inline functions + from calling static functions. This bug is known to occur on: + + OS X 10.8 and earlier; see: + http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html + + DragonFly; see + http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log + + FreeBSD; see: + http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00104.html + + OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and + for clang but remains for g++; see . + Assume DragonFly and FreeBSD will be similar. */ +#if (((defined __APPLE__ && defined __MACH__) \ + || defined __DragonFly__ || defined __FreeBSD__) \ + && (defined __header_inline \ + ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ + && ! defined __clang__) \ + : ((! defined _DONT_USE_CTYPE_INLINE_ \ + && (defined __GNUC__ || defined __cplusplus)) \ + || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ + && defined __GNUC__ && ! defined __cplusplus)))) +# define _GL_EXTERN_INLINE_STDHEADER_BUG +#endif +#if ((__GNUC__ \ + ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + : (199901L <= __STDC_VERSION__ \ + && !defined __HP_cc \ + && !(defined __SUNPRO_C && __STDC__))) \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# define _GL_INLINE inline +# define _GL_EXTERN_INLINE extern inline +# define _GL_EXTERN_INLINE_IN_USE +#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ + && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) +# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ + /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ +# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) +# else +# define _GL_INLINE extern inline +# endif +# define _GL_EXTERN_INLINE extern +# define _GL_EXTERN_INLINE_IN_USE +#else +# define _GL_INLINE static _GL_UNUSED +# define _GL_EXTERN_INLINE static _GL_UNUSED +#endif + +/* In GCC, suppress bogus "no previous prototype for 'FOO'" + and "no previous declaration for 'FOO'" diagnostics, + when FOO is an inline function in the header; see + and + . */ +#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) +# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ +# define _GL_INLINE_HEADER_CONST_PRAGMA +# else +# define _GL_INLINE_HEADER_CONST_PRAGMA \ + _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# endif +# define _GL_INLINE_HEADER_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ + _GL_INLINE_HEADER_CONST_PRAGMA +# define _GL_INLINE_HEADER_END \ + _Pragma ("GCC diagnostic pop") +#else +# define _GL_INLINE_HEADER_BEGIN +# define _GL_INLINE_HEADER_END +#endif]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/fcntl-o.m4 b/local/recipes/dev/gnu-make/source/m4/fcntl-o.m4 new file mode 100644 index 0000000000..43c93124ed --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/fcntl-o.m4 @@ -0,0 +1,134 @@ +# fcntl-o.m4 serial 4 +dnl Copyright (C) 2006, 2009-2014 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 Written by Paul Eggert. + +# Test whether the flags O_NOATIME and O_NOFOLLOW actually work. +# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. +# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. +AC_DEFUN([gl_FCNTL_O_FLAGS], +[ + dnl Persuade glibc to define O_NOATIME and O_NOFOLLOW. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + + AC_CHECK_HEADERS_ONCE([unistd.h]) + AC_CHECK_FUNCS_ONCE([symlink]) + AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #if HAVE_UNISTD_H + # include + #else /* on Windows with MSVC */ + # include + # include + # defined sleep(n) _sleep ((n) * 1000) + #endif + #include + #ifndef O_NOATIME + #define O_NOATIME 0 + #endif + #ifndef O_NOFOLLOW + #define O_NOFOLLOW 0 + #endif + static int const constants[] = + { + O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND, + O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY + }; + ]], + [[ + int result = !constants; + #if HAVE_SYMLINK + { + static char const sym[] = "conftest.sym"; + if (symlink ("/dev/null", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + if (unlink (sym) != 0 || symlink (".", sym) != 0) + result |= 2; + else + { + int fd = open (sym, O_RDONLY | O_NOFOLLOW); + if (fd >= 0) + { + close (fd); + result |= 4; + } + } + unlink (sym); + } + #endif + { + static char const file[] = "confdefs.h"; + int fd = open (file, O_RDONLY | O_NOATIME); + if (fd < 0) + result |= 8; + else + { + struct stat st0; + if (fstat (fd, &st0) != 0) + result |= 16; + else + { + char c; + sleep (1); + if (read (fd, &c, 1) != 1) + result |= 24; + else + { + if (close (fd) != 0) + result |= 32; + else + { + struct stat st1; + if (stat (file, &st1) != 0) + result |= 40; + else + if (st0.st_atime != st1.st_atime) + result |= 64; + } + } + } + } + } + return result;]])], + [gl_cv_header_working_fcntl_h=yes], + [case $? in #( + 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #( + 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #( + 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( + *) gl_cv_header_working_fcntl_h='no';; + esac], + [gl_cv_header_working_fcntl_h=cross-compiling])]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOATIME* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val], + [Define to 1 if O_NOATIME works.]) + + case $gl_cv_header_working_fcntl_h in #( + *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #( + *) ac_val=1;; + esac + AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val], + [Define to 1 if O_NOFOLLOW works.]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/findprog-in.m4 b/local/recipes/dev/gnu-make/source/m4/findprog-in.m4 new file mode 100644 index 0000000000..5a295e23dd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/findprog-in.m4 @@ -0,0 +1,11 @@ +# findprog-in.m4 serial 1 +dnl Copyright (C) 2003, 2009-2022 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. + +AC_DEFUN([gl_FINDPROG_IN], +[ + dnl Prerequisites of lib/findprog-in.c. + AC_REQUIRE([gl_FUNC_EACCESS]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/getloadavg.m4 b/local/recipes/dev/gnu-make/source/m4/getloadavg.m4 new file mode 100644 index 0000000000..2270648336 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/getloadavg.m4 @@ -0,0 +1,216 @@ +# Check for getloadavg. + +# Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2022 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 + +# Autoconf defines AC_FUNC_GETLOADAVG, but that is obsolescent. +# New applications should use gl_GETLOADAVG instead. + +# gl_GETLOADAVG +# ------------- +AC_DEFUN([gl_GETLOADAVG], +[AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + +# Persuade glibc to declare getloadavg(). +AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + +gl_save_LIBS=$LIBS + +# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, +# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. +HAVE_GETLOADAVG=1 +AC_CHECK_FUNC([getloadavg], [], + [gl_func_getloadavg_done=no + + # Some systems with -lutil have (and need) -lkvm as well, some do not. + # On Solaris, -lkvm requires nlist from -lelf, so check that first + # to get the right answer into the cache. + # For kstat on solaris, we need to test for libelf and libkvm to force the + # definition of SVR4 below. + if test $gl_func_getloadavg_done = no; then + AC_CHECK_LIB([elf], [elf_begin], [LIBS="-lelf $LIBS"]) + AC_CHECK_LIB([kvm], [kvm_open], [LIBS="-lkvm $LIBS"]) + # Check for the 4.4BSD definition of getloadavg. + AC_CHECK_LIB([util], [getloadavg], + [LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes]) + fi + + if test $gl_func_getloadavg_done = no; then + # There is a commonly available library for RS/6000 AIX. + # Since it is not a standard part of AIX, it might be installed locally. + gl_getloadavg_LIBS=$LIBS + if test $cross_compiling != yes; then + LIBS="-L/usr/local/lib $LIBS" + fi + AC_CHECK_LIB([getloadavg], [getloadavg], + [LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes], + [LIBS=$gl_getloadavg_LIBS]) + fi + + # Set up the replacement function if necessary. + if test $gl_func_getloadavg_done = no; then + HAVE_GETLOADAVG=0 + + # Solaris has libkstat which does not require root. + AC_CHECK_LIB([kstat], [kstat_open]) + test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes + + # AIX has libperfstat which does not require root + if test $gl_func_getloadavg_done = no; then + AC_CHECK_LIB([perfstat], [perfstat_cpu_total]) + test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes + fi + + if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([sys/dg_sys_info.h], + [gl_func_getloadavg_done=yes + AC_DEFINE([DGUX], [1], [Define to 1 for DGUX with .]) + AC_CHECK_LIB([dgc], [dg_sys_info])]) + fi + fi]) + +if test "x$gl_save_LIBS" = x; then + GETLOADAVG_LIBS=$LIBS +else + GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"` +fi +LIBS=$gl_save_LIBS + +AC_SUBST([GETLOADAVG_LIBS])dnl + +# Test whether the system declares getloadavg. Solaris has the function +# but declares it in , not . +AC_CHECK_HEADERS([sys/loadavg.h]) +if test $ac_cv_header_sys_loadavg_h = yes; then + HAVE_SYS_LOADAVG_H=1 +else + HAVE_SYS_LOADAVG_H=0 +fi +AC_CHECK_DECL([getloadavg], [], [HAVE_DECL_GETLOADAVG=0], + [[#if HAVE_SYS_LOADAVG_H + /* OpenIndiana has a bug: must be included before + . */ + # include + # include + #endif + #include ]]) +])# gl_GETLOADAVG + + +# gl_PREREQ_GETLOADAVG +# -------------------- +# Set up the AC_LIBOBJ replacement of 'getloadavg'. +AC_DEFUN([gl_PREREQ_GETLOADAVG], +[ +# Figure out what our getloadavg.c needs. + +AC_CHECK_HEADERS_ONCE([sys/param.h unistd.h]) + +# On HPUX9, an unprivileged user can get load averages this way. +if test $gl_func_getloadavg_done = no; then + AC_CHECK_FUNCS([pstat_getdynamic], [gl_func_getloadavg_done=yes]) +fi + +# We cannot check for , because Solaris 2 does not use dwarf (it +# uses stabs), but it is still SVR4. We cannot check for because +# Irix 4.0.5F has the header but not the library. +if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \ + && test "$ac_cv_lib_kvm_kvm_open" = yes; then + gl_func_getloadavg_done=yes + AC_DEFINE([SVR4], [1], [Define to 1 on System V Release 4.]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([inq_stats/cpustats.h], + [gl_func_getloadavg_done=yes + AC_DEFINE([UMAX], [1], [Define to 1 for Encore UMAX.]) + AC_DEFINE([UMAX4_3], [1], + [Define to 1 for Encore UMAX 4.3 that has + instead of .])]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADER([sys/cpustats.h], + [gl_func_getloadavg_done=yes; AC_DEFINE([UMAX])]) +fi + +if test $gl_func_getloadavg_done = no; then + AC_CHECK_HEADERS([mach/mach.h]) +fi + +AC_CHECK_HEADERS([nlist.h], +[AC_CHECK_MEMBERS([struct nlist.n_un.n_name], + [], [], + [#include ]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif]])], + [AC_DEFINE([N_NAME_POINTER], [1], + [Define to 1 if the nlist n_name member is a pointer])]) +])dnl +])# gl_PREREQ_GETLOADAVG + +# ---- GNU make +# These macros are imported from stdlib which we don't want to include +# Only the getloadavg content is imported. + +AC_DEFUN_ONCE([gl_STDLIB_H], +[ + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use, and which is not + dnl guaranteed by C89. + gl_WARN_ON_USE_PREPARE([[#include +#if HAVE_SYS_LOADAVG_H +/* OpenIndiana has a bug: must be included before + . */ +# include +# include +#endif +#if HAVE_RANDOM_H +# include +#endif + ]], [getloadavg]) +]) + +# gl_STDLIB_MODULE_INDICATOR([modulename]) +# sets the shell variable that indicates the presence of the given module +# to a C preprocessor expression that will evaluate to 1. +# This macro invocation must not occur in macros that are AC_REQUIREd. +AC_DEFUN([gl_STDLIB_MODULE_INDICATOR], +[ + dnl Ensure to expand the default settings once only. + gl_STDLIB_H_REQUIRE_DEFAULTS + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +# Initializes the default values for AC_SUBSTed shell variables. +# This macro must not be AC_REQUIREd. It must only be invoked, and only +# outside of macros or in macros that are not AC_REQUIREd. +AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS], +[ + m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS], [ + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG]) + ]) + m4_require(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS]) + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) +]) + +AC_DEFUN([gl_STDLIB_H_DEFAULTS], +[ + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/gettext.m4 b/local/recipes/dev/gnu-make/source/m4/gettext.m4 new file mode 100644 index 0000000000..be247bf7b8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/gettext.m4 @@ -0,0 +1,401 @@ +# gettext.m4 serial 66 (gettext-0.18.2) +dnl Copyright (C) 1995-2014 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 Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2006, 2008-2010. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value '$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse(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], + 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, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { 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: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + 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], + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + 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 +' + 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_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; + ]], + [[ +bindtextdomain ("", ""); +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 { 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 + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_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_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + ]], + [[ +bindtextdomain ("", ""); +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 { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ]])], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { 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 + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $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. + CATOBJEXT=.gmo + 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], + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { 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], + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE([HAVE_DCGETTEXT], [1], + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST([BUILD_INCLUDED_LIBINTL]) + AC_SUBST([USE_INCLUDED_LIBINTL]) + AC_SUBST([CATOBJEXT]) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST([DATADIRNAME]) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST([INSTOBJEXT]) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST([GENCAT]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST([INTLOBJS]) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST([INTLLIBS]) + + dnl Make all documented variables known to autoconf. + AC_SUBST([LIBINTL]) + AC_SUBST([LTLIBINTL]) + AC_SUBST([POSUB]) +]) + + +dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/local/recipes/dev/gnu-make/source/m4/glibc2.m4 b/local/recipes/dev/gnu-make/source/m4/glibc2.m4 new file mode 100644 index 0000000000..71dd8a1234 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/glibc2.m4 @@ -0,0 +1,31 @@ +# glibc2.m4 serial 3 +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 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. + +# Test for the GNU C Library, version 2.0 or newer. +# From Bruno Haible. + +AC_DEFUN([gt_GLIBC2], + [ + AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer], + [ac_cv_gnu_library_2], + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) && !defined __UCLIBC__ + Lucky GNU user + #endif +#endif + ], + [ac_cv_gnu_library_2=yes], + [ac_cv_gnu_library_2=no]) + ] + ) + AC_SUBST([GLIBC2]) + GLIBC2="$ac_cv_gnu_library_2" + ] +) diff --git a/local/recipes/dev/gnu-make/source/m4/glibc21.m4 b/local/recipes/dev/gnu-make/source/m4/glibc21.m4 new file mode 100644 index 0000000000..ab58b71213 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/glibc21.m4 @@ -0,0 +1,34 @@ +# glibc21.m4 serial 5 +dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 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. + +# Test for the GNU C Library, version 2.1 or newer, or uClibc. +# From Bruno Haible. + +AC_DEFUN([gl_GLIBC21], + [ + AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc], + [ac_cv_gnu_library_2_1], + [AC_EGREP_CPP([Lucky], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif +#ifdef __UCLIBC__ + Lucky user +#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/local/recipes/dev/gnu-make/source/m4/gnulib-cache.m4 b/local/recipes/dev/gnu-make/source/m4/gnulib-cache.m4 new file mode 100644 index 0000000000..a7612384c8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/gnulib-cache.m4 @@ -0,0 +1,71 @@ +# Copyright (C) 2002-2022 Free Software Foundation, Inc. +# +# 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 file is distributed in the hope that it will be useful, +# but WITHOUT 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 file. If not, see . +# +# As a special exception to the GNU General Public License, +# this file may be distributed as part of a program that +# contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# +# This file represents the specification of how gnulib-tool is used. +# It acts as a cache: It is written and read by gnulib-tool. +# In projects that use version control, this file is meant to be put under +# version control, like the configure.ac and various Makefile.am files. + + +# Specification in the form of a command-line invocation: +# gnulib-tool --import --local-dir=gl \ +# --lib=libgnu \ +# --source-base=lib \ +# --m4-base=m4 \ +# --doc-base=doc \ +# --tests-base=tests \ +# --aux-dir=build-aux \ +# --no-conditional-dependencies \ +# --no-libtool \ +# --macro-prefix=gl \ +# alloca \ +# fdl \ +# findprog-in \ +# getloadavg \ +# host-cpu-c-abi \ +# largefile \ +# make-glob \ +# make-macros + +# Specification in the form of a few gnulib-tool.m4 macro invocations: +gl_LOCAL_DIR([gl]) +gl_MODULES([ + alloca + fdl + findprog-in + getloadavg + host-cpu-c-abi + largefile + make-glob + make-macros +]) +gl_AVOID([]) +gl_SOURCE_BASE([lib]) +gl_M4_BASE([m4]) +gl_PO_BASE([]) +gl_DOC_BASE([doc]) +gl_TESTS_BASE([tests]) +gl_LIB([libgnu]) +gl_MAKEFILE_NAME([]) +gl_MACRO_PREFIX([gl]) +gl_PO_DOMAIN([]) +gl_WITNESS_C_MACRO([]) diff --git a/local/recipes/dev/gnu-make/source/m4/gnulib-common.m4 b/local/recipes/dev/gnu-make/source/m4/gnulib-common.m4 new file mode 100644 index 0000000000..8a5daa230e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/gnulib-common.m4 @@ -0,0 +1,1076 @@ +# gnulib-common.m4 serial 73 +dnl Copyright (C) 2007-2022 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. + +AC_PREREQ([2.62]) + +# gl_COMMON +# is expanded unconditionally through gnulib-tool magic. +AC_DEFUN([gl_COMMON], [ + dnl Use AC_REQUIRE here, so that the code is expanded once only. + AC_REQUIRE([gl_00GNULIB]) + AC_REQUIRE([gl_COMMON_BODY]) + AC_REQUIRE([gl_ZZGNULIB]) +]) +AC_DEFUN([gl_COMMON_BODY], [ + AH_VERBATIM([_GL_GNUC_PREREQ], +[/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ +#if defined __GNUC__ && defined __GNUC_MINOR__ +# define _GL_GNUC_PREREQ(major, minor) \ + ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) +#else +# define _GL_GNUC_PREREQ(major, minor) 0 +#endif +]) + AH_VERBATIM([_Noreturn], +[/* The _Noreturn keyword of C11. */ +#ifndef _Noreturn +# if (defined __cplusplus \ + && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ + || (defined _MSC_VER && 1900 <= _MSC_VER)) \ + && 0) + /* [[noreturn]] is not practically usable, because with it the syntax + extern _Noreturn void func (...); + would not be valid; such a declaration would only be valid with 'extern' + and '_Noreturn' swapped, or without the 'extern' keyword. However, some + AIX system header files and several gnulib header files use precisely + this syntax with 'extern'. */ +# define _Noreturn [[noreturn]] +# elif ((!defined __cplusplus || defined __clang__) \ + && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ + || (!defined __STRICT_ANSI__ \ + && (_GL_GNUC_PREREQ (4, 7) \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))))) + /* _Noreturn works as-is. */ +# elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C +# define _Noreturn __attribute__ ((__noreturn__)) +# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn +# endif +#endif +]) + AH_VERBATIM([isoc99_inline], +[/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif]) + AH_VERBATIM([attribute], +[/* Attributes. */ +#if (defined __has_attribute \ + && (!defined __clang_minor__ \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) +# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) +#else +# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr +# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) +# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) +# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_diagnose_if 0 +# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) +# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) +# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) +# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) +# ifdef _ICC +# define _GL_ATTR_may_alias 0 +# else +# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) +# endif +# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) +# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) +# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) +# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) +# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) +#endif + +#ifdef __has_c_attribute +# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \ + && _GL_GNUC_PREREQ (4, 6)) +# pragma GCC diagnostic ignored "-Wpedantic" +# endif +# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) +#else +# define _GL_HAS_C_ATTRIBUTE(attr) 0 +#endif + +]dnl There is no _GL_ATTRIBUTE_ALIGNED; use stdalign's _Alignas instead. +[ +/* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function + is the size of the returned memory block. + _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied + by the Nth argument of the function is the size of the returned memory block. + */ +/* Applies to: function, pointer to function, function types. */ +#if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +#else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +#endif + +/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the + function and report an error if it cannot do so. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +#else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +#endif + +/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show + in stack traces when debugging. The compiler should omit the function from + stack traces. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +#else +# define _GL_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via 'free'; it can be used only after declaring 'free'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib's or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following 'case' or + 'default' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a 'switch' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with '__'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type '[[un]signed] char'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don't use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + +]dnl There is no _GL_ATTRIBUTE_VISIBILITY; see m4/visibility.m4 instead. +[ +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif +]) + AH_VERBATIM([async_safe], +[/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked 'volatile'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable 'signal_occurred' is not declared 'volatile'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE +]) + AH_VERBATIM([micro_optimizations], +[/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) +]) + dnl Hint which direction to take regarding cross-compilation guesses: + dnl When a user installs a program on a platform they are not intimately + dnl familiar with, --enable-cross-guesses=conservative is the appropriate + dnl choice. It implements the "If we don't know, assume the worst" principle. + dnl However, when an operating system developer (on a platform which is not + dnl yet known to gnulib) builds packages for their platform, they want to + dnl expose, not hide, possible platform bugs; in this case, + dnl --enable-cross-guesses=risky is the appropriate choice. + dnl Sets the variables + dnl gl_cross_guess_normal (to be used when 'yes' is good and 'no' is bad), + dnl gl_cross_guess_inverted (to be used when 'no' is good and 'yes' is bad). + AC_ARG_ENABLE([cross-guesses], + [AS_HELP_STRING([--enable-cross-guesses={conservative|risky}], + [specify policy for cross-compilation guesses])], + [if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then + AC_MSG_WARN([invalid argument supplied to --enable-cross-guesses]) + enableval=conservative + fi + gl_cross_guesses="$enableval"], + [gl_cross_guesses=conservative]) + if test $gl_cross_guesses = risky; then + gl_cross_guess_normal="guessing yes" + gl_cross_guess_inverted="guessing no" + else + gl_cross_guess_normal="guessing no" + gl_cross_guess_inverted="guessing yes" + fi + dnl Preparation for running test programs: + dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not + dnl to /dev/tty, so they can be redirected to log files. Such diagnostics + dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N. + LIBC_FATAL_STDERR_=1 + export LIBC_FATAL_STDERR_ +]) + +# gl_MODULE_INDICATOR_INIT_VARIABLE([variablename]) +# gl_MODULE_INDICATOR_INIT_VARIABLE([variablename], [initialvalue]) +# initializes the shell variable that indicates the presence of the given module +# as a C preprocessor expression. +AC_DEFUN([gl_MODULE_INDICATOR_INIT_VARIABLE], +[ + GL_MODULE_INDICATOR_PREFIX[]_[$1]=m4_if([$2], , [0], [$2]) + AC_SUBST(GL_MODULE_INDICATOR_PREFIX[]_[$1]) +]) + +# gl_MODULE_INDICATOR_CONDITION +# expands to a C preprocessor expression that evaluates to 1 or 0, depending +# whether a gnulib module that has been requested shall be considered present +# or not. +m4_define([gl_MODULE_INDICATOR_CONDITION], [1]) + +# gl_MODULE_INDICATOR_SET_VARIABLE([modulename]) +# sets the shell variable that indicates the presence of the given module to +# a C preprocessor expression that will evaluate to 1. +AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], +[ + gl_MODULE_INDICATOR_SET_VARIABLE_AUX( + [GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], + [gl_MODULE_INDICATOR_CONDITION]) +]) + +# gl_MODULE_INDICATOR_SET_VARIABLE_AUX([variable]) +# modifies the shell variable to include the gl_MODULE_INDICATOR_CONDITION. +# The shell variable's value is a C preprocessor expression that evaluates +# to 0 or 1. +AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX], +[ + m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1], + [ + dnl Simplify the expression VALUE || 1 to 1. + $1=1 + ], + [gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1], + [gl_MODULE_INDICATOR_CONDITION])]) +]) + +# gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([variable], [condition]) +# modifies the shell variable to include the given condition. The shell +# variable's value is a C preprocessor expression that evaluates to 0 or 1. +AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR], +[ + dnl Simplify the expression 1 || CONDITION to 1. + if test "$[]$1" != 1; then + dnl Simplify the expression 0 || CONDITION to CONDITION. + if test "$[]$1" = 0; then + $1=$2 + else + $1="($[]$1 || $2)" + fi + fi +]) + +# gl_MODULE_INDICATOR([modulename]) +# defines a C macro indicating the presence of the given module +# in a location where it can be used. +# | Value | Value | +# | in lib/ | in tests/ | +# --------------------------------------------+---------+-----------+ +# Module present among main modules: | 1 | 1 | +# --------------------------------------------+---------+-----------+ +# Module present among tests-related modules: | 0 | 1 | +# --------------------------------------------+---------+-----------+ +# Module not present at all: | 0 | 0 | +# --------------------------------------------+---------+-----------+ +AC_DEFUN([gl_MODULE_INDICATOR], +[ + AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), + [gl_MODULE_INDICATOR_CONDITION], + [Define to a C preprocessor expression that evaluates to 1 or 0, + depending whether the gnulib module $1 shall be considered present.]) +]) + +# gl_MODULE_INDICATOR_FOR_TESTS([modulename]) +# defines a C macro indicating the presence of the given module +# in lib or tests. This is useful to determine whether the module +# should be tested. +# | Value | Value | +# | in lib/ | in tests/ | +# --------------------------------------------+---------+-----------+ +# Module present among main modules: | 1 | 1 | +# --------------------------------------------+---------+-----------+ +# Module present among tests-related modules: | 1 | 1 | +# --------------------------------------------+---------+-----------+ +# Module not present at all: | 0 | 0 | +# --------------------------------------------+---------+-----------+ +AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], +[ + AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1], + [Define to 1 when the gnulib module $1 should be tested.]) +]) + +# gl_ASSERT_NO_GNULIB_POSIXCHECK +# asserts that there will never be a need to #define GNULIB_POSIXCHECK. +# and thereby enables an optimization of configure and config.h. +# Used by Emacs. +AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK], +[ + dnl Override gl_WARN_ON_USE_PREPARE. + dnl But hide this definition from 'aclocal'. + AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], []) +]) + +# gl_ASSERT_NO_GNULIB_TESTS +# asserts that there will be no gnulib tests in the scope of the configure.ac +# and thereby enables an optimization of config.h. +# Used by Emacs. +AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS], +[ + dnl Override gl_MODULE_INDICATOR_FOR_TESTS. + AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], []) +]) + +# Test whether exists. +# Set HAVE_FEATURES_H. +AC_DEFUN([gl_FEATURES_H], +[ + AC_CHECK_HEADERS_ONCE([features.h]) + if test $ac_cv_header_features_h = yes; then + HAVE_FEATURES_H=1 + else + HAVE_FEATURES_H=0 + fi + AC_SUBST([HAVE_FEATURES_H]) +]) + +# gl_PROG_CC_C99 +# Modifies the value of the shell variable CC in an attempt to make $CC +# understand ISO C99 source code. +AC_DEFUN([gl_PROG_CC_C99], +[ + dnl Just use AC_PROG_CC_C99. + dnl When AC_PROG_CC_C99 and AC_PROG_CC_STDC are used together, the substituted + dnl value of CC will contain the C99 enabling options twice. But this is only + dnl a cosmetic problem. + dnl With Autoconf >= 2.70, use AC_PROG_CC since it implies AC_PROG_CC_C99; + dnl this avoids a "warning: The macro `AC_PROG_CC_C99' is obsolete." + m4_version_prereq([2.70], + [AC_REQUIRE([AC_PROG_CC])], + [AC_REQUIRE([AC_PROG_CC_C99])]) +]) + +# gl_PROG_AR_RANLIB +# Determines the values for AR, ARFLAGS, RANLIB that fit with the compiler. +# The user can set the variables AR, ARFLAGS, RANLIB if he wants to override +# the values. +AC_DEFUN([gl_PROG_AR_RANLIB], +[ + dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler + dnl as "cc", and GCC as "gcc". They have different object file formats and + dnl library formats. In particular, the GNU binutils programs ar and ranlib + dnl produce libraries that work only with gcc, not with cc. + AC_REQUIRE([AC_PROG_CC]) + dnl The '][' hides this use from 'aclocal'. + AC_BEFORE([$0], [A][M_PROG_AR]) + AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], + [ + AC_EGREP_CPP([Amsterdam], + [ +#ifdef __ACK__ +Amsterdam +#endif + ], + [gl_cv_c_amsterdam_compiler=yes], + [gl_cv_c_amsterdam_compiler=no]) + ]) + + dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not + dnl building with __ACK__. + if test $gl_cv_c_amsterdam_compiler = yes; then + if test -z "$AR"; then + AR='cc -c.a' + fi + if test -z "$ARFLAGS"; then + ARFLAGS='-o' + fi + else + dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST + dnl ARFLAGS variable (it is filed into Makefile.in directly by automake + dnl script on-demand, if not specified by ./configure of course). + dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above + dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block + dnl because AM_PROG_AR is written so it could re-set AR variable even for + dnl __ACK__. It may seem like its easier to avoid calling the macro here, + dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good + dnl default value and automake should usually know them). + dnl + dnl The '][' hides this use from 'aclocal'. + m4_ifdef([A][M_PROG_AR], [A][M_PROG_AR], [:]) + fi + + dnl In case the code above has not helped with setting AR/ARFLAGS, use + dnl Automake-documented default values for AR and ARFLAGS, but prefer + dnl ${host}-ar over ar (useful for cross-compiling). + AC_CHECK_TOOL([AR], [ar], [ar]) + if test -z "$ARFLAGS"; then + ARFLAGS='cr' + fi + + AC_SUBST([AR]) + AC_SUBST([ARFLAGS]) + if test -z "$RANLIB"; then + if test $gl_cv_c_amsterdam_compiler = yes; then + RANLIB=':' + else + dnl Use the ranlib program if it is available. + AC_PROG_RANLIB + fi + fi + AC_SUBST([RANLIB]) +]) + +# AC_C_RESTRICT +# This definition is copied from post-2.70 Autoconf and overrides the +# AC_C_RESTRICT macro from autoconf 2.60..2.70. +m4_version_prereq([2.70.1], [], [ +AC_DEFUN([AC_C_RESTRICT], +[AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], + [ac_cv_c_restrict=no + # Put '__restrict__' first, to avoid problems with glibc and non-GCC; see: + # https://lists.gnu.org/archive/html/bug-autoconf/2016-02/msg00006.html + # Put 'restrict' last, because C++ lacks it. + for ac_kw in __restrict__ __restrict _Restrict restrict; do + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[typedef int *int_ptr; + int foo (int_ptr $ac_kw ip) { return ip[0]; } + int bar (int [$ac_kw]); /* Catch GCC bug 14050. */ + int bar (int ip[$ac_kw]) { return ip[0]; } + ]], + [[int s[1]; + int *$ac_kw t = s; + t[0] = 0; + return foo (t) + bar (t); + ]])], + [ac_cv_c_restrict=$ac_kw]) + test "$ac_cv_c_restrict" != no && break + done + ]) + AH_VERBATIM([restrict], +[/* Define to the equivalent of the C99 'restrict' keyword, or to + nothing if this is not supported. Do not define if restrict is + supported only directly. */ +#undef restrict +/* Work around a bug in older versions of Sun C++, which did not + #define __restrict__ or support _Restrict or __restrict__ + even though the corresponding Sun C compiler ended up with + "#define restrict _Restrict" or "#define restrict __restrict__" + in the previous line. This workaround can be removed once + we assume Oracle Developer Studio 12.5 (2016) or later. */ +#if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__ +# define _Restrict +# define __restrict__ +#endif]) + case $ac_cv_c_restrict in + restrict) ;; + no) AC_DEFINE([restrict], []) ;; + *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; + esac +])# AC_C_RESTRICT +]) + +# gl_BIGENDIAN +# is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd. +# Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some +# macros invoke AC_C_BIGENDIAN with arguments. +AC_DEFUN([gl_BIGENDIAN], +[ + AC_C_BIGENDIAN +]) + +# A temporary file descriptor. +# Must be less than 10, because dash 0.5.8 does not support redirections +# with multi-digit file descriptors. +m4_define([GL_TMP_FD], 9) + +# gl_SILENT(command) +# executes command, but without the normal configure output. +# This is useful when you want to invoke AC_CACHE_CHECK (or AC_CHECK_FUNC etc.) +# inside another AC_CACHE_CHECK. +AC_DEFUN([gl_SILENT], +[ + exec GL_TMP_FD>&AS_MESSAGE_FD AS_MESSAGE_FD>/dev/null + $1 + exec AS_MESSAGE_FD>&GL_TMP_FD GL_TMP_FD>&- +]) + +# gl_CACHE_VAL_SILENT(cache-id, command-to-set-it) +# is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not +# output a spurious "(cached)" mark in the midst of other configure output. +# This macro should be used instead of AC_CACHE_VAL when it is not surrounded +# by an AC_MSG_CHECKING/AC_MSG_RESULT pair. +AC_DEFUN([gl_CACHE_VAL_SILENT], +[ + gl_SILENT([ + AC_CACHE_VAL([$1], [$2]) + ]) +]) + +# gl_CONDITIONAL(conditional, condition) +# is like AM_CONDITIONAL(conditional, condition), except that it does not +# produce an error +# configure: error: conditional "..." was never defined. +# Usually this means the macro was only invoked conditionally. +# when only invoked conditionally. Instead, in that case, both the _TRUE +# and the _FALSE case are disabled. +AC_DEFUN([gl_CONDITIONAL], +[ + pushdef([AC_CONFIG_COMMANDS_PRE], [:])dnl + AM_CONDITIONAL([$1], [$2]) + popdef([AC_CONFIG_COMMANDS_PRE])dnl + if test -z "${[$1]_TRUE}" && test -z "${[$1]_FALSE}"; then + [$1]_TRUE='#' + [$1]_FALSE='#' + fi +]) + +# gl_CC_ALLOW_WARNINGS +# sets and substitutes a variable GL_CFLAG_ALLOW_WARNINGS, to a $(CC) option +# that reverts a preceding '-Werror' option, if available. +# This is expected to be '-Wno-error' on gcc, clang (except clang/MSVC), xlclang +# and empty otherwise. +AC_DEFUN([gl_CC_ALLOW_WARNINGS], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_CACHE_CHECK([for C compiler option to allow warnings], + [gl_cv_cc_wallow], + [rm -f conftest* + echo 'int dummy;' > conftest.c + AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err]) >/dev/null + AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err]) >/dev/null + dnl Test the number of error output lines, because AIX xlc accepts the + dnl option '-Wno-error', just to produce a warning + dnl "Option -Wno-error was incorrectly specified. The option will be ignored." + dnl afterwards. + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cc_wallow='-Wno-error' + else + gl_cv_cc_wallow=none + fi + rm -f conftest* + ]) + case "$gl_cv_cc_wallow" in + none) GL_CFLAG_ALLOW_WARNINGS='' ;; + *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; + esac + AC_SUBST([GL_CFLAG_ALLOW_WARNINGS]) +]) + +# gl_CXX_ALLOW_WARNINGS +# sets and substitutes a variable GL_CXXFLAG_ALLOW_WARNINGS, to a $(CC) option +# that reverts a preceding '-Werror' option, if available. +AC_DEFUN([gl_CXX_ALLOW_WARNINGS], +[ + dnl Requires AC_PROG_CXX or gl_PROG_ANSI_CXX. + if test -n "$CXX" && test "$CXX" != no; then + AC_CACHE_CHECK([for C++ compiler option to allow warnings], + [gl_cv_cxx_wallow], + [rm -f conftest* + echo 'int dummy;' > conftest.cc + AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>conftest1.err]) >/dev/null + AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -Wno-error -c conftest.cc 2>conftest2.err]) >/dev/null + dnl Test the number of error output lines, because AIX xlC accepts the + dnl option '-Wno-error', just to produce a warning + dnl "Option -Wno-error was incorrectly specified. The option will be ignored." + dnl afterwards. + if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then + gl_cv_cxx_wallow='-Wno-error' + else + gl_cv_cxx_wallow=none + fi + rm -f conftest* + ]) + case "$gl_cv_cxx_wallow" in + none) GL_CXXFLAG_ALLOW_WARNINGS='' ;; + *) GL_CXXFLAG_ALLOW_WARNINGS="$gl_cv_cxx_wallow" ;; + esac + else + GL_CXXFLAG_ALLOW_WARNINGS='' + fi + AC_SUBST([GL_CXXFLAG_ALLOW_WARNINGS]) +]) + +# gl_CC_GNULIB_WARNINGS +# sets and substitutes a variable GL_CFLAG_GNULIB_WARNINGS, to a $(CC) option +# set that enables or disables warnings as suitable for the Gnulib coding style. +AC_DEFUN([gl_CC_GNULIB_WARNINGS], +[ + AC_REQUIRE([gl_CC_ALLOW_WARNINGS]) + dnl Assume that the compiler supports -Wno-* options only if it also supports + dnl -Wno-error. + GL_CFLAG_GNULIB_WARNINGS='' + if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then + dnl Enable these warning options: + dnl + dnl GCC clang + dnl -Wno-cast-qual >= 3 >= 3.9 + dnl -Wno-conversion >= 3 >= 3.9 + dnl -Wno-float-conversion >= 4.9 >= 3.9 + dnl -Wno-float-equal >= 3 >= 3.9 + dnl -Wimplicit-fallthrough >= 7 >= 3.9 + dnl -Wno-pedantic >= 4.8 >= 3.9 + dnl -Wno-sign-compare >= 3 >= 3.9 + dnl -Wno-sign-conversion >= 4.3 >= 3.9 + dnl -Wno-type-limits >= 4.3 >= 3.9 + dnl -Wno-undef >= 3 >= 3.9 + dnl -Wno-unsuffixed-float-constants >= 4.5 + dnl -Wno-unused-function >= 3 >= 3.9 + dnl -Wno-unused-parameter >= 3 >= 3.9 + dnl + cat > conftest.c <<\EOF + #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-cast-qual + -Wno-conversion + -Wno-float-equal + -Wno-sign-compare + -Wno-undef + -Wno-unused-function + -Wno-unused-parameter + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-float-conversion + #endif + #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wimplicit-fallthrough + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-pedantic + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) + -Wno-sign-conversion + -Wno-type-limits + #endif + #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 + -Wno-unsuffixed-float-constants + #endif +EOF + gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" + if AC_TRY_EVAL([gl_command]); then + gl_options=`grep -v '#' conftest.out` + for word in $gl_options; do + GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" + done + fi + rm -f conftest.c conftest.out + fi + AC_SUBST([GL_CFLAG_GNULIB_WARNINGS]) +]) + +dnl gl_CONDITIONAL_HEADER([foo.h]) +dnl takes a shell variable GL_GENERATE_FOO_H (with value true or false) as input +dnl and produces +dnl - an AC_SUBSTed variable FOO_H that is either a file name or empty, based +dnl on whether GL_GENERATE_FOO_H is true or false, +dnl - an Automake conditional GL_GENERATE_FOO_H that evaluates to the value of +dnl the shell variable GL_GENERATE_FOO_H. +AC_DEFUN([gl_CONDITIONAL_HEADER], +[ + m4_pushdef([gl_header_name], AS_TR_SH(m4_toupper($1))) + m4_pushdef([gl_generate_var], [GL_GENERATE_]AS_TR_SH(m4_toupper($1))) + m4_pushdef([gl_generate_cond], [GL_GENERATE_]AS_TR_SH(m4_toupper($1))) + case "$gl_generate_var" in + false) gl_header_name='' ;; + true) + dnl It is OK to use a .h file in lib/ from within tests/, but not vice + dnl versa. + if test -z "$gl_header_name"; then + gl_header_name="${gl_source_base_prefix}$1" + fi + ;; + *) echo "*** gl_generate_var is not set correctly" 1>&2; exit 1 ;; + esac + AC_SUBST(gl_header_name) + gl_CONDITIONAL(gl_generate_cond, [$gl_generate_var]) + m4_popdef([gl_generate_cond]) + m4_popdef([gl_generate_var]) + m4_popdef([gl_header_name]) +]) + +dnl Expands to some code for use in .c programs that, on native Windows, defines +dnl the Microsoft deprecated alias function names to the underscore-prefixed +dnl actual function names. With this macro, these function names are available +dnl without linking with '-loldnames' and without generating warnings. +dnl Usage: Use it after all system header files are included. +dnl #include <...> +dnl #include <...> +dnl ]GL_MDA_DEFINES[ +dnl ... +AC_DEFUN([GL_MDA_DEFINES],[ +AC_REQUIRE([_GL_MDA_DEFINES]) +[$gl_mda_defines] +]) +AC_DEFUN([_GL_MDA_DEFINES], +[gl_mda_defines=' +#if defined _WIN32 && !defined __CYGWIN__ +#define access _access +#define chdir _chdir +#define chmod _chmod +#define close _close +#define creat _creat +#define dup _dup +#define dup2 _dup2 +#define ecvt _ecvt +#define execl _execl +#define execle _execle +#define execlp _execlp +#define execv _execv +#define execve _execve +#define execvp _execvp +#define execvpe _execvpe +#define fcloseall _fcloseall +#define fcvt _fcvt +#define fdopen _fdopen +#define fileno _fileno +#define gcvt _gcvt +#define getcwd _getcwd +#define getpid _getpid +#define getw _getw +#define isatty _isatty +#define j0 _j0 +#define j1 _j1 +#define jn _jn +#define lfind _lfind +#define lsearch _lsearch +#define lseek _lseek +#define memccpy _memccpy +#define mkdir _mkdir +#define mktemp _mktemp +#define open _open +#define putenv _putenv +#define putw _putw +#define read _read +#define rmdir _rmdir +#define strdup _strdup +#define swab _swab +#define tempnam _tempnam +#define tzset _tzset +#define umask _umask +#define unlink _unlink +#define utime _utime +#define wcsdup _wcsdup +#define write _write +#define y0 _y0 +#define y1 _y1 +#define yn _yn +#endif +' +]) diff --git a/local/recipes/dev/gnu-make/source/m4/gnulib-comp.m4 b/local/recipes/dev/gnu-make/source/m4/gnulib-comp.m4 new file mode 100644 index 0000000000..27c859dfdc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/gnulib-comp.m4 @@ -0,0 +1,329 @@ +# DO NOT EDIT! GENERATED AUTOMATICALLY! +# Copyright (C) 2002-2022 Free Software Foundation, Inc. +# +# 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 file is distributed in the hope that it will be useful, +# but WITHOUT 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 file. If not, see . +# +# As a special exception to the GNU General Public License, +# this file may be distributed as part of a program that +# contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# Generated by gnulib-tool. +# +# This file represents the compiled summary of the specification in +# gnulib-cache.m4. It lists the computed macro invocations that need +# to be invoked from configure.ac. +# In projects that use version control, this file can be treated like +# other built files. + + +# This macro should be invoked from ./configure.ac, in the section +# "Checks for programs", right after AC_PROG_CC, and certainly before +# any checks for libraries, header files, types and library functions. +AC_DEFUN([gl_EARLY], +[ + m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace + m4_pattern_allow([^gl_ES$])dnl a valid locale name + m4_pattern_allow([^gl_LIBOBJS$])dnl a variable + m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable + + # Pre-early section. + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_REQUIRE([gl_PROG_AR_RANLIB]) + + # Code from module alloca: + # Code from module alloca-opt: + # Code from module concat-filename: + # Code from module extensions: + # Code from module fdl: + # Code from module filename: + # Code from module findprog-in: + # Code from module gen-header: + # Code from module getloadavg: + # Code from module host-cpu-c-abi: + # Code from module intprops: + # Code from module largefile: + AC_REQUIRE([AC_SYS_LARGEFILE]) + AC_REQUIRE([gl_YEAR2038_EARLY]) + # Code from module make-glob: + # Code from module make-macros: + # Code from module snippet/warn-on-use: + # Code from module stdbool: +]) + +# This macro should be invoked from ./configure.ac, in the section +# "Check for header files, types and library functions". +AC_DEFUN([gl_INIT], +[ + AC_CONFIG_LIBOBJ_DIR([lib]) + AM_CONDITIONAL([GL_COND_LIBTOOL], [false]) + gl_cond_libtool=false + gl_libdeps= + gl_ltlibdeps= + gl_m4_base='m4' + m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS])) + m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES])) + m4_pushdef([gl_LIBSOURCES_LIST], []) + m4_pushdef([gl_LIBSOURCES_DIR], []) + m4_pushdef([GL_MACRO_PREFIX], [gl]) + m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL]) + gl_COMMON + gl_source_base='lib' + gl_source_base_prefix= + gl_FUNC_ALLOCA + gl_CONDITIONAL_HEADER([alloca.h]) + AC_PROG_MKDIR_P + gl_FINDPROG_IN + gl_STDLIB_H + gl_STDLIB_H_REQUIRE_DEFAULTS + AC_REQUIRE([AC_CANONICAL_HOST]) + gl_GETLOADAVG + gl_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) + AM_COND_IF([GL_COND_OBJ_GETLOADAVG], [ + gl_PREREQ_GETLOADAVG + ]) + gl_STDLIB_MODULE_INDICATOR([getloadavg]) + AC_REQUIRE([gl_HOST_CPU_C_ABI]) + AC_REQUIRE([gl_LARGEFILE]) + # 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 + #include + #include + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include + # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif], + [make_cv_sys_gnu_glob=yes], + [make_cv_sys_gnu_glob=no])]) + # Tell automake about this, so it can build the right .c files. + AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) + # Tell build.sh which to use + USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" + AC_SUBST([USE_SYSTEM_GLOB]) + # Check for DOS-style pathnames. + pds_AC_DOS_PATHS + gl_STDBOOL_H + gl_CONDITIONAL_HEADER([stdbool.h]) + AC_PROG_MKDIR_P + # End of code from modules + m4_ifval(gl_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || + for gl_file in ]gl_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])dnl + m4_if(m4_sysval, [0], [], + [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) + ]) + m4_popdef([GL_MODULE_INDICATOR_PREFIX]) + m4_popdef([GL_MACRO_PREFIX]) + m4_popdef([gl_LIBSOURCES_DIR]) + m4_popdef([gl_LIBSOURCES_LIST]) + m4_popdef([AC_LIBSOURCES]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + AC_CONFIG_COMMANDS_PRE([ + gl_libobjs= + gl_ltlibobjs= + gl_libobjdeps= + if test -n "$gl_LIBOBJS"; then + # Remove the extension. +changequote(,)dnl + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' +changequote([, ])dnl + for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gl_libobjs="$gl_libobjs $i.$ac_objext" + gl_ltlibobjs="$gl_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) + AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) + AC_SUBST([gl_LIBOBJDEPS], [$gl_libobjdeps]) + ]) + gltests_libdeps= + gltests_ltlibdeps= + m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ])) + m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS])) + m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES])) + m4_pushdef([gltests_LIBSOURCES_LIST], []) + m4_pushdef([gltests_LIBSOURCES_DIR], []) + m4_pushdef([GL_MACRO_PREFIX], [gltests]) + m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL]) + gl_COMMON + gl_source_base='tests' + gl_source_base_prefix= +changequote(,)dnl + gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS +changequote([, ])dnl + AC_SUBST([gltests_WITNESS]) + gl_module_indicator_condition=$gltests_WITNESS + m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition]) + m4_popdef([gl_MODULE_INDICATOR_CONDITION]) + m4_ifval(gltests_LIBSOURCES_LIST, [ + m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ || + for gl_file in ]gltests_LIBSOURCES_LIST[ ; do + if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then + echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2 + exit 1 + fi + done])dnl + m4_if(m4_sysval, [0], [], + [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) + ]) + m4_popdef([GL_MODULE_INDICATOR_PREFIX]) + m4_popdef([GL_MACRO_PREFIX]) + m4_popdef([gltests_LIBSOURCES_DIR]) + m4_popdef([gltests_LIBSOURCES_LIST]) + m4_popdef([AC_LIBSOURCES]) + m4_popdef([AC_REPLACE_FUNCS]) + m4_popdef([AC_LIBOBJ]) + AC_CONFIG_COMMANDS_PRE([ + gltests_libobjs= + gltests_ltlibobjs= + gltests_libobjdeps= + if test -n "$gltests_LIBOBJS"; then + # Remove the extension. +changequote(,)dnl + sed_drop_objext='s/\.o$//;s/\.obj$//' + sed_dirname1='s,//*,/,g' + sed_dirname2='s,\(.\)/$,\1,' + sed_dirname3='s,^[^/]*$,.,' + sed_dirname4='s,\(.\)/[^/]*$,\1,' + sed_basename1='s,.*/,,' +changequote([, ])dnl + for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do + gltests_libobjs="$gltests_libobjs $i.$ac_objext" + gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" + i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` + i_base=`echo "$i" | sed -e "$sed_basename1"` + gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" + done + fi + AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) + AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) + AC_SUBST([gltests_LIBOBJDEPS], [$gltests_libobjdeps]) + ]) + AC_REQUIRE([gl_CC_GNULIB_WARNINGS]) + LIBGNU_LIBDEPS="$gl_libdeps" + AC_SUBST([LIBGNU_LIBDEPS]) + LIBGNU_LTLIBDEPS="$gl_ltlibdeps" + AC_SUBST([LIBGNU_LTLIBDEPS]) +]) + +# Like AC_LIBOBJ, except that the module name goes +# into gl_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gl_LIBOBJ], [ + AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl + gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext" +]) + +# Like AC_REPLACE_FUNCS, except that the module name goes +# into gl_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gl_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)]) +]) + +# Like AC_LIBSOURCES, except the directory where the source file is +# expected is derived from the gnulib-tool parameterization, +# and alloca is special cased (for the alloca-opt module). +# We could also entirely rely on EXTRA_lib..._SOURCES. +AC_DEFUN([gl_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([gl_LIBSOURCES_DIR], [lib]) + m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) + +# Like AC_LIBOBJ, except that the module name goes +# into gltests_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gltests_LIBOBJ], [ + AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl + gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext" +]) + +# Like AC_REPLACE_FUNCS, except that the module name goes +# into gltests_LIBOBJS instead of into LIBOBJS. +AC_DEFUN([gltests_REPLACE_FUNCS], [ + m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl + AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)]) +]) + +# Like AC_LIBSOURCES, except the directory where the source file is +# expected is derived from the gnulib-tool parameterization, +# and alloca is special cased (for the alloca-opt module). +# We could also entirely rely on EXTRA_lib..._SOURCES. +AC_DEFUN([gltests_LIBSOURCES], [ + m4_foreach([_gl_NAME], [$1], [ + m4_if(_gl_NAME, [alloca.c], [], [ + m4_define([gltests_LIBSOURCES_DIR], [tests]) + m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ]) + ]) + ]) +]) + +# This macro records the list of files which have been installed by +# gnulib-tool and may be removed by future gnulib-tool invocations. +AC_DEFUN([gl_FILE_LIST], [ + doc/fdl.texi + lib/alloca.c + lib/alloca.in.h + lib/concat-filename.c + lib/concat-filename.h + lib/filename.h + lib/findprog-in.c + lib/findprog.h + lib/fnmatch.c + lib/fnmatch.in.h + lib/getloadavg.c + lib/glob.c + lib/glob.in.h + lib/intprops.h + lib/stdbool.in.h + lib/warn-on-use.h + m4/00gnulib.m4 + m4/acinclude.m4 + m4/alloca.m4 + m4/asm-underscore.m4 + m4/dospaths.m4 + m4/eaccess.m4 + m4/extensions.m4 + m4/findprog-in.m4 + m4/getloadavg.m4 + m4/gnulib-common.m4 + m4/host-cpu-c-abi.m4 + m4/largefile.m4 + m4/stdbool.m4 + m4/warn-on-use.m4 + m4/year2038.m4 + m4/zzgnulib.m4 +]) diff --git a/local/recipes/dev/gnu-make/source/m4/host-cpu-c-abi.m4 b/local/recipes/dev/gnu-make/source/m4/host-cpu-c-abi.m4 new file mode 100644 index 0000000000..b9223241b4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/host-cpu-c-abi.m4 @@ -0,0 +1,678 @@ +# host-cpu-c-abi.m4 serial 15 +dnl Copyright (C) 2002-2022 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 and Sam Steingold. + +dnl Sets the HOST_CPU variable to the canonical name of the CPU. +dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its +dnl C language ABI (application binary interface). +dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in +dnl config.h. +dnl +dnl This canonical name can be used to select a particular assembly language +dnl source file that will interoperate with C code on the given host. +dnl +dnl For example: +dnl * 'i386' and 'sparc' are different canonical names, because code for i386 +dnl will not run on SPARC CPUs and vice versa. They have different +dnl instruction sets. +dnl * 'sparc' and 'sparc64' are different canonical names, because code for +dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code +dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit +dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit +dnl mode, but not both. +dnl * 'mips' and 'mipsn32' are different canonical names, because they use +dnl different argument passing and return conventions for C functions, and +dnl although the instruction set of 'mips' is a large subset of the +dnl instruction set of 'mipsn32'. +dnl * 'mipsn32' and 'mips64' are different canonical names, because they use +dnl different sizes for the C types like 'int' and 'void *', and although +dnl the instruction sets of 'mipsn32' and 'mips64' are the same. +dnl * The same canonical name is used for different endiannesses. You can +dnl determine the endianness through preprocessor symbols: +dnl - 'arm': test __ARMEL__. +dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL. +dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN. +dnl * The same name 'i386' is used for CPUs of type i386, i486, i586 +dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because +dnl - Instructions that do not exist on all of these CPUs (cmpxchg, +dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your +dnl assembly language source files use such instructions, you will +dnl need to make the distinction. +dnl - Speed of execution of the common instruction set is reasonable across +dnl the entire family of CPUs. If you have assembly language source files +dnl that are optimized for particular CPU types (like GNU gmp has), you +dnl will need to make the distinction. +dnl See . +AC_DEFUN([gl_HOST_CPU_C_ABI], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], + [case "$host_cpu" in + +changequote(,)dnl + i[34567]86 ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=x86_64-x32], + [gl_cv_host_cpu_c_abi=x86_64])], + [gl_cv_host_cpu_c_abi=i386]) + ;; + +changequote(,)dnl + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __aarch64__ + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=arm64-ilp32], + [gl_cv_host_cpu_c_abi=arm64])], + [# Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ]) + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __LP64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=hppa64], + [gl_cv_host_cpu_c_abi=hppa]) + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=ia64-ilp32], + [gl_cv_host_cpu_c_abi=ia64]) + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mips64], + [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mipsn32], + [gl_cv_host_cpu_c_abi=mips])]) + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [# On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=powerpc64-elfv2], + [gl_cv_host_cpu_c_abi=powerpc64]) + ], + [gl_cv_host_cpu_c_abi=powerpc]) + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + ]])], + [cpu=riscv64], + [cpu=riscv32]) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [main_abi=lp64], + [main_abi=ilp32]) + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + ]])], + [float_abi=d], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + ]])], + [float_abi=f], + [float_abi='']) + ]) + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=s390x], + [gl_cv_host_cpu_c_abi=s390]) + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=sparc64], + [gl_cv_host_cpu_c_abi=sparc]) + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ]) + + dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + AC_SUBST([HOST_CPU]) + AC_SUBST([HOST_CPU_C_ABI]) + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h < +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_func_iconv=yes]) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);]])], + [am_cv_lib_iconv=yes] + [am_cv_func_iconv=yes]) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ + dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, + dnl Solaris 10. + am_save_LIBS="$LIBS" + if test $am_cv_lib_iconv = yes; then + LIBS="$LIBS $LIBICONV" + fi + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + ]], + [[int result = 0; + /* 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 ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 1; + iconv_close (cd_utf8_to_88591); + } + } + /* 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 ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res == 0) + result |= 2; + iconv_close (cd_ascii_to_88591); + } + } + /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ + { + iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); + if (cd_88591_to_utf8 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) + result |= 4; + iconv_close (cd_88591_to_utf8); + } + } +#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 ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_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, + &inptr, &inbytesleft, + &outptr, &outbytesleft); + if ((int)res > 0) + result |= 8; + iconv_close (cd_88591_to_utf8); + } + } +#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)) + result |= 16; + return result; +]])], + [am_cv_func_iconv_works=yes], , + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + test "$am_cv_func_iconv_works" = no || break + done + 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]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST([LIBICONV]) + AC_SUBST([LTLIBICONV]) +]) + +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])]], + [m4_ifdef([gl_00GNULIB], + [[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_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + ]], + [[]])], + [am_cv_proto_iconv_arg1=""], + [am_cv_proto_iconv_arg1="const"]) + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([ + $am_cv_proto_iconv]) + AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + dnl Also substitute ICONV_CONST in the gnulib generated . + m4_ifdef([gl_ICONV_H_DEFAULTS], + [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + if test -n "$am_cv_proto_iconv_arg1"; then + ICONV_CONST="const" + fi + ]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/intdiv0.m4 b/local/recipes/dev/gnu-make/source/m4/intdiv0.m4 new file mode 100644 index 0000000000..afa9acb82c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/intdiv0.m4 @@ -0,0 +1,87 @@ +# intdiv0.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2002, 2007-2008, 2010-2014 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_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, + [ + gt_cv_int_divbyzero_sigfpe= +changequote(,)dnl + case "$host_os" in + macos* | darwin[6-9]* | darwin[1-9][0-9]*) + # On Mac OS X 10.2 or newer, just assume the same as when cross- + # compiling. If we were to perform the real test, 1 Crash Report + # dialog window would pop up. + case "$host_cpu" in + i[34567]86 | x86_64) + gt_cv_int_divbyzero_sigfpe="guessing yes" ;; + esac + ;; + esac +changequote([,])dnl + if test -z "$gt_cv_int_divbyzero_sigfpe"; then + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#include + +static void +sigfpe_handler (int sig) +{ + /* 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 (2); +} +]])], + [gt_cv_int_divbyzero_sigfpe=yes], + [gt_cv_int_divbyzero_sigfpe=no], + [ + # Guess based on the CPU. +changequote(,)dnl + case "$host_cpu" in + alpha* | i[34567]86 | x86_64 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac +changequote([,])dnl + ]) + fi + ]) + 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/local/recipes/dev/gnu-make/source/m4/intl.m4 b/local/recipes/dev/gnu-make/source/m4/intl.m4 new file mode 100644 index 0000000000..0c29ad0df8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/intl.m4 @@ -0,0 +1,298 @@ +# intl.m4 serial 28 (gettext-0.19) +dnl Copyright (C) 1995-2014 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 Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2009. + +AC_PREREQ([2.60]) + +dnl Checks for all prerequisites of the intl subdirectory, +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +AC_DEFUN([AM_INTL_SUBDIR], +[ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([gt_GLIBC2])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([gl_VISIBILITY])dnl + AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl + AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl + AC_REQUIRE([gt_TYPE_WCHAR_T])dnl + AC_REQUIRE([gt_TYPE_WINT_T])dnl + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gt_PRINTF_POSIX]) + AC_REQUIRE([gl_GLIBC21])dnl + AC_REQUIRE([gl_XSIZE])dnl + AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl + AC_REQUIRE([gt_INTL_MACOSX])dnl + AC_REQUIRE([gl_EXTERN_INLINE])dnl + AC_REQUIRE([gt_GL_ATTRIBUTE])dnl + + dnl Support for automake's --enable-silent-rules. + case "$enable_silent_rules" in + yes) INTL_DEFAULT_VERBOSITY=0;; + no) INTL_DEFAULT_VERBOSITY=1;; + *) INTL_DEFAULT_VERBOSITY=1;; + esac + AC_SUBST([INTL_DEFAULT_VERBOSITY]) + + 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([features.h stddef.h stdlib.h string.h]) + AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ + snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) + + 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). + AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include ]) + + 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). + AC_CHECK_DECLS([getc_unlocked], , , [#include ]) + + 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_newlocale" = yes; then + HAVE_NEWLOCALE=1 + else + HAVE_NEWLOCALE=0 + fi + AC_SUBST([HAVE_NEWLOCALE]) + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + AC_SUBST([HAVE_WPRINTF]) + + AM_LANGINFO_CODESET + gt_LC_MESSAGES + + dnl Compilation on mingw and Cygwin needs special Makefile rules, because + dnl 1. when we install a shared library, we must arrange to export + dnl auxiliary pointer variables for every exported variable, + dnl 2. when we install a shared library and a static library simultaneously, + dnl the include file specifies __declspec(dllimport) and therefore we + dnl must arrange to define the auxiliary pointer variables for the + dnl exported variables _also_ in the static library. + if test "$enable_shared" = yes; then + case "$host_os" in + mingw* | cygwin*) is_woe32dll=yes ;; + *) is_woe32dll=no ;; + esac + else + is_woe32dll=no + fi + WOE32DLL=$is_woe32dll + AC_SUBST([WOE32DLL]) + + dnl On mingw and Cygwin, we can activate special Makefile rules which add + dnl version information to the shared libraries and executables. + case "$host_os" in + mingw* | cygwin*) is_woe32=yes ;; + *) is_woe32=no ;; + esac + WOE32=$is_woe32 + AC_SUBST([WOE32]) + if test $WOE32 = yes; then + dnl Check for a program that compiles Windows resource files. + AC_CHECK_TOOL([WINDRES], [windres]) + fi + + dnl Determine whether when creating a library, "-lc" should be passed to + dnl libtool or not. On many platforms, it is required for the libtool option + dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool + dnl in the *.la files - makes it impossible to create multithreaded programs, + dnl because libtool also reorders the -lc to come before the -pthread, and + dnl this disables pthread_create() . + case "$host_os" in + hpux*) LTLIBC="" ;; + *) LTLIBC="-lc" ;; + esac + AC_SUBST([LTLIBC]) + + dnl Rename some macros and functions used for locking. + AH_BOTTOM([ +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init_func libintl_lock_init_func +#define glthread_lock_lock_func libintl_lock_lock_func +#define glthread_lock_unlock_func libintl_lock_unlock_func +#define glthread_lock_destroy_func libintl_lock_destroy_func +#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded +#define glthread_rwlock_init_func libintl_rwlock_init_func +#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded +#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func +#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded +#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func +#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded +#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func +#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded +#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func +#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded +#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func +#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded +#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func +#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded +#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func +#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded +#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func +#define glthread_once_func libintl_once_func +#define glthread_once_singlethreaded libintl_once_singlethreaded +#define glthread_once_multithreaded libintl_once_multithreaded +]) +]) + + +dnl Checks for the core files of the intl subdirectory: +dnl dcigettext.c +dnl eval-plural.h +dnl explodename.c +dnl finddomain.c +dnl gettextP.h +dnl gmo.h +dnl hash-string.h hash-string.c +dnl l10nflist.c +dnl libgnuintl.h.in (except the *printf stuff) +dnl loadinfo.h +dnl loadmsgcat.c +dnl localealias.c +dnl log.c +dnl plural-exp.h plural-exp.c +dnl plural.y +dnl Used by libglocale. +AC_DEFUN([gt_INTL_SUBDIR_CORE], +[ + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + AC_REQUIRE([gl_LOCK])dnl + + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]], + [[]])], + [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], + [Define to 1 if the compiler understands __builtin_expect.])]) + + AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ + stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ + argz_stringify argz_next __fsetlocking]) + + 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). + AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include ]) + + AM_ICONV + + 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-2.7 for %define api.pure. + 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;; + 2.[7-9]* | [3-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi +]) + +dnl Copies _GL_UNUSED and _GL_ATTRIBUTE_PURE definitions from +dnl gnulib-common.m4 as a fallback, if the project isn't using Gnulib. +AC_DEFUN([gt_GL_ATTRIBUTE], [ + m4_ifndef([gl_[]COMMON], + AH_VERBATIM([gt_gl_attribute], +[/* Define as a marker that can be attached to declarations that might not + be used. This helps to reduce warnings, such as from + GCC -Wunused-parameter. */ +#ifndef _GL_UNUSED +# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_UNUSED +# endif +#endif + +/* The __pure__ attribute was added in gcc 2.96. */ +#ifndef _GL_ATTRIBUTE_PURE +# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE /* empty */ +# endif +#endif +]))]) diff --git a/local/recipes/dev/gnu-make/source/m4/intldir.m4 b/local/recipes/dev/gnu-make/source/m4/intldir.m4 new file mode 100644 index 0000000000..73b672a576 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/intldir.m4 @@ -0,0 +1,19 @@ +# intldir.m4 serial 2 (gettext-0.18) +dnl Copyright (C) 2006, 2009-2014 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. + +AC_PREREQ([2.52]) + +dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory. +AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], []) diff --git a/local/recipes/dev/gnu-make/source/m4/intlmacosx.m4 b/local/recipes/dev/gnu-make/source/m4/intlmacosx.m4 new file mode 100644 index 0000000000..8a045f6a29 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/intlmacosx.m4 @@ -0,0 +1,56 @@ +# intlmacosx.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2004-2014 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 Mac OS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in Mac OS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + [gt_cv_func_CFPreferencesCopyAppValue], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[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 Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in Mac OS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[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 Mac OS 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/local/recipes/dev/gnu-make/source/m4/intmax.m4 b/local/recipes/dev/gnu-make/source/m4/intmax.m4 new file mode 100644 index 0000000000..f70ceeea1b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/intmax.m4 @@ -0,0 +1,36 @@ +# intmax.m4 serial 6 (gettext-0.18.2) +dnl Copyright (C) 2002-2005, 2008-2014 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. +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([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif + ]], + [[intmax_t x = -1; + return !x;]])], + [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 or .]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/inttypes-pri.m4 b/local/recipes/dev/gnu-make/source/m4/inttypes-pri.m4 new file mode 100644 index 0000000000..00251e1dbf --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/inttypes-pri.m4 @@ -0,0 +1,42 @@ +# inttypes-pri.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1997-2002, 2006, 2008-2014 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.53]) + +# Define PRI_MACROS_BROKEN if 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_CHECK_HEADERS([inttypes.h]) + if test $ac_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + [gt_cv_inttypes_pri_broken], + [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#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 exists and defines unusable PRI* macros.]) + PRI_MACROS_BROKEN=1 + else + PRI_MACROS_BROKEN=0 + fi + AC_SUBST([PRI_MACROS_BROKEN]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/inttypes_h.m4 b/local/recipes/dev/gnu-make/source/m4/inttypes_h.m4 new file mode 100644 index 0000000000..87be9cfb56 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/inttypes_h.m4 @@ -0,0 +1,29 @@ +# inttypes_h.m4 serial 10 +dnl Copyright (C) 1997-2004, 2006, 2008-2014 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 Paul Eggert. + +# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_inttypes_h=yes], + [gl_cv_header_inttypes_h=no])]) + if test $gl_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1], + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/largefile.m4 b/local/recipes/dev/gnu-make/source/m4/largefile.m4 new file mode 100644 index 0000000000..3e8b5e39a7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/largefile.m4 @@ -0,0 +1,180 @@ +# Enable large files on systems where this is not the default. +# Enable support for files on Linux file systems with 64-bit inode numbers. + +# Copyright 1992-1996, 1998-2022 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. + +# The following macro works around a problem in Autoconf's AC_FUNC_FSEEKO: +# It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this +# setting of _LARGEFILE_SOURCE is needed so that declares fseeko +# and ftello in C++ mode as well. +AC_DEFUN([gl_SET_LARGEFILE_SOURCE], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_FUNC_FSEEKO + case "$host_os" in + hpux*) + AC_DEFINE([_LARGEFILE_SOURCE], [1], + [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).]) + ;; + esac +]) + +# Work around a problem in Autoconf through at least 2.71 on glibc 2.34+ +# with _TIME_BITS. Also, work around a problem in autoconf <= 2.69: +# AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, +# or configures them incorrectly in some cases. +m4_version_prereq([2.70], [], [ + +# _AC_SYS_LARGEFILE_TEST_INCLUDES +# ------------------------------- +m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], +[#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) + int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]];[]dnl +]) +])# m4_version_prereq 2.70 + + +# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, +# CACHE-VAR, +# DESCRIPTION, +# PROLOGUE, [FUNCTION-BODY]) +# -------------------------------------------------------- +m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE], +[AC_CACHE_CHECK([for $1 value needed for large files], [$3], +[while :; do + m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( + [AC_LANG_PROGRAM([$5], [$6])], + [$3=no; break]) + m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( + [AC_LANG_PROGRAM([#undef $1 +#define $1 $2 +$5], [$6])], + [$3=$2; break]) + $3=unknown + break +done]) +case $$3 in #( + no | unknown) ;; + *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);; +esac +rm -rf conftest*[]dnl +])# _AC_SYS_LARGEFILE_MACRO_VALUE + + +# AC_SYS_LARGEFILE +# ---------------- +# By default, many hosts won't let programs access large files; +# one must use special compiler options to get large-file access to work. +# For more details about this brain damage please see: +# http://www.unix.org/version2/whatsnew/lfs20mar.html +# Additionally, on Linux file systems with 64-bit inodes a file that happens +# to have a 64-bit inode number cannot be accessed by 32-bit applications on +# Linux x86/x86_64. This can occur with file systems such as XFS and NFS. +AC_DEFUN([AC_SYS_LARGEFILE], +[AC_ARG_ENABLE(largefile, + [ --disable-largefile omit support for large files]) +AS_IF([test "$enable_largefile" != no], + [AC_CACHE_CHECK([for special C compiler options needed for large files], + ac_cv_sys_largefile_CC, + [ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) + AC_COMPILE_IFELSE([], [break]) + CC="$CC -n32" + AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi]) + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, + ac_cv_sys_file_offset_bits, + [Number of bits in a file offset, on hosts where this is settable.], + [_AC_SYS_LARGEFILE_TEST_INCLUDES]) + AS_CASE([$ac_cv_sys_file_offset_bits], + [unknown], + [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1], + [ac_cv_sys_large_files], + [Define for large files, on AIX-style hosts.], + [_AC_SYS_LARGEFILE_TEST_INCLUDES])], + [64], + [gl_YEAR2038_BODY([])])]) +])# AC_SYS_LARGEFILE + +# Enable large files on systems where this is implemented by Gnulib, not by the +# system headers. +# Set the variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE if Gnulib +# overrides ensure that off_t or 'struct size.st_size' are 64-bit, respectively. +AC_DEFUN([gl_LARGEFILE], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + mingw*) + dnl Native Windows. + dnl mingw64 defines off_t to a 64-bit type already, if + dnl _FILE_OFFSET_BITS=64, which is ensured by AC_SYS_LARGEFILE. + AC_CACHE_CHECK([for 64-bit off_t], [gl_cv_type_off_t_64], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; + ]], + [[]])], + [gl_cv_type_off_t_64=yes], [gl_cv_type_off_t_64=no]) + ]) + if test $gl_cv_type_off_t_64 = no; then + WINDOWS_64_BIT_OFF_T=1 + else + WINDOWS_64_BIT_OFF_T=0 + fi + dnl Some mingw versions define, if _FILE_OFFSET_BITS=64, 'struct stat' + dnl to 'struct _stat32i64' or 'struct _stat64' (depending on + dnl _USE_32BIT_TIME_T), which has a 32-bit st_size member. + AC_CACHE_CHECK([for 64-bit st_size], [gl_cv_member_st_size_64], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + struct stat buf; + int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; + ]], + [[]])], + [gl_cv_member_st_size_64=yes], [gl_cv_member_st_size_64=no]) + ]) + if test $gl_cv_member_st_size_64 = no; then + WINDOWS_64_BIT_ST_SIZE=1 + else + WINDOWS_64_BIT_ST_SIZE=0 + fi + ;; + *) + dnl Nothing to do on gnulib's side. + dnl A 64-bit off_t is + dnl - already the default on Mac OS X, FreeBSD, NetBSD, OpenBSD, IRIX, + dnl OSF/1, Cygwin, + dnl - enabled by _FILE_OFFSET_BITS=64 (ensured by AC_SYS_LARGEFILE) on + dnl glibc, HP-UX, Solaris, + dnl - enabled by _LARGE_FILES=1 (ensured by AC_SYS_LARGEFILE) on AIX, + dnl - impossible to achieve on Minix 3.1.8. + WINDOWS_64_BIT_OFF_T=0 + WINDOWS_64_BIT_ST_SIZE=0 + ;; + esac +]) diff --git a/local/recipes/dev/gnu-make/source/m4/lcmessage.m4 b/local/recipes/dev/gnu-make/source/m4/lcmessage.m4 new file mode 100644 index 0000000000..7470ec5973 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/lcmessage.m4 @@ -0,0 +1,35 @@ +# lcmessage.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014 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 +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 , 1995. + +# Check whether LC_MESSAGES is available in . + +AC_DEFUN([gt_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[return LC_MESSAGES]])], + [gt_cv_val_LC_MESSAGES=yes], + [gt_cv_val_LC_MESSAGES=no])]) + if test $gt_cv_val_LC_MESSAGES = yes; then + AC_DEFINE([HAVE_LC_MESSAGES], [1], + [Define if your file defines LC_MESSAGES.]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/lib-ld.m4 b/local/recipes/dev/gnu-make/source/m4/lib-ld.m4 new file mode 100644 index 0000000000..ddc569f736 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/lib-ld.m4 @@ -0,0 +1,119 @@ +# lib-ld.m4 serial 6 +dnl Copyright (C) 1996-2003, 2009-2014 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/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid +dnl collision with libtool.m4. + +dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 /dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` + while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL([acl_cv_path_LD], +[if test -z "$LD"; then + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 = 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], [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + 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], + [ --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],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([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], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[m4_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],[m4_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_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 + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + if test "$acl_libdirstem2" != "$acl_libdirstem" \ + && ! test -d "$withval/$acl_libdirstem"; then + additional_libdir="$withval/$acl_libdirstem2" + fi + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + 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= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + 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 + 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 + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + 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 + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$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 + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$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 "$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" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$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 $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. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$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 + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + haveit= + 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* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$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:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi + 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, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +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/local/recipes/dev/gnu-make/source/m4/lib-prefix.m4 b/local/recipes/dev/gnu-make/source/m4/lib-prefix.m4 new file mode 100644 index 0000000000..31f49e40aa --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/lib-prefix.m4 @@ -0,0 +1,224 @@ +# lib-prefix.m4 serial 7 (gettext-0.18) +dnl Copyright (C) 2001-2005, 2008-2014 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. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +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 . + 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/local/recipes/dev/gnu-make/source/m4/lock.m4 b/local/recipes/dev/gnu-make/source/m4/lock.m4 new file mode 100644 index 0000000000..73a3c54cee --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/lock.m4 @@ -0,0 +1,42 @@ +# lock.m4 serial 13 (gettext-0.18.2) +dnl Copyright (C) 2005-2014 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_DEFUN([gl_LOCK], +[ + AC_REQUIRE([gl_THREADLIB]) + if test "$gl_threads_api" = posix; then + # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the + # pthread_rwlock_* functions. + AC_CHECK_TYPE([pthread_rwlock_t], + [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1], + [Define if the POSIX multithreading library has read/write locks.])], + [], + [#include ]) + # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM( + [[#include ]], + [[ +#if __FreeBSD__ == 4 +error "No, in FreeBSD 4.0 recursive mutexes actually don't work." +#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \ + && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070) +error "No, in Mac OS X < 10.7 recursive mutexes actually don't work." +#else +int x = (int)PTHREAD_MUTEX_RECURSIVE; +return !x; +#endif + ]])], + [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1], + [Define if the defines PTHREAD_MUTEX_RECURSIVE.])]) + fi + gl_PREREQ_LOCK +]) + +# Prerequisites of lib/glthread/lock.c. +AC_DEFUN([gl_PREREQ_LOCK], [:]) diff --git a/local/recipes/dev/gnu-make/source/m4/longlong.m4 b/local/recipes/dev/gnu-make/source/m4/longlong.m4 new file mode 100644 index 0000000000..eefb37c455 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/longlong.m4 @@ -0,0 +1,113 @@ +# longlong.m4 serial 17 +dnl Copyright (C) 1999-2007, 2009-2014 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 Paul Eggert. + +# Define HAVE_LONG_LONG_INT if 'long long int' works. +# This fixes a bug in Autoconf 2.61, and can be faster +# than what's in Autoconf 2.62 through 2.68. + +# Note: If the type 'long long int' exists but is only 32 bits large +# (as on some very old compilers), HAVE_LONG_LONG_INT will not be +# defined. In this case you can treat 'long long int' like 'long int'. + +AC_DEFUN([AC_TYPE_LONG_LONG_INT], +[ + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], + [ac_cv_type_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. + dnl If cross compiling, assume the bug is not important, since + dnl nobody cross compiles for this platform as far as we know. + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[@%:@include + @%:@ifndef LLONG_MAX + @%:@ define HALF \ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + @%:@ define LLONG_MAX (HALF - 1 + HALF) + @%:@endif]], + [[long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0;]])], + [], + [ac_cv_type_long_long_int=no], + [:]) + fi + fi]) + if test $ac_cv_type_long_long_int = yes; then + AC_DEFINE([HAVE_LONG_LONG_INT], [1], + [Define to 1 if the system has the type 'long long int'.]) + fi +]) + +# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. +# This fixes a bug in Autoconf 2.61, and can be faster +# than what's in Autoconf 2.62 through 2.68. + +# Note: If the type 'unsigned long long int' exists but is only 32 bits +# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT +# will not be defined. In this case you can treat 'unsigned long long int' +# like 'unsigned long int'. + +AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], +[ + AC_CACHE_CHECK([for unsigned long long int], + [ac_cv_type_unsigned_long_long_int], + [ac_cv_type_unsigned_long_long_int=yes + if test "x${ac_cv_prog_cc_c99-no}" = xno; then + AC_LINK_IFELSE( + [_AC_TYPE_LONG_LONG_SNIPPET], + [], + [ac_cv_type_unsigned_long_long_int=no]) + fi]) + if test $ac_cv_type_unsigned_long_long_int = yes; then + AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], + [Define to 1 if the system has the type 'unsigned long long int'.]) + fi +]) + +# Expands to a C program that can be used to test for simultaneous support +# of 'long long' and 'unsigned long long'. We don't want to say that +# 'long long' is available if 'unsigned long long' is not, or vice versa, +# because too many programs rely on the symmetry between signed and unsigned +# integer types (excluding 'bool'). +AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], +[ + AC_LANG_PROGRAM( + [[/* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63;]], + [[/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull));]]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/nls.m4 b/local/recipes/dev/gnu-make/source/m4/nls.m4 new file mode 100644 index 0000000000..53cdc8be8b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/nls.m4 @@ -0,0 +1,32 @@ +# nls.m4 serial 5 (gettext-0.18) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 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 +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 , 1995-2000. +dnl Bruno Haible , 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], + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT([$USE_NLS]) + AC_SUBST([USE_NLS]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/po.m4 b/local/recipes/dev/gnu-make/source/m4/po.m4 new file mode 100644 index 0000000000..43012dca1b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/po.m4 @@ -0,0 +1,453 @@ +# po.m4 serial 24 (gettext-0.19) +dnl Copyright (C) 1995-2014 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 Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ([2.60]) + +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([AC_PROG_MKDIR_P])dnl + AC_REQUIRE([AC_PROG_SED])dnl + 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.19]) + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]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]) + + 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 >&]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 >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + 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 Support for AM_XGETTEXT_OPTION. + test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= + AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # 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" + gt_tab=`printf '\t'` + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assignment 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 assignment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # 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%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + tab=`printf '\t'` + if grep -l '@TCLCATALOGS@' "$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/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /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' -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" <> "$ac_file.tmp" < +#include +/* 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 __BEOS__ || 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/local/recipes/dev/gnu-make/source/m4/progtest.m4 b/local/recipes/dev/gnu-make/source/m4/progtest.m4 new file mode 100644 index 0000000000..b499f79cf3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/progtest.m4 @@ -0,0 +1,91 @@ +# progtest.m4 serial 7 (gettext-0.18.2) +dnl Copyright (C) 1996-2003, 2005, 2008-2014 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 Authors: +dnl Ulrich Drepper , 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, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL([ac_cv_path_$1], +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + 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 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$][$1]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST([$1])dnl +]) diff --git a/local/recipes/dev/gnu-make/source/m4/sig_atomic_t.m4 b/local/recipes/dev/gnu-make/source/m4/sig_atomic_t.m4 new file mode 100644 index 0000000000..2e8c48df72 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/sig_atomic_t.m4 @@ -0,0 +1,14 @@ +# sig_atomic_t.m4 serial 3 +dnl Copyright (C) 2003, 2009-2022 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. + +AC_DEFUN([gt_TYPE_SIG_ATOMIC_T], +[ + AC_CHECK_TYPES([sig_atomic_t], , + [AC_DEFINE([sig_atomic_t], [int], + [Define as an integer type suitable for memory locations that can be + accessed atomically even in the presence of asynchronous signals.])], + [#include ]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/size_max.m4 b/local/recipes/dev/gnu-make/source/m4/size_max.m4 new file mode 100644 index 0000000000..7e192d5e96 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/size_max.m4 @@ -0,0 +1,79 @@ +# size_max.m4 serial 10 +dnl Copyright (C) 2003, 2005-2006, 2008-2014 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_DEFUN([gl_SIZE_MAX], +[ + AC_CHECK_HEADERS([stdint.h]) + dnl First test whether the system already has SIZE_MAX. + AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ + gl_cv_size_max= + AC_EGREP_CPP([Found it], [ +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif +], [gl_cv_size_max=yes]) + if test -z "$gl_cv_size_max"; then + dnl Define it ourselves. Here we assume that the type 'size_t' is not wider + dnl than the type 'unsigned long'. Try hard to find a definition that can + dnl be used in a preprocessor #if, i.e. doesn't contain a cast. + AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1], + [#include +#include ], [size_t_bits_minus_1=]) + AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)], + [#include ], [fits_in_uint=]) + if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then + 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_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + extern size_t foo; + extern unsigned long foo; + ]], + [[]])], + [fits_in_uint=0]) + fi + dnl We cannot use 'expr' to simplify this expression, because 'expr' + dnl works only with 'long' integers in the host environment, while we + dnl might be cross-compiling from a 32-bit platform to a 64-bit platform. + if test $fits_in_uint = 1; then + gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)" + else + gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)" + fi + else + dnl Shouldn't happen, but who knows... + gl_cv_size_max='((size_t)~(size_t)0)' + fi + fi + ]) + if test "$gl_cv_size_max" != yes; then + AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max], + [Define as the maximum value of type 'size_t', if the system doesn't define it.]) + fi + dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after + dnl . Remember that the #undef in AH_VERBATIM gets replaced with + dnl #define by AC_DEFINE_UNQUOTED. + AH_VERBATIM([SIZE_MAX], +[/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#ifndef SIZE_MAX +# undef SIZE_MAX +#endif]) +]) + +dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. +dnl Remove this when we can assume autoconf >= 2.61. +m4_ifdef([AC_COMPUTE_INT], [], [ + AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/stdbool.m4 b/local/recipes/dev/gnu-make/source/m4/stdbool.m4 new file mode 100644 index 0000000000..c67908aa87 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/stdbool.m4 @@ -0,0 +1,118 @@ +# Check for stdbool.h that conforms to C99. + +dnl Copyright (C) 2002-2006, 2009-2022 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. + +#serial 9 + +# Prepare for substituting if it is not supported. + +AC_DEFUN([gl_STDBOOL_H], +[ + AC_REQUIRE([AC_CHECK_HEADER_STDBOOL]) + AC_REQUIRE([AC_CANONICAL_HOST]) + + dnl On some platforms, does not exist or does not conform to C99. + dnl On Solaris 10 with CC=cc CXX=CC, exists but is not usable + dnl in C++ mode (and no exists). In this case, we use our + dnl replacement, also in C mode (for binary compatibility between C and C++). + if test "$ac_cv_header_stdbool_h" = yes; then + case "$host_os" in + solaris*) + if test -z "$GCC"; then + GL_GENERATE_STDBOOL_H=true + else + GL_GENERATE_STDBOOL_H=false + fi + ;; + *) + GL_GENERATE_STDBOOL_H=false + ;; + esac + else + GL_GENERATE_STDBOOL_H=true + fi + + if test "$ac_cv_type__Bool" = yes; then + HAVE__BOOL=1 + else + HAVE__BOOL=0 + fi + AC_SUBST([HAVE__BOOL]) +]) + +m4_version_prereq([2.72], [], [ + +AC_DEFUN([AC_CHECK_HEADER_STDBOOL], + [AC_CHECK_TYPES([_Bool]) + AC_CACHE_CHECK([for stdbool.h that conforms to C99 or later], + [ac_cv_header_stdbool_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + + /* "true" and "false" should be usable in #if expressions and + integer constant expressions, and "bool" should be a valid + type name. + + Although C 1999 requires bool, true, and false to be macros, + C 2023 and C++ 2011 overrule that, so do not test for that. + Although C 1999 requires __bool_true_false_are_defined and + _Bool, C 2023 says they are obsolescent, so do not require + them. */ + + #if !true + #error "'true' is not true" + #endif + #if true != 1 + #error "'true' is not equal to 1" + #endif + char b[true == 1 ? 1 : -1]; + char c[true]; + + #if false + #error "'false' is not false" + #endif + #if false != 0 + #error "'false' is not equal to 0" + #endif + char d[false == 0 ? 1 : -1]; + + enum { e = false, f = true, g = false * true, h = true * 256 }; + + char i[(bool) 0.5 == true ? 1 : -1]; + char j[(bool) 0.0 == false ? 1 : -1]; + char k[sizeof (bool) > 0 ? 1 : -1]; + + struct sb { bool s: 1; bool t; } s; + char l[sizeof s.t > 0 ? 1 : -1]; + + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + bool m[h]; + char n[sizeof m == h * sizeof m[0] ? 1 : -1]; + char o[-1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html + */ + bool p = true; + bool *pp = &p; + ]], + [[ + bool ps = &s; + *pp |= p; + *pp |= ! p; + + /* Refer to every declared value, so they cannot be + discarded as unused. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k + + !l + !m + !n + !o + !p + !pp + !ps); + ]])], + [ac_cv_header_stdbool_h=yes], + [ac_cv_header_stdbool_h=no])]) +])# AC_CHECK_HEADER_STDBOOL + +]) # m4_version_prereq 2.72 diff --git a/local/recipes/dev/gnu-make/source/m4/stdint_h.m4 b/local/recipes/dev/gnu-make/source/m4/stdint_h.m4 new file mode 100644 index 0000000000..7fc2ce9a83 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/stdint_h.m4 @@ -0,0 +1,27 @@ +# stdint_h.m4 serial 9 +dnl Copyright (C) 1997-2004, 2006, 2008-2014 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 Paul Eggert. + +# Define HAVE_STDINT_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_STDINT_H], +[ + AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include ]], + [[uintmax_t i = (uintmax_t) -1; return !i;]])], + [gl_cv_header_stdint_h=yes], + [gl_cv_header_stdint_h=no])]) + if test $gl_cv_header_stdint_h = yes; then + AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1], + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/threadlib.m4 b/local/recipes/dev/gnu-make/source/m4/threadlib.m4 new file mode 100644 index 0000000000..dc9a3d8e84 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/threadlib.m4 @@ -0,0 +1,389 @@ +# threadlib.m4 serial 11 (gettext-0.18.2) +dnl Copyright (C) 2005-2014 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. + +dnl gl_THREADLIB +dnl ------------ +dnl Tests for a multithreading library to be used. +dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO +dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the +dnl default is 'no', otherwise it is system dependent. In both cases, the user +dnl can change the choice through the options --enable-threads=choice or +dnl --disable-threads. +dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS, +dnl USE_PTH_THREADS, USE_WINDOWS_THREADS +dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use +dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with +dnl libtool). +dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for +dnl programs that really need multithread functionality. The difference +dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak +dnl symbols, typically LIBTHREAD is empty whereas LIBMULTITHREAD is not. +dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for +dnl multithread-safe programs. + +AC_DEFUN([gl_THREADLIB_EARLY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) +]) + +dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_EARLY_BODY], +[ + dnl Ordering constraints: This macro modifies CPPFLAGS in a way that + dnl influences the result of the autoconf tests that test for *_unlocked + dnl declarations, on AIX 5 at least. Therefore it must come early. + AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl + AC_BEFORE([$0], [gl_ARGP])dnl + + AC_REQUIRE([AC_CANONICAL_HOST]) + dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. + dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes + dnl AC_GNU_SOURCE. + m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], + [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], + [AC_REQUIRE([AC_GNU_SOURCE])]) + dnl Check for multithreading. + m4_ifdef([gl_THREADLIB_DEFAULT_NO], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], + [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) + AC_ARG_ENABLE([threads], +AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ +AC_HELP_STRING([--disable-threads], [build without multithread safety])]), + [gl_use_threads=$enableval], + [if test -n "$gl_use_threads_default"; then + gl_use_threads="$gl_use_threads_default" + else +changequote(,)dnl + case "$host_os" in + dnl Disable multithreading by default on OSF/1, because it interferes + dnl with fork()/exec(): When msgexec is linked with -lpthread, its + dnl child process gets an endless segmentation fault inside execvp(). + dnl Disable multithreading by default on Cygwin 1.5.x, because it has + dnl bugs that lead to endless loops or crashes. See + dnl . + osf*) gl_use_threads=no ;; + cygwin*) + case `uname -r` in + 1.[0-5].*) gl_use_threads=no ;; + *) gl_use_threads=yes ;; + esac + ;; + *) gl_use_threads=yes ;; + esac +changequote([,])dnl + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # For using : + case "$host_os" in + osf*) + # On OSF/1, the compiler needs the flag -D_REENTRANT so that it + # groks . cc also understands the flag -pthread, but + # we don't use it because 1. gcc-2.95 doesn't understand -pthread, + # 2. putting a flag into CPPFLAGS that has an effect on the linker + # causes the AC_LINK_IFELSE test below to succeed unexpectedly, + # leading to wrong values of LIBTHREAD and LTLIBTHREAD. + CPPFLAGS="$CPPFLAGS -D_REENTRANT" + ;; + esac + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + case "$host_os" in + aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; + solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; + esac + fi +]) + +dnl The guts of gl_THREADLIB. Needs to be expanded only once. + +AC_DEFUN([gl_THREADLIB_BODY], +[ + AC_REQUIRE([gl_THREADLIB_EARLY_BODY]) + gl_threads_api=none + LIBTHREAD= + LTLIBTHREAD= + LIBMULTITHREAD= + LTLIBMULTITHREAD= + if test "$gl_use_threads" != no; then + dnl Check whether the compiler and linker support weak declarations. + AC_CACHE_CHECK([whether imported symbols can be declared weak], + [gl_cv_have_weak], + [gl_cv_have_weak=no + dnl First, test whether the compiler accepts it syntactically. + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[extern void xyzzy (); +#pragma weak xyzzy]], + [[xyzzy();]])], + [gl_cv_have_weak=maybe]) + if test $gl_cv_have_weak = maybe; then + dnl Second, test whether it actually works. On Cygwin 1.7.2, with + dnl gcc 4.3, symbols declared weak always evaluate to the address 0. + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include +#pragma weak fputs +int main () +{ + return (fputs == NULL); +}]])], + [gl_cv_have_weak=yes], + [gl_cv_have_weak=no], + [dnl When cross-compiling, assume that only ELF platforms support + dnl weak symbols. + AC_EGREP_CPP([Extensible Linking Format], + [#ifdef __ELF__ + Extensible Linking Format + #endif + ], + [gl_cv_have_weak="guessing yes"], + [gl_cv_have_weak="guessing no"]) + ]) + fi + ]) + if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that + # it groks . It's added above, in gl_THREADLIB_EARLY_BODY. + AC_CHECK_HEADER([pthread.h], + [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) + if test "$gl_have_pthread_h" = yes; then + # Other possible tests: + # -lpthreads (FSU threads, PCthreads) + # -lgthreads + gl_have_pthread= + # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist + # in libc. IRIX 6.5 has the first one in both libc and libpthread, but + # the second one only in libpthread, and lock.c needs it. + # + # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 + # needs -pthread for some reason. See: + # http://lists.gnu.org/archive/html/bug-gnulib/2014-09/msg00023.html + save_LIBS=$LIBS + for gl_pthread in '' '-pthread'; do + LIBS="$LIBS $gl_pthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + pthread_mutex_t m; + pthread_mutexattr_t ma; + ]], + [[pthread_mutex_lock (&m); + pthread_mutexattr_init (&ma);]])], + [gl_have_pthread=yes + LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread + LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread]) + LIBS=$save_LIBS + test -n "$gl_have_pthread" && break + done + + # Test for libpthread by looking for pthread_kill. (Not pthread_self, + # since it is defined as a macro on OSF/1.) + if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then + # The program links fine without libpthread. But it may actually + # need to link with libpthread in order to create multiple threads. + AC_CHECK_LIB([pthread], [pthread_kill], + [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread + # On Solaris and HP-UX, most pthread functions exist also in libc. + # Therefore pthread_in_use() needs to actually try to create a + # thread: pthread_create from libc will fail, whereas + # pthread_create will actually create a thread. + case "$host_os" in + solaris* | hpux*) + AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], + [Define if the pthread_in_use() detection is hard.]) + esac + ]) + elif test -z "$gl_have_pthread"; then + # Some library is needed. Try libpthread and libc_r. + AC_CHECK_LIB([pthread], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread + LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread]) + if test -z "$gl_have_pthread"; then + # For FreeBSD 4. + AC_CHECK_LIB([c_r], [pthread_kill], + [gl_have_pthread=yes + LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r + LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r]) + fi + fi + if test -n "$gl_have_pthread"; then + gl_threads_api=posix + AC_DEFINE([USE_POSIX_THREADS], [1], + [Define if the POSIX multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], + [Define if references to the POSIX multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + fi + if test -z "$gl_have_pthread"; then + if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then + gl_have_solaristhread= + gl_save_LIBS="$LIBS" + LIBS="$LIBS -lthread" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + ]], + [[thr_self();]])], + [gl_have_solaristhread=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_solaristhread"; then + gl_threads_api=solaris + LIBTHREAD=-lthread + LTLIBTHREAD=-lthread + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_SOLARIS_THREADS], [1], + [Define if the old Solaris multithreading library can be used.]) + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1], + [Define if references to the old Solaris multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + fi + fi + if test "$gl_use_threads" = pth; then + gl_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_LINKFLAGS([pth]) + gl_have_pth= + gl_save_LIBS="$LIBS" + LIBS="$LIBS $LIBPTH" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include ]], [[pth_self();]])], + [gl_have_pth=yes]) + LIBS="$gl_save_LIBS" + if test -n "$gl_have_pth"; then + gl_threads_api=pth + LIBTHREAD="$LIBPTH" + LTLIBTHREAD="$LTLIBPTH" + LIBMULTITHREAD="$LIBTHREAD" + LTLIBMULTITHREAD="$LTLIBTHREAD" + AC_DEFINE([USE_PTH_THREADS], [1], + [Define if the GNU Pth multithreading library can be used.]) + if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then + if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then + AC_DEFINE([USE_PTH_THREADS_WEAK], [1], + [Define if references to the GNU Pth multithreading library should be made weak.]) + LIBTHREAD= + LTLIBTHREAD= + fi + fi + else + CPPFLAGS="$gl_save_CPPFLAGS" + fi + fi + if test -z "$gl_have_pthread"; then + case "$gl_use_threads" in + yes | windows | win32) # The 'win32' is for backward compatibility. + if { case "$host_os" in + mingw*) true;; + *) false;; + esac + }; then + gl_threads_api=windows + AC_DEFINE([USE_WINDOWS_THREADS], [1], + [Define if the native Windows multithreading API can be used.]) + fi + ;; + esac + fi + fi + AC_MSG_CHECKING([for multithread API to use]) + AC_MSG_RESULT([$gl_threads_api]) + AC_SUBST([LIBTHREAD]) + AC_SUBST([LTLIBTHREAD]) + AC_SUBST([LIBMULTITHREAD]) + AC_SUBST([LTLIBMULTITHREAD]) +]) + +AC_DEFUN([gl_THREADLIB], +[ + AC_REQUIRE([gl_THREADLIB_EARLY]) + AC_REQUIRE([gl_THREADLIB_BODY]) +]) + + +dnl gl_DISABLE_THREADS +dnl ------------------ +dnl Sets the gl_THREADLIB default so that threads are not used by default. +dnl The user can still override it at installation time, by using the +dnl configure option '--enable-threads'. + +AC_DEFUN([gl_DISABLE_THREADS], [ + m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no]) +]) + + +dnl Survey of platforms: +dnl +dnl Platform Available Compiler Supports test-lock +dnl flavours option weak result +dnl --------------- --------- --------- -------- --------- +dnl Linux 2.4/glibc posix -lpthread Y OK +dnl +dnl GNU Hurd/glibc posix +dnl +dnl Ubuntu 14.04 posix -pthread Y OK +dnl +dnl FreeBSD 5.3 posix -lc_r Y +dnl posix -lkse ? Y +dnl posix -lpthread ? Y +dnl posix -lthr Y +dnl +dnl FreeBSD 5.2 posix -lc_r Y +dnl posix -lkse Y +dnl posix -lthr Y +dnl +dnl FreeBSD 4.0,4.10 posix -lc_r Y OK +dnl +dnl NetBSD 1.6 -- +dnl +dnl OpenBSD 3.4 posix -lpthread Y OK +dnl +dnl Mac OS X 10.[123] posix -lpthread Y OK +dnl +dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK +dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK +dnl +dnl HP-UX 11 posix -lpthread N (cc) OK +dnl Y (gcc) +dnl +dnl IRIX 6.5 posix -lpthread Y 0.5 +dnl +dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK +dnl +dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK +dnl -lpthread (gcc) Y +dnl +dnl Cygwin posix -lpthread Y OK +dnl +dnl Any of the above pth -lpth 0.0 +dnl +dnl Mingw windows N OK +dnl +dnl BeOS 5 -- +dnl +dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is +dnl turned off: +dnl OK if all three tests terminate OK, +dnl 0.5 if the first test terminates OK but the second one loops endlessly, +dnl 0.0 if the first test already loops endlessly. diff --git a/local/recipes/dev/gnu-make/source/m4/uintmax_t.m4 b/local/recipes/dev/gnu-make/source/m4/uintmax_t.m4 new file mode 100644 index 0000000000..0a94f17fb2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/uintmax_t.m4 @@ -0,0 +1,30 @@ +# uintmax_t.m4 serial 12 +dnl Copyright (C) 1997-2004, 2007-2014 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 Paul Eggert. + +AC_PREREQ([2.13]) + +# Define uintmax_t to 'unsigned long' or 'unsigned long long' +# if it is not already defined in or . + +AC_DEFUN([gl_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) + test $ac_cv_type_unsigned_long_long_int = 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 and don't define.]) + else + AC_DEFINE([HAVE_UINTMAX_T], [1], + [Define if you have the 'uintmax_t' type in or .]) + fi +]) diff --git a/local/recipes/dev/gnu-make/source/m4/visibility.m4 b/local/recipes/dev/gnu-make/source/m4/visibility.m4 new file mode 100644 index 0000000000..552e39772d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/visibility.m4 @@ -0,0 +1,77 @@ +# visibility.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2005, 2008, 2010-2014 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. + +dnl Tests whether the compiler supports the command-line option +dnl -fvisibility=hidden and the function and variable attributes +dnl __attribute__((__visibility__("hidden"))) and +dnl __attribute__((__visibility__("default"))). +dnl Does *not* test for __visibility__("protected") - which has tricky +dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on +dnl Mac OS X. +dnl Does *not* test for __visibility__("internal") - which has processor +dnl dependent semantics. +dnl Does *not* test for #pragma GCC visibility push(hidden) - which is +dnl "really only recommended for legacy code". +dnl Set the variable CFLAG_VISIBILITY. +dnl Defines and sets the variable HAVE_VISIBILITY. + +AC_DEFUN([gl_VISIBILITY], +[ + AC_REQUIRE([AC_PROG_CC]) + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + dnl First, check whether -Werror can be added to the command line, or + dnl whether it leads to an error because of some other option that the + dnl user has put into $CC $CFLAGS $CPPFLAGS. + AC_MSG_CHECKING([whether the -Werror option is usable]) + AC_CACHE_VAL([gl_cv_cc_vis_werror], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[]], [[]])], + [gl_cv_cc_vis_werror=yes], + [gl_cv_cc_vis_werror=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_vis_werror]) + dnl Now check whether visibility declarations are supported. + AC_MSG_CHECKING([for simple visibility declarations]) + AC_CACHE_VAL([gl_cv_cc_visibility], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + dnl We use the option -Werror and a function dummyfunc, because on some + dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning + dnl "visibility attribute not supported in this configuration; ignored" + dnl at the first function definition in every compilation unit, and we + dnl don't want to use the option in this case. + if test $gl_cv_cc_vis_werror = yes; then + CFLAGS="$CFLAGS -Werror" + fi + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {} + ]], + [[]])], + [gl_cv_cc_visibility=yes], + [gl_cv_cc_visibility=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_visibility]) + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + fi + fi + AC_SUBST([CFLAG_VISIBILITY]) + AC_SUBST([HAVE_VISIBILITY]) + AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], + [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/warn-on-use.m4 b/local/recipes/dev/gnu-make/source/m4/warn-on-use.m4 new file mode 100644 index 0000000000..a81731f31c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/warn-on-use.m4 @@ -0,0 +1,62 @@ +# warn-on-use.m4 serial 10 +dnl Copyright (C) 2010-2022 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. + +# gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES) +# --------------------------------------- +# If the module 'posixcheck' is in use: +# +# For each whitespace-separated element in the list of NAMES, define +# HAVE_RAW_DECL_name if the function has a declaration among INCLUDES +# even after being undefined as a macro. +# +# See warn-on-use.h for some hints on how to poison function names, as +# well as ideas on poisoning global variables and macros. NAMES may +# include global variables, but remember that only functions work with +# _GL_WARN_ON_USE. Typically, INCLUDES only needs to list a single +# header, but if the replacement header pulls in other headers because +# some systems declare functions in the wrong header, then INCLUDES +# should do likewise. +# +# It is generally safe to assume declarations for functions declared +# in the intersection of C89 and C11 (such as printf) without +# needing gl_WARN_ON_USE_PREPARE. +AC_DEFUN([gl_WARN_ON_USE_PREPARE], +[ + m4_ifdef([gl_POSIXCHECK], + [m4_foreach_w([gl_decl], [$2], + [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])), + [Define to 1 if ]m4_defn([gl_decl])[ is declared even after + undefining macros.])])dnl + for gl_func in m4_flatten([$2]); do + AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl + dnl As a workaround to implicit built-in function declarations in + dnl clang (e.g. strndup), reference ac_compile_for_check_decl instead + dnl of ac_compile. If, for whatever reason, the override of AC_PROG_CC + dnl in zzgnulib.m4 is inactive, use the original ac_compile. + ac_save_ac_compile="$ac_compile" + if test -n "$ac_compile_for_check_decl"; then + ac_compile="$ac_compile_for_check_decl" + fi + AC_CACHE_CHECK([whether $gl_func is declared without a macro], + [gl_Symbol], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1], +[[#undef $gl_func + (void) $gl_func;]])], + [AS_VAR_SET([gl_Symbol], [yes])], [AS_VAR_SET([gl_Symbol], [no])])]) + ac_compile="$ac_save_ac_compile" + AS_VAR_IF([gl_Symbol], [yes], + [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1]) + dnl Shortcut for an AC_CHECK_DECL invocation that may come later: + dnl If the raw declaration exists with the given includes, then + dnl AC_CHECK_DECL with its many includes would see it as well. + dnl So, set a cache variable to allow skipping any later + dnl AC_CHECK_DECL invocation for $gl_func. + eval "ac_cv_have_decl_$gl_func=yes" + ]) + AS_VAR_POPDEF([gl_Symbol])dnl + done + ]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/wchar_t.m4 b/local/recipes/dev/gnu-make/source/m4/wchar_t.m4 new file mode 100644 index 0000000000..839a04c17c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/wchar_t.m4 @@ -0,0 +1,24 @@ +# wchar_t.m4 serial 4 (gettext-0.18.2) +dnl Copyright (C) 2002-2003, 2008-2014 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. +dnl Test whether 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_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + 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/local/recipes/dev/gnu-make/source/m4/wint_t.m4 b/local/recipes/dev/gnu-make/source/m4/wint_t.m4 new file mode 100644 index 0000000000..9b07b07090 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/wint_t.m4 @@ -0,0 +1,32 @@ +# wint_t.m4 serial 5 (gettext-0.18.2) +dnl Copyright (C) 2003, 2007-2014 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. +dnl Test whether 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_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +/* Tru64 with Desktop Toolkit C has a bug: must be included before + . + BSD/OS 4.0.1 has a bug: , and must be included + before . */ +#include +#include +#include +#include + 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/local/recipes/dev/gnu-make/source/m4/xsize.m4 b/local/recipes/dev/gnu-make/source/m4/xsize.m4 new file mode 100644 index 0000000000..3af23ec75b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/xsize.m4 @@ -0,0 +1,12 @@ +# xsize.m4 serial 5 +dnl Copyright (C) 2003-2004, 2008-2014 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. + +AC_DEFUN([gl_XSIZE], +[ + dnl Prerequisites of lib/xsize.h. + AC_REQUIRE([gl_SIZE_MAX]) + AC_CHECK_HEADERS([stdint.h]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/year2038.m4 b/local/recipes/dev/gnu-make/source/m4/year2038.m4 new file mode 100644 index 0000000000..06db589ba9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/year2038.m4 @@ -0,0 +1,124 @@ +# year2038.m4 serial 7 +dnl Copyright (C) 2017-2022 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 Attempt to ensure that 'time_t' can go past the year 2038 and that +dnl the functions 'time', 'stat', etc. work with post-2038 timestamps. + +AC_DEFUN([gl_YEAR2038_EARLY], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_os" in + mingw*) + AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1], + [For 64-bit time_t on 32-bit mingw.]) + ;; + esac +]) + +# gl_YEAR2038_TEST_INCLUDES +# ------------------------- +AC_DEFUN([gl_YEAR2038_TEST_INCLUDES], +[[ + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; +]]) + +# gl_YEAR2038_BODY(REQUIRE-YEAR2038-SAFE) +----------------------------------------- +AC_DEFUN([gl_YEAR2038_BODY], +[ + AC_ARG_ENABLE([year2038], + [ --disable-year2038 omit support for timestamps past the year 2038]) + AS_IF([test "$enable_year2038" != no], + [ + dnl On many systems, time_t is already a 64-bit type. + dnl On those systems where time_t is still 32-bit, it requires kernel + dnl and libc support to make it 64-bit. For glibc 2.34 and later on Linux, + dnl defining _TIME_BITS=64 and _FILE_OFFSET_BITS=64 is needed on x86 and ARM. + dnl + dnl On native Windows, the system include files define types __time32_t + dnl and __time64_t. By default, time_t is an alias of + dnl - __time32_t on 32-bit mingw, + dnl - __time64_t on 64-bit mingw and on MSVC (since MSVC 8). + dnl But when compiling with -D__MINGW_USE_VC2005_COMPAT, time_t is an + dnl alias of __time64_t. + dnl And when compiling with -D_USE_32BIT_TIME_T, time_t is an alias of + dnl __time32_t. + AC_CACHE_CHECK([for time_t past the year 2038], [gl_cv_type_time_t_y2038], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([gl_YEAR2038_TEST_INCLUDES])], + [gl_cv_type_time_t_y2038=yes], [gl_cv_type_time_t_y2038=no]) + ]) + if test "$gl_cv_type_time_t_y2038" = no; then + AC_CACHE_CHECK([for 64-bit time_t with _TIME_BITS=64], + [gl_cv_type_time_t_bits_macro], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([[#define _TIME_BITS 64 + #define _FILE_OFFSET_BITS 64 + ]gl_YEAR2038_TEST_INCLUDES])], + [gl_cv_type_time_t_bits_macro=yes], + [gl_cv_type_time_t_bits_macro=no]) + ]) + if test "$gl_cv_type_time_t_bits_macro" = yes; then + AC_DEFINE([_TIME_BITS], [64], + [Number of bits in a timestamp, on hosts where this is settable.]) + dnl AC_SYS_LARGFILE also defines this; it's OK if we do too. + AC_DEFINE([_FILE_OFFSET_BITS], [64], + [Number of bits in a file offset, on hosts where this is settable.]) + gl_cv_type_time_t_y2038=yes + fi + fi + if test $gl_cv_type_time_t_y2038 = no; then + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _USE_32BIT_TIME_T + int ok; + #else + error fail + #endif + ]])], + [AC_MSG_FAILURE( + [The 'time_t' type stops working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags.])], + [# If not cross-compiling and $1 says we should check, + # and 'touch' works with a large timestamp, then evidently wider time_t + # is desired and supported, so fail and ask the builder to fix the + # problem. Otherwise, just warn the builder. + m4_ifval([$1], + [if test $cross_compiling = no \ + && TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null; then + case `TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null` in + *'Feb 7 2106'* | *'Feb 7 17:10'*) + AC_MSG_FAILURE( + [The 'time_t' type stops working after January 2038, + and your system appears to support a wider 'time_t'. + Try configuring with 'CC="${CC} -m64"'. + To build with a 32-bit time_t anyway (not recommended), + configure with '--disable-year2038'.]);; + esac + rm -f conftest.time + fi]) + if test "$gl_warned_about_y2038" != yes; then + AC_MSG_WARN( + [The 'time_t' type stops working after January 2038, + and this package needs a wider 'time_t' type + if there is any way to access timestamps after that. + Configure with 'CC="${CC} -m64"' perhaps?]) + gl_warned_about_y2038=yes + fi + ]) + fi]) +]) + +AC_DEFUN([gl_YEAR2038], +[ + gl_YEAR2038_BODY([require-year2038-safe]) +]) diff --git a/local/recipes/dev/gnu-make/source/m4/zzgnulib.m4 b/local/recipes/dev/gnu-make/source/m4/zzgnulib.m4 new file mode 100644 index 0000000000..fd73a201fd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/m4/zzgnulib.m4 @@ -0,0 +1,23 @@ +# zzgnulib.m4 serial 1 +dnl Copyright (C) 2020-2022 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 This file must be named something that sorts after all other +dnl package- or gnulib-provided .m4 files - at least for those packages +dnl that redefine AC_PROG_CC. + +dnl Redefine AC_PROG_CC so that it ends with invocations of gl_COMPILER_CLANG +dnl and gl_COMPILER_PREPARE_CHECK_DECL. +m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[ +gl_COMPILER_CLANG +gl_COMPILER_PREPARE_CHECK_DECL +]) + +# gl_ZZGNULIB +# ----------- +# Witness macro that this file has been included. Needed to force +# Automake to include this file after all other gnulib .m4 files. +AC_DEFUN([gl_ZZGNULIB]) diff --git a/local/recipes/dev/gnu-make/source/makefile.com b/local/recipes/dev/gnu-make/source/makefile.com new file mode 100644 index 0000000000..382c74df16 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/makefile.com @@ -0,0 +1,171 @@ +$! +$! Makefile.com - builds GNU Make for VMS +$! +$! P1 = LIST will provide compiler listings. +$! P2 = DEBUG will build an image with debug information +$! P3 = WALL will enable all warning messages (some are suppressed since +$! one macro intentionally causes an error condition) +$! +$! In case of problems with the install you might contact me at +$! zinser@decus.de (preferred) or zinser@sysdev.deutsche-boerse.com +$ +$! hb +$! But don't ask Martin Zinser about the lines, I added/changed. +$! In case of an error do some cleanup +$ on error then $ goto cleanup +$! in case somebody set up her/his own symbol for cc +$ set symbol/scope=(nolocal,noglobal) +$! +$! Just some general constants... +$! +$ true = 1 +$ false = 0 +$ tmpnam = "temp_" + f$getjpi("","pid") +$ tt = tmpnam + ".txt" +$ tc = tmpnam + ".c" +$! +$! Look for the compiler used +$! +$ lval = "" +$ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs."" +$ then +$ if f$trnlnm("SYS").eqs."" then def/nolog sys sys$library: +$ ccopt = "" +$ else +$ ccopt = "/decc/prefix=(all,except=(globfree,glob))" +$ if f$trnlnm("SYS").eqs."" +$ then +$ if f$trnlnm("DECC$LIBRARY_INCLUDE").nes."" +$ then +$ define sys decc$library_include: +$ else +$ if f$search("SYS$COMMON:[DECC$LIB.REFERENCE]DECC$RTLDEF.DIR").nes."" - + then lval = "SYS$COMMON:[DECC$LIB.REFERENCE.DECC$RTLDEF]," +$ if f$search("SYS$COMMON:[DECC$LIB.REFERENCE]SYS$STARLET_C.DIR").nes."" - + then lval = lval+"SYS$COMMON:[DECC$LIB.REFERENCE.SYS$STARLET_C]," +$ lval=lval+"SYS$LIBRARY:" +$ define sys 'lval +$ endif +$ endif +$ endif +$! +$! +$ if (p1 .eqs. "LIST") +$ then +$ ccopt = ccopt + "/list/show=(expan,inclu)" +$ endif +$! +$! Should we build a debug image +$! +$ if (p2.eqs."DEBUG") +$ then +$ ccopt = ccopt + "/noopt/debug" +$ lopt = "/debug" +$ else +$ lopt = "" +$ endif +$! +$! Do we want to see all warnings +$! +$ if (p3.nes."WALL") +$ then +$ gosub check_cc_qual +$ endif +$ filelist = "[.src]ar [.src]arscan [.src]commands [.src]default [.src]dir " + - + "[.src]expand [.src]file [.src]function [.src]guile " + - + "[.src]hash [.src]implicit [.src]job [.src]load [.src]main " + - + "[.src]misc [.src]read [.src]remake [.src]remote-stub " + - + "[.src]rule [.src]output [.src]signame [.src]variable " + - + "[.src]version [.src]shuffle [.src]strcache [.src]vpath " + - + "[.src]vmsfunctions [.src]vmsify [.src]vms_progname " + - + "[.src]vms_exit [.src]vms_export_symbol " + - + "[.lib]alloca [.lib]fnmatch [.lib]glob [.src]getopt1 [.src]getopt" +$! +$ copy [.src]config.h-vms [.src]config.h +$ copy [.lib]fnmatch.in.h [.lib]fnmatch.h +$ copy [.lib]glob.in.h [.lib]glob.h +$ n=0 +$ open/write optf make.opt +$ loop: +$ cfile = f$elem(n," ",filelist) +$ if cfile .eqs. " " then goto linkit +$ write sys$output "Compiling ''cfile'..." +$ call compileit 'cfile' +$ n = n + 1 +$ goto loop +$ linkit: +$ close optf +$ link/exe=make make.opt/opt'lopt +$ goto cleanup +$ +$ cleanup: +$ if f$trnlnm("SYS").nes."" then $ deassign sys +$ if f$trnlnm("OPTF").nes."" then $ close optf +$ if f$search("make.opt").nes."" then $ del make.opt;* +$ exit +$! +$!----------------------------------------------------------------------------- +$! +$! Check if this is a define relating to the properties of the C/C++ +$! compiler +$! +$CHECK_CC_QUAL: +$ open/write tmpc 'tc +$ ccqual = "/warn=(disable=questcompare)" +$ write tmpc "#include " +$ write tmpc "unsigned int i = 1;" +$ write tmpc "int main(){" +$ write tmpc "if (i < 0){printf(""Mission impossible\n"");}}" +$ close tmpc +$ gosub cc_qual_check +$ return +$! +$!----------------------------------------------------------------------------- +$! +$! Check for properties of C/C++ compiler +$! +$CC_QUAL_CHECK: +$ cc_qual = false +$ set message/nofac/noident/nosever/notext +$ cc 'ccqual' 'tmpnam' +$ if $status then cc_qual = true +$ set message/fac/ident/sever/text +$ delete/nolog 'tmpnam'.*;* +$ if cc_qual then ccopt = ccopt + ccqual +$ return +$!----------------------------------------------------------------------------- +$! +$ compileit : subroutine +$ ploc = f$locate("]",p1) +$! filnam = p1 +$ if ploc .lt. f$length(p1) +$ then +$ objdir = f$extract(0, ploc+1, p1) +$ write optf p1 +$ else +$ objdir := [] +$ write optf objdir+p1 +$ endif +$ cc'ccopt'/nested=none/include=([],[.src],[.lib])/obj='objdir' - + /define=("allocated_variable_expand_for_file=alloc_var_expand_for_file",- + "unlink=remove","HAVE_CONFIG_H","VMS") - + 'p1' +$ exit +$ endsubroutine : compileit +$! +$!----------------------------------------------------------------------------- +$!Copyright (C) 1996-2022 Free Software 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 . diff --git a/local/recipes/dev/gnu-make/source/mk/Amiga.mk b/local/recipes/dev/gnu-make/source/mk/Amiga.mk new file mode 100644 index 0000000000..1f2afe33d3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/mk/Amiga.mk @@ -0,0 +1,45 @@ +# GNU -*-Makefile-*- to build GNU make on Amiga +# +# Amiga overrides for use with Basic.mk. +# +# Copyright (C) 2017-2022 Free Software 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 . + +CC = sc +LD = $(CC) Link + +MKDIR.cmd = makedir $1 +RM.cmd = delete $1 +CP.cmd = copy $1 To $2 + +CPPFLAGS = +CFLAGS = +LDFLAGS = + +prog_SOURCES += $(alloca_SOURCES) $(loadavg_SOURCES) $(glob_SOURCES) $(amiga_SOURCES) + +BUILT_SOURCES += $(lib)alloca.h $(lib)fnmatch.h $(lib)glob.h + +extra_CPPFLAGS = IDir $(OUTDIR)src IDir $(SRCDIR)/src IDir $(OUTDIR)lib IDir $(SRCDIR)/lib + +C_SOURCE = +OUTPUT_OPTION = +LDFLAGS = From LIB:cres.o +LDLIBS = Lib LIB:sc.lib LIB:amiga.lib +LINK_OUTPUT = To $@ + +$(OUTDIR)src/config.h: $(SRCDIR)/src/config.ami + $(call CP.cmd,$<,$@) diff --git a/local/recipes/dev/gnu-make/source/mk/VMS.mk b/local/recipes/dev/gnu-make/source/mk/VMS.mk new file mode 100644 index 0000000000..33ef306921 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/mk/VMS.mk @@ -0,0 +1,97 @@ +# GNU -*-Makefile-*- to build GNU make on VMS +# +# VMS overrides for use with Basic.mk. +# +# Copyright (C) 2017-2022 Free Software 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 . + +src = [.src] +lib = [.lib] +SRCDIR = [] + +OBJEXT = .obj +EXEEXT = .exe + +e = +s = $e $e +c = , + +defs = HAVE_CONFIG_H + +ifeq ($(CC),cc) +defs += VMS unlink=remove allocated_variable_expand_for_file=alloc_var_expand_for_file +else +defs += GCC_IS_NATIVE +ifeq ($(ARCH),VAX) +defs += VAX +endif +endif + +extra_CPPFLAGS = /define=($(subst $s,$c,$(patsubst %,"%",$(defs)))) + +cinclude = /nested=none/include=($(src),$(lib)) +ifeq ($(CC),cc) +cprefix = /prefix=(all,except=(glob,globfree)) +cwarn = /standard=relaxed/warn=(disable=questcompare) +endif + +extra_CFLAGS = $(cinclude)$(cprefix)$(cwarn) + +#extra_LDFLAGS = /deb +extra_LDFLAGS = + +# If your system needs extra libraries loaded in, define them here. +# System V probably need -lPW for alloca. +# if on vax, uncomment the following line +#LDLIBS = ,c.opt/opt +ifeq ($(CC),cc) +#LDLIBS =,sys$$library:vaxcrtl.olb/lib +else +LDLIBS =,gnu_cc_library:libgcc.olb/lib +endif + +# If your system doesn't have alloca, or the one provided is bad, +# uncomment this +#ALLOCA = $(alloca_SOURCES) + +# If your system doesn't have alloca.h, or the one provided is bad, +# uncomment this +#BUILT_SOURCES += $(lib)alloca.h + +prog_SOURCES += $(ALLOCA) $(glob_SOURCES) $(vms_SOURCES) + +BUILT_SOURCES += $(lib)fnmatch.h $(lib)glob.h + +COMPILE.cmd = $(CC) $(extra_CFLAGS)$(CFLAGS)/obj=$@ $(extra_CPPFLAGS)$(CPPFLAGS) $1 + +LINK.cmd = $(LD)$(extra_LDFLAGS)$(LDFLAGS)/exe=$@ $(subst $s,$c,$1)$(LDLIBS) + +# Don't know how to do this +CHECK.cmd = + +MKDIR.cmd = create/dir $1 +RM.cmd = delete $1 +CP.cmd = copy $1 $2 + +define CLEANSPACE + -purge [...] + -delete $(PROG); + -delete $(src)*.$(OBJEXT); +endef + + +$(OUTDIR)$(src)config.h: $(SRCDIR)$(src)config.h-vms + $(call CP.cmd,$<,$@) diff --git a/local/recipes/dev/gnu-make/source/mk/Windows32.mk b/local/recipes/dev/gnu-make/source/mk/Windows32.mk new file mode 100644 index 0000000000..310fe7b8e0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/mk/Windows32.mk @@ -0,0 +1,122 @@ +# GNU -*-Makefile-*- to build GNU make on Windows +# +# Windows overrides for use with Basic.mk. +# +# Copyright (C) 2017-2022 Free Software 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 . + +# TARGET_TYPE can be either "release" or "debug" +TARGET_TYPE = release + +# TOOLCHAIN can be either "msvc" or "gcc" +TOOLCHAIN = msvc + +# Translate a POSIX path into a Windows path. Don't bother with drives. +# Used only inside recipes, with DOS/CMD tools that require it. +P2W = $(subst /,\,$1) + +prog_SOURCES += $(loadavg_SOURCES) $(glob_SOURCES) $(w32_SOURCES) + +BUILT_SOURCES += $(lib)alloca.h $(lib)fnmatch.h $(lib)glob.h + +w32_LIBS = kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 \ + oleaut32 uuid odbc32 odbccp32 + +CPPFLAGS = +CFLAGS = +LDFLAGS = + +# --- Visual Studio +msvc_CC = cl.exe +msvc_LD = link.exe + +msvc_CPPFLAGS = /DHAVE_CONFIG_H /DWINDOWS32 /DWIN32 /D_CONSOLE +msvc_CPPFLAGS += /I$(OUTDIR)src /I$(SRCDIR)/src /I$(SRCDIR)/src/w32/include /I$(OUTDIR)lib /I$(SRCDIR)/lib + +msvc_CFLAGS = /nologo /MT /W4 /EHsc +msvc_CFLAGS += /FR$(OUTDIR) /Fp$(BASE_PROG).pch /Fd$(BASE_PROG).pdb + +msvc_LDFLAGS = /nologo /SUBSYSTEM:console /PDB:$(BASE_PROG).pdb + +msvc_LDLIBS = $(addsuffix .lib,$(w32_LIBS)) + +msvc_C_SOURCE = /c +msvc_OUTPUT_OPTION = /Fo$@ +msvc_LINK_OUTPUT = /OUT:$@ + +release_msvc_OUTDIR = ./WinRel/ +release_msvc_CPPFLAGS = /D NDEBUG +release_msvc_CFLAGS = /O2 + +debug_msvc_OUTDIR = ./WinDebug/ +debug_msvc_CPPFLAGS = /D _DEBUG +debug_msvc_CFLAGS = /Zi /Od +debug_msvc_LDFLAGS = /DEBUG + +# --- GCC +gcc_CC = gcc +gcc_LD = $(gcc_CC) + +release_gcc_OUTDIR = ./GccRel/ +debug_gcc_OUTDIR = ./GccDebug/ + +gcc_CPPFLAGS = -DHAVE_CONFIG_H -I$(OUTDIR)src -I$(SRCDIR)/src -I$(SRCDIR)/src/w32/include -I$(OUTDIR)lib -I$(SRCDIR)/lib +gcc_CFLAGS = -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 +gcc_LDFLAGS = -mthreads -gdwarf-2 -g3 +gcc_LDLIBS = $(addprefix -l,$(w32_libs)) + +gcc_C_SOURCE = -c +gcc_OUTPUT_OPTION = -o $@ +gcc_LINK_OUTPUT = -o $@ + +debug_gcc_CFLAGS = -O0 +release_gcc_CFLAGS = -O2 + +# --- + +LINK.cmd = $(LD) $(extra_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH) $1 $(LDLIBS) $(LINK_OUTPUT) + +CHECK.cmd = cmd /c cd tests \& .\run_make_tests.bat -make ../$(PROG) + +MKDIR.cmd = cmd /c mkdir $(call P2W,$1) +RM.cmd = cmd /c del /F /Q $(call P2W,$1) +CP.cmd = cmd /c copy /Y $(call P2W,$1 $2) + +CC = $($(TOOLCHAIN)_CC) +LD = $($(TOOLCHAIN)_LD) + +C_SOURCE = $($(TOOLCHAIN)_C_SOURCE) +OUTPUT_OPTION = $($(TOOLCHAIN)_OUTPUT_OPTION) +LINK_OUTPUT = $($(TOOLCHAIN)_LINK_OUTPUT) + +OUTDIR = $($(TARGET_TYPE)_$(TOOLCHAIN)_OUTDIR) + +OBJEXT = obj +EXEEXT = .exe + +_CUSTOM = $($(TOOLCHAIN)_$1) $($(TARGET_TYPE)_$1) $($(TARGET_TYPE)_$(TOOLCHAIN)_$1) + +# I'm not sure why this builds gnumake rather than make...? +PROG = $(OUTDIR)gnumake$(EXEEXT) +BASE_PROG = $(basename $(PROG)) + +extra_CPPFLAGS = $(call _CUSTOM,CPPFLAGS) +extra_CFLAGS = $(call _CUSTOM,CFLAGS) +extra_LDFLAGS = $(call _CUSTOM,LDFLAGS) +LDLIBS = $(call _CUSTOM,LDLIBS) + +$(OUTDIR)src/config.h: $(SRCDIR)/src/config.h.W32 + $(call CP.cmd,$<,$@) diff --git a/local/recipes/dev/gnu-make/source/mk/msdosdjgpp.mk b/local/recipes/dev/gnu-make/source/mk/msdosdjgpp.mk new file mode 100644 index 0000000000..98bfe0d5bb --- /dev/null +++ b/local/recipes/dev/gnu-make/source/mk/msdosdjgpp.mk @@ -0,0 +1,43 @@ +# GNU -*-Makefile-*- to build GNU make on MS-DOS with DJGPP +# +# MS-DOS overrides for use with Basic.mk. +# +# Copyright (C) 2017-2022 Free Software 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 . + +OBJEXT = o +EXEEXT = .exe + +CC = gcc + +# Translate a POSIX path into a Windows path. Don't bother with drives. +# Used only inside recipes, with DOS/CMD tools that require it. +P2W = $(subst /,\,$1) + +prog_SOURCES += $(loadavg_SOURCES) $(glob_SOURCES) + +BUILT_SOURCES += $(lib)alloca.h $(lib)fnmatch.h $(lib)glob.h + +INCLUDEDIR = c:/djgpp/include +LIBDIR = c:/djgpp/lib +LOCALEDIR = c:/djgpp/share + +MKDIR.cmd = command.com /c mkdir $(call P2W,$1) +RM.cmd = command.com /c del /F /Q $(call P2W,$1) +CP.cmd = command.com /c copy /Y $(call P2W,$1 $2) + +$(OUTDIR)src/config.h: $(SRCDIR)/src/configh.dos + $(call CP.cmd,$<,$@) diff --git a/local/recipes/dev/gnu-make/source/po/LINGUAS b/local/recipes/dev/gnu-make/source/po/LINGUAS new file mode 100644 index 0000000000..64f533bfe7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/LINGUAS @@ -0,0 +1,30 @@ +be +bg +cs +da +de +es +fi +fr +ga +gl +he +hr +id +it +ja +ko +lt +nl +pl +pt +pt_BR +ro +ru +sr +sv +tr +uk +vi +zh_CN +zh_TW diff --git a/local/recipes/dev/gnu-make/source/po/Makefile.in.in b/local/recipes/dev/gnu-make/source/po/Makefile.in.in new file mode 100644 index 0000000000..65184f65c7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/Makefile.in.in @@ -0,0 +1,475 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper +# +# 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 +# License but which still want to provide support for the GNU gettext +# functionality. +# 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.19 +GETTEXT_MACRO_VERSION = 0.19 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SED = @SED@ +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# 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 +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +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 \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot +POFILESDEPS_yes = $(POFILESDEPS_) +POFILESDEPS_no = +POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT)) + +DISTFILESDEPS_ = update-po +DISTFILESDEPS_yes = $(DISTFILESDEPS_) +DISTFILESDEPS_no = +DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO)) + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + 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-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, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + @$(CHECK_MACRO_VERSION) + 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 +# have been downloaded. + +# 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. +# The determination of whether the package xyz is a GNU one is based on the +# heuristic whether some file in the top level directory mentions "GNU xyz". +# If GNU 'find' is available, we avoid grepping through monster files. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + package_gnu="$(PACKAGE_GNU)"; \ + test -n "$$package_gnu" || { \ + if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ + LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \ + -size -10000000c -exec grep 'GNU @PACKAGE@' \ + /dev/null '{}' ';' 2>/dev/null; \ + else \ + LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ + fi; \ + } | grep -v 'libtool:' >/dev/null; then \ + package_gnu=yes; \ + else \ + package_gnu=no; \ + fi; \ + }; \ + if test "$$package_gnu" = "yes"; then \ + package_prefix='GNU '; \ + else \ + package_prefix=''; \ + 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_prefix}@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 && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(POFILESDEPS) + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + 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 + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(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"; \ + 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 \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(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 \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +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; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + 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 \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +# 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) \ + && @SHELL@ ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/local/recipes/dev/gnu-make/source/po/Makevars b/local/recipes/dev/gnu-make/source/po/Makevars new file mode 100644 index 0000000000..f7abd7b01e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/Makevars @@ -0,0 +1,87 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ \ + \ + --from-code=UTF-8\ + --flag=_:1:pass-c-format\ + --flag=N_:1:pass-c-format\ + --flag=DB:2:c-format --flag=DBF:2:c-format --flag=DBS:2:c-format\ + --flag=O:3:c-format --flag=OSN:3:c-format --flag=ONS:3:c-format\ + --flag=OS:3:c-format --flag=OSS:3:c-format --flag=OSSS:3:c-format\ + --flag=ON:3:c-format --flag=ONN:3:c-format\ + $${end_of_xgettext_options+} + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This tells whether or not to prepend "GNU " prefix to the package +# name that gets inserted into the header of the $(DOMAIN).pot file. +# Possible values are "yes", "no", or empty. If it is empty, try to +# detect it automatically by scanning the files in $(top_srcdir) for +# "GNU packagename" string. +PACKAGE_GNU = + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = bug-make@gnu.org + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = no + +# These options get passed to msgmerge. +# Useful options are in particular: +# --previous to keep previous msgids of translated messages, +# --quiet to reduce the verbosity. +MSGMERGE_OPTIONS = + +# These options get passed to msginit. +# If you want to disable line wrapping when writing PO files, add +# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and +# MSGINIT_OPTIONS. +MSGINIT_OPTIONS = + +# This tells whether or not to regenerate a PO file when $(DOMAIN).pot +# has changed. Possible values are "yes" and "no". Set this to no if +# the POT file is checked in the repository and the version control +# program ignores timestamps. +PO_DEPENDS_ON_POT = yes + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = yes diff --git a/local/recipes/dev/gnu-make/source/po/Makevars.template b/local/recipes/dev/gnu-make/source/po/Makevars.template new file mode 100644 index 0000000000..0648ec7590 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/Makevars.template @@ -0,0 +1,78 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This tells whether or not to prepend "GNU " prefix to the package +# name that gets inserted into the header of the $(DOMAIN).pot file. +# Possible values are "yes", "no", or empty. If it is empty, try to +# detect it automatically by scanning the files in $(top_srcdir) for +# "GNU packagename" string. +PACKAGE_GNU = + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = no + +# These options get passed to msgmerge. +# Useful options are in particular: +# --previous to keep previous msgids of translated messages, +# --quiet to reduce the verbosity. +MSGMERGE_OPTIONS = + +# These options get passed to msginit. +# If you want to disable line wrapping when writing PO files, add +# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and +# MSGINIT_OPTIONS. +MSGINIT_OPTIONS = + +# This tells whether or not to regenerate a PO file when $(DOMAIN).pot +# has changed. Possible values are "yes" and "no". Set this to no if +# the POT file is checked in the repository and the version control +# program ignores timestamps. +PO_DEPENDS_ON_POT = yes + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = yes diff --git a/local/recipes/dev/gnu-make/source/po/POTFILES.in b/local/recipes/dev/gnu-make/source/po/POTFILES.in new file mode 100644 index 0000000000..040d60f805 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/POTFILES.in @@ -0,0 +1,48 @@ +# List of source files containing translatable strings. +# Copyright (C) 2000-2022 Free Software 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 . + +src/ar.c +src/arscan.c +src/commands.c +src/dir.c +src/expand.c +src/file.c +src/function.c +src/getopt.c +src/guile.c +src/hash.c +src/implicit.c +src/job.c +src/load.c +src/main.c +src/misc.c +src/output.c +src/output.h +src/posixos.c +src/read.c +src/remake.c +src/remote-cstms.c +src/rule.c +src/shuffle.c +src/signame.c +src/strcache.c +src/variable.c +src/variable.h +src/vmsfunctions.c +src/vmsjobs.c +src/vpath.c +src/w32/w32os.c diff --git a/local/recipes/dev/gnu-make/source/po/Rules-quot b/local/recipes/dev/gnu-make/source/po/Rules-quot new file mode 100644 index 0000000000..9dc963076f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/Rules-quot @@ -0,0 +1,58 @@ +# This file, Rules-quot, can be copied and used freely without restrictions. +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \ + | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \ + { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \ + $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \ + ;; \ + *) \ + $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \ + ;; \ + esac } 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 \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/local/recipes/dev/gnu-make/source/po/be.gmo b/local/recipes/dev/gnu-make/source/po/be.gmo new file mode 100644 index 0000000000..2fa713b323 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/be.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/be.po b/local/recipes/dev/gnu-make/source/po/be.po new file mode 100644 index 0000000000..9f9803f82b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/be.po @@ -0,0 +1,2425 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2002, 2003 Free Software Foundation, Inc. +# Ales Nyakhaychyk , 2002, 2003. +# +msgid "" +msgstr "" +"Project-Id-Version: make 3.80\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2003-10-21 11:50+0300\n" +"Last-Translator: Ales Nyakhaychyk \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: KBabel 0.9.6\n" + +#: src/ar.c:47 +#, fuzzy, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "Ñпроба выкарыÑтаць непадтрымліваемую мажліваÑьць: \"%s\"" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "дакрананьне да ўдзельніку архіва недаÑтупна на VMS" + +#: src/ar.c:151 +#, fuzzy, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: архіў \"%s\" Ð½Ñ Ð¹Ñнуе" + +#: src/ar.c:154 +#, fuzzy, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: \"%s\" - гÑта не Ñ€ÑчаіÑны архіў" + +#: src/ar.c:161 +#, fuzzy, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: удзельнік \"%s\" Ð½Ñ Ð¹Ñнуе Ñž \"%s\"" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (назва муÑіла быць абрÑзана)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Дата %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, Ñ€Ñжым = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:647 +#, fuzzy, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] ВыдалÑецца файл \"%s\"" + +#: src/commands.c:649 +#, fuzzy, c-format +msgid "*** Deleting file '%s'" +msgstr "*** ВыдалÑецца файл \"%s\"" + +#: src/commands.c:685 +#, fuzzy +msgid "# recipe to execute" +msgstr "# загады Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½ÑŒÐ½Ñ" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (убудаваны):" + +#: src/commands.c:690 +#, fuzzy, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (з\"%s\", радок %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# ТÑчкі\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "" + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "" + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ðе" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " файлаў, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "не" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr "" + +#: src/dir.c:1180 +msgid " so far." +msgstr " так далёка." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr "" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "" + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "" + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" + +#: src/file.c:407 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** ВыдалÑецца файл \"%s\"" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "ВыдалÑюцца Ð¿Ñ€Ð°Ð¼ÐµÐ¶ÐºÐ°Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "БÑгучы чаÑ" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: адбітак чаÑу па-за дапушчальнымі межамі, падÑтаўлÑецца %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# ÐÑ Ð¼Ñта:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "" + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "" + +#: src/file.c:1098 +#, fuzzy +msgid "# Command line target." +msgstr "загадны радок" + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "" + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "" + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "" + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "" + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "" + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Так Ñама робÑцца:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Ð§Ð°Ñ Ð·ÑŒÐ¼ÑÐ½ÐµÐ½ÑŒÐ½Ñ Ð½Ñ–ÐºÐ¾Ð»Ñ– не правÑраўÑÑ." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Файл Ð½Ñ Ð¹Ñнуе." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Файл вельмі Ñтары." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# ÐпошнÑе зьмÑненьне %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Файл быў абноўлены." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Файл Ð½Ñ Ð±Ñ‹Ñž абноўлены." + +#: src/file.c:1139 +#, fuzzy +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Загады, што выконваюцца зараз (ГЭТР- ПÐМЫЛКÐ)." + +#: src/file.c:1142 +#, fuzzy +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Загады, што выконваюцца зараз (ГЭТР- ПÐМЫЛКÐ)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# ПаÑьпÑхова абноўлены." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "" + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "" + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Файлы" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe (): памылка Ñž process_init_fd()\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe (): памылка Ñž process_init_fd()\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "памылка Ñž CreatePipe() (e=%d)\n" + +#: src/function.c:1723 +#, fuzzy, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe (): памылка Ñž process_init_fd()\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, fuzzy, c-format +msgid "open: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2360 +#, fuzzy, c-format +msgid "write: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, fuzzy, c-format +msgid "close: %s: %s" +msgstr "%s%s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, fuzzy, c-format +msgid "read: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2409 +#, fuzzy, c-format +msgid "file: invalid file operation: %s" +msgstr "%s: нерÑчаіÑны выбар -- %c.\n" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "" + +#: src/function.c:2539 +#, fuzzy, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ÐÑ Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ð° Ð´Ð»Ñ Ð³Ñтае плÑтформы: Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ \"%s\"" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "" + +#: src/getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: выбар \"%s\" - неадназначы.\n" + +#: src/getopt.c:683 +#, fuzzy, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: выбар \"--%s\" не дазвалÑе довад.\n" + +#: src/getopt.c:688 +#, fuzzy, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: выбар \"%c%s\" не дазвалÑе довад.\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, fuzzy, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: выбар \"%s\" патрабуе довад.\n" + +#: src/getopt.c:734 +#, fuzzy, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: нераÑпазнаны выбар \"--%s\".\n" + +#: src/getopt.c:738 +#, fuzzy, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: нераÑпазнаны выбар \"%c%s\".\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: недапушчальны выбар -- %c.\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: нерÑчаіÑны выбар -- %c.\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: выбар патрабуе довад -- %c.\n" + +#: src/getopt.c:844 +#, fuzzy, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: выбар \"-W %s\" - неадназначын.\n" + +#: src/getopt.c:862 +#, fuzzy, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: выбар \"-W %s\" не дазвалÑе довад.\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "" + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "" + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Файл \"%s\" Ð½Ñ Ð¹Ñнуе.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "" + +#: src/implicit.c:886 +#, fuzzy, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "ВыдалÑюцца Ð¿Ñ€Ð°Ð¼ÐµÐ¶ÐºÐ°Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹...\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "fwrite (чаÑовы файл)" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr "" + +#: src/job.c:557 +msgid " (ignored)" +msgstr "" + +#: src/job.c:561 src/job.c:1900 +#, fuzzy +msgid "" +msgstr " (убудаваны):" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "*** [%s] Памылка %d" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Чакаюцца Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ñ†Ñ‹...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr "" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1909 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s ÐÑма правіла каб зрабіць мÑту \"%s\", патрÑбную Ð´Ð»Ñ \"%s\"%s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "# Файл Ð½Ñ Ð¹Ñнуе." + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "" + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "" + +#: src/job.c:2869 +#, fuzzy, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL зьменена (раней \"%s\", зараз \"%s\")" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "ÐŸÐ°Ñ€Ð°Ð»ÐµÐ»ÑŒÐ½Ñ Ð¿Ñ€Ð°Ñ†Ñ‹ (-j) не падтрымліваюцца на гÑтае плÑтхорме." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Выбары:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr "" +" -h, --help Друкуе гÑтае паведамленьне й выходзіць.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" + +#: src/main.c:355 +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base Друкуе нутраную базу даньнÑÑž make.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +#, fuzzy +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Ðе адлюÑтроўваць загады.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Выключае -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" + +#: src/main.c:384 +#, fuzzy +msgid " --trace Print tracing information.\n" +msgstr "" +" -h, --help Друкуе гÑтае паведамленьне й выходзіць.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Друкуе бÑгучую Ñ‚Ñчку.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "пуÑты радок нерÑчаіÑны Ñž ÑкаÑьці назвы файла" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "ВыкарыÑтаньне: %s [выбары] [мÑта] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"ГÑта праграма пабудавана Ð´Ð»Ñ %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"ГÑта праграма падубавана Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "ПаведамлÑйце пра памылкі на .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (чаÑовы файл): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile Ñа Ñтандартнага ўводу зададзены двойчы." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (чаÑовы файл)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "ÐŸÐ°Ñ€Ð°Ð»ÐµÐ»ÑŒÐ½Ñ Ð¿Ñ€Ð°Ñ†Ñ‹ (-j) не падтрымліваюцца на гÑтае плÑтхорме." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "" + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "" + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "ÐбнаўлÑюцца make-файлы....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "" + +#: src/main.c:2548 +#, fuzzy, c-format +msgid "Included makefile '%s' was not found." +msgstr "Makefile \"%s\" Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½" + +#: src/main.c:2552 +#, fuzzy, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile \"%s\" Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "ÐÑма мÑÑ‚" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" + +#: src/main.c:3186 +#, fuzzy, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "выбар \"-%c\" патрабуе Ñтаноўчы цÑлы довад" + +#: src/main.c:3267 +#, fuzzy, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "выбар \"-%c\" патрабуе Ñтаноўчы цÑлы довад" + +#: src/main.c:3652 +#, fuzzy, c-format +msgid "%sBuilt for %s\n" +msgstr "" +"\n" +"ГÑта праграма пабудавана Ð´Ð»Ñ %s\n" + +#: src/main.c:3654 +#, fuzzy, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "" +"\n" +"ГÑта праграма падубавана Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, fuzzy, c-format +msgid "%s value %s: not a directory" +msgstr "%s: выхад зь невÑдомае Ñ‚Ñчкі" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "fwrite (чаÑовы файл)" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (чаÑовы файл): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (чаÑовы файл)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (чаÑовы файл)" + +#: src/output.c:95 +#, fuzzy, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: уваход у невÑдомую Ñ‚Ñчку" + +#: src/output.c:97 +#, fuzzy, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: выхад зь невÑдомае Ñ‚Ñчкі" + +#: src/output.c:100 +#, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: уваход у Ñ‚Ñчку \"%s\"\n" + +#: src/output.c:102 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: выхад з Ñ‚Ñчкі \"%s\"\n" + +#: src/output.c:106 +#, fuzzy, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: уваход у невÑдомую Ñ‚Ñчку" + +#: src/output.c:108 +#, fuzzy, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: выхад зь невÑдомае Ñ‚Ñчкі" + +#: src/output.c:111 +#, fuzzy, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: уваход у Ñ‚Ñчку \"%s\"\n" + +#: src/output.c:113 +#, fuzzy, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: выхад з Ñ‚Ñчкі \"%s\"\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr "" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "Ñтвараецца трубаправод прац" + +#: src/posixos.c:201 src/posixos.c:434 +#, fuzzy +msgid "duping jobs pipe" +msgstr "Ñтвараецца трубаправод прац" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +#, fuzzy +msgid "pselect jobs pipe" +msgstr "Ñтвараецца трубаправод прац" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Чытаюцца make-файлы...\n" + +#: src/read.c:330 +#, fuzzy, c-format +msgid "Reading makefile '%s'" +msgstr "Чытаецца make-файл \"%s\"" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (нÑма дапомнае мÑты)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (пошук шлÑху)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr "" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr "" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "" + +#: src/read.c:1053 +#, fuzzy, c-format +msgid "missing rule before recipe" +msgstr "прапушчана правіла перад загадамі" + +#: src/read.c:1154 +#, fuzzy, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr " (вы маеце на ўвазе TAB замеÑÑ‚ 8 прагалаў?)" + +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator" +msgstr "прапушчан падзÑлÑльнік %s" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "" + +#: src/read.c:1349 +#, fuzzy, c-format +msgid "missing 'endif'" +msgstr "прапушчаны \"endif\"" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "" + +#: src/read.c:1448 +#, fuzzy, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "прапушчаны \"endef\", незавершаны \"define\"" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "" + +#: src/read.c:1549 +#, fuzzy, c-format +msgid "extraneous '%s'" +msgstr "зьнешні \"%s\"" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "" + +#: src/remake.c:254 +#, fuzzy, c-format +msgid "Nothing to be done for '%s'." +msgstr "Ðічога Ð½Ñ Ð±Ñ‹Ð»Ð¾ зроблена Ð´Ð»Ñ \"%s\"." + +#: src/remake.c:255 +#, fuzzy, c-format +msgid "'%s' is up to date." +msgstr "\"%s\" - ÑаÑтарÑл(а)." + +#: src/remake.c:350 +#, fuzzy, c-format +msgid "Pruning file '%s'.\n" +msgstr "УÑÑ‘ ÑÑˆÑ Ð°Ð±Ð½Ð°ÑžÐ»Ñецца файл \"%s\".\n" + +#: src/remake.c:416 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%s ÐÑма правіла каб зрабіць мÑту \"%s\", патрÑбную Ð´Ð»Ñ \"%s\"%s" + +#: src/remake.c:426 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "" + +#: src/remake.c:471 +#, fuzzy, c-format +msgid "File '%s' was considered already.\n" +msgstr "Файл \"%s\" ужо быў разгледжаны.\n" + +#: src/remake.c:481 +#, fuzzy, c-format +msgid "Still updating file '%s'.\n" +msgstr "УÑÑ‘ ÑÑˆÑ Ð°Ð±Ð½Ð°ÑžÐ»Ñецца файл \"%s\".\n" + +#: src/remake.c:484 +#, fuzzy, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Скончана абнаўленьне файла \"%s\".\n" + +#: src/remake.c:513 +#, fuzzy, c-format +msgid "File '%s' does not exist.\n" +msgstr "Файл \"%s\" Ð½Ñ Ð¹Ñнуе.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Файл \"%s\" Ð½Ñ Ð¹Ñнуе.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "" + +#: src/remake.c:737 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Скончана абнаўленьне файла \"%s\".\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "" + +#: src/remake.c:757 +#, fuzzy, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Скончана абнаўленьне файла \"%s\".\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "" + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "" + +#: src/remake.c:819 +#, fuzzy, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Файл \"%s\" Ð½Ñ Ð¹Ñнуе.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "" + +#: src/remake.c:865 +#, fuzzy, c-format +msgid "No need to remake target '%s'" +msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "" + +#: src/remake.c:891 +#, fuzzy, c-format +msgid "Must remake target '%s'.\n" +msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr "" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "" + +#: src/remake.c:913 +#, fuzzy, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "" + +#: src/remake.c:1118 +#, fuzzy, c-format +msgid "Using default commands for '%s'.\n" +msgstr "ÐевÑдомы ўбудаваны загад \"%s\".\n" + +#: src/remake.c:1499 +#, fuzzy, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Увага! Файл \"%s\" мае Ñ‡Ð°Ñ Ð·ÑŒÐ¼ÑÐ½ÐµÐ½ÑŒÐ½Ñ %.2g Ñ, Ñкі ÑˆÑ‡Ñ Ð½Ðµ надышоў." + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "невÑдомы Ñыгнал" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "" + +#: src/signame.c:98 +msgid "Quit" +msgstr "" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "ÐÐµÐ´Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ñ–Ð½ÑтрукцыÑ" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Забіты" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Памылка шыны" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "ДрÑнны ÑÑ‹ÑÑ‚Ñмны выклік" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Зламаны трубаправод" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Завершаны" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Спынен" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Спынен (tty увод)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Спынен (вывад на tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Спынена (Ñыгнал)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Ðкно зьменена" + +#: src/signame.c:189 +msgid "Continued" +msgstr "" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "магчым У/Ð’" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Сыгнал пагрозы" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Запыт аб зьвеÑтках" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" + +#: src/variable.c:1786 +msgid "automatic" +msgstr "аўтаматычна" + +#: src/variable.c:1789 +msgid "default" +msgstr "дапомны" + +#: src/variable.c:1792 +msgid "environment" +msgstr "аÑÑродзьдзе" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "make-файл" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "" + +#: src/variable.c:1801 +msgid "command line" +msgstr "загадны радок" + +#: src/variable.c:1804 +#, fuzzy +msgid "'override' directive" +msgstr "дырÑктыва \"override\"" + +#: src/variable.c:1814 +#, fuzzy, c-format +msgid " (from '%s', line %lu)" +msgstr " (з \"%s\", радок %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# ПераменныÑ\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" + +#: src/variable.h:237 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "Увага! ÐÑÐ²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°Ñ Ð¿ÐµÑ€Ð°Ð¼ÐµÐ½Ð½Ð°Ñ \"%.*s\"" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, fuzzy, c-format +msgid "Append output to %s\n" +msgstr "Перанакіраваны вывад у %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" + +#: src/vpath.c:617 +#, fuzzy +msgid "# No 'vpath' search paths." +msgstr " (пошук шлÑху)" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + +#~ msgid "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] Памылка 0x%x" + +#~ msgid "Error, empty command\n" +#~ msgstr "Памылка! Парожні загад.\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Перанакіраваны ўвод з %s\n" + +#~ msgid "%s: Command not found" +#~ msgstr "%s: загад не адшуканы" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s Ñпынена на 30 ÑÑкундаў..." + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Ðе задавайце -j ці --jobs, калі sh.exe недаÑтупны." + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%s ГÑта вольнае праграмнае забеÑьпÑчÑньне; глÑдзіце зыходны код длÑ\n" +#~ "%sÐ¿Ð°Ð³Ð°Ð´Ð½ÐµÐ½ÑŒÐ½Ñ Ð°Ð± раÑпаўÑюджваньні. ÐÑ Ð¹Ñнуе ÐІЯКÐЕ гарантыі, нават аб\n" +#~ "%sмагчымаÑьці выкарыÑÑ‚Ð½ÑŒÐ½Ñ Ð·ÑŒ Ñкой небудзь мÑтай.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° %d" + +#~ msgid "virtual memory exhausted" +#~ msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñць вычарпана" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: карыÑтальнік %lu (наÑамрÑч %lu), група %lu (наÑамрÑч %lu)\n" + +#~ msgid "invalid `override' directive" +#~ msgstr "нерÑчаіÑÐ½Ð°Ñ Ð´Ñ‹Ñ€Ñктыва \"override\"" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "нÑма назвы файла Ð´Ð»Ñ \"%sinclude\"" + +#~ msgid "Warning: File `%s' has modification time in the future" +#~ msgstr "Увага! Файл \"%s\" мае Ñ‡Ð°Ñ Ð·ÑŒÐ¼ÑненьнÑ, Ñкі ÑˆÑ‡Ñ Ð½Ðµ надышоў." + +#~ msgid " terminal." +#~ msgstr " Ñ‚Ñрмінал." + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# ÐÑма файлаў." + +#~ msgid "DIRECTORY" +#~ msgstr "ТЭЧКÐ" + +#~ msgid "FILE" +#~ msgstr "ФÐЙЛ" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "Чытае ФÐЙЛ Ñк make-файл" + +#~ msgid "Entering" +#~ msgstr "Уваход у" + +#~ msgid "Leaving" +#~ msgstr "выхад з" + +#~ msgid "# No variables." +#~ msgstr "# ÐÑма пераменных." diff --git a/local/recipes/dev/gnu-make/source/po/bg.gmo b/local/recipes/dev/gnu-make/source/po/bg.gmo new file mode 100644 index 0000000000..f1916d104e Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/bg.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/bg.po b/local/recipes/dev/gnu-make/source/po/bg.po new file mode 100644 index 0000000000..1f9b26dc70 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/bg.po @@ -0,0 +1,2495 @@ +# Bulgarian translation of make po-file. +# Copyright (C) 2019, 2020, 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Alexander Shopov , 2019, 2020, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-24 10:55+0200\n" +"Last-Translator: Alexander Shopov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "опит за ползване на „%s“, което не Ñе поддържа" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "" +"обновÑването на информациÑта чрез „touch“ на член на архив не Ñе поддържа " +"под VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "„touch“: архивът „%s“ не ÑъщеÑтвува" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "„touch“: „%s“ не е поддържан архив" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "„touch“: в „%2$s“ нÑма член „%1$s“" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "„touch“: неправилен изходен код от „ar_member_touch“ върху „%s“" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "„lbr$set_module()“ не може да получи Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° модула, код = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "„lbr$ini_control()“ завърши неуÑпешно Ñ ÐºÐ¾Ð´ = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "библиотеката „%s“ не може да Ñе отвори за проверката на член, код = %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Ðеправилен вид %1$s за члена „%3$s“ на архива „%2$s“" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Член „%s“%s: %ld байта при %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (името може да е отÑечено)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Дата %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " ИД_П = %d, ИД_ГР = %d, режим = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Прекалено много редове в рецептата (макÑимумът е %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "••• ПрекъÑване.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "••• [%s] „%s“ може да е фалшива чаÑÑ‚ от архив — нÑма да бъде изтрита" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "••• „%s“ може да е фалшива чаÑÑ‚ от архив — нÑма да бъде изтрита" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "••• [%s] Изтриване на файл „%s“" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "••• Изтриване на файл „%s“" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# рецепта за изпълнение" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (вградено):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (от „%s“, ред %lu)\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Директории\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# „%s“: не може да Ñе получи Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñ‡Ñ€ÐµÐ· „stat“.\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (ключ %s, време на промÑна %s): не може да Ñе отвори.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (уÑтройÑтво %d, i-възел [%d,%d,%d]): не може да Ñе отвори.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (уÑтройÑтво %ld, i-възел %ld): не може да Ñе отвори.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ключ %s, време на промÑна %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (уÑтройÑтво %d, i-възел [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (уÑтройÑтво %ld, i-възел %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "ÐÑма" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " файлове, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "нÑма" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " пречки" + +#: src/dir.c:1180 +msgid " so far." +msgstr " заÑега." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " пречки в %lu директории.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: „%s“ не Ñе замеÑтва рекурÑивно, за да Ñе изнеÑе към Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° " +"обвивката\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "РекурÑивната променлива „%s“ Ñочи Ñебе Ñи (в нÑкой момент)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "незавършен указател към променлива" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Рецептата е указана за файл „%s“ при %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "Рецептата за файла „%s“ бе открита при търÑене на вградените правила." + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "но Ñега „%s“ Ñе Ñчита за ÑÑŠÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð» като „%s“." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "Рецептата за „%s“ Ñе преÑкача, а Ñе ползва тази за „%s“." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"единичното двоеточие „%s“ не може да Ñе преименува на двойно двоеточие „%s“" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"двойното двоеточие „%s“ не може да Ñе преименува на единично двоеточие „%s“" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "••• Изтриване на Ð¼ÐµÐ¶Ð´Ð¸Ð½Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Изтриване на междинните файлове…\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "„%s“ не може да е едновременно „.NOTINTERMEDIATE“ и „.INTERMEDIATE“" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "„%s“ не може да е едновременно „.NOTINTERMEDIATE“ и „.SECONDARY“" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "„.NOTINTERMEDIATE“ и „.SECONDARY“ Ñа неÑъвмеÑтими" + +#: src/file.c:942 +msgid "Current time" +msgstr "Текущо време" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: времевото клеймо е извън диапазона, замеÑтва Ñе Ñ â€ž%s“" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ðе е цел:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Ценен файл (изиÑкване на „.PRECIOUS“)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Фалшива цел (изиÑкване на „.PHONY“)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Цел на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Стандартен, MAKEFILES или -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Вградено правило" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# ТърÑенето във вградените правила е извършено." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# ТърÑенето във вградените правила не е извършено." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Вградена/Ñтатична оÑнова на шаблон: „%s“\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Файлът е междинно изиÑкване." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Файлът е изиÑкване на „.NOTINTERMEDIATE.“" + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Вторичен файл (изиÑкване на „.SECONDARY“)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Също изгражда:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Времето на промÑна не е проверено." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Файлът не ÑъщеÑтвува." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Файлът е много Ñтар." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# ПоÑледна промÑна на „%s“\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Файлът е обновен." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Файлът не е обновен." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Рецептата в момента Ñе изпълнÑва (това е ГРЕШКÐ)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Рецептата за завиÑимоÑтите в момента Ñе изпълнÑва (това е ГРЕШКÐ)" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# УÑпешно обновено." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# ТрÑбва да бъде обновено („-q“ е зададена)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# ÐеуÑпешно обновÑване." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ðеправилна ÑтойноÑÑ‚ в член на „command_state“!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Файлове" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# ÑтатиÑтика за речника за файлове:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: полето „%s“ не е кеширано: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: празна ÑтойноÑÑ‚" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: „%s“ извън Ð¿Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "неправилен първи аргумент към функциÑта „word“" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "първиÑÑ‚ аргумент към функциÑта „word“ трÑбва да е положително чиÑло" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "неправилен първи аргумент за функциÑта „wordlist“" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "неправилен втори аргумент за функциÑта „wordlist“" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "нечиÑлов първи аргумент за функциÑта „intcmp“" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "нечиÑлов втори аргумент за функциÑта „intcmp“" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "" +"„windows32_openpipe“: неуÑпешно извикване на „DuplicateHandle(In)“ (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" +"„windows32_openpipe“: неуÑпешно извикване на „DuplicateHandle(Err)“ (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "неуÑпешно извикване на „CreatePipe()“ failed (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "„windows32_openpipe()“: неуÑпешно извикване на „process_init_fd()“\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "ИзчиÑтване на временен файл за пакетна обработка „%s“\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "файл: липÑва име на файл" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "отварÑне: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "запазване: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "затварÑне: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "файл: прекалено много аргументи" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "четене: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "файл: неправилно дейÑтвие върху файл: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недоÑтатъчен брой аргументи (%u) към функциÑта „%s“" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "без Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° тази платформа: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "незавършено извикване на функциÑта „%s“: липÑва „%c“" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Празно име на функциÑ" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Грешно име на функциÑ: „%s“" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Името на функциÑта е твърде дълго: „%s“" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Ðеправилен минимален брой аргументи (%u) за функциÑта „%s“" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Ðеправилен макÑимален брой аргументи (%u) за функциÑта „%s“" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: опциÑта „%s“ не е еднозначна\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: опциÑта „--%s“ не приема аргумент\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: опциÑта „%c%s“ не приема аргумент\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: опциÑта „%s“ изиÑква аргумент\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž--%s“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž%c%s“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: непозволена Ð¾Ð¿Ñ†Ð¸Ñ â€” %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: неправилна Ð¾Ð¿Ñ†Ð¸Ñ â€” „%c“\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: опциÑта изиÑква аргумент — %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: опциÑта „-W %s“ не е еднозначна\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: опциÑта „-W %s“ не приема аргумент\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: замеÑтване на „%s“\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: изчиÑлÑване на „%s“\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "не могат да Ñе заделÑÑ‚ %lu байта за речник — паметта е изчерпана" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Ðатоварване=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Преизграждане на речник=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "СъвпадениÑ=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "ТърÑене на вградено правило за „%s“.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "ТърÑене на вградено правило по член на архив за „%s“.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "ЛипÑва вградено правило по член на архив за „%s“.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "ИзбÑгване на вградено правило по член на архив за „%s“.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Ðов, заÑилен опит.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Пробване на шаблонно правило „%s“ Ñ Ð¾Ñнова „%.*s“.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Твърде дълга оÑнова: „%s%.*s“.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "ОтхвърлÑне на правилото „%s“ заради неизпълнимото изиÑкване „%s“.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"ОтхвърлÑне на правилото „%s“ заради неизпълнимото вградено изиÑкване „%s“.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Опитване на изиÑкването „%s“.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Опитване на вграденото изиÑкване „%s“.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s“ задължително трÑбва да ÑъщеÑтвува.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "„%s“ е открит.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Използва Ñе правилото за ÑъвмеÑтимоÑÑ‚ „%s“ заради „%s“.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"ИзиÑкването „%s“ на целта „%s“ не Ñе квалифицира като задължително да " +"ÑъщеÑтвува.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "ИзиÑканото „%s“ е открито чрез „VPATH“ „%s“.\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "ТърÑене на правило Ñ Ð¸Ð·Ñ€Ð¸Ñ‡ÐµÐ½ файл „%s“.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "ТърÑене на правило Ñ Ð¼ÐµÐ¶Ð´Ð¸Ð½ÐµÐ½ файл „%s“.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "ОтхвърлÑне на правило „%s“ заради неизпълнимото изиÑкване „%s“.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "„%s“ липÑва.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Открито е вградено правило „%s“ за „%s“.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "ТърÑене на правило за ÑъвмеÑтимоÑÑ‚ за „%s“.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Ðе е открито вградено правило за „%s“.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Ðе може да Ñе Ñъздаде временен файл" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (паметта е разтоварена)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (преÑкачане)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<вградено>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Грешка %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "••• Изчакване на незавършени задачи…" + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Ðезавършил дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s) ИД_ПР %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (отдалечено)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Приключване на ÑÐ¿ÐµÑ‡ÐµÐ»ÐµÐ»Ð¸Ñ Ð´ÑŠÑ‰ÐµÑ€ÐµÐ½ Ð¿Ñ€Ð¾Ñ†ÐµÑ %p ИД_ПР %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Приключване на Ð¸Ð·Ð³ÑƒÐ±Ð¸Ð»Ð¸Ñ Ð´ÑŠÑ‰ÐµÑ€ÐµÐ½ Ð¿Ñ€Ð¾Ñ†ÐµÑ %p ИД_ПР %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "ИзчиÑтване на временен файл за пакетна обработка „%s“\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "ÐеуÑпешно изчиÑтване на временен файл за пакетна обработка „%s“: %d\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "ИзчиÑтване на Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ %p PID %s%s от веригата.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "ОÑвобождаване на жетона за дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "„process_easy()“ не уÑÐ¿Ñ Ð´Ð° Ñтартира Ð¿Ñ€Ð¾Ñ†ÐµÑ (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"При неуÑпешно Ñтартиране Ñа изброени %d аргумента\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "ПоÑтавÑне на Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s) PID %s%s във веригата.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Получен е жетон за дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: обновÑване на целта „%s“ заради: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "целта не ÑъщеÑтвува" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "" +"на тази операционна ÑиÑтема не могат да Ñе налагат Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð·Ð° " +"натоварването" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "ограничението не може да бъде наложено: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"нÑма повече манипулатори за файлове: ÑтандартниÑÑ‚ вход не може да Ñе дублира" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"нÑма повече манипулатори за файлове: ÑтандартниÑÑ‚ изход не може да Ñе дублира" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"нÑма повече манипулатори за файлове: Ñтандартната грешка не може да Ñе " +"дублира" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "СтандартниÑÑ‚ вход не може да Ñе възÑтанови" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "СтандартниÑÑ‚ изход не може да Ñе възÑтанови" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Стандартната грешка не може да Ñе възÑтанови" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" +"„make“ приключи дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %s, вÑе още Ñе чака за %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: проÑтранÑтвото на Ñредата може да е изчерпано" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "Променливата „SHELL“ е променена (бе „%s“, а Ñега е „%s“)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Ðе може да Ñе Ñъздаде временен файл за пакетна обработка в „%s“\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Съдържание на файл за пакетна обработка:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Съдържание на файла за пакетна обработка:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" +"%s (ред %d) неправилен контекÑÑ‚ на обвивката (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "ÐеуÑпешно отварÑне на глобалната таблица ÑÑŠÑ Ñимволи: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Зареден Ñподелен обект %s\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "ЗаредениÑÑ‚ обект „%s“ не е обÑвен като ÑъвмеÑтим Ñ ÐžÐŸÐ› (GPL)" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "ÐеуÑпешно зареждане на Ñимвола „%s“ от „%s“: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Празно име на Ñимвол за зареждане: „%s“" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Зареждане на Ñимвола „%s“ от „%s“\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Изключване на Ñподелен обект %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "ОперациÑта за зареждане („load“) не Ñе поддържа на тази платформа" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Опции:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m преÑкача Ñе, за ÑъвмеÑтимоÑÑ‚\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make безуÑловно изграждане на вÑички цели\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C ДИРЕКТОРИЯ, --directory=ДИРЕКТОРИЯ\n" +" преминаване към тази ДИРЕКТОРИЯ, преди да Ñе\n" +" прави каквото и да е\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изчиÑтване на грешки\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr " --debug[=ФЛÐГОВЕ] вид Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изчиÑтване на грешки\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" променливите от Ñредата да Ñа Ñ Ð¿Ñ€ÐµÐ²ÐµÑ Ð½Ð°Ð´\n" +" указаното във файловете управлÑващи " +"изграждането\n" +" (makefile)\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" --eval=ÐИЗ, --eval=ÐИЗ изчиÑлÑване на ÐИЗа като израз във файловете\n" +" управлÑващи изграждането (makefile)\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ФÐЙЛ, --file=ФÐЙЛ, --makefile=ФÐЙЛ\n" +" ползване на този ФÐЙЛ да управлÑва " +"изграждането\n" +" (makefile)\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help извеждане на тази помощ и изход\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors незачитане на грешките от рецептите\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I ДИРЕКТОРИЯ, --include-dir=ДИРЕКТОРИЯ\n" +" търÑене на вмъкнатите файлове в ДИРЕКТОРИЯта\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [БРОЙ], --jobs[=БРОЙ] ограничаване на задачите до макÑимум този " +"БРОЙ,\n" +" без аргумент — без ограничениÑ\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=СТИЛ избор на Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½Ð¸Ñ Ñтил за Ñървъра за задачи\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going продължаване дори и нÑкои от целите не могат\n" +" да Ñе изградÑÑ‚\n" + +#: src/main.c:350 +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\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times използване на минималното време на промÑна\n" +" измежду Ñимволна връзка и целта ѝ\n" + +#: src/main.c:355 +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" + +#: src/main.c:358 +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" +" Ñчита за много Ñтар\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[ВИД], --output-sync[=ВИД]\n" +" ВИД ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° изхода от паралелните " +"задачи\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base извеждане на вътрешната база от данни на " +"„make“\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question без изпълнение на цели, Ñамо изходниÑÑ‚ код\n" +" да указва дали те Ñа актуални\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules изключване на вградените правила\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables изключване на вграденото задаване на " +"променливи\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" разбъркване на изиÑкваниÑта и целите\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet без извеждане на рецептите\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent извеждане на рецептите (изключване на „--" +"silent“)\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Изключване на „-k“\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch обновÑване на информациÑта чрез „touch“ " +"вмеÑто\n" +" ново изграждане\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" +" --trace извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изчиÑтване на " +"грешки\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version извеждане на верÑиÑта и изход\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory извеждане на текущата директориÑ\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory изключване на „-w“, дори ако вградената\n" +" функционалноÑÑ‚ Ñ Ðµ включила\n" + +#: src/main.c:392 +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" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables предупреждаване при използването\n" +" на незададена променлива\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "грешка при запиÑ: Ñтандартна грешка" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "задаването на празен низ за име на файл е грешка" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "неправилно ниво за изчиÑтване на грешки „%s“" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "непознат вид ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ â€ž%s“ към опциÑта „--output-sync“" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Употреба: %s [ОПЦИЯ]… [ФÐЙЛ]…\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Тази програма е изградена за %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Тази програма е изградена за %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Съобщавайте за програмни грешки на .\n" +"За грешки в българÑÐºÐ¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´ на .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: прихванато прекъÑване/изключение (код = 0x%lx, Ð°Ð´Ñ€ÐµÑ = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Филтърът за необработени Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðµ извикан от програмата „%s“\n" +"Код на изключение = %lx\n" +"Флагове на изключение = %lx\n" +"ÐÐ´Ñ€ÐµÑ Ð½Ð° изключение = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Ðарушение на доÑтъпа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð° Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° Ð°Ð´Ñ€ÐµÑ 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Ðарушение на доÑтъпа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð° четене на Ð°Ð´Ñ€ÐµÑ 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "„find_and_set_shell()“ задава Ñтандартна обвивка = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" +"„find_and_set_shell()“ — търÑенето в Ð¿ÑŠÑ‚Ñ Ð·Ð°Ð´Ð°Ð²Ð° Ñтандартна обвивка = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "изтриване („unlink“ на временен файл): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: Ñървърът за задачи не е наличен, ползва Ñе „-j1“. Добавете " +"„+“ към родителÑкото правило на „make“." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: в подизграждане е зададено „-j%d“. Режимът на Ñървър за " +"задачи Ñе изключва." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Файлът управлÑващ изграждането е зададен двукратно на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "Ð·Ð°Ð¿Ð¸Ñ („fwrite“ на временен файл) %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: в подизграждане е зададено „-j%d“. Режимът на Ñървър за " +"задачи Ñе изключва." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Тази ÑиÑтема не поддържа паралелни задачи („-j“)." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Преминаване към еднозадачен режим (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Използва Ñе контролер за Ñървъра за задачи „%s“\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Използва Ñе ключалка за ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° изхода: %s\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Ðе Ñе поддържат Ñимволни връзки: „-L“ Ñе изключва." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Включен е режимът на разбъркване: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "ОбновÑване на управлÑващите изграждането файлове (makefile)…\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" +"УправлÑващиÑÑ‚ изграждането файл „%s“ може да зацикли, затова не Ñе " +"преÑъздава.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: не може да Ñе зареди" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "ÐеуÑпешно преÑъздаване на управлÑÐ²Ð°Ñ‰Ð¸Ñ Ð¸Ð·Ð³Ñ€Ð°Ð¶Ð´Ð°Ð½ÐµÑ‚Ð¾ файл „%s“" + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "ВмъкнатиÑÑ‚ управлÑващ изграждането файл „%s“ липÑва" + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "УправлÑващиÑÑ‚ изграждането файл „%s“ липÑва" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Ðевъзможно връщане към първоначалната директориÑ" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Изпълнение наново[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "Стандартната цел „.DEFAULT_GOAL“ Ñъдържа повече от една цел" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "ÐÑма цели" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Ðе е зададена цел, а и липÑва управлÑващ изграждането файл" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "ОбновÑване на целите…\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: проблем ÑÑŠÑ ÑиÑÑ‚ÐµÐ¼Ð½Ð¸Ñ Ñ‡Ð°Ñовник — изграждането може да е " +"непълно." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "опциÑта „%s%s“ изиÑква непразен аргумент-низ" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "опциÑта „%c“ изиÑква положителен, целочиÑлен аргумент" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sИзградена за %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sИзградена за %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sЛиценз GPLv3+: Общ публичен лиценз на GNU (GNU GPL) — верÑÐ¸Ñ 3 на лиценза " +"или по-къÑна верÑиÑ. \n" +"%sТази програма е Ñвободен Ñофтуер. Можете да Ñ Ñ€Ð°Ð·Ð¿Ñ€Ð¾ÑтранÑвате и/или " +"променÑте.\n" +"%sÐ¢Ñ Ñе разпроÑтранÑва БЕЗ ÐИКÐКВИ ГÐРÐÐЦИИ доколкото е позволено от " +"закона.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° „make“, отпечатана на %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Край на информациÑта за „make“, отпечатана на %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s ÑтойноÑÑ‚ %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s ÑтойноÑÑ‚ %s: не е директориÑ" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "използване на Ñтандартната Ð´Ð¸Ñ€ÐµÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° временни файлове за „%s“" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "Ñъздаване на временен файл %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "изтриване („unlink“ на временен файл) %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "отварÑне („fdopen“ на временен файл) %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "отварÑне („fopen“ на временен файл) %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: влизане в непозната директориÑ\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: излизане от непозната директориÑ\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: влизане в Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: излизане от Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: влизане в непозната директориÑ\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: излизане от непозната директориÑ\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: влизане в Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: излизане от Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: ключалката за изхода не може да Ñе придобие, ÑинхронизациÑта " +"на изхода Ñе изключва." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Край.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Сървърът за задачи не може да Ñе отвори %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Ðепознат вид Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð° Ñървър за задачи „%s“" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "Ñъздаване на програмен канал ÑÑŠÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "дублиране на програмен канал ÑÑŠÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° канал за Ñървър за задачи" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "неправилен низ към „--jobserver-auth“: „%s“" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° Ñървър за задачи" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "Ñпиране на Ñървъра за задачи" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "грешка в „pselect“ в канала за задачи" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "грешка при четене в канала за задачи" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "неправилен низ към „--sync-mutex“: „%s“" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "ключалката за ÑинхронизациÑта на изхода не може да Ñе отвори %s: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "„%s“ не може да Ñе отвори Ñ Ñ„Ð»Ð°Ð³ за временен файл „O_TMPFILE“: %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Изчитане на файловете управлÑващи изграждането…\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Изчитане на файла управлÑващ изграждането „%s“" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (нÑма Ñтандартна цел)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (търÑене в път)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (без значение)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (без замеÑтване на „~“)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" +"ПреÑкачанe на знака за подредба на байтовете за UTF-8 (BOM) във файла „%s“\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" +"ПреÑкачанe на знака за подредба на байтовете за UTF-8 (BOM) в буфера на " +"файла управлÑващ изграждането\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "неправилен ÑинтакÑÐ¸Ñ Ð½Ð° уÑловен израз" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "рецепта почва преди първата цел" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "липÑващо правило преди рецепта" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "" +"липÑва разделител (дали не трÑбва да замените 8 интервала Ñ Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ‚Ð¾Ñ€?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "липÑва разделител" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "липÑва целеви шаблон" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "множеÑтво целеви шаблони" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "целевиÑÑ‚ шаблон не Ñъдържа „%%“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "липÑващ „endif“" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "празно име на променлива" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "излишен текÑÑ‚ Ñлед директива „define“" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "„endef“ липÑва — нÑÐºÐ¾Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° „define“ не е завършена" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "излишен текÑÑ‚ Ñлед директива „endef“" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "излишен текÑÑ‚ Ñлед директива „%s“" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "излишен „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "може да има макÑимално една директива „else“ за уÑловен израз" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Ðеправилна Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ Ð½Ð° променлива, завиÑеща от целта" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "цел „.WAIT“ не може да има изиÑкваниÑ" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "цел „.WAIT“ не може да Ñъдържа команди" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "изиÑкваниÑта не могат да Ñе дефинират в рецептите" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "целите в група трÑбва да предоÑтавÑÑ‚ рецепта" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "вградените и правилата ÑÑŠÑ Ñтатични шаблони Ñа ÑмеÑени" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "вградените и изричните правила Ñа ÑмеÑени" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "целта „%s“ не Ñъвпада Ñ Ñ†ÐµÐ»Ñ‚Ð° на шаблона" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "целевиÑÑ‚ файл „%s“ Ñъдържа запиÑи и Ñ â€ž:“, и Ñ â€ž::“" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "целта „%s“ е дадена повече от веднъж в едно правило" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: замеÑтване на рецептата за целта „%s“" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: Ñтарата рецепта за „%s“ Ñе преÑкача" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "••• ÑмеÑване на вградени и обикновени правила: оÑтарÑл ÑинтакÑиÑ" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: замеÑтване на групата на целта „%s“" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: нулев знак NUL, оÑтаналата чаÑÑ‚ на реда Ñе преÑкача" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "ПРЕДУПРЕЖДЕÐИЕ: рецептата по шаблон не обнови Ñъответната цел „%s“." + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "ÐÑма нищо за правене за „%s“." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s“ нÑма нужда да Ñе обновÑва." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "ОкаÑтрÑне на файл „%s“\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "" +"%sÐÑма правило за изграждане на целта „%s“, коÑто е необходима на „%s“%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sÐÑма правило за изграждане на целта „%s“%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Разглеждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Скорошен неуÑпешен опит за обновÑване на файла „%s“\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Файлът „%s“ вече е разгледан.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Ð’Ñе още Ñе обновÑва файл „%s“.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Завършване на обновÑването на файл „%s“.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Файлът „%s“ не ÑъщеÑтвува.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +" ••• ПРЕДУПРЕЖДЕÐИЕ: файлът „.LOW_RESOLUTION_TIME“, указващ ниÑка " +"разделителна ÑпоÑобноÑÑ‚ на времето „%s“, е Ñ Ð²Ñ€ÐµÐ¼ÐµÐ²Ð¾ клеймо Ñ Ð²Ð¸Ñока " +"разделителна ÑпоÑобноÑÑ‚" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Съответното на целта в група „%s“ на файла „%s“ не ÑъщеÑтвува.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Използване на Ñтандартната рецепта за „%s“.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Цикличната завиÑимоÑÑ‚ „%s“ ↠„%s“ Ñе преÑкача." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "ИзиÑкваниÑта за Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“ Ñа завършени.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "ИзиÑкваниÑта на „%s“ Ñе изграждат.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Отказ за изграждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Целта „%s“ не е преизградена поради грешки." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "ИзиÑкването „%s“ е Ñамо за поÑледователноÑÑ‚ за целта „%s“.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "ИзиÑкването „%s“ на целта „%s“ не ÑъщеÑтвува.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "ИзиÑкването „%s“ е по-ново от целта „%s“.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "ИзиÑкването „%s“ е по-Ñтаро от целта „%s“.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Целта е „%s“ е „::“ и нÑма изиÑкваниÑ.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "ÐÑма рецепта за „%s“ и никое от изиÑкваниÑта не е променено.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "„%s“ Ñе изгражда наново поради флаг за изрично преизграждане.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "ÐÑма нужда за преизграждане на целта „%s“" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; използва Ñе име от „VPATH“ „%s“" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Целта „%s“ трÑбва да Ñе преизгради.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " ПреÑкачане на името от „VPATH“ „%s“.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Рецептата за „%s“ в момента Ñе изпълнÑва.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "ÐеуÑпешно преизграждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "УÑпешно преизграждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "ЦелевиÑÑ‚ файл „%s“ трÑбва да Ñе преизгради при „-q“.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Използват Ñе Ñтандартни команди за „%s“.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: файлът „%s“ е Ñ Ð²Ñ€ÐµÐ¼Ðµ на промÑна %s Ñек. в бъдещето" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Елементът „%s“ за „.LIBPATTERNS“ не е шаблон" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Модулът нÑма да Ñе изнеÑе: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" +"ПРЕДУПРЕЖДЕÐИЕ: преÑкачат Ñе изиÑкваниÑта за правило, дефинирано по ÑуфикÑи" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Вградени правила" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# ÐÑма вградени правила." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u вградени правила, %u (%.1f%%) крайни." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "" +"ПРОГРÐМÐРГРЕШКÐ: „num_pattern_rules“ върна неправилен резултат! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "неправилен режим на разбъркване: %s: „%s“" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "непознат Ñигнал" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "ПрекъÑване на връзката" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "ПрекъÑване" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Спиране" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Ðеправилна инÑтрукциÑ" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "ПрекъÑване за траÑиране" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "ПреуÑтановÑване" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "ПреуÑтановÑване (IOT)" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Емулирана инÑтрукциÑ" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Изключение от плаваща запетаÑ" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Убит" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Грешка в шината" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Грешка в разделÑнето" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Грешно ÑиÑтемно извикване" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "ПрекъÑнат програмен канал" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Ðларма" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Прекратен" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "ПотребителÑки Ñигнал 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "ПотребителÑки Ñигнал 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "ПреуÑтановен дъщерен процеÑ" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Проблем в захранването" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "СпрÑн" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Спиране (вход от tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Спиране (изход към tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "СпрÑн (Ñигнал)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Ðадвишаване на процеÑорното време" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Ðадвишаване на размера на файл" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Изтекъл виртуален таймер" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Изтекъл профилиращ таймер" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Преоразмерен прозорец" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Продължен" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Спешно вх./изх. ÑÑŠÑтоÑние" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Възможен вх./изх." + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "Преоразмерен прозорец" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "ПромÑна на ÑÑŠÑтоÑнието на линиÑта" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Загубен реÑурÑ" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Сигнал за опаÑноÑÑ‚" + +#: src/signame.c:217 +msgid "Information request" +msgstr "ЗаÑвка за информациÑ" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "ЛипÑва копроцеÑор за чиÑла Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° запетаÑ" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s ÐÑма буфери за „strcache“\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s буфери за кеша за низове: %lu (%lu) / низове = %lu / Ñъхранение = %lu B / " +"Ñредно = %lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s текущ буфер: размер = %hu B / ползвано = %hu B / брой = %hu / Ñредно = %u " +"B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s други използвани: общо = %lu B / брой = %lu / Ñредно = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s други Ñвободни: общо = %lu B / макÑ. = %lu B / мин. = %lu B / Ñредно = " +"%hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s производителноÑÑ‚ на кеша за низове: търÑÐµÐ½Ð¸Ñ = %lu / Ð½Ð°Ð¼Ð¸Ñ€Ð°Ð½Ð¸Ñ = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# ÑтатиÑтика на речника:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "автоматично" + +#: src/variable.c:1789 +msgid "default" +msgstr "Ñтандартно" + +#: src/variable.c:1792 +msgid "environment" +msgstr "Ñреда" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "файл управлÑващ изграждането" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "обкръжението е твърде голÑмо за „exec“" + +#: src/variable.c:1801 +msgid "command line" +msgstr "команден ред" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "директива „override“" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (от „%s“, ред %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# ÑтатиÑтика за множеÑтвото на променливите в речника:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Променливи\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# СтойноÑти на променливи, завиÑещи от шаблона" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# ÐÑма ÑтойноÑти на променливи, завиÑещи от шаблона" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u ÑтойноÑти на променливи, завиÑещи от шаблона" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "ПРЕДУПРЕЖДЕÐИЕ: недефинирана променлива „%.*s“" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "„sys$search()“ завърши неуÑпешно Ñ ÐºÐ¾Ð´ %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"- ПРЕДУПРЕЖДЕÐИЕ, вероÑтно трÑбва отново да включите управлението на CTRL-Y " +"от „DCL“.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "ВГРÐДЕÐРКОМÐÐДР„CD“ %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "„DCL“: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "ДобавÑне на изхода към „%s“\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "ДобавÑне на %.*s и изчиÑтване\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "„%s“ Ñе изпълнÑва вмеÑто\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Пътища за търÑене „VPATH“\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# ÐÑма пътища за търÑене във „VPATH“" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u пътища за търÑене във „VPATH“\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# ÐÑма общ път (във „VPATH“) за търÑене" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Общ път за търÑене (във „VPATH“)\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Сървърът за задачи приема макÑимум %d заданиÑ\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "Ñъздаване на Ñемафор за Ñървър за задачи: (грешка %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"ВЪТРЕШÐРГРЕШКÐ: Ñемафорът на Ñървъра за задачи не може да Ñе отвори „%s“: " +"(грешка %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Клиент на Ñървър за задачи (Ñемафор %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "оÑвобождаване на Ñемафора на Ñървъра за задачи: (грешка %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "изчакване на Ñемафор или дъщерен процеÑ: (Грешка %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "ключалката за ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° изхода не може да Ñе анализира %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "неправилен вид ключалка за ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° изхода: %s" diff --git a/local/recipes/dev/gnu-make/source/po/boldquot.sed b/local/recipes/dev/gnu-make/source/po/boldquot.sed new file mode 100644 index 0000000000..4b937aa517 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g +s/“/“/g +s/â€/â€/g +s/‘/‘/g +s/’/’/g diff --git a/local/recipes/dev/gnu-make/source/po/cs.gmo b/local/recipes/dev/gnu-make/source/po/cs.gmo new file mode 100644 index 0000000000..2b8e87fd08 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/cs.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/cs.po b/local/recipes/dev/gnu-make/source/po/cs.po new file mode 100644 index 0000000000..5e3eb7a2b1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/cs.po @@ -0,0 +1,2628 @@ +# 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 , 2011, 2013, 2014, 2016, 2019, 2020. +# Petr Pisar , 2022. +# +# 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 4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-25 20:18+02:00\n" +"Last-Translator: Petr Pisar \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "pokus použít nepodporovanou vlastnost: „%s“" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "nastavení Äasu zmÄ›ny prvku archivu není na VMS dostupné" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Archiv „%s“ neexistuje" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: „%s“ není platným archivem" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Prvek „%s“ v „%s“ neexistuje" + +#: src/ar.c:168 +#, 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“" + +#: src/arscan.c:130 +#, 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" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "funkce lbr$ini_control() selhala se stavem = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "není možné otevřít knihovnu „%s“ potÅ™ebnou k najití stav prvku %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Neplatný %1$s pro prvek %3$s archivu %2$s" + +# TODO: Pluralize +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Prvek „%s“%s: %'ld bajtů at %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (název může být zkrácen)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Datum %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " UID = %d, GID = %d, práva = 0%o\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Návod má příliÅ¡ mnoho řádků (omezení %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** PÅ™eruÅ¡eno.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Prvek archivu „%s“ je možná chybný, nesmazáno" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Prvek archivu „%s“ ne možná chybný, nesmazáno" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Maže se soubor „%s“" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Maže se soubor „%s“" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# spustitelný návod" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (vestavÄ›ný):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (z „%s“, řádek %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Adresáře\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: nebylo možné nad ním zavolat stat().\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (klÃ­Ä %s, Äas zmÄ›ny obsahu %s): nebylo možné otevřít.\n" + +#: src/dir.c:1126 +#, 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" + +#: src/dir.c:1131 +#, 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" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (klÃ­Ä %s, Äas zmÄ›ny obsahu %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (zařízení %d, iuzel [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (zařízení %ld, iuzel %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Žádný" + +# TODO: Pluralize +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " souborů, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "žádný " + +# TODO: Pluralize +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " nemožností " + +#: src/dir.c:1180 +msgid " so far." +msgstr " zatím." + +# TODO: Pluralize +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " nemožností v %lu adresářích.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu: %s se do shellové funkce rekurzivnÄ› neexpanduje\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Rekurzivní promÄ›nná „%s“ odkazuje na sebe (nakonec)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "neukonÄený odkaz na promÄ›nnou" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Návod byl urÄen pro soubor „%s“ v %s:%lu," + +#: src/file.c:277 +#, 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," + +#: src/file.c:281 +#, 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“." + +#: src/file.c:284 +#, 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“." + +#: src/file.c:304 +#, 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" + +#: src/file.c:310 +#, 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" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "Maže se mezilehlý soubor „%s“ " + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Odstraňují se mezilehlé soubory…\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s nemůže být zároveň .NOTINTERMEDIATE a .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s nemůže být zároveň .NOTINTERMEDIATE a .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE a .SECONDARY se vzájemnÄ› vyluÄují" + +#: src/file.c:942 +msgid "Current time" +msgstr "Aktuální Äas" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: ÄŒasový údaj mimo rozsah, nahrazuje se %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Není cílem:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Cenný soubor (prerekvizita k .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# FaleÅ¡ný cíl (prerekvizita k .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Cíl příkazové řádky." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Default, MAKEFILES nebo -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# VestavÄ›né pravidlo" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Hledalo se za pomoci implicitních pravidel." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Nehledalo se za pomoci implicitních pravidel." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# KoÅ™en implicitního/statického vzoru: „%s“\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Soubor je mezilehlá prerekvizita." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Soubor je prerekvizita k .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Souboru je druhotný (prerekvizita k .SECONDARY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Rovněž vyrábí:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# ÄŒas zmÄ›ny obsahu se nikdy nekontroluje." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Soubor neexistuje." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Soubor je velmi starý." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Obsah naposledy zmÄ›nÄ›n v %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Soubor byl aktualizován." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Soubor nebyl aktualizován." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Návod se právÄ› vykonává (TOTO JE CHYBA)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Návod pro závislosti se právÄ› vykonává (TOTO JE CHYBA)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# ÚspěšnÄ› aktualizováno." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Je tÅ™eba aktualizovat (-q je nastaveno)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Aktualizace selhala." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Neplatná hodnota v Älenu „command_state“!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Soubory" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# Statistika haÅ¡ovací tabulky souborů:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Položka „%s“ není v keÅ¡i: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: prázdná hodnota" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: „%s“ mimo rozsah" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "neplatný první argument funkce „word“" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "první argument funkce „word“ musí být vetší než 0" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "neplatný první argument funkce „wordlist“" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "neplatný druhý argument funkce „wordlist“" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "neÄíselný první argument funkce „intcmp“" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "neÄíselný druhý argument funkce „intcmp“" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "" +"windows32_openpipe: volání DuplicateHandle(vstup) selhalo (chyba=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" +"windows32_openpipe: volání DuplicateHandle(chybový výstup) selhalo (chyba=" +"%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "volání CreatePipe() selhalo (chyba=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): funkce process_init_fd() selhala\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "DoÄasný dávkový soubor %s se uklízí\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "soubor: chybí název souboru" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "otevÅ™ení: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "zápis: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "zavÅ™ení: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "soubor: příliÅ¡ mnoho argumentů" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "Ätení: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "soubor: neplatná operace na souboru: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "nedostateÄný poÄet argumentů (%u) funkce „%s“" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "na této platformÄ› neimplementováno: funkce „%s“" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "neukonÄené volání funkce „%s“: chybí „%c“" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Prázdný název funkce" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Neplatný název funkce: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Název funkce je příliÅ¡ dlouhý: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Neplatný minimální poÄet argumentů (%u) funkce %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Neplatný maximální poÄet argumentů (%u) funkce %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: pÅ™epínaÄ â€ž%s“ není jednoznaÄný\n" + +#: src/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" + +#: src/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" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: pÅ™epínaÄ â€ž%s“ vyžaduje argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: nerozpoznaný pÅ™epínaÄ â€ž--%s“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: nerozpoznaný pÅ™epínaÄ â€ž%c%s“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: zakázaný pÅ™epínaÄ – %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: neplatný pÅ™epínaÄ – %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: pÅ™epínaÄ vyžaduje argument – %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: pÅ™epínaÄ â€ž-W %s“ není jednoznaÄný\n" + +#: src/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" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expanduje se „%s“\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Vyhodnocuje se „%s“\n" + +# TODO: Pluralize +#: src/hash.c:50 +#, 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" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Zátěž = %lu/%lu = %.0f %%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "PÅ™ehaÅ¡ováno = %u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Kolizí = %lu/%lu = %.0f %%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Hledá se implicitní pravidlo pro „%s“.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Hledá se implicitní pravidlo prvku archivu pro „%s“.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Žádné implicitní pravidlo prvku archivu pro „%s“ nebylo nalezeno.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Zabraňuje se rekurzi implicitního pravidla pro pravidlo „%s“.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Zkouší se důkladnÄ›ji.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Zkouší se pravidlo vzoru „%s“ s koÅ™enem „%.*s“.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "KoÅ™en je příliÅ¡ dlouhý: „%s%.*s“.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Zamítá se pravidlo „%s“ kvůli nemožné prerekvizitÄ› pravidla „%s“.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Zamítá se pravidlo „%s“ kvůli nemožné implicitní prerekvizitÄ› „%s“.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Zkouší se prerekvizita pravidla „%s“.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Zkouší se implicitní prerekvizita „%s“.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s“ by mÄ›lo existovat.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Nalezeno „%s“.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Použije se pravidlo kompatibility „%s“ kvůli „%s“.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Prerekvizita „%s“ pravidla „%s“ neznamená, že by mÄ›la existovat.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Nalezena prerekvizita „%s“ jako VPATH „%s“.\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Hledá se pravidlo s explicitním souborem „%s“.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Hledá se pravidlo s mezilehlým souborem „%s“.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Zamítá se pravidlo „%s“ kvůli nemožné prerekvizitÄ› „%s“.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "„%s“ nebylo nenalezeno.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Nalezeno implicitní pravidlo „%s“ pro „%s“.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Hledá se pravidlo kompatibility pro „%s“.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Pro „%s“ nenalezeno žádné implicitní pravidlo.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "DoÄasný soubor nelze vytvoÅ™it" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (obraz pamÄ›ti uložen)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorováno)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Chyba %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** ÄŒeká se na nedokonÄené úlohy…" + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Živý potomek %p (%s) PID %s %s\n" + +# Continuation of Live child +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (vzdálený)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Uklízí se vyhrávající potomek %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Uklízí se prohrávající potomek %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Uklízí se doÄasný dávkový soubor %s\n" + +#: src/job.c:972 +#, 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" + +#: src/job.c:1083 +#, 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" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "UvolnÄ›n token pro potomka %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() nedokázala spustit proces (chyba=%ld)\n" + +# FIXME: Pluralize +#: src/job.c:1587 src/job.c:2501 +#, 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" + +#: src/job.c:1650 +#, 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" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Získán token pro potomka %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: aktualizovat cíl „%s“ potÅ™ebný pro %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "cíl neexistuje" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "na tomto operaÄním systému nelze vynutit omezení zátěže" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "omezení zátěže nelze vynutit: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "nedostatek deskriptorů souboru: standardní vstup nelze zduplikovat" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "nedostatek deskriptorů souboru: standardní výstup nelze zduplikovat" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "nedostatek deskriptorů souboru: chybový výstup nelze zduplikovat" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Standardní vstup nelze obnovit" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Standardní výstup nelze obnovit" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Chybový výstup nelze obnovit" + +#: src/job.c:2530 +#, 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" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: možná byl vyÄerpán prostor pro prostÅ™edí" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "PromÄ›nná $SHELL se zmÄ›nila (byla „%s“, nyní je „%s“)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Vytváří se doÄasný dávkový soubor %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Obsah dávkového souboru:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Obsah dávkového souboru:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, 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" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "NepodaÅ™ilo se otevřít tabulku globálních symbolů: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Sdílený objekt %s zaveden\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Zavedený objekt %s není veden jako sluÄitelný s GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Symbol %s z %s se nepodaÅ™ilo zavést: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Pokus zavést prázdný název symbolu: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Zavádí se symbol %s z %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Uvolňuje se sdílený objekt %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Na této platformÄ› není operace zavedení (load) podporována" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "PÅ™epínaÄe:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignoruje se kvůli kompatibilitÄ›.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make BezpodmíneÄnÄ› vyrobí vÅ¡echny cíle.\n" + +#: src/main.c:322 +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" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Vypisuje mnoho ladicích údajů.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=PŘÃZNAKY] Vypisuje ladicí údaje rozliÄných druhů.\n" + +#: src/main.c:329 +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" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E ŘETÄšZEC, --eval=ŘETÄšZEC Vyhodnotí ŘETÄšZEC jako kód makefilu.\n" + +#: src/main.c:334 +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" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Vypíše tuto zprávu a skonÄí.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignoruje chyby z návodů.\n" + +#: src/main.c:341 +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" + +#: src/main.c:344 +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" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=DRUH Vybere druh správce úloh.\n" + +#: src/main.c:348 +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" + +#: src/main.c:350 +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" + +#: src/main.c:353 +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" + +#: src/main.c:355 +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" + +#: src/main.c:358 +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" + +#: src/main.c:361 +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" + +#: src/main.c:364 +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" + +#: src/main.c:366 +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" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules Vypne vestavÄ›ná implicitní pravidla.\n" + +#: src/main.c:370 +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" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={IV|random|reverse|none}]\n" +" Zamíchá prerekvizitami a cíli. IV je\n" +" inicializaÄní vektor, „random“ náhodnÄ›,\n" +" „reverse“ pozpátku, „none“ nemíchat.\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Neopisuje návod.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr " --no-silent Opisuje návod (vypne režim --silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Vypne -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr " -t, --touch Namísto výroby cílů jim zmÄ›ní Äas.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Vypisuje trasovací údaje.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version Vypíše Äíslo verze programu make a skonÄí.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Vypisuje aktuální adresář.\n" + +#: src/main.c:390 +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" + +#: src/main.c:392 +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" + +#: src/main.c:395 +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" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "chyba zápisu: standardní výstup" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "prázdný Å™etÄ›zec není platný název souboru" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "zadána neznámá úroveň ladÄ›ní „%s“" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "neznámý druh synchronizace výstupu „%s“" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Použití: %s [PŘEPÃNAÄŒE] [CÃLE]…\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Tento program byl sestaven pro %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Tento program byl sestaven pro %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Chyby v programu hlaste anglicky na . Nedostatky\n" +"v pÅ™ekladu hlaste Äesky na .\n" + +#: src/main.c:940 +#, 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" + +#: src/main.c:947 +#, 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" + +#: src/main.c:955 +#, 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" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "PoruÅ¡ení přístupu: operace Ätení na adrese 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() nastavuje default_shell = %s\n" + +#: src/main.c:1098 +#, 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" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (doÄasný soubor): " + +#: src/main.c:1833 +#, c-format +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 „+“." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"pozor: -j%d vnuceno podřízenému programu make: režim správce úloh se restuje." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile na standardním vstupu uveden dvakrát" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: doÄasný soubor %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"pozor: -j%d vnuceno v souboru makefile: režim správce úloh se resetuje." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Na této platformÄ› nejsou paralelní úlohy (-j) podporovány." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Návrat k jednoúlohovému režimu (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Jako Å™adiÄ správce úloh se používá %s\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Jako mutex pro synchronizaci výstupu se používá %s\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Symbolické odkazy nejsou podporovány: vypíná se -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Zapnut způsob míchání: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Soubory makefile se aktualizují…\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile „%s“ může cyklit, nebude znovu vyroben.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: zavedení selhalo" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Výroba nového makefilu „%s“ selhala." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Vložený makefile „%s“ nebyl nalezen." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile „%s“ nebyl nalezen" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Nebylo možné se vrátit do původního adresáře" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Znovu se spouÅ¡tí [%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL obsahuje více než jeden cíl" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Žádné cíle" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Nezadány žádné cíle a žádné makefily nenalezeny" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Aktualizují se cíle…\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "pozor: ZjiÅ¡tÄ›n posun hodin. VaÅ¡e sestavení možná nebude úplné." + +#: src/main.c:3186 +#, 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" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "pÅ™epínaÄ â€ž-%c“ vyžaduje kladný celoÄíselný argument" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sSestaveno pro %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%s Sestaveno pro %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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ší \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) +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Databáze maku vypsána v %s" + +# FIXME: i18n %s (time) +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Konec databáze maku v %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s hodnota %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s hodnota %s: není adresářem" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "použije se výchozí doÄasný adresář „%s“" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "vytvoÅ™ení doÄasného souboru %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "smazání doÄasného souboru %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: doÄasný soubor %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: doÄasný soubor %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Vstupuje se do neznámého adresáře\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s OpouÅ¡tí se neznámý adresář\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Vstupuje se do adresáře „%s“\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: OpouÅ¡tí se adresář „%s“\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Vstupuje se do neznámého adresáře\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: OpouÅ¡tí se neznámý adresář\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Vstupuje se do adresáře „%s“\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: OpouÅ¡tí se adresář „%s“\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "pozor: Zámek výstupu nelze získat, vypíná se synchronizace výstupu." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Konec.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Správce úloh %s nelze otevřít: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Neznámý druh autentizace správce úloh „%s“" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "vytváření roury úloh" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplikace roury úloh" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inicializace roury správce úloh" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "neplatný Å™etÄ›zec --jobserver-auth „%s“" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "zápis správce úloh" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "správce úloh vypnut" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "volání pselect nad rourou úloh" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "Ätení z roury úloh" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "neplatný Å™etÄ›zec --sync-mutex „%s“" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "mutex %s pro synchronizaci výstupu nelze otevřít: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "„%s“ nelze otevřít s O_TMPFILE: %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "ÄŒtou se makefily…\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "ÄŒte se makefile „%s“" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (žádný výchozí cíl)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (vyhledávací cesta)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (nestarat se)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (žádný expanze ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "PÅ™eskakuje se UTF-8 BOM v makefilu „%s“\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "PÅ™eskakuje se UTF-8 BOM v pamÄ›ti makefilu\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "neplatná syntaxe podmínky" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "návod zahájen pÅ™ed prvním cílem" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "pÅ™ed návodem chybí pravidlo" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "chybí oddÄ›lovaÄ (mysleli jste tabulátor místo 8 mezer?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "chybí oddÄ›lovaÄ" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "chybí vzor cíle" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "více vzorů cíle" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "vzor cíle neobsahuje „%%“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "chybí „endif“" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "prázdný název promÄ›nné" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "nadbyteÄný text po klíÄovém slovu „define“" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "chybí „endef“, neukonÄený „define“" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "nadbyteÄný text po klíÄovém slovu „endef“" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "nadbyteÄný text po klíÄovém slovu „%s“" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "nadbyteÄný „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "pouze jeden „else“ na podmínku" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "ChybÄ› utvoÅ™ená definice promÄ›nné specifické pro cíl" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT by nemÄ›lo mít prerekvizity" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT by nemÄ›lo mýt příkazy" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "prerekvizitu nelze definovat v návodu" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "seskupené cíle musí poskytovat návod" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "smíšené implicitní a statická pravidla vzorů" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "smíšené implicitní a normální pravidla" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "cíl „%s“ neodpovídá vzoru cíle" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "cílový soubor „%s“ obsahuje jak :, tak i ::" + +#: src/read.c:2176 +#, 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" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "pozor: návod pro cíl „%s“ bude pÅ™ebit" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "pozor: starý návod pro cíl „%s“ bude ignorován" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** smíšená implicitní a normální pravidla: zastaralá skladba" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "pozor: Älenství ve skupinÄ› pro cíl „%s“ bude pÅ™ebito" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "pozor: zaznamenán znak NUL, zbytek řádku bude ignorován" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "pozor: návod se vzorem neaktualizoval cíl protÄ›jÅ¡ku „%s“." + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Pro „%s“ nebude nic udÄ›láno." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s“ je aktuální." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Uklízí se soubor „%s“.\n" + +#: src/remake.c:416 +#, 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" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sŽádné pravidlo jak vyrobit cíl „%s“%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Zvažuje se cílový soubor „%s“.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Nedávná aktualizace souboru „%s“ selhala.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Soubor „%s“ již byl uvážen.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Stále se aktualizuje soubor „%s“.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Aktualizace soubor „%s“ dokonÄena.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Soubor „%s“ neexistuje.\n" + +#: src/remake.c:520 +#, 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í" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "ProtÄ›jÅ¡ek seskupeného cíle „%s“ souboru „%s“ neexistuje.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Pro „%s“ se použije výchozí návod.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Kruhová závislost „%s ↠%s zahozena." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Prerekvizity cílového souboru „%s“ dokonÄeny.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Prerekvizity „%s“ se vyrábÄ›jí.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Výroba cílového souboru „%s“ vzdána.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Cíl „%s“ nebyl kvůli chybám znovu vyroben." + +#: src/remake.c:814 +#, 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" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Prerekvizita „%s“ cíle „%s“ neexistuje.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Prerekvizita „%s“ je novÄ›jší než cíl „%s“.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Prerekvizita „%s“ je starší než cíl „%s“.\n" + +#: src/remake.c:845 +#, 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" + +#: src/remake.c:852 +#, 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 +#: src/remake.c:857 +#, 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" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Cíl „%s“ není tÅ™eba znovu vyrábÄ›t" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; použije se název „%s“ z VPATH" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Cíl „%s“ je tÅ™eba znovu vyrobit.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Ignoruje se název „%s“ z VPATH.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "PrávÄ› se vykonává návod pro „%s“.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Cílový soubor „%s“ nebylo možné znovu vyrobit.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Cílový soubor „%s“ byl úspěšnÄ› znovu vyroben.\n" + +#: src/remake.c:919 +#, 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" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Pro „%s„ se použijí se výchozí příkazy.\n" + +#: src/remake.c:1499 +#, 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" + +#: src/remake.c:1747 +#, 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. +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs nebude exportovat: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "pozor: prerekvizity se ignorují v definici pravidla s příponami" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Implicitní pravidla" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Žádná implicitní pravidla." + +# FIXME: Pluralize +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implicitních pravidel, %u (%.1f %%) koncových" + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "CHYBA: num_pattern_rules je chybný! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "neplatný způsob míchání %s: „%s“" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "neznámý signál" + +# Keep signal names in sync with GNU libc translations. +#: src/signame.c:92 +msgid "Hangup" +msgstr "Odpojen terminál (SIGHUP)" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "PÅ™eruÅ¡ení (SIGINT)" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Konec (SIGQUIT)" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Nedovolená instrukce (SIGILL)" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Trasovací/ladící past (SIGTRAP)" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "NeúspěšnÄ› ukonÄen (SIGABRT)" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT past (SIGIOT)" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT past (SIGEMT)" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Výjimka práce s pohyblivou řádovou Äárkou (SIGFPE)" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Zabit (SIGKILL)" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Chyba na sbÄ›rnici (neplatná adresa) (SIGBUS)" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "NeoprávnÄ›ný přístup do pamÄ›ti (SIGSEGV)" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Chybné volání systému (SIGSYS)" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Roura pÅ™eruÅ¡ena (SIGPIPE)" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Budík (SIGALRM)" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "UkonÄen (SIGTERM)" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Uživatelem definovaný signál 1 (SIGUSR1)" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Uživatelem definovaný signál 2 (SIGUSR2)" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Potomek skonÄil (SIGCHLD)" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Výpadek napájení (SIGPWR)" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Pozastaven (SIGTSTP)" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Pozastaven (vstup TTY) (SIGTTIN)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Pozastaven (výstup TTY) (SIGTTOU)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Pozastaven (SIGSTOP)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "PÅ™ekroÄen Äasový limit pro procesor (SIGXCPU)" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "PÅ™ekroÄen limit délky souboru (SIGXFS2)" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtuální ÄasovaÄ vyprÅ¡el (SIGVTALRM)" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profilovací ÄasovaÄ vyprÅ¡el (SIGPROF)" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Okno se zmÄ›nilo (SIGWINCH)" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Je pokraÄováno (SIGCONT)" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Naléhavá I/O situace (SIGURG)" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Vstup/Výstup možný (SIGIO)" + +# SIGWIND exists on Darwin +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "Okno se zmÄ›nilo (SIGWIND)" + +# SIGPHONE exists on Unix PC (3B1) +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "ZmÄ›na stavu linky (SIGPHONE)" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "ProstÅ™edek byl ztracen (SIGLOST)" + +# SIGDANGER exists on AIX +#: src/signame.c:214 +msgid "Danger signal" +msgstr "NebezpeÄí nedostatku pamÄ›ti (SIGDANGER)" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Žádost o informaci (SIGINFO)" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Koprocesor pro práci s pohyblivou řádkou není dostupný (SIGNOFP)" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Žádná keÅ¡ Å™etÄ›zců\n" + +#: src/strcache.c:304 +#, 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" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s souÄasná keÅ¡: velikost = %hu B / užito = %hu B / poÄet = %hu / prům. = " +"%u B\n" + +#: src/strcache.c:319 +#, 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" + +#: src/strcache.c:322 +#, 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" + +#: src/strcache.c:326 +#, 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" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# Statistika haÅ¡ovací tabulky:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatická" + +#: src/variable.c:1789 +msgid "default" +msgstr "výchozí" + +#: src/variable.c:1792 +msgid "environment" +msgstr "prostÅ™edí" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "prostÅ™edí z pÅ™epínaÄe -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "příkazový řádek" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "klíÄové slovo „override“" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (z „%s“, řádek %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# statistika haÅ¡ovací tabulky pro množinu promÄ›nných:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# PromÄ›nné\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Hodnoty promÄ›nných specifických pro vzor" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Žádné hodnoty promÄ›nných specifických pro vzor." + +# FIXME: Pluralize +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# Hodnot promÄ›nných specifických pro vzor: %u" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "pozor: nedefinovaná promÄ›nná „%.*s“" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "volání sys$search() selhalo s %d\n" + +#: src/vmsjobs.c:244 +#, 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" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "VESTAVÄšNà PŘÃKAZ CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Výstup pÅ™ipojen k %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "PÅ™ipojit %.*s a uklidit\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Místo toho se spustí %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Vyhledávací cesty VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Žádné vyhledávací cesty „vpath“." + +# FIXME: Pluralize +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"$ Vyhledávacích cest „vpath“: %u\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Žádná obecná vyhledávací cesta (promÄ›nná „VPATH“)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Obecná vyhledávací cesta (promÄ›nná „VPATH“):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Místa ve správci úloh jsou omezena na %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "vytváření semaforu správce úloh: (Chyba %ld: %s)" + +#: src/w32/w32os.c:259 +#, 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)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Klient správce úloh (semafor %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "uvolnÄ›ní semaforu správce úloh: (Chyba %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "Äekání na semafor nebo potomka: (Chyba %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "mutex pro synchronizaci výstupu %s nelze rozebrat: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "neplatný mutex pro synchronizaci výstupu: %s" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "Nastavení správce úloh (roura %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "Nastavení správce úloh (deskriptory %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Klient správce úloh (deskriptory %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (doÄasný soubor)" + +#~ 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" + +#~ msgid "Initialized access" +#~ msgstr "Přístup zahájen" + +#~ msgid "User access" +#~ msgstr "Přístup uživatelem" + +#~ msgid "Make access" +#~ msgstr "Přístup makem" + +#~ msgid "Child access" +#~ msgstr "Přístup potomkem" + +#~ 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." + +#~ msgid "jobserver pipeline" +#~ msgstr "kolona správce úloh" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: Příkaz nenalezen\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Příkaz nenalezen\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Program shellu nenalezen" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s se uspí na 30 sekund…" + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) dokonÄeno. PokraÄuje se.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Neznámá chyba %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Pozor: Soubor „%s“ má Äas zmÄ›ny obsahu v budoucnu" + +#~ msgid " terminal." +#~ msgstr " terminál." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: návod pro cíl „%s“ selhal" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Chyba 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "služba dup() nad správcem úloh" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Pozor: Prázdné pÅ™esmÄ›rování\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "vnitÅ™ní chyba: command_state pro „%s“" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "VESTAVÄšNà [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "VESTAVÄšNà PŘÃKAZ ECHO %s → %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Neznámý vestavÄ›ný příkaz „%s“\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "VestavÄ›ný příkaz není v ONESHELL znám nebo podporován: „%s“\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Chyba, prázdný příkaz\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Vstup pÅ™esmÄ›rován z %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Chyby pÅ™esmÄ›rovány do %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Výstup pÅ™esmÄ›rován do %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Chyba oddÄ›lení podprocesu, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "vnitÅ™ní chyba: více pÅ™epínaÄů --sync-mutex" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "vnitÅ™ní chyba: více pÅ™epínaÄů --jobserver-fds" + +#~ msgid "virtual memory exhausted" +#~ msgstr "virtuální paměť vyÄerpána" + +#~ msgid "write error" +#~ msgstr "chyba zápisu" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "VESTAVÄšNà RM %s\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" +#~ "# " diff --git a/local/recipes/dev/gnu-make/source/po/da.gmo b/local/recipes/dev/gnu-make/source/po/da.gmo new file mode 100644 index 0000000000..85210a99ef Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/da.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/da.po b/local/recipes/dev/gnu-make/source/po/da.po new file mode 100644 index 0000000000..512179ebf7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/da.po @@ -0,0 +1,2656 @@ +# Danish messages for make +# Copyright (C) 2001, 2016, 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Byrial Ole Jensen , 2001 +# Ask Hjorth Larsen , 2010, 2016, 2022. +# +# Ordliste +# -------- +# +# archive -> arkiv +# member (i arkiv) -> element +# library -> bibliotek +# recipe -> opskrift? +# pipe -> pipe +# +msgid "" +msgstr "" +"Project-Id-Version: make-4.3.91\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-20 19:19+0200\n" +"Last-Translator: Ask Hjorth Larsen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "forsøg pÃ¥ at bruge funktion som ikke understøttes: \"%s\"" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "\"touch arkivelement\" er ikke tilgængelig pÃ¥ VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Arkivet \"%s\" findes ikke" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: \"%s\" er ikke et gyldigt arkiv" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Elementet \"%s\" findes ikke i \"%s\"" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: Forkert returkode fra ar_member_touch pÃ¥ \"%s\"" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() kunne ikke udtrække modulinformation, status = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() fejlede med status = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "kan ikke Ã¥bne biblioteket \"%s\" for at slÃ¥ elementstatus %d op" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Ugyldig %1$s for elementet %3$s i arkivet %2$s" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Element \"%s\"%s: %ld byte ved %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (navnet kan være forkortet)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Tidsstempel %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, modus = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Opskriften har for mange linjer (grænsen er %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Afbrydelse.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Arkivelementet \"%s\" er mÃ¥ske falsk; ikke slettet" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Arkivelementet \"%s\" er mÃ¥ske falsk; ikke slettet" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Sletter filen \"%s\"" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Sletter filen \"%s\"" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# kommandoer der skal køres" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (indbyggede):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (fra \"%s\", linje %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Filkataloger\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: kunne ikke undersøges med stat.\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (nøgle %s, mtime %s): kunne ikke Ã¥bnes.\n" + +#: src/dir.c:1126 +#, 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" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (enhed %ld, inode %ld): kunne ikke Ã¥bnes.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (nøgle %s, mtime %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (enhed %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (enhed %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ingen" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " filer, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ingen" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " umuligheder" + +#: src/dir.c:1180 +msgid " so far." +msgstr " indtil videre." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " umuligheder i %lu kataloger.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: udfolder ikke %s rekursivt for at eksportere til skalfunktion\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Rekursiv variabel \"%s\" refererer (i sidste ende) til sig selv" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "uafsluttet variabelreference" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Opskrift blev angivet for filen \"%s\" i %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "Opskrift for filen \"%s\" blev fundet ved implicit regelsøgning," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "men \"%s\" bliver nu anset som samme fil som \"%s\"." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" +"Opskriften for \"%s\" vil blive ignoreret til fordel for den for \"%s\"." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "kan ikke ændre enkelt-kolon \"%s\" til dobbelt-kolon \"%s\"" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "kan ikke ændre dobbelt-kolon \"%s\" til enkelt-kolon \"%s\"" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Sletter mellemfil \"%s\"" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Sletter mellemfiler ...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kan ikke være bÃ¥de .NOTINTERMEDIATE og .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kan ikke være bÃ¥de .NOTINTERMEDIATE og .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE og .SECONDARY udelukker hinanden" + +#: src/file.c:942 +msgid "Current time" +msgstr "Aktuel tid" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Tidsstempel i forkert omrÃ¥de; bruger %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ikke et mÃ¥l:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Værdifuld fil (forudsætning for .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Falsk mÃ¥l (forudsætning for .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# KommandolinjemÃ¥l." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Et forvalg, MAKEFILES, eller -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Indbygget regel" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Der er udført implicit regelsøgning." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Der er ikke udført implicit regelsøgning." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Implicit/statisk mønsterstamme: \"%s\"\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Filen er en mellemfil." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Filen er en forudsætning for .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Filen er sekundær (forudsætning for .SECONDARY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Skaber ogsÃ¥:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Ændringstid ikke tjekket." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Filen findes ikke." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Filen er meget gammel." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Sidst ændret %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Filen er blevet opdateret." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Filen er ikke blevet opdateret." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Der køres kommandoer nu (DETTE ER EN FEJL)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Kommandoer for afhængigheder køres nu (DETTE ER EN FEJL)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Opdateret med godt resultat." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Behøver opdatering (-q er sat)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Opdatering mislykkedes." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ugyldig værdi i \"command_state\"-felt!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Filer" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# Statistik for fil-hash-spande:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Feltet \"%s\" er ikke i cache: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: tom værdi" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: \"%s\" uden for gyldigt interval" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "ugyldigt første argument til \"word\"-funktionen" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "første argument til \"word\"-funktionen skal være større end 0" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "ugyldigt første argument til \"wordlist\"-funktionen" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "ugyldigt andet argument til \"wordlist\"-funktionen" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "ikke-numerisk første argument til \"intcmp\"-funktionen" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "ikke-numerisk andet argument til \"intcmp\"-funktionen" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) mislykkedes (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) mislykkedes (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() mislykkedes (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() mislykkedes\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Afrydder midlertidig batchfil %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "fil: mangler filnavn" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "Ã¥bn: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "skriv: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "luk: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "fil: for mange argumenter" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "læs: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "fil: ugyldig filoperation: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ikke implementeret pÃ¥ denne platform: funktionen \"%s\"" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "uafsluttet kald til funktionen \"%s\"; manglende \"%c\"" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Tomt funktionsnavn" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Ugyldigt funktionsnavn: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Funktionsnavn er for langt: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: tilvalget \"%s\" er flertydigt\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: tilvalget \"--%s\" tillader ikke et argument\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: tilvalget \"%c%s\" tillader ikke et argument\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s tilvalget \"%s\" kræver et argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: ukendt tilvalg \"--%s\"\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: ukendt tilvalg \"%c%s\"\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ulovligt tilvalg -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ugyldigt tilvalg -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tilvalg kræver et argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: tilvalget \"-W %s\" er flertydigt\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: tilvalget \"-W %s\" tillader ikke et argument\n" + +# expand er normalt at skrive noget ud frem for at forkorte det. F.eks. %s -> "hello" +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Udskriver \"%s\"\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Evaluerer \"%s\"\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "kan ikke tildele %lu byte til hashtabel: hukommelsen opbrugt" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Fyldning=%lu/%lu=%.0f %%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Omgrupperinger=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Sammenstød=%lu/%lu=%.0f %%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Kigger efter en implicit regel for \"%s\".\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Kigger efter en implicit regel for arkivelementer for \"%s\".\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Ingen implicit regel for arkivelementer for \"%s\".\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "UndgÃ¥r rekursion i implicitte regler for reglen \"%s\".\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Prøver ivrigere.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Prøver mønsterreglen \"%s\" med stammen \"%.*s\".\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stamme for lang: \"%s%.*s\".\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Afviser reglen \"%s\" pÃ¥ grund af umulig regelforudsætning \"%s\".\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Afviser reglen \"%s\" pÃ¥ grund af umulig implicit forudsætning \"%s\".\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Prøver regelforudsætning \"%s\".\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Prøver implicit forudsætning \"%s\".\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "\"%s\" bør findes.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Fandt \"%s\".\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Bruger kompatibilitetsreglen \"%s\" pÃ¥ grund af \"%s\".\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Forudsætningen \"%s\" for reglen \"%s\" tæller ikke som én, der bør findes.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Fandt forudsætning \"%s\" som VPATH \"%s\".\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Kigger efter en regel med eksplicit fil \"%s\".\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Kigger efter en regel med mellemfil \"%s\".\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Afviser reglen \"%s\" pÃ¥ grund af umulig forudsætning \"%s\".\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Fandt ikke \"%s\".\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Fandt en implicit regel \"%s\" for \"%s\".\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Kigger efter en kompatibilitetsregel for \"%s\".\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Ingen implicit regel for \"%s\" fundet.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Kan ikke oprette en midlertidig fil" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (core-fil efterladt)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr "(ignoreret)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fejl %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Venter pÃ¥ uafsluttede job...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Levende underproces %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (eksternt)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Høster vindende underproces %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Høster tabende underproces %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Rydder midlertidig batchfil %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Oprydning af midlertidig batchfil %s mislykkedes (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Fjerner underproces %p PID %s%s fra kæde.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Frigav symbol for underproces %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() fejlede ved igangsætning af proces (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Talte %d argumenter i fejlet igangsætning\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Sætter underproces %p (%s) PID %s%s pÃ¥ kæden.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Fik symbol for underproces %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: opdatér mÃ¥let \"%s\" pÃ¥ grund af: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "mÃ¥let findes ikke" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "kan ikke gennemtvinge belastningsgrænser pÃ¥ dette styrestystem" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "kan ikke gennemtvinge belastningsgrænse: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "ikke flere filhÃ¥ndtag: Kunne ikke duplikere stdin" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "ikke flere filhÃ¥ndtag: Kunne ikke duplikere stdout" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "ikke flere filhÃ¥ndtag: kunne ikke duplikere stderr" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Kunne ikke gendanne stdin" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Kunne ikke gendanne stdout" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Kunne ikke gendanne stderr" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "make høstede underproces med pid %s, venter endnu pÃ¥ pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: miljøplads er mÃ¥ske opbrugt" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL ændret (var \"%s\", nu \"%s\")\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Opretter midlertidig batchfil %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Indhold af batchfil:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Indhold af batchfil:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, 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" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Kunne ikke Ã¥bne global symboltabel: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Indlæste delt objekt %s\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Det indlæste objekt %s er ikke erklæret som GPL-kompatibelt" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Kunne ikke indlæse symbolet %s fra %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Tomt symbolnavn ved indlæsning: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Indlæser symbol %s fra %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Afindlæser delt objekt %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Operationen indlæs (\"load\") understøttes ikke pÃ¥ denne platform" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Tilvalg:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignoreret af hensyn til kompabilitet.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Skab alle mÃ¥l betingelsesløst.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C KATALOG, --directory=KATALOG\n" +" Skift allerførst til KATALOG.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d Udskriv en masse fejlsøgningsinformation.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=FLAG] Udskriv diverse fejlsøgningsinformationer.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Miljøvariable har forrang for makefiler.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E STRENG, --eval=STRENG Evaluér STRENG som en makefil-erklæring.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FIL, --file=FIL, --makefile=FIL\n" +" Læs FIL som en makefil.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Udskriv denne besked og afslut.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignorér fejl fra kommandoer.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I KATALOG, --include-dir=KATALOG\n" +" Søg i KATALOG efter inkluderede makefiler.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Tillad N samtidige job;\n" +" ubegrænset antal hvis N ikke er givet.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=STIL Vælg stilen af jobserver, der skal bruges.\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Fortsæt selvom nogen mÃ¥l ikke kan skabes.\n" + +#: src/main.c:350 +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" +" Start kun flere job hvis belastning er under " +"N.\n" + +#: src/main.c:353 +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" + +#: src/main.c:355 +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" +" -n, --just-print, --dry-run, --recon\n" +" Udfør ikke nogen kommandoer; udskriv dem " +"bare.\n" + +#: src/main.c:358 +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 forældet og genskab den ikke.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synkronisér udskrift af parallelle job efter " +"TYPE\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base Udskriv makes interne database.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Udfør ingen kommandoer; afslutningskoden " +"angiver\n" +" om mÃ¥let er tidssvarende.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules SlÃ¥ de indbyggede implicitte regler fra.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables SlÃ¥ de indbyggede variabelværdier fra.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={BASISTAL|random|reverse|none}]\n" +" Bland forudsætninger og mÃ¥l.\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Udskriv ikke kommandoer.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Udskriv opskrifter (slÃ¥ tilstanden --silent " +"fra).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" SlÃ¥r -k fra.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Berør mÃ¥l i stedet for at genskabe dem.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Udskriv trace-information.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version Udskriv makes versionnummer og afslut.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Udskriv det aktuelle katalog.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory SlÃ¥ -w fra; ogsÃ¥ hvis slÃ¥et til implicit.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n" +" Anse FIL som værende nyskabt.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Advar nÃ¥r en udefineret variabel bruges.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "skrivefejl: stdout" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "en tom streng er ugyldig som filnavn" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "ukendt specifikation af fejlsøgningsniveau \"%s\"" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "ukendt type \"%s\" af output-sync" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Brug: %s [tilvalg] [mÃ¥l] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Dette program er bygget til %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Dette program er bygget til %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Send fejlmeldinger (pÃ¥ engelsk) til .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Afbrydelse/undtagelse fanget (kode = 0x%lx, addr = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"UhÃ¥ndteret undtagelsesfilter kaldt fra program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Adgangskrænkelse: skriveoperation pÃ¥ adresse 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Adgangskrænkelse: læseoperation pÃ¥ adresse 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() sætter default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "find_and_set_shell()-stisøgning sætter default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (midlertidig fil): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"advarsel: jobserver ikke tilgængelig: bruger -j1. Tilføj \"+\" til " +"ophavsmakeregel." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "advarsel: -j%d tvunget i undermake: nulstiller jobservertilstand." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefil fra standard-ind er angivet to gange" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: midlertidig fil %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "advarsel: -j%d tvunget i makefil: nulstiller jobservertilstand." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Parallelle job (-j) er ikke understøttet pÃ¥ denne platform." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Sætter tilbage til enkelt job-tilstand (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Bruger jobserverstyring %s\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Bruger outputsynkroniseringsmutex %s\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Symbolske lænker understøttes ikke: Deaktiverer -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Blandet tilstand slÃ¥et til: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Opdaterer makefiler....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" +"Makefilen \"%s\" fÃ¥r mÃ¥ske make til at køre i ring; genskaber den ikke.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: kunne ikke indlæse" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Genskabelse af makefilen \"%s\" mislykkedes." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Inkluderet makefil \"%s\" blev ikke fundet." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefilen \"%s\" blev ikke fundet" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Kunne ikke skifte tilbage til det oprindelige katalog" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Udfører igen[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL indeholder mere end et mÃ¥l" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Ingen mÃ¥l" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Ingen angivne mÃ¥l og ingen makefil fundet" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Opdaterer endemÃ¥l....\n" + +# build? +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"advarsel: Der blev registreret en uoverensstemmelse i urets tid. Din " +"kompilering kan være ufuldstændig." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "\"-%s%s\"-tilvalget kræver et strengargument, der ikke er tomt" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "\"-%c\"-tilvalget kræver et positivt heltalligt argument" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sBygget til %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sBygget til %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sLicens GPLv3+: GNU GPL v3 eller nyere \n" +"%sDette er frit programmel: Du kan frit ændre og videredistribuere det.\n" +"%sDer gives INGEN GARANTI i den grad, som dette tillades af loven.\n" + +# %s giver dato og klokkeslæt +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Makedatabase, udskrevet %s" + +# %s giver dato og klokkeslæt +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Afsluttet makedatabase %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Bruger standardopskrift for \"%s\".\n" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "opret midlertidig fil %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink midlertidig fil %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: midlertidig fil %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: midlertidig fil %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: GÃ¥r til et ukendt katalog\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Forlader et ukendt katalog\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: GÃ¥r til katalog \"%s\"\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Forlader katalog \"%s\"\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: GÃ¥r til et ukendt katalog\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Forlader et ukendt katalog\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: GÃ¥r til katalog \"%s\"\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Forlader katalog \"%s\"\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"advarsel: Kan ikke indhente outputlÃ¥s, deaktiverer synkronisering af output." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Stop.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Kan ikke Ã¥bne jobserver %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "ukendt auth-stil \"%s\" for jobserver" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "opretter job-pipe" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "kopierer job-pipe" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "klargøring af jobserver-pipe" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "ugyldig \"--jobserver-auth\"-streng \"%s\"" + +# ? +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "skriv jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "jobserver lukket ned" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect job-pipe" + +# ? +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "læs job-pipe" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "ugyldig streng \"%s\" til --sync-mutex" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "kan ikke Ã¥bne outputsynkroniseringsmutex %s: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Læser makefiler...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Læser makefilen \"%s\"" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (ingen standard-endemÃ¥l)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (søgesti)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ikke nødvendig)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (ingen ~-udfoldning)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "Springer UTF-8-BOM over i makefilen \"%s\"\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Springer UTF-8-BOM over i makefilbuffer\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "ugyldig syntaks i betingelse" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "kommandoer begynder før første mÃ¥l" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "manglende regel før kommandoer" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "manglende skilletegn (mente du TAB i stedet for 8 mellemrum?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "manglende skilletegn" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "manglende mÃ¥lmønster" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "flere mÃ¥lmønstre" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "mÃ¥lmønster indeholder ingen \"%%\"" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "mangler \"endif\"" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "tomt variabelnavn" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "overskydende tekst efter \"define\"-direktiv" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "manglende \"endef\", uafsluttet \"define\"" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "overskydende tekst efter \"endef\"-direktiv" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "overskydende tekst efter \"%s\"-direktiv" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "overskydende \"%s\"" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "kun én \"else\" per betingelse" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Misdannet mÃ¥lspecifik variabeldefinition" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT bør ikke have forudsætninger" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT bør ikke have kommandoer" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "der kan ikke defineres forudsætninger i kommandoer" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "grupperede mÃ¥l skal angive en opskrift" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "blandede implicitte og statiske mønsterregler" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "blandede implicitte og normale regler" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "mÃ¥let \"%s\" passer ikke til mÃ¥lmønstret" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "mÃ¥lfilen \"%s\" har bÃ¥de :- og ::-angivelser" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "mÃ¥let \"%s\" optræder mere end én gang i samme regel" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "advarsel: tilsidesætter opskrift for mÃ¥let \"%s\"" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "advarsel: ignorerer gammel opskrift for mÃ¥let \"%s\"" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** blandede implicitte og normale regler: forældet syntaks" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "advarsel: tilsidesætter gruppemedlemsskab for mÃ¥let \"%s\"" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "advarsel: NUL-tegn set; resten af linjen ignoreres" + +# peer? +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "advarsel: mønsteropskrift opdaterede ikke peer-mÃ¥let \"%s\"." + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Ingenting at gøre for \"%s\"." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "\"%s\" er tidssvarende." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Beskærer fil \"%s\".\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sIngen regel til at skabe mÃ¥let \"%s\" som behøves af \"%s\"%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sIngen regel til at skabe mÃ¥let \"%s\"%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Overvejer mÃ¥lfilen \"%s\".\n" + +#: src/remake.c:459 +#, 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" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Filen \"%s\" er allerede overvejet.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Opdaterer stadig fil \"%s\".\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Opdatering af fil \"%s\" afsluttet.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Filen \"%s\" findes ikke.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Advarsel: .LOW_RESOLUTION_TIME-fil \"%s\" har et tidsstempel med høj " +"opløsning" + +# peer? +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Grupperet mÃ¥l-peer \"%s\" for filen \"%s\" findes ikke.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Bruger standardopskrift for \"%s\".\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Cirkulær %s <- %s afhængighed opgivet." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Afsluttede forudsætningerne for mÃ¥lfilen \"%s\".\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Forudsætningerne for \"%s\" er ved at blive skabt.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Opgiver mÃ¥lfil \"%s\".\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "MÃ¥let \"%s\" ikke genskabt pÃ¥ grund af fejl." + +#: src/remake.c:814 +#, 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" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Forudsætningen \"%s\" for mÃ¥let \"%s\" findes ikke.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Forudsætningen \"%s\" er nyere end mÃ¥let \"%s\".\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Forudsætningen \"%s\" er ældre end mÃ¥let \"%s\".\n" + +#: src/remake.c:845 +#, 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" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "Ingen opskrift til \"%s\", og ingen forudsætninger har ændret sig.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Skaber \"%s\" pga. \"always-make\"-flag.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Ingen grund til at genskabe mÃ¥let \"%s\"" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; bruger VPATH-navnet \"%s\"" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Skal genskabe mÃ¥let \"%s\".\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Ignorerer VPATH-navnet \"%s\".\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Opskriften for \"%s\" er ved at blive kørt.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Genskabelse af mÃ¥lfilen \"%s\" mislykkedes.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "MÃ¥lfilen \"%s\" genskabt.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Det er nødvendigt at genskabe mÃ¥lfilen \"%s\" med -q.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Bruger standardkommandoer for \"%s\".\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Advarsel: Filen \"%s\" har modifikationstidspunkt %s s i fremtiden" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS-elementet \"%s\" er ikke et mønster" + +# "remote job exportation interface to the Customs daemon": jeg aner ikke +# hvad der er tale om. I øvrigt ser remote-cstms.c forældet/ubrugt ud, og +# koden er ikke understøttet af GNU... +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs kan ikke eksporteres: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "advarsel: ignorerer forudsætninger for suffiks-regeldefinition" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Implicitte regler" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Ingen implicitte regler." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implicitte regler, %u (%.1f %%) terminal." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "FEJL: forkert num_pattern_rules! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "ugyldig blandetilstand: %s: \"%s\"" + +#: src/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. +#: src/signame.c:92 +msgid "Hangup" +msgstr "Læg pÃ¥" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Afbrudt" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Afslut" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Ulovlig instruktion" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Sporings-/stoppunkts-fælde" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Afbrudt" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT_fælde" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Emulatorfælde" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Undtagelsestilfælde ved flydendetals-operation" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Dræbt" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Busfejl" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Lagersegmentfejl" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Ugyldigt systemkald" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Pipe blev brudt" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarmen gik" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Termineret" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Brugerdefineret signal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Brugerdefineret signal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Barnet afsluttet" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Strømmen gik" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Stoppet" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Stoppet (ville læse fra tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Stoppet (ville skrive til tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Stoppet (signal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Begrænsning af CPU-tid overskredet" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Grænse for filstørrelse overskredet" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtuel tidsgrænse overskredet" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profileringstiden udløb" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Vinduet blev ændret" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Fortsættes" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Kritisk I/O-tilstand" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O mulig" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resurse tabt" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Faresignal" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Informationsforespørgsel" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Flydendetalshjælpeprocessor ikke tilgængelig" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Ingen strcache-buffere\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s strcache-buffere: %lu (%lu) / strenge = %lu / lager = %lu B / middel = " +"%lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s nuværende buf: størrelse = %hu B / brugt = %hu B / antal = %hu / middel = " +"%u B\n" + +# Ikke sikker pÃ¥ hvad %s er +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s øvrigt brugt: i alt = %lu B / antal = %lu / middel = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s øvrigt frit: i alt = %lu B / maks = %lu B / min = %lu B / middel = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache-ydelse: opslag = %lu / træffere = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statistik for hashtabel:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatisk" + +#: src/variable.c:1789 +msgid "default" +msgstr "forvalgt" + +#: src/variable.c:1792 +msgid "environment" +msgstr "miljø" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefil" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "miljø med -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "kommandolinje" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "\"override\"-direktiv" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (fra \"%s\", linje %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# Statistik for variabelsæt-hash-spande:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabler\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Mønsterspecifikke variabelværdier" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Ingen mønsterspecifikke variabelværdier." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u mønsterspecifikke variabelværdier" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "advarsel: udefineret variabel \"%.*s\"" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() mislykkedes med %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-advarsel, du kan blive nødt til at genetablere CTRL-Y-behandling fra DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Tilføj uddata til slutningen af %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Tilføj %.*s og ryd op\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Udfører i stedet %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH-søgestier\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Ingen \"vpath\"-søgestier." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u \"vpath\"-søgestier.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ingen generel (\"VPATH\"-variabel) søgesti." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Generel (\"VPATH\"-variabel) søgesti:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Jobserverpladser begrænset til %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "opretter jobserver-semafor: (Fejl %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "intern fejl: kan ikke Ã¥bne jobserver-semafor \"%s\": (Fejl %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobserverklient (semafor %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "frigiv jobserver-semafor: (Fejl %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "ventende pÃ¥ semafor eller underproces: (Fejl %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "kan ikke fortolke outputsynkroniseringsmutex %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "ugyldig outputsynkroniseringsmutex: %s" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: Kommando ikke fundet\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Kommando ikke fundet\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s; Skalprogram ikke fundet" + +# build? +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TYPE] (--output-sync[=TYPE]) er ikke konfigureret til denne " +#~ "kompilering." + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s er standset i 30 sekunder..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "udført sleep(30). Fortsætter.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Ukendt fejl %d" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: bruger %lu (reelt %lu), gruppe %lu (reelt %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Indledende adgang" + +#~ msgid "User access" +#~ msgstr "Brugeradgang" + +#~ msgid "Make access" +#~ msgstr "Make-adgang" + +#~ msgid "Child access" +#~ msgstr "Barneadgang" + +# fd = fildeskriptor +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Jobserverklient (fd'er %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "jobserver-pipe" + +# "modifikationstid" her fordi ændringstid er 'change time' som er noget andet! +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Advarsel: Modifikationstiden for filen \"%s\" er i fremtiden" + +#~ msgid " terminal." +#~ msgstr " terminale." + +#~ 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 "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] Fejl 0x%x" + +#~ 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 "internal error: multiple --jobserver-fds options" +#~ msgstr "intern fejl: flere '--jobserver-fds'-tilvalg" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ msgid "virtual memory exhausted" +#~ msgstr "virtuel hukommelse opbrugt" + +#~ msgid "write error" +#~ msgstr "skrivefejl" + +#~ 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 "Warning: Empty redirection\n" +#~ msgstr "Advarsel: Tom omdirigering\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "intern fejl: '%s' command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "BUILTIN [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "BUILTIN RM %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Ukendt indbygget kommando '%s'\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Fejl, tom kommando\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Omdirigeret inddata from %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Omdirigeret fejl to %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Omdirigeret uddata til %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Fejl ved spawn, %d\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Syntaksfejl, stadig inden i '\"'\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "Fik et SIGCHLD; %u uhøstede børn.\n" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-advarsel, CTRL-Y vil efterlade underproces(ser).\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Angiv ikke -j eller --jobs hvis sh.exe ikke er tilgængelig." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Sætter make tilbage til enkelt job-tilstand." + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sDette er frit programmel; se kildeteksten for kopieringsbetingelser.\n" +#~ "%sDer er INGEN garanti; end ikke for SALGBARHED eller EGNETHED TIL NOGET\n" +#~ "%sBESTEMT FORMÃ…L.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "fremmed 'endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "tomt 'override'-direktiv" + +#~ msgid "invalid `override' directive" +#~ msgstr "ugyldigt 'override'-direktiv" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "intet filnavn for '%sinclude'" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "mÃ¥l '%s' efterlader forudsætningsmønstret tomt" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Ingen filer." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u filer i %u hash-spande .\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "# %.3f filer per spand i gennemsnit, maks. %u filer i en spand.\n" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Stands proces for at tillade et fejlsøgningsprogram at hænge sig pÃ¥" + +#~ msgid "# No variables." +#~ msgstr "# Ingen variabler." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# %.1f variabler per spand i gennemsnit, maks. %u i en spand.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# %d.%d variabler per spand i gennemsnit, maks. %u i en spand.\n" diff --git a/local/recipes/dev/gnu-make/source/po/de.gmo b/local/recipes/dev/gnu-make/source/po/de.gmo new file mode 100644 index 0000000000..67840b8d53 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/de.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/de.po b/local/recipes/dev/gnu-make/source/po/de.po new file mode 100644 index 0000000000..915dd06026 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/de.po @@ -0,0 +1,2547 @@ +# German message translation file for GNU make +# Copyright © 1996, 1997, 2002, 2013, 2016 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Jochen Hein , 1996. +# Alexander Mader , 1997. +# Alexander Mader , 2000. +# Karl Eichwalder , 2002, 2005. +# Philipp Thomas 2013, 2016 +# Roland Illig , 2020, 2022. +# +# Vereinheitlichen: +# ================= +# command(s) -> Befehl(e)? (nicht: Kommando(s)) +# target(s) -> Ziel(e) (nicht: Target(s)) +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-26 00:56+0200\n" +"Last-Translator: Roland Illig \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.2\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "Versuch, eine nicht unterstützte Funktionalität zu verwenden: „%s“" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "" +"VMS bietet keine Möglichkeit einer Änderung\n" +"der Zeitmarken von Archiveinträgen" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Archiv „%s“ existiert nicht" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: „%s“ ist kein gültiges Archiv" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Eintrag „%s“ existiert nicht in „%s“" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "" +"touch: Ungültiger Rückgabewert beim Zugriff von ar_member_touch auf „%s“" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "„lbr$set_module()“ konnte keine Modulinformation auslesen; Status = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "„lbr$ini_control()“ scheiterte mit Status = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"Die Bibliothek „%s“ konnte nicht geöffnet werden, um nach Eintragsstatus %d " +"zu suchen" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Ungültiges Feld „%s“ für Archiv „%s“, Eintrag „%s“" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Eintrag „%s“%s: %ld Bytes an Position %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (der Name ist möglicherweise abgeschnitten)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Datum %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " Nutzer-ID = %d, Gruppen-ID = %d, Modus = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Das Rezept hat zu viele Zeilen (maximal %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Abbruch.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Archiveintrag „%s“ ist möglicherweise falsch; nicht gelöscht" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Archiveintrag „%s“ ist möglicherweise falsch; nicht gelöscht" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Datei „%s“ wird gelöscht" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Datei „%s“ wird gelöscht" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# Auszuführendes Rezept" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (eingebaut):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (aus „%s“, Zeile %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Verzeichnisse\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: Status konnte nicht festgestellt werden.\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "" +"# %s ( Schlüssel %s, letzte Änderung %s): konnte nicht geöffnet werden.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (Gerät %d, Inode [%d,%d,%d]): konnte nicht geöffnet werden.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (Gerät %ld, Inode %ld): konnte nicht geöffnet werden.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (Schlüssel %s, letzte Änderung %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (Gerät %d, Inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (Gerät %ld, Inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Keine" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " Dateien, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "keine" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " Unmöglichkeiten" + +#: src/dir.c:1180 +msgid " so far." +msgstr " bisher." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " Unmöglichkeiten in %lu Verzeichnissen.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: Variable „%s“ wird nicht rekursiv expandiert, beim Exportieren in " +"eine Shell-Funktion\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Rekursive Variable „%s“ referenziert sich (schließlich) selbst" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "Nicht abgeschlossene Variablenreferenz" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Das Rezept für die Datei „%s“ wurde in %s:%lu angegeben," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"Das Rezept für die Datei „%s“ wurde aufgrund der Suche nach impliziten " +"Regeln gefunden," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "aber „%s“ wird jetzt als dieselbe Datei wie „%s“ betrachtet." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "Das Rezept für „%s“ wird ignoriert, das für „%s“ wird bevorzugt." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"„%s“ mit einfachem Doppelpunkt kann nicht in „%s“ mit doppeltem Doppelpunkt " +"geändert werden" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"„%s“ mit doppeltem Doppelpunkt kann nicht in „%s“ mit einfachem Doppelpunkt " +"geändert werden" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Löschen der Zwischendatei „%s“" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Die Zwischendateien werden gelöscht…\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kann nicht gleichzeitig .NOTINTERMEDIATE und .INTERMEDIATE sein" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kann nicht gleichzeitig .NOTINTERMEDIATE und .SECONDARY sein" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE und .SECONDARY schließen sich gegenseitig aus" + +#: src/file.c:942 +msgid "Current time" +msgstr "Aktuelle Zeit" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Zeitstempel außerhalb des Gültigkeitsbereichs; %s wird ersetzt" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Dies ist kein Ziel:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Wertvolle Datei (benötigt von .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Vorgetäuschtes Ziel (benötigt von .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Kommandozeilen-Ziel." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Eine standardmäßige, MAKEFILES oder -include/sinclude Makedatei." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Eingebaute Regel" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Die Suche nach impliziten Regeln wurde durchgeführt." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Die Suche nach impliziten Regeln wurde nicht durchgeführt." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Stamm für implizite/statische Muster: „%s“\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Datei ist ein Zwischenschritt in den Voraussetzungen." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Die Datei ist eine Voraussetzung für .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Die Datei ist sekundär (Voraussetzung von .SECONDARY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Erzeugt außerdem:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Zeit der letzten Änderung wurde nicht überprüft." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Die Datei existiert nicht." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Datei ist sehr alt." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Zuletzt geändert %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Datei wurde aktualisiert." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Datei wurde nicht aktualisiert." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Derzeit läuft das Rezept (DIES IST EIN FEHLER)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Derzeit läuft das Rezept für Abhängigkeiten (DIES IST EIN FEHLER)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Erfolgreich aktualisiert." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Eine Aktualisierung ist notwendig (-q ist angegeben)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Aktualisierung ist fehlgeschlagen." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ungültiger Wert im „command_state“-Strukturelement!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Dateien" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# Statistik der Hash-Tabelle für Dateien:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Feld „%s“ wird nicht zwischengespeichert: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: leerer Wert" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: „%s“ außerhalb des Bereichs" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "Das erste Argument der Funktion „word“ ist ungültig" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "Das erste Argument der Funktion „word“ muss größer als 0 sein" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "Das erste Argument der Funktion „wordlist“ ist ungültig" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "Das zweite Argument der Funktion „wordlist“ ist ungültig" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "Das erste Argument der Funktion „intcmp“ muss numerisch sein" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "Das zweite Argument der Funktion „intcmp“ muss numerisch sein" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: „DuplicateHandle(In)“ ist fehlgeschlagen (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" +"windows32_openpipe: „DuplicateHandle(Err)“ ist fehlgeschlagen (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "„CreatePipe()“ ist fehlgeschlagen (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() ist fehlgeschlagen\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Die temporäre Stapelverarbeitungsdatei %s wird gelöscht\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "Datei: fehlender Dateiname" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "Öffnen: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "Schreiben: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "Schließen: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "Datei: zu viele Argumente" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "Lesen: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "Unzulässige Dateioperation: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "Zu wenig Argumente (%u) für die Funktion „%s“" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "Auf dieser Rechnerkonfiguration nicht implementiert: Funktion „%s“" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "Nicht beendeter Aufruf der Funktion „%s“: „%c“ fehlt" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Leerer Funktionsname" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Unzulässiger Funktionsname: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Der Funktionsname ist zu lang: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Ungültige minimale Anzahl von Argumenten (%u) für die Funktion „%s“" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Ungülte maximale Anzahl an Argumenten (%u) für die Funktion „%s“" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: Option „%s“ ist mehrdeutig\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: Option „--%s“ erlaubt kein Argument\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: Option „%c%s“ erlaubt kein Argument\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: Option „%s“ erfordert ein Argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: unbekannte Option „--%s“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: unbekannte Option „%c%s“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: unzulässige Option -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ungültige Option -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: Option erfordert ein Argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: Option „-W %s“ ist mehrdeutig\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: Option „-W %s“ erlaubt kein Argument\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: „%s“ wird expandiert\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: „%s“ wird ausgewertet\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"es können keine %lu Bytes für die Hashtabelle reserviert werden: " +"Arbeitsspeicher erschöpft" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Auslastung=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Kollisionen=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Es wird nach einer impliziten Regel für „%s“ gesucht.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "" +"Es wird nach einer impliziten Regel für Archiveinträge für „%s“ gesucht.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Keine implizite Regel für Archiveinträge für „%s“ gefunden.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Rekursion in den impliziten Regeln für Regel „%s“ wird vermieden.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Nächster Versuch, jetzt hartnäckiger.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Muster-Regel „%s“ mit Stamm „%.*s“ wird probiert.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stamm zu lang: „%s%.*s“.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"Regel „%s“ wird abgelehnt, da die vorausgesetzte Regel „%s“ unmöglich ist.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Regel „%s“ wird abgelehnt, da die implizite Voraussetzung „%s“ unmöglich " +"ist.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Regel-Voraussetzung „%s“ wird ausprobiert.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Implizite Voraussetzung „%s“ wird ausprobiert.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s“ sollte eigentlich existieren.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "„%s“ gefunden.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Verwendung der Kompatibilitätsregel „%s“ aufgrund von „%s“.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Die Voraussetzung „%s“ der Regel „%s“ reicht nicht als „sollte existieren“.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Die Voraussetzung „%s“ wurde als VPATH „%s“ gefunden.\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Es wird nach einer Regel mit der expliziten Datei „%s“ gesucht.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Es wird nach einer Regel mit der Zwischendatei „%s“ gesucht.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Regel „%s“ wird abgelehnt, da die Voraussetzung „%s“ unmöglich ist.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "„%s“ wurde nicht gefunden.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Eine implizite Regel „%s“ für „%s“ wurde gefunden.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Es wird nach einer Kompatibilitäts-Regel für „%s“ gesucht.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Keine implizite Regel für „%s“ gefunden.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Eine temporäre Datei kann nicht erzeugt werden" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (Speicherauszug erstellt)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignoriert)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fehler %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Es wird auf noch nicht beendete Prozesse gewartet …" + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Aktiver Kindprozess %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (entfernt)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Erfolgreicher Kindprozess %p PID %s %s wird eingesammelt\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Erfolgloser Kindprozess %p PID %s %s wird eingesammelt\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Temporäre Stapelverarbeitungsdatei „%s“ wird aufgeräumt\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "" +"Fehler beim Aufräumen der temporären Stapelverarbeitungsdatei „%s“ (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Kindprozess %p PID %s%s wird aus der Kette entfernt.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Token des Kindprozesses %p PID (%s) wurde freigegeben.\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "„process_easy()“ konnte den Prozess nicht starten (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"%d Argumente gehörten zum fehlgeschlagenen Prozessstart\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Kindprozess %p (%s) PID %s%s wird in die Kette aufgenommen.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Token für den Kindprozess %p (%s) erhalten.\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: Ziel „%s“ wird aktualisiert wegen: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "Ziel existiert nicht" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "" +"Auf diesem Betriebssystem kann die Einhaltung der Lastbeschränkung nicht " +"erzwungen werden" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "Lasteinschränkung kann nicht erzwungen werden: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"Keine weiteren Datei-Handles verfügbar: die Standardeingabe konnte nicht " +"dupliziert werden" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"Keine weiteren Datei-Handles verfügbar: die Standardausgabe konnte nicht " +"dupliziert werden" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"Keine weiteren Datei-Handles verfügbar: die Standardfehlerausgabe konnte " +"nicht dupliziert werden" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Die Standardeingabe konnte nicht wiederhergestellt werden" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Die Standardausgabe konnte nicht wiederhergestellt werden" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Standardfehlerausgabe konnte nicht wiederhergestellt werden" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" +"„make“ hat den Kindprozess %s eingesammelt, wartet jedoch noch auf den " +"Prozess %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: der Platz in der Programmumgebung könnte erschöpft sein" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL gewechselt (war „%s“, ist jetzt „%s“)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Temporäre Stapelverarbeitungsdatei %s wird erstellt\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Inhalt der Stapelverarbeitungsdatei:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Inhalt der Stapelverarbeitungsdatei:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, 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" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Die globale Symboltabelle konnte nicht geöffnet werden: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Gemeinsames Objekt %s wurde geladen\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Das geladene Objekt %s wurde nicht als GPL-kompatibel deklariert" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Symbol %s konnte nicht aus %s geladen werden: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Zu ladender Symbolname ist leer: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Symbol %s wird aus %s geladen\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Gemeinsames Objekt %s wird entladen\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Die Operation „load“ wird auf dieser Plattform nicht unterstützt" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Optionen:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" +" -b, -m Wird aus Kompatibilitätsgründen ignoriert\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Alle Ziele ohne Bedingungen erstellen.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C VERZEICHNIS, --directory=VERZEICHNIS\n" +" In VERZEICHNIS wechseln, bevor etwas getan\n" +" wird.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d Viele Informationen zur Fehlersuche ausgeben.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=KENNUNGEN] Verschiedene Arten von Informationen zur\n" +" Fehlersuche ausgeben.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Umgebungsvariablen überschreiben Makedateien.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E ZKETTE, --eval=ZKETTE ZEICHENKETTE wie einen Makedatei-Eintrag\n" +" auswerten.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f DATEI, --file=DATEI, --makefile=DATEI\n" +" DATEI als Makedatei einlesen.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Diese Meldung ausgeben und beenden.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Fehler in Rezepten ignorieren.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I VERZEICHNIS, --include-dir=VERZEICHNIS\n" +" VERZEICHNIS nach eingebundenen\n" +" Makedateien durchsuchen.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] N Jobs gleichzeitig erlauben;\n" +" weggelassenes N bedeutet beliebig viele.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=STIL Stil des zu verwendenden Jobservers " +"auswählen.\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Weiterlaufen, auch wenn einige Ziele nicht\n" +" erzeugt werden konnten.\n" + +#: src/main.c:350 +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" +" Jobs nur dann starten, wenn die Auslastung\n" +" unter N ist.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Modifizierungszeit aus der symbolischen\n" +" Verknüpfung oder dem Ziel verwenden,\n" +" je nachdem, welche neuer ist.\n" + +#: src/main.c:355 +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" +" Keine Rezepte ausführen, nur ausgeben.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o DATEI, --old-file=DATEI, --assume-old=DATEI\n" +" DATEI als sehr alt ansehen und nicht neu\n" +" erzeugen.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYP], --output-sync[=TYP]\n" +" Die Ausgabe paralleler Jobs nach TYP\n" +" synchronisieren.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base Die interne Datenbank von „make“ ausgeben.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Keine Rezepte ausführen; der Exit-Status gibt " +"an,\n" +" ob die Dateien aktuell sind.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Die eingebauten impliziten Regeln " +"deaktivieren.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Die eingebauten Variablenbelegungen\n" +" deaktivieren.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SAAT|random|reverse|none}]\n" +" Die Voraussetzungen und Ziele durchmischen.\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Rezepte nicht ausgeben.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Rezepte ausgeben\n" +" (deaktiviert den --silent-Modus).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" -k abschalten.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Die Ziele werden nur als aktualisiert " +"markiert,\n" +" nicht tatsächlich erneuert\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" +" --trace Informationen zur Spurensuche ausgeben.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version Die Versionsnummer von „make“ ausgeben und\n" +" Programm beenden\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Das aktuelle Verzeichnis ausgeben.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory -w abschalten, selbst wenn es implizit\n" +" eingeschaltet wurde.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W DATEI, --what-if=DATEI, --new-file=DATEI, --assume-new=DATEI\n" +" DATEI als unendlich neu erachten.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Eine Warnung ausgeben, wenn eine undefinierte\n" +" Variable referenziert wird.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "Schreibfehler: Standardausgabe" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "Eine leere Zeichenkette ist als Dateiname ungültig" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "Unbekanntes Debug-Level „%s“ angegeben" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "Unbekannter Typ von Ausgabesynchronisierung „%s“" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Aufruf: %s [Optionen] [Ziele] …\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Diese Programm wurde für %s gebaut\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Diese Programm wurde für %s (%s) gebaut\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Fehlermeldungen (auf Englisch) bitte an senden.\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" +"%s: bekam Unterbrechung/Ausnahme signalisiert (Code = 0x%lx, Adr = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Das Programm %s rief einen Ausnahmefilter auf, der nicht bearbeitet wurde\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Zugriffsverletzung: Schreiboperation an Adresse 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Zugriffsverletzung: Leseoperation an Adresse 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() setzt default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "find_and_set_shell() Suche im Pfad setzt default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (temporäre Datei): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"Warnung: Kein Jobserver verfügbar: -j1 wird gesetzt. Fügen Sie der " +"Ursprungsregel „+“ hinzu." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"Warnung: -j%d in „make“-Verarbeitungszweig erzwungen: Jobserver-Modus wird " +"zurückgesetzt." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Die Makedatei wurde zweimal über die Standardeingabe angegeben" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: temporäre Datei „%s“: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"Warnung: -j%d in Makedatei erzwungen: Jobserver-Modus wird zurückgesetzt." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "" +"Parallele Abarbeitung (-j) wird auf dieser Plattform nicht unterstützt." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Umstellung auf Einzel-Job-Verarbeitung (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Jobserver-Controller %s wird verwendet\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Ausgabe-Synchronisierungs-Mutex %s wird verwendet\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "" +"Symbolische Verknüpfungen werden nicht unterstützt: -L wird abgeschaltet." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Durchmisch-Modus aktiviert: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Makedateien werden aktualisiert …\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" +"Makedatei „%s“ könnte eine Schleife enthalten; sie wird nicht neu erzeugt.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: konnte nicht geladen werden" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Makedatei „%s“ konnte nicht neu erstellt werden." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Die eingebundene Makedatei „%s“ wurde nicht gefunden." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Die Makedatei „%s“ wurde nicht gefunden" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Konnte nicht in das ursprüngliche Verzeichnis wechseln" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Erneute Ausführung[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL beinhaltet mehr als ein Ziel" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Keine Ziele" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Es wurden keine Ziele angegeben und keine Makedatei gefunden" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Ziele werden aktualisiert …\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"Warnung: Mit der Uhr stimmt etwas nicht.\n" +" Der Bauauftrag könnte unvollständig sein." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "Die Option „%s%s“ verlangt eine nicht-leere Zeichenkette als Argument" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "Die Option „-%c“ verlangt eine positive ganze Zahl als Argument" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sGebaut für %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sGebaut für %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sLizenz GPLv3+: GNU GPL Version 3 oder später \n" +"%sDies ist freie Software: Sie können sie nach Belieben ändern und weiter " +"verteilen.\n" +"%sSoweit es die Gesetze erlauben, gibt es KEINE GARANTIE.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# „Make“-Datenbank; Stand vom %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Ende der „Make“-Datenbank vom %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s Wert %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s Wert %s: kein Verzeichnis" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "Das standardmäßige temporäre Verzeichnis „%s“ wird verwendet" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "Erzeugen der temporären Datei „%s“: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "Entfernen der temporären Datei „%s“: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen der temporären Datei „%s“: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen der temporären Datei „%s“: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: ein unbekanntes Verzeichnis wird betreten\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: ein unbekanntes Verzeichnis wird verlassen\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Verzeichnis „%s“ wird betreten\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Verzeichnis „%s“ wird verlassen\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Ein unbekanntes Verzeichnis wird betreten\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Ein unbekanntes Verzeichnis wird verlassen\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Verzeichnis „%s“ wird betreten\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Verzeichnis „%s“ wird verlassen\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"Warnung: keine Ausgabesperre möglich, daher wird die Ausgabesynchronisation " +"deaktiviert." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Schluss.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Jobserver %s kann nicht geöffnet werden: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Unbekannte Authentifizierungsart „%s“ für Jobserver" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "Öffnen der Pipe für die Jobs" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "Duplizieren der Pipe für die Jobs" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "Initialisierung der Pipe für den Jobserver" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "ungültige Zeichenkette „%s“ für --jobserver-auth" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "Schreiben zum Job-Server" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "Jobserver ist heruntergefahren" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect der Jobs-Pipeline" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "Lesen der Pipe für die Jobs" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "ungültige Zeichenkette „%s“ für --sync-mutex" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "Mutex für Ausgabesynchronisierung „%s“ kann nicht geöffnet werden: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Fehler beim Öffnen von „%s“ mit O_TMPFILE: %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Makedateien werden gelesen …\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Makedatei „%s“ wird gelesen" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (kein Standard-Ziel)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (Suchpfad)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (Datei darf auch fehlen)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (keine ~-Auflösung)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "UTF-8 BOM in Makedatei „%s“ wird übersprungen\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "UTF-8 BOM im Makedatei-Puffer wird übersprungen\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "Ungültige Syntax in der Bedingung" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "Rezept beginnt vor dem ersten Ziel" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "Es fehlt eine Regel vor dem Rezept" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "fehlender Trenner (meinten Sie TAB anstelle von 8 Leerzeichen?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "Fehlender Trenner" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "Es fehlt ein Ziel-Muster" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "Mehrfache Ziel-Muster" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "Ziel-Muster enthält kein „%%“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "Fehlendes „endif“" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "Leerer Variablenname" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "Überflüssiger Text nach einer „define“-Anweisung" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "Fehlendes „endef“, nicht abgeschlossenes „define“" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "Überflüssiger Text nach einer „endef“-Anweisung" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "Überflüssiger Text nach einer „%s“-Anweisung" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "Überflüssiges „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "Es ist nur ein „else“ pro Bedingung erlaubt" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Falsche Ziel-bezogene Variablendefinition" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT sollte keine Voraussetzungen haben" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT sollte keine Befehle haben" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "Voraussetzungen können nicht in Rezepten definiert werden" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "Gruppierte Ziele müssen ein Rezept angeben" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "Implizite und statische Muster-Regeln wurden vermischt" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "Implizite und normale Regeln wurden vermischt" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "Das Ziel „%s“ passt nicht zum Ziel-Muster" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "Die Zieldatei „%s“ enthält sowohl „:“- als auch „::“-Einträge" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "Das Ziel „%s“ steht mehrfach in derselben Regel" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "Warnung: Das Rezept für das Ziel „%s“ wird überschrieben" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "Warnung: Das alte Rezept für das Ziel „%s“ wird ignoriert" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** Implizite und normale Regeln wurden vermischt" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" +"Warnung: Die Gruppenmitgliedschaft für das Ziel „%s“ wird überschrieben" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "Warnung: NULL-Zeichen gelesen; der Rest der Zeile wird ignoriert" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "Warnung: Das Musterrezept hat das Peer-Ziel „%s“ nicht aktualisiert." + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Für das Ziel „%s“ ist nichts zu tun." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s“ ist bereits aktuell." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Die Datei „%s“ wird „gestutzt“ (der Abhängigkeitsgraph).\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "" +"%sKeine Regel vorhanden, um das Ziel „%s“, benötigt von „%s“, zu erstellen%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sKeine Regel, um „%s“ zu erstellen%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Betrachte Zieldatei „%s“.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "" +"Es wurde kürzlich versucht, die Datei „%s“ zu aktualisieren, dies schlug " +"aber fehl.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Die Datei „%s“ wurde bereits betrachtet.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Die Datei „%s“ wird immer noch aktualisiert.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Aktualisierung der Datei „%s“ beendet.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Die Datei „%s“ existiert nicht.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Warnung: mit .LOW_RESOLUTION_TIME gekennzeichnete Datei „%s“ hat einen " +"hochaufgelösten Zeitstempel" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "" +"Das gruppierte Peer-Ziel „%s“ der Datei „%s“ existiert nicht.\n" +"\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Das Standard-Rezept für „%s“ wird verwendet.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Zirkuläre Abhängigkeit %s <- %s wird nicht verwendet." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Fertig mit den Voraussetzungen für die Zieldatei „%s“.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Die Voraussetzungen von „%s“ werden fertiggestellt.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Die Arbeit an der Zieldatei „%s“ wurde aufgegeben.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Das Ziel „%s“ wurde wegen Fehlern nicht neugemacht." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Die Voraussetzung „%s“ ist „nur einsortiert“ für das Ziel „%s“.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Die Voraussetzung „%s“ für das Ziel „%s“ existiert nicht.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Die Voraussetzung „%s“ ist jünger als das Ziel „%s“.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Die Voraussetzung „%s“ ist älter als das Ziel „%s“.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" +"Das Ziel „%s“ hat einen doppelten Doppelpunkt und keine Voraussetzungen.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" +"Kein Rezept für „%s“ und keine Voraussetzung wurde tatsächlich verändert.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "„%s“ wird aufgrund der Kennzeichnung als always-make erzeugt.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Es ist nicht notwendig, das Ziel „%s“ neu zu erzeugen" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; VPATH-Name „%s“ wird verwendet" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Das Ziel „%s“ muss neu erzeugt werden.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Der VPATH-Name „%s“ wird ignoriert.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Das Rezept für „%s“ wird gerade ausgeführt.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Fehler beim Aktualisieren der Zieldatei „%s“.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Die Zieldatei „%s“ wurde erfolgreich aktualisiert.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Zieldatei „%s“ muss bei -q aktualisiert werden.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Für „%s“ werden die Standardbefehle verwendet.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "" +"Warnung: Die Änderungszeit der Datei „%s“ liegt %s Sekunden in der Zukunft" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS Element „%s“ ist kein Muster" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs wird nicht exportieren: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "Warnung: Voraussetzungen der Suffixregel-Definition werden ignoriert" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Implizite Regeln" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Keine impliziten Regeln vorhanden." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implizite Regeln, %u (%.1f%%) terminal." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "FEHLER: „num_pattern_rules“ falsch: %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "ungültiger Durchmisch-Modus: %s: „%s“" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "Unbekanntes Signal" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Aufgelegt" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Abgebrochen (Interrupt)" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Quit" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Illegaler Befehl" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Verfolgen/anhalten abfangen (Trace/breakpoint trap)" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abgebrochen (Aborted)" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT abfangen (IOT trap)" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT abfangen (EMT trap)" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Gleitkommafehler" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Abgebrochen (Killed)" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Bus-Fehler" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Speicherzugriffsfehler" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Falscher Systemaufruf" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Zerstörte Pipe" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Wecksignal" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Beendet (Terminated)" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Nutzersignal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Nutzersignal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Kindprozess beendet" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Stromausfall" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Angehalten" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Angehalten (tty input)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Angehalten (tty output)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Angehalten (signal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU-Zeitschranke überschritten" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Dateigrößenschranke überschritten" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtueller Timer abgelaufen" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profiling-Timer abgelaufen" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Fenster hat sich verändert" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Fortgesetzt" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Dringende I/O-Bedingung" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O möglich" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Ressource verlorengegangen" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Gefahrensignal" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Informationsanforderung" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Es ist kein Koprozessor für Gleitkommaoperationen vorhanden" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Keine Puffer für strcache\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s Puffer für strcache: %lu (%lu) / Zeichenketten = %lu / Speicher = %lu B / " +"ø = %lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s aktueller Puffer: Größe = %hu B / benutzt = %hu B / Anzahl = %hu / ø = %u " +"B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s andere verwendete: Gesamt = %lu B / Anzahl = %lu / /ø = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s andere freie: Gesamt = %lu B / Max = %lu B / Min = %lu B / ø = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s Leistung von strcache: Suchen = %lu / Trefferrate = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# Statistik für Hashtabelle:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatisch" + +#: src/variable.c:1789 +msgid "default" +msgstr "Standard" + +#: src/variable.c:1792 +msgid "environment" +msgstr "Umgebung" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "Makedatei" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "Umgebung per -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "Kommandozeile" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "„override“-Anweisung" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (aus „%s“, Zeile %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "" +"# Hashtabellen-Statistik für Variablen:\n" +"\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variablen\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Musterspezifische Variablenwerte" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Keine musterspezifischen Variablenwerte." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u musterspezifische Variablenwerte" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "Warnung: undefinierte Variable „%.*s“" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "„sys$search“ schlug mit %d fehl\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-Warnung: Vielleicht müssen Sie STRG-Y aus DCL wieder ermöglichen.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Ausgabe wird an %s angehängt\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "%.*s anhängen und aufräumen\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "%s wird stattdessen ausgeführt\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH-Suchpfade\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Keine „vpath“-Suchpfade." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u „vpath“-Suchpfade.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Kein allgemeiner Suchpfad (Variable „VPATH“)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Allgemeiner Suchpfad (Variable „VPATH“):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Zeitschlitze der Jobservers auf %d begrenzt\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "Jobserver-Semaphore wird erzeugt: (Fehler %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"interner Fehler: die Semaphore „%s“ des Jobservers kann nicht geöffnet " +"werden: (Fehler %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobserver-Klient (Semaphore %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "Freigabe der Jobserver-Semaphore: (Fehler %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "warten auf Semaphore oder Kindprozess: (Fehler %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "Mutex zur Ausgabesynchronisierung „%s“ hat falsche Form: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "ungültiger Wert für Mutex für Ausgabesynchronisierung: %s" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: Nutzer %lu (tatsächlich %lu), Gruppe %lu (tatsächlich %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Initialisierter Zugriff" + +#~ msgid "User access" +#~ msgstr "Zugriff durch Benutzer" + +#~ msgid "Make access" +#~ msgstr "Zugriff durch „make“" + +#~ msgid "Child access" +#~ msgstr "Zugriff durch Kindprozess" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TYP] (--output-sync[=TYP]) ist für diese Bau-Aufgabe nicht " +#~ "konfiguriert." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Jobserver-Klient (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "Initialisierung der Pipe für den Jobserver" diff --git a/local/recipes/dev/gnu-make/source/po/en@boldquot.header b/local/recipes/dev/gnu-make/source/po/en@boldquot.header new file mode 100644 index 0000000000..fedb6a06d1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/local/recipes/dev/gnu-make/source/po/en@quot.header b/local/recipes/dev/gnu-make/source/po/en@quot.header new file mode 100644 index 0000000000..a9647fc35c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/local/recipes/dev/gnu-make/source/po/es.gmo b/local/recipes/dev/gnu-make/source/po/es.gmo new file mode 100644 index 0000000000..4727bea422 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/es.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/es.po b/local/recipes/dev/gnu-make/source/po/es.po new file mode 100644 index 0000000000..63ebc1e334 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/es.po @@ -0,0 +1,3148 @@ +# Mensajes en español para GNU make. +# Copyright (C) 1996, 2001, 2011, 2013, 2014, 2016, 2019, 2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Max de Mendizábal , 1996, 2011. +# Antonio Ceballos , 2013, 2014, 2016, 2019, 2020 +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2020-01-03 15:38+0100\n" +"Last-Translator: Antonio Ceballos \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "Se intentó utilizar una característica no implementada: '%s'" + +# Sugerencia: touch -> `touch'. sv +# Ok, aceptada. A falta de cursivas... mm +# No veo porqué no se ha de usar 'tocar' en vez de touch em+ +# El mensaje además hace referencia a un touch de un objeto dentro +# de una librería, y de eso no se dice nada en el mensaje. Creo que +# hay que tener cuidado con estas cosas. +# El programa para tocar un miembro de un archivo ... , y ahi estamos +# ya en problemas con el dichoso archivo/fichero. +# A ver que se os ocurre em+ +# 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. +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "El programa para hacer un 'touch' no está disponible en VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: El archivo '%s' no existe" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: '%s' no es un archivo válido" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: El miembro '%s' no existe en '%s'" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: Código de retorno erróneo de ar_member_touch en '%s'" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"fallo en lbr$set_module() para extraer la información del módulo, estado = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "fallo en lbr$ini_control() con estado = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"error al abrir la biblioteca '%s' para buscar el estado %d del elemento" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Miembro '%s'%s: %ld bytes en %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (el nombre puede estar truncado)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Fecha %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, modo = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Las instrucciones tienen demasiadas líneas (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Interrumpir.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "" +"*** [%s] El miembro de archivo '%s' podría estar incorrecto; aunque no se " +"elimina" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "" +"*** El miembro del archivo '%s' podría estar incorrecto; aunque no se elimina" + +# Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv +# Ok. mm +#: src/commands.c:647 +#, 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 +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Se borra el archivo '%s'" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# las instrucciones para ejecutar" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (integrado):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (de '%s', linea %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directorios\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: podría no estar establecido.\n" + +# ¿No sobraría el "posiblemente"? +# Propongo dejarlo en " no se pudo abrir ". sv +# Ok. Es consistente con otras traducciones. mm +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (llave %s, mtime %I64u): 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 +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "" +"# %s (dispositivo %d, nodo-i [%d,%d,%d]): posiblemente no se pueda abrir.\n" + +# ¿No sobraría el "posiblemente"? +# Propongo dejarlo en " no se pudo abrir ". sv +# Ok. Es consistente con otras traducciones. mm +#: src/dir.c:1131 +#, 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" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (llave %s, mtime %I64u): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (dispositivo %d, nodo-i [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispositivo %ld, nodo-i %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "No" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " archivos, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "no" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " imposibilidades" + +# ¿"So far" no era "hasta ahora"? (no me hagas mucho caso) sv +# Si tu traducción es mejor. Aceptada. mm +#: src/dir.c:1180 +msgid " so far." +msgstr " hasta ahora." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " imposibilidades en %lu directorios.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +# Creo que eventually sería "finalmente" o algo así. sv +# Si, es finalmente no a veces. Ok. mm +# referencia me parece que no lleva tilde. sv +# No, no lleva acento. Me emocioné con elos. mm +# Creeis de veras que tiene sentido 'finalmente'em+ +# yo pondría ser termina autoreferenciando, por +# ejemplo em+ +# Mejor lo eliminamos. Es de alguna forma reiterativo e innecesario. +# Lo de `al final' puede ser más confuso. mm +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "La variable recursiva '%s' se auto-referencia" + +# No me gusta nada ( lo siento ) +# ¿ Qué tal : La referencia a una variable está sin terminar em+ +# Creo que tienes razón la voz pasiva es muy desagradable. mm. +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "la referencia a la variable está sin terminar" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Se especificaron instrucciones para el archivo '%s' en %s:%lu," + +# Buscando en las legras implícitas em+ +# Utilicé por búsqueda en para evitar el gerundio. mm +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"Las instrucciones para el archivo '%s' se encontraron por búsqueda en reglas " +"implícitas," + +# "now" es "ahora". ¿te lo has comido consciente o inconscientemente? sv +# inconscientemente. mm +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "pero '%s' se considera ahora como el mismo archivo que `%s'." + +# Lo repetiré una y mil veces... :-) +# "To ignore" *no* es ignorar. sv +# Propongo "no serán tenidas en cuenta" a falta de algo mejor. +# Ok. Mi necedad sobrepasa el milenio. mm +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" +"Las instrucciones para '%s' no serán tenidas en cuenta en favor de las que " +"están en '%s'." + +# Me suena que eso de colon es algo así como punto, dos puntos o punto y coma. +# ¿Podrías comprobarlo? sv +# Es un punto sencillo (.). A ver si te gusta mi propuesta. mm +#: src/file.c:304 +#, 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 +#: src/file.c:310 +#, 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 +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Se borra el archivo intermedio '%s'" + +# Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv +# Ok. mm +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "*** Se borran los archivos intermedios...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Hora actual" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Fecha fuera de intervalo; sustituyéndola %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# No es un objetivo:" + +# Pondría: es una dependencia de em+ +# Si, tienes razón. mm +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Archivo valioso (es una dependencia de .PRECIOUS)." + +# Lo mismo. Y traducir por falso es poco menos que poco exacto. +# Los phony target de make son aquellos que se ejecutan siempre +# sin tener en cuenta si existe un archivo con el nombre del objetivo +# y de si es actual. Propondría incondicional en vez de falso, ya que +# explica exactamente qué es un phony target em+ +# No. Incondicional no es una traducción correcta. Que tal si al rato +# se les ocurre hacer una nueva instrucción .INCONDITIONAL. +# Si quieres podríamos pensar en otra traducción como señuelo o algo así. mm +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# objetivo falso (dependencia de .PHONY)." + +# FUZZY +# Pondria línea de comandos +# Y creo que no sé exactamente a que se refiere, No creo que haya visto +# este mensaje nunca en make lo marco con FUZZY em+ +# Están traduciendo commands como comandos? Son más bien ordenes o +# instrucciones. Por mi parte no hay problema, incluso me gusta más +# comandos, pero es un anglicismo. mm +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Objetivo en línea de instrucciones." + +# Habría que entender esto +# Creo que esto es lo que significa. El fuente no es demasiado claro. mm +# Se refiere a que el fichero makefile es uno que encuentra por +# defecto ( en este orden GNUmakefile, Makefile y makefile ) o uno +# que está definido en la variable de entorno MAKEFILE em+ +# Así pues tu traducción es completamente equivocada, lo siento. +# Pondría: Fichero por defecto o definido en la variable MAKEFILE em+ +# Cierto, lo has entendido bien. Arreglo acorde. mm +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Por omisión, MAKEFILES, o -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Regla incorporada" + +# Propongo efectuada en lugar de terminada. sv +# Ok. Es más literal. mm +# Atención ! , es la búsqueda 'de'reglas implícitas em+ +# Ok. Ojo, debo pluralizar regla e implícita. Platicarlo con Ulrich. mm +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# La búsqueda de reglas implícitas ha sido efectuada." + +# Propongo efectuada en lugar de terminada. sv +# Ok. Es más literal. mm +# Atención ! , es la búsqueda 'de'reglas implícitas em+ +# Ok. Ojo, debo pluralizar regla e implícita. Platicarlo con Ulrich. mm +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# La búsqueda de reglas implícitas ha sido efectuada." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Tema del patrón implícita/estática: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# El archivo es una dependencia intermedia." + +# Pondría: es una dependencia de em+ +# Si, tienes razón. mm +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Archivo valioso (es una dependencia de .PRECIOUS)." + +# Lo mismo. Y traducir por falso es poco menos que poco exacto. +# Los phony target de make son aquellos que se ejecutan siempre +# sin tener en cuenta si existe un archivo con el nombre del objetivo +# y de si es actual. Propondría incondicional en vez de falso, ya que +# explica exactamente qué es un phony target em+ +# No. Incondicional no es una traducción correcta. Que tal si al rato +# se les ocurre hacer una nueva instrucción .INCONDITIONAL. +# Si quieres podríamos pensar en otra traducción como señuelo o algo así. mm +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# objetivo falso (dependencia de .PHONY)." + +# Sugerencia: "crea". sv +# Ok. Aunque, viendolo bien, que tal "hace"? mm. +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# También hace:" + +# ¿y "comprobó"? sv +# Ok. Mejora. mm +# No pondría nunca, sino simplemente 'no se comprobó 'em+ +# Si, es lo mismo pero es más español. mm +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# La fecha de modificación no se comprobó." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# El archivo no existe." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# El archivo es muy viejo." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Última modificación %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# El archivo ha sido actualizado." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# El archivo ha sido actualizado." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Las instrucciones continúan en ejecución (ESTO ES UN BUG)." + +# ¿No sería más bien "las instrucciones de las dependencias"? sv +# Si, que babas soy. Ahora corrijo. mm +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "" +"# Las instrucciones de las dependencias continúan en ejecución (ESTO ES UN " +"BUG)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Actualizado con éxito." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Necesita ser actualizado (la opción -q está activa)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Fallo al ser actualizado." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# ¡Valor inválido en el miembro 'command_state'!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Archivos" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# estadísticas de la tabla «hash» de los archivos:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: El campo '%s' no está en «cache»: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "el primer argumento de la función 'word' no es numérico" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "el primer argumento de la función 'word' debe ser mayor que 0" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "el primer argumento de la función 'wordlist' no es numérico" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "el segundo argumento de la función 'wordlist' no es numérico" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "el primer argumento de la función 'wordlist' no es numérico" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "el segundo argumento de la función 'wordlist' no es numérico" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: fallo en DuplicateHandle(In), (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: fallo en DuplicateHandle(Err), (e=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "Fallo en CreatePipe(), (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): fallo en process_init_fd()\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Limpiando el archivo temporal %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "archivo: falta el nombre del archivo" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "abrir: %s: %s" + +# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" +# concuerde bien con esta frase y con la anterior simultáneamente. sv +# No. Ya revisé el fuente y transcribo el trozo pertinente: +# char *message = entering ? "Entering" : "Leaving"; +# if (makelevel == 0) +# printf ("%s: %s ", program, message); +# else +# printf ("%s[%u]: %s ", program, makelevel, message); +# Como notarás lo del directorio va en otro lado. +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "escribir: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "cerrar: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "archivo: demasiados argumentos" + +# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" +# concuerde bien con esta frase y con la anterior simultáneamente. sv +# No. Ya revisé el fuente y transcribo el trozo pertinente: +# char *message = entering ? "Entering" : "Leaving"; +# if (makelevel == 0) +# printf ("%s: %s ", program, message); +# else +# printf ("%s[%u]: %s ", program, makelevel, message); +# Como notarás lo del directorio va en otro lado. +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "leer: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "archivo: operación de archivo no válida: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "Número de argumentos (%d) insuficientes para la función '%s'" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "No implementado en esta plataforma: función '%s'" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "la llamada a la función '%s' no concluyó: falta '%c'" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Nombre de función vacío" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nombre de función no válido: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Nombre de función demasiado largo: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Número insuficiente de argumentos (%u) para la función %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "El número máximo de argumentos (%u) no es válido para la función %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: la opción '%s' es ambigua\n" + +# No admite ningún argumento. sv +# Ok. Y vuelve la burra al trigo. mm +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: la opción '--%s' no admite ningún argumento\n" + +# Lo mismo. sv +# Ok. mm +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: la opción '%c%s' no admite ningún argumento\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: la opción '%s' requiere un argumento\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opción no reconocida '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opción no reconocida '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opción inválida -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opción inválida -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: la opción requiere un argumento -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: la opción '-W %s' es ambigua\n" + +# No admite ningún argumento. sv +# Ok. Y vuelve la burra al trigo. mm +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: la opción '-W %s' no admite ningún argumento\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expandiendo '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Evaluando '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "no se pueden reservar %lu bytes para la tabla «hash»: memoria agotada" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Carga=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Colisiones=%lu/%lu=%.0f%%" + +# Y no sería mejor "Buscando una regla implícita ..." +# Ten en cuenta que este mensaje no parece un mensaje de error, sino más +# de "debug" o de "verbose". sv +# Cierto. mm +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Buscando una regla implícita para '%s'.\n" + +# Lo mismo. +# Buscando una regla implítita para el miembro del archivo `%s' em+ +# Se me resbaló. mm +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Buscando una regla implícita para el miembro del archivo '%s'.\n" + +# Lo mismo. +# Buscando una regla implítita para el miembro del archivo `%s' em+ +# Se me resbaló. mm +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Buscando una regla implícita para el miembro del archivo '%s'.\n" + +# Pues si ilegal le suena a cárcel a Enrique, "evade" me suena a mí a +# escaparse de la cárcel... (fuga de alcatraz :-) +# te voy a dar yo a tí fuga ... em+ +# ¿Qué te parecería "se evita"? sv +# Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm +# No me gusta se evita, pondría evitando em+ +# Ok. Pero a mi paranoia de evitar gerundios dónde la dejas? mm +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Evitando la recursión en la regla implícita.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +# FUZZY +# Esto me suena fatal. Se a que se refiere, porque lo +# he visto, pero en cristiano no se si podría entenderlo. +# se refiere a las reglas del tipo % , lo pongo FUZZY , tendré +# que pensar un poco en ello em+ +# De momento cambio la regla patron por una regla de patron , y +# pondría a toda costa gerundio ( intentando ) em+ +# Ok con el gerundio. Pero también tengo que meditarlo. mm +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Intentando una regla de patrón con el tema '%.*s'.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Tema demasiado largo: '%s%.*s'.\n" + +# ## Corrijo la palabra "dependencia". sv +# Cuando aparezca este mensaje tendrá poco menos que sentido +# testimonial. Date cuenta que los argumentos estan cambiados. +# Pon el orden correcto, siempre será más lógico que lo que vaya a +# aparecer tal y como está ahora (Se rechaza la dependencia imposible +# `%s' `%s )'em+ +# Ok. mm +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Se rechaza la regla de dependencia imposible '%s'.\n" + +# ## Corrijo la palabra "dependencia". sv +# Cuando aparezca este mensaje tendrá poco menos que sentido +# testimonial. Date cuenta que los argumentos estan cambiados. +# Pon el orden correcto, siempre será más lógico que lo que vaya a +# aparecer tal y como está ahora (Se rechaza la dependencia imposible +# `%s' `%s )'em+ +# Ok. mm +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Se rechaza la dependencia implícita imposible '%s'.\n" + +# FUZZY +# Esto me suena fatal. Se a que se refiere, porque lo +# he visto, pero en cristiano no se si podría entenderlo. +# se refiere a las reglas del tipo % , lo pongo FUZZY , tendré +# que pensar un poco en ello em+ +# De momento cambio la regla patron por una regla de patron , y +# pondría a toda costa gerundio ( intentando ) em+ +# Ok con el gerundio. Pero también tengo que meditarlo. mm +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Intentando la regla de dependencia '%s'.\n" + +# Pues si ilegal le suena a cárcel a Enrique, "evade" me suena a mí a +# escaparse de la cárcel... (fuga de alcatraz :-) +# te voy a dar yo a tí fuga ... em+ +# ¿Qué te parecería "se evita"? sv +# Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm +# No me gusta se evita, pondría evitando em+ +# Ok. Pero a mi paranoia de evitar gerundios dónde la dejas? mm +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Probando la dependencia implícita '%s'.\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "El archivo '%s' no existe.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: actualizar el objetivo '%s' a causa de: %s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "La dependencia '%s' del objetivo '%s' no existe.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Se encontró la dependencia '%s' como la VPATH '%s'.\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Se busca una regla con el archivo intermedio '%s'.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Se busca una regla con el archivo intermedio '%s'.\n" + +# ## Corrijo la palabra "dependencia". sv +# Cuando aparezca este mensaje tendrá poco menos que sentido +# testimonial. Date cuenta que los argumentos estan cambiados. +# Pon el orden correcto, siempre será más lógico que lo que vaya a +# aparecer tal y como está ahora (Se rechaza la dependencia imposible +# `%s' `%s )'em+ +# Ok. mm +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Se rechaza la regla de dependencia imposible '%s'.\n" + +# Se ha encontrado em+ +# Ok, pero procuro evitar como a la muerte los gerundios. mm +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "No se ha encontrado ninguna regla implícita para '%s'.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Se encontró una regla implícita para '%s'.\n" + +# Y no sería mejor "Buscando una regla implícita ..." +# Ten en cuenta que este mensaje no parece un mensaje de error, sino más +# de "debug" o de "verbose". sv +# Cierto. mm +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Buscando una regla implícita para '%s'.\n" + +# Se ha encontrado em+ +# Ok, pero procuro evitar como a la muerte los gerundios. mm +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "No se ha encontrado ninguna regla implícita para '%s'.\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "No se puede crear un archivo temporal\n" + +# Sugerencia: " (volcado de `core')". sv +# volcado de `core' no significa nada, que te parece si mejor dejamos +# el core dumped, o bien volcado del núcleo o algo así. Por el momento +# no cambio nada. mm +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (core dumped) [Núcleo vaciado a un archivo]" + +# Preferiría mil veces "sin efecto" o algo parecido. sv +# Ok. Habíamos quedado en `no tiene efecto'. mm +#: src/job.c:557 +msgid " (ignored)" +msgstr " (no tiene efecto)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Error %d%s" + +# ¿Y job -> trabajos? sv +# Si, pero no hablas de una computadora multi-trabajos sino multi-tareas. +# Por eso elegí tareas. Lo platicamos con más calma? mm +#: src/job.c:677 +#, c-format +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 +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Hijo activo %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (remoto)" + +# Lo mismo, pon Proceso hijo, y quita lo que hay +# entre paréntesis em+ +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Se recupera al proceso hijo ganador %p PID %s %s\n" + +# Lo mismo, pon Proceso hijo, y quita lo que hay +# entre paréntesis em+ +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Se recupera al proceso hijo perdido %p PID %s %s\n" + +# Give up no es enfocar, es abandonar, o desistir em+ +# Si, metí la pata. mm +#: src/job.c:966 +#, 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 +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Fallo al limpiar el archivo temporal por lotes %s (%d)\n" + +# Proceso hijo em+ +# Ok. +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Se elimina al proceso hijo %p PID %s%s de la cadena.\n" + +# Lo mismo, pon Proceso hijo, y quita lo que hay +# entre paréntesis em+ +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Se libera el token para el proceso hijo %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "fallo en process_easy() para lanzar al proceso (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Se contaron %d argumentos en el lanzamiento fallido\n" + +# Proceso hijo em+ +# Ok. +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Se pone al proceso hijo %p (%s) PID %s%s en la cadena.\n" + +# Lo mismo, pon Proceso hijo, y quita lo que hay +# entre paréntesis em+ +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Se obtiene el token para el proceso hijo %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: actualizar el objetivo '%s' a causa de: %s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: el objetivo '%s' no existe" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "no se pueden forzar los límites de carga en este sistema operativo" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "no se puede forzar la carga límite: " + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "no hay más manejadores de archivos: no se puede duplicar stdin\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "no hay más manejadores de archivos: no se puede duplicar stdout\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "no hay más manejadores de archivos: no se puede duplicar stderr\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "No se puede restaurar stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "No se puede restaurar stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "No se puede restaurar stderr\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "hacer un hijo descarriado %s, aún se espera por el pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: el espacio ambiental podría estar agotado" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL ha cambiado (era '%s' y ahora es '%s')\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Se crea el archivo temporal %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Contenido del archivo de lotes:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Contenido del archivo de lotes:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" +"%s (linea %d) Contexto de shell erróneo (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Fallo al abrir tabla global de símbolos: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "" +"El objeto %s que se ha cargado no está declarado como compatible con GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Fallo al cargar símbolo %s desde %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nombre de símbolo vacío en la carga: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Cargando símbolo %s desde %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "La operación 'load' no está implementada en esta plataforma." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opciones:\n" + +# Lo mismo de arriba con "ignorar". sv +# Ok. mm. +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" +" -b, -m No se tendrá en cuenta por compatibilidad.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" +" -B, --always-make Hace incondicionalmente todos los objetivos.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTORIO, --directory=DIRECTORIO\n" +" Se cambia al DIRECTORIO antes de hacer nada.\n" + +# ¿"depurado" o "depuración"? sv +# Puse de depurado para evitar la cacofonía información depuración. +# Sugerencias bienvenidas. mm +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d Se imprimirán grandes cantidades de información de depurado.\n" + +# ¿"depurado" o "depuración"? sv +# Puse de depurado para evitar la cacofonía información depuración. +# Sugerencias bienvenidas. mm +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=BANDERAS] Se imprimirán varios tipos de información de " +"depurado.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Las variables ambientales se imponen a las de los " +"makefiles.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E CADENA, --eval=CADENA Evalúa la CADENA como una instrucción de un " +"makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ARCHIVO, --file=ARCHIVO, --makefile=ARCHIVO\n" +" Lee al ARCHIVO como un makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Muestra este mensaje y finaliza.\n" + +# Ojo con ignorar. sv +# Ok. mm +# Por favor, si has traducido commands como instrucciones , hazlo aqui +# tambien. +# No me gusta este mensaje, preferiría: Se ignoran los errores obtenidos +# en la ejecución de las instrucciones em+ +#: src/main.c:339 +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" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRECTORIO, --include-dir=DIRECTORIO\n" +" Busca dentro del DIRECTORIO los makefiles incluidos.\n" + +# Yo traduciría "infinite" por "infinitos", no por "una infinidad", que +# parece que son muchos menos... sv +# Ok. mm +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Se permiten N trabajos a la vez; si no se " +"especifica un\n" +"argumento son infinitos.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +# No entiendo por qué aquí empleas subjuntivo: "pudieron". sv +# Es incorrecto. Es una de las opciones `k' que dice... mm +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Sigue avanzando aún cuando no se puedan crear " +"algunos objetivos.\n" + +#: src/main.c:350 +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" +" No inicia con trabajos múltiples a menos que la carga esté por debajo " +"de N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Utiliza el último mtime entre los enlaces " +"simbólicos y los objetivos.\n" + +#: src/main.c:355 +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" +" No ejecuta ninguna instrucción; sólo las " +"muestra.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o ARCHIVO, --old-file=ARCHIVO, --assume-old=ARCHIVO\n" +" Supone que ARCHIVO es muy viejo y no lo " +"reconstruye.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TIPO], --output-sync[=TIPO]\n" +" Sincroniza la salida de tareas paralelas por " +"tipo.\n" + +# de 'make' em+ +# ok. mm +#: src/main.c:364 +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" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question No se ejecutan las instrucciones; el estado de " +"salida\n" +" indicará si están actualizados.\n" + +# ¿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 +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Se deshabilitan las reglas implícitas " +"almacenadas internamente.\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 +#: src/main.c:370 +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" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet No muestra las instrucciones.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Muestra las instrucciones (desactiva el modo --" +"silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Desactiva la opción -k.\n" + +# Se *tocan*, ¿no? sv +# Si. mm +# +# Pues entonces cámbialo arriba tambien em+ +# En donde? mm +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Se tocan los objetivos en vez de " +"reconstruirlos.\n" + +# ¿"depurado" o "depuración"? sv +# Puse de depurado para evitar la cacofonía información depuración. +# Sugerencias bienvenidas. mm +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Muestra trazas.\n" + +# Me comería el "Se" inicial. "Muestra la versión..." sv +# Ok. mm +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version Muestra la versión del make y finaliza.\n" + +# Lo mismo. sv +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Muestra el directorio actual.\n" + +# Lo mismo. sv +# Turn off , desactiva o deshabilita , pero no apaga em+ +# apaga luz Mari Luz apaga luz ,que yo no puedo vivir con +# tanta luz ... ( canción tradicional ) ( no lo pude evitar ) em+ +# Juar, Juar, Juar. Coincido, pero el sentido es el mismo. mm +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Desactiva -w, aún cuando haya sido activado " +"implícitamente.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W ARCHIVO, --what-if=ARCHIVO, --new-file=ARCHIVO, --assume-new=ARCHIVO\n" +" Supone que ARCHIVO es infinitamente " +"reciente.\n" + +# Lo mismo. sv +# Todas estas parecen descripciones de opciones. +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Advierte cuando se hace una referencia a una " +"variable no definida.\n" + +# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" +# concuerde bien con esta frase y con la anterior simultáneamente. sv +# No. Ya revisé el fuente y transcribo el trozo pertinente: +# char *message = entering ? "Entering" : "Leaving"; +# if (makelevel == 0) +# printf ("%s: %s ", program, message); +# else +# printf ("%s[%u]: %s ", program, makelevel, message); +# Como notarás lo del directorio va en otro lado. +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "error al escribir: stdout" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "no se permite que una cadena vacía sea el nombre de un archivo" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "se especificó un nivel de depuración desconocido '%s'" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "tipo de sincronización de salida desconocido '%s'" + +# ¿Y Modo de empleo? sv +# Soy medio bestia. Debería hacerlo automático. mm +# "target" es "objetivo", no "objetivos". Fíjate que lleva puntos +# suspensivos, permitiendo así varios objetivos. sv +# Ok. mm +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Modo de empleo: %s [opciones] [objetivo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa fue construido para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa construido para %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Informe sobre los errores a \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" +"%s: Se atrapó una interrupción/excepción (código = 0x%lx, dirección = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Se ha llamado un filtro de excepción no manejado desde el programa %s\n" +"Código de la excepción = %lx\n" +"Banderas de la excepción = %lx\n" +"Dirección de la excepción = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Violación de acceso: operación de escritura en la dirección 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Violación de acceso: operación de lectura en la dirección 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "la función find_and_set_shell() pone el valor del default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" +"la función find_and_set_shell() pone el valor de la ruta de búsceda " +"default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (archivo temporal)" + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"atención: el servidor de tareas no está disponible: se utilizará -j1. Añada " +"'+' a la regla padre del make." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"atención: se fuerza a -j%d en el submake: se restablece el modo de servidor " +"de tareas." + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "" +"El archivo Makefile ha sido especificado dos veces desde la entrada estándard" + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (archivo temporal)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"atención: se fuerza a -j%d en el makefile: se restablece el modo de servidor " +"de tareas." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "" +"Los trabajos en paralelo (-j) no están implementados en esta plataforma." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Reajustando al modo monotarea (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo de sincronización de salida desconocido '%s'" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Los enlaces simbólicos no están implementados: se deshabilitan con -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +# Antes pusiste "makefiles". Coherencia. sv +# Cierto. mm +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Actualizando archivos makefiles....\n" + +# Me comería el "archivo" inicial. +# Ok. mm +# "El Makefile `%s' ..." sv +# Pondría ( como en un mensaje anterior ) se autoreferencia ... em+ +# He puesto makefile con minúsculas , par ser coherentes em+ +# Ok. Es más breve. mm. +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" +"El makefile '%s' podría entrar en bucle; por lo tanto, no se reconstruye.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: fallo al cargar" + +# Lo mismo. sv +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Fallo al reconstruir el makefile '%s'." + +# Lo mismo. sv +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "No se encontró el makefile incluído '%s'." + +# Lo mismo. sv +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "No se encontró el makefile '%s'" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "No se pudo regresar al directorio original." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Re-ejecutando[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL contien más de un objetivo" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "No hay objetivos" + +# Sugerencia: "No se especificó ningún objetivo ... " sv +# Ok. Me gusta. mm +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "No se especificó ningún objetivo y no se encontró ningún makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Actualizando los objetivos finales....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"atención: Se ha detectado una desviación en el reloj. La construcción podría " +"estar incompleta." + +# Me comería el "de" de "requiere de" sv +# Ok. mm +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "la opción '%s%s' requiere un argumento no-vacío de tipo cadena" + +# Me comería el "de" de "requiere de" sv +# Ok. mm +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "la opción '-%c' requiere un argumento positivo y entero" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sEste programa fue construido para %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sEste programa fue construido para %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sLicencia GPLv3+: GNU GPL versión 3 o posterior \n" +"%sEste es software libre: cualquiera es libre para redistribuirlo y " +"modificarlo.\n" +"%sNo existe GARANTÃA ALGUNA, hasta los límites permitidos por las leyes " +"aplicables.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Base de datos del Make, mostrada en %s" + +# make -> Make. sv +# Ok. mm +# Porqué 'del', o pones 'del programa' Make o pones +# 'de Make' em+ +# Ok. mm +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Se termina la base de datos de Make en %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +# Por defecto, como haces arriba em+ +# en efecto, mm +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Se utilizan las instrucciones por omisión para '%s'.\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Se crea el archivo temporal %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (archivo temporal)" + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (archivo temporal)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (archivo temporal)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: se ingresa a un directorio desconocido\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: se sale del directorio desconocido\n" + +# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" +# concuerde bien con esta frase y con la anterior simultáneamente. sv +# No. Ya revisé el fuente y transcribo el trozo pertinente: +# char *message = entering ? "Entering" : "Leaving"; +# if (makelevel == 0) +# printf ("%s: %s ", program, message); +# else +# printf ("%s[%u]: %s ", program, makelevel, message); +# Como notarás lo del directorio va en otro lado. +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: se entra en el directorio '%s'\n" + +# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" +# concuerde bien con esta frase y con la anterior simultáneamente. sv +# No. Ya revisé el fuente y transcribo el trozo pertinente: +# char *message = entering ? "Entering" : "Leaving"; +# if (makelevel == 0) +# printf ("%s: %s ", program, message); +# else +# printf ("%s[%u]: %s ", program, makelevel, message); +# Como notarás lo del directorio va en otro lado. +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: se sale del directorio '%s'\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: se ingresa a un directorio desconocido\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: se sale del directorio desconocido\n" + +# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" +# concuerde bien con esta frase y con la anterior simultáneamente. sv +# No. Ya revisé el fuente y transcribo el trozo pertinente: +# char *message = entering ? "Entering" : "Leaving"; +# if (makelevel == 0) +# printf ("%s: %s ", program, message); +# else +# printf ("%s[%u]: %s ", program, makelevel, message); +# Como notarás lo del directorio va en otro lado. +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: se entra en el directorio '%s'\n" + +# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" +# concuerde bien con esta frase y con la anterior simultáneamente. sv +# No. Ya revisé el fuente y transcribo el trozo pertinente: +# char *message = entering ? "Entering" : "Leaving"; +# if (makelevel == 0) +# printf ("%s: %s ", program, message); +# else +# printf ("%s[%u]: %s ", program, makelevel, message); +# Como notarás lo del directorio va en otro lado. +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: se sale del directorio '%s'\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +# Interrumpido (?). sv +# Mmgmh... El mensaje indica que hubo algún error muy grave y que por +# eso se detiene el make. Probablemente sea mejor dejarlo así. mm +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Alto.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "tipo de sincronización de salida desconocido '%s'" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "creando una tubería de tareas" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplicando una tubería de tareas" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "se inicializa la tubería al servidor de tareas" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "error interno: cadena --jobserver-auth inválida '%s'" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "escribir en el servidor de tareas" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "servidor de tareas detenido" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "tubería de trabajos «pselect»" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "tubería de trabajos leídos" + +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "error interno: cadena --jobserver-auth inválida '%s'" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo de sincronización de salida desconocido '%s'" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +# Sugerencia: eliminar la palabra "archivo". sv +# Ok. Mejora. mm +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Leyendo makefiles...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Leyendo makefile '%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (no hay objetivo por defecto)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (ruta de búsqueda)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (no importa)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (no hay expansión del ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "se salta BOM UTF-8 en el makefile '%s'\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "se salta BOM UTF-8 en el «buffer» del makefile\n" + +# ## Sintaxis no llevaba tilde. +# Ok. mm +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintaxis no válida en condicional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "las instrucciones comenzaron antes del primer objetivo" + +# "falta una regla". sv +# (es que extraviada me suena muy raro). +# Cierto pareciera que se perdió dentro de algún circuito. mm +# Falta 'la' regla em+ +# No no es la regla sino una regla pues puede ser cualquiera de ellas. mm +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "falta una regla antes de las instrucciones" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "falta un separador (¿quiso decir TAB en vez de 8 espacios?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "falta un separador" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "falta un patrón de objetivos" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "hay varios patrones de objetivos" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "el patrón de objetivo no contiene '%%'" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "falta un 'endif'" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "nombre de variable vacío" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "" +"Hay un texto irrelevante o mal colocado después de la instrucción 'define'" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "falta un 'endef', no se terminó un 'define'" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "" +"Hay un texto irrelevante o mal colocado después de la instrucción 'endef'" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "Texto irrelevante o mal colocado después de la instrucción '%s'" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "irrelevante o mal colocado '%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "sólo se admite un 'else' por condicional" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "" +"La definición de las variables específicas al blanco está mal construida" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "" +"los prerequisitos no pueden ser definidos por los guiones de instrucciones" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "los objetivos agrupados deben proporcionar instrucción" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "las reglas implícitas y las de patrón estático están mezcladas" + +# Y 'las' normales em+ +# Ok. mm +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "las reglas implícitas y las normales están mezcladas" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "el objetivo '%s' no coincide con el patrón de objetivos" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "el archivo de objetivos '%s' tiene líneas con : y ::" + +# Cambiaría given por 'proporcionó' o 'indicó' em+ +# Ok. mm +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "el objetivo '%s' se proporcionó más de una vez en la misma regla" + +# No me gusta esta traducción de override. Mira a ver +# si encaja mejor alguna de las dos que se proponen arriba +# em+ +# Aunque no me acaba de convencer, que te parece ésto? mm +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "atención: se anulan las instrucciones para el objetivo '%s'" + +# Ojo con ignora. sv +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "atención: se ignoran las instrucciones viejas para el objetivo '%s'" + +# Y 'las' normales em+ +# Ok. mm +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" +"*** las reglas implícitas y las normales están mezcladas: sintaxis obsoleta" + +# No me gusta esta traducción de override. Mira a ver +# si encaja mejor alguna de las dos que se proponen arriba +# em+ +# Aunque no me acaba de convencer, que te parece ésto? mm +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "atención: se anula pertenencia a grupo al objetivo '%s'" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "atención: hay un carácter NUL; se ignora el resto de la línea" + +# No me gusta esta traducción de override. Mira a ver +# si encaja mejor alguna de las dos que se proponen arriba +# em+ +# Aunque no me acaba de convencer, que te parece ésto? mm +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "atención: se anulan las instrucciones para el objetivo '%s'" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "No se hace nada para '%s'." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' está actualizado." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Se poda el archivo '%s'.\n" + +#: src/remake.c:416 +#, 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" + +# Sugerencia: No hay ninguna regla... sv +# Como una no hay ninguna. mm +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sNo hay ninguna regla para construir el objetivo '%s'%s" + +# ¿target file no sería "archivo objetivo"? sv +# Literalmente si pero un archivo make puede tener varios objetivos. mm +# Max , pero no existe un archivo de objetivos. Esta línea, que es +# de las que aparecen al hacer un make con la opción -d ( debug ) +# se refiere a lo que dice Santiago, es decir, 'archivo objetivo' em+ +# Ok creo que tienen razón. mm +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Se considera el archivo objetivo '%s'.\n" + +# Un compañero mío dice que una buena regla es poner siempre que se pueda +# un número par de comas. +# Es decir: "Se intentó, sin éxito, actualizar ..." +# o bien "Se intentó sin éxito actualizar ..." +# ¿Qué te parece? sv +# Bien y tiene razón. mm +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Se intentó hace poco, sin éxito, actualizar el archivo '%s'.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Ya se ha tenido en cuenta el archivo '%s'.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Se continúa actualizando el archivo '%s'.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Se terminó de actualizar el archivo '%s'.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "El archivo '%s' no existe.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Atención: el archivo .LOW_RESOLUTION_TIME '%s' tiene una marca de tiempo " +"de alta resolución" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "La dependencia '%s' del objetivo '%s' no existe.\n" + +# Por defecto, como haces arriba em+ +# en efecto, mm +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Se utilizan las instrucciones por omisión para '%s'.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +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 +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Se terminaron las dependencias del archivo objetivo '%s'.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Se están construyendo las dependencias de '%s'.\n" + +# Give up no es enfocar, es abandonar, o desistir em+ +# Si, metí la pata. mm +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Se abandona el archivo objetivo '%s'.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Debido a los errores, el objetivo '%s' no se reconstruyó." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "La dependencia '%s' es solo de orden para el objetivo '%s'.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "La dependencia '%s' del objetivo '%s' no existe.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "La dependencia '%s' es más reciente que el objetivo '%s'.\n" + +#: src/remake.c:827 +#, 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 +#: src/remake.c:845 +#, 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" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "No hay instrucciones para '%s' y ninguna dependencia ha cambiado.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Haciendo '%s' debido a la bandera always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "No es necesario reconstruir el objetivo '%s'." + +#: src/remake.c:867 +#, 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 +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Se debe reconstruir el objetivo '%s'.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Se ignora el nombre del VPATH '%s'.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Las instrucciones de '%s' se están ejecutando.\n" + +# Target file no es archivo de objetivos, sino el archivo objetivo +# make no tiene ningún archivo de objetivos em+ +# Ok. mm +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Fallo al reconstruir el archivo objetivo '%s'.\n" + +# Lo mismo em+ +# Ok. mm +#: src/remake.c:916 +#, 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 +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Se necesita reconstruir el archivo objetivo '%s' con la opción -q.\n" + +# Por defecto, como haces arriba em+ +# en efecto, mm +#: src/remake.c:1118 +#, 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 +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "" +"Atención: El archivo '%s' tiene una hora de modificación %s s en el futuro" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "El elemento .LIBPATTERNS '%s' no es un patrón" + +# ¿Las aduanas? sv +# Si, las aduanas de exportación de procesos. Suena rarísimo pero +# revisé el código y todo parece apuntar a que así son las cosas. +# Creo que esto es otra cosa. Custom se refiere a los valores dados +# por el usuario ( customizables ) , y que no se exportarán se refiere +# a que al llamar a otros makefiles, no serán pasados como valores +# que se antepongan ( otro término para override ) a los que make +# tiene por defecto . +# La traducción exacta por tanto es, los valores definidos por el usuario +# no se exportarán em+ +# Muchísimo más claro (es más me gusta más en español que en inglés con tu +# arreglo) mm +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Los valores definidos por el usuario no se exportarán: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Reglas implícitas." + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# No hay reglas implícitas." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u reglas implícitas, %u (%.1f%%) terminal." + +# ## Añado ¡ con tu permiso. sv +# Gracias. mm +# ¿ qué tal erróneo ? em+ +# Si, suena mejor. mm +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "BUG: ¡num_pattern_rules erróneo! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "señal desconocida" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Colgado" + +# ¿ Y por qué no Interrupción ? em+ +# Porque es una acción. De hecho es un mensaje que se envía a través +# del sistema en este caso le enviarías un kill -INT num_proceso para +# interrumpir al programa. Lo revisé contra el fuente. mm +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interrumpir" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Finalizar" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instrucción no válida" + +# Los trap los hemos dejado como traps, simplemente. em+ +# Ok. mm +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Trace/breakpoint trap" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abortado" + +# Ponte de acuerdo con Enrique en cómo se traduce esto. +# Enrique tiene esta misma frase en glibc. sv +# Eso es :) IOT trap em+ +# Ok. mm +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT trap" + +# Otra em+ +# Ok. mm +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT trap" + +# Coma flotante, por favor. sv +# Creeme que aquí lo de coma flotante no vale. Somos pro-yanquis y +# por eso usamos el punto flotante. Debemos llegar a un acuerdo. +# Por ahora pongo coma flotante para facilitar las cosas, pero bajo +# protesta ;-) mm +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Excepción de coma flotante" + +# "Terminado por la señal kill" quedaría un poco más suave ... sv +# Enrique tiene en glibc "Terminado (killed)". sv +# Bueno, creo que mi traducción es más exacta, concisa y clara +# pero si insisten... Además recuerda en que estoy en un país +# en donde asesinado es palabra de todos los días. mm +#: src/signame.c:121 +msgid "Killed" +msgstr "Terminado (killed)" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Error en el bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Fallo de segmentación" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Llamada al sistema errónea" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Tubería rota" + +# ¿Temporizador? (así lo tradujo Enrique en glibc). sv +# Suena como StarTrek. Mejor lo platico con él. A lo mejor +# hasta lo convenzo. mm +# Pues tendrás que darme razones em+ +# 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 +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarma del reloj" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Finalizado" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Señal 1 definida por el usuario" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Señal 2 definida por el usuario" + +# Proceso hijo terminado em+ +# Ok. mm +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Proceso hijo terminado" + +# Fallo. sv +# Alimentación eléctrico em+ +# Ok. mm +#: src/signame.c:156 +msgid "Power failure" +msgstr "Falla de alimentación eléctrica" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Detenido" + +# Enrique hizo una preciosa traducción de este mensaje que, según él, +# mejora el original. Era algo así como: +# "Detenido (requiere entrada de terminal)". sv +# Tiene razón se ve bien. mm +# Requiere 'de';) , como te vea Santiago que le metes +# otro 'de' otra vez ... em+ +# Ok. mm +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Detenido (se requiere entrada de terminal)" + +# lo mismo, se requiere entrada de terminal , em+ +# Ok. mm +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Detenido (se requiere salida de terminal)" + +# idem em+ +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Detenido (se requiere una señal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Se agotó el tiempo de CPU permitido" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Se excedió el tamaño máximo de archivo permitido" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "El contador de tiempo virtual ha expirado" + +# Nunca me enteré de cómo se traducía profile, pero perfil me suena raro. +# ¿De dónde lo has sacado? sv +# Es lo que quiere decir, ni modo. Perfil de un avión es plane profile. +# Por cierto, lo más probable es que esta "traducción" haya que +# modificarla para que sea entendible. mm +# Esto lo tengo en glibc, lo mirare otro día. Estos mensajes no son +# importantes em+ +# Agregué unas palabras en aras de claridad (espero) mm +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "El contador de tiempo para la generación del perfil ha expirado" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "La ventana ha cambiado" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuado" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condición urgente de I/O" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Posible I/O" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Recurso perdido" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Señal de peligro" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Petición de información" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Coprocesador de punto flotante no disponible" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s No hay «buffers» strcache\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s «buffers» strcache: %lu (%lu) / cadenas = %lu / almacenamiento = %lu B / " +"promedio = %lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s «buffer» actual: tamaño = %hu B / utilizado = %hu B / número = %hu / " +"promedio = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" +"%s otros utilizado: total = %lu B / / número = %lu / promedio = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s otros libre: total = %lu B / máx = %lu B / mín = %lu B / promedio = %hu " +"B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s rendimiento de strcache: búsquedas = %lu / coincidencias = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# estadísticas de la tabla «hash»:\n" +"# " + +# Lo he cmabiado em+ +# Ok. Deberíamos platicarlo con Ulrich. mm +#: src/variable.c:1786 +msgid "automatic" +msgstr "automática/o" + +#: src/variable.c:1789 +msgid "default" +msgstr "por defecto" + +#: src/variable.c:1792 +msgid "environment" +msgstr "entorno" + +# Sugerencia: No poner archivo. sv +# Ok. mm +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +# 'bajo -e' = 'con -e activo' em+ +# Ok. Esta inversión en los idiomas sajones se pega. mm +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "con -e activo" + +# Línea de comandos me parece correcto em+ +# Ver arriba. Estoy de acuerdo si así han traducido en otros lados. mm +#: src/variable.c:1801 +msgid "command line" +msgstr "línea de instrucciones" + +# Creo que tendremos un problema con instrucción, comando +# , programa y directiva . Está claro que aquí es directiva em+ +# Ok, pero no deja de sonar a RoboCop. A ver que te parece como quedó. mm +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "directiva 'override'" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (de '%s', línea %lu):" + +# Bueno. Aquí un punto de discusión. Traduzco buckets por cubetas o +# mejor las dejo tal cual? Opiniones bienvenidas. mm +# Estos mensajes son para debug, no creo que haga falta usar cubetas ;) em+ +# Tienes razón, si el debugueador no lo entiende pues, ... que se +# dedique a otra cosa. mm +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# estadísticas del conjunto de variables de la tabla «hash»:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variables\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valores de variables específicas al patrón" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# No hay valores de variables específicas al patrón." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valores de variables específicas al patrón" + +# ¿Qué te parece "atención"? Lo hemos usado mucho en otros programas. sv +# Pero que bestia soy. Perdón por el desbarre. mm +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "atención: la variable '%.*s' no ha sido definida" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "fallo en sys$search() con %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-atención, deberás rehabilitar el manejo del CTRL-Y desde el DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "CD INTEGRADO %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Salida redirigida a %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Agregada a %.*s y limpieza\n" + +# "en sustituto" me suena muy raro. Propongo: "en su lugar" en su lugar :-) sv +# Ok. mm +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "En su lugar, se ejecuta %s\n" + +# ¿Y al revés?: Rutas de búsqueda VPATH. sv +# Mejora +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Rutas de búsqueda VPATH\n" + +# Rutas creo que queda mejor. sv +# Ok. Es más común. mm +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# No hay rutas de búsqueda 'vpath'." + +# ¡Ah! Aquí si que pones el vpath al final, ¿eh? :-) sv +# You really got me! mm +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u rutas de búsqueda 'vpath'.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# No hay ruta de búsqueda general (variable 'VPATH')." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Ruta de búsqueda general (variable 'VPATH'):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Ranuras del servidor de tareas limitads a %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "creando semáforo del servidor de tareas: (Error %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"error interno: no se pudo abrir el semáforo del servidor de tareas '%s': " +"(Error %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Cliente del servidor de tareas (semáforo %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "liberar semáforo del servidor de tareas: (Error %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "semáforo o proceso hijo en espera: (Error %ld: %s)" + +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "tipo de sincronización de salida desconocido '%s'" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nombre de función no válido: %s" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: usuario %lu (real %lu), grupo %lu (real %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Acceso inicializado" + +#~ msgid "User access" +#~ msgstr "Acceso del usuario" + +#~ msgid "Make access" +#~ msgstr "Acceso del Make" + +#~ msgid "Child access" +#~ msgstr "Acceso del hijo" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TIPO] (--output-sync[=TIPO]) no está configurado para este «build»." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Cliente del servidor de tareas (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "tubería al servidor de tareas" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: No se encontró el programa\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: No se encontró el programa\n" + +# ¿Y "el programa Shell"? (a secas) sv +# Si. Suena mucho mejor. mm +# Suena, pero no es mejor. Tal y como esta escrito, incluso +# yo pensaria que me falta un programa en mi sistema que se +# llame shell. No se ha encontrado el 'shell'em+ +# Es bueno contar con una segunda opinión ... mm +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: No se ha encontrado el `shell'" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s está suspendida por 30 segundos..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "se hizo un sleep(30). Continuando.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Error desconocido %d" + +# Ubicada :)) , que tal futura, a secas ? em+ +# Bueno, sonaba como StarTrek, muy chido, pero acepto tu sugerencia. mm +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "" +#~ "Atención: El archivo '%s' tiene una hora de modificación en el futuro" + +#~ msgid " terminal." +#~ msgstr " terminal." + +# No me gusta esta traducción de override. Mira a ver +# si encaja mejor alguna de las dos que se proponen arriba +# em+ +# Aunque no me acaba de convencer, que te parece ésto? mm +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: fallo en las instrucciones para el objetivo '%s'" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Error 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "servidor de tareas duplicado" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Atención: redirección vacía\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "error interno: '%s' command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "INTEGRADA(S) [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "ECO INTEGRADO %s->%s\n" + +# Por defecto, como haces arriba em+ +# en efecto, mm +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Instrucción integrada desconocida '%s'\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "La instrucción integrada se desconoce o no funciona en .ONESHELL: '%s'\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Error, comando vacío\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Entrada redirigida desde %s\n" + +# Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" +# concuerde bien con esta frase y con la anterior simultáneamente. sv +# No. Ya revisé el fuente y transcribo el trozo pertinente: +# char *message = entering ? "Entering" : "Leaving"; +# if (makelevel == 0) +# printf ("%s: %s ", program, message); +# else +# printf ("%s[%u]: %s ", program, makelevel, message); +# Como notarás lo del directorio va en otro lado. +#~ msgid "Redirected error to %s\n" +#~ msgstr "Se redirecciona el error a %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Salida redirigida a %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Error al lanzar el proceso %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "error interno: hay varias opciones --sync-mutex" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "error interno: hay varias opciones --jobserver-fds" + +# Propongo eliminar la palabra virtual. sv +# Pero si es muy bonita. :) Bueno. Como ya platicamos puede que sea +# una buena idea pero, por ahora la dejaría. mm +#~ msgid "virtual memory exhausted" +#~ msgstr "memoria virtual agotada" + +#~ msgid "write error" +#~ msgstr "error al escribir" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "RM INTERCONSTRUIDO %s\n" diff --git a/local/recipes/dev/gnu-make/source/po/fi.gmo b/local/recipes/dev/gnu-make/source/po/fi.gmo new file mode 100644 index 0000000000..c42628617c Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/fi.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/fi.po b/local/recipes/dev/gnu-make/source/po/fi.po new file mode 100644 index 0000000000..a0290aa8fd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/fi.po @@ -0,0 +1,2583 @@ +# Finnish messages for make. +# Copyright (C) 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Lauri Nurmi , 2005, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2021-05-26 23:12+0300\n" +"Last-Translator: Lauri Nurmi \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 2.4.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "yritettiin käyttää ominaisuutta, jolle ei ole tukea: â€%sâ€" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "arkistojäsenten kosketus ei ole mahdollista VMS:ssä" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Arkistoa â€%s†ei ole olemassa" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: â€%s†ei ole kelvollinen arkisto" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Arkistossa â€%1$s†ei ole jäsentä â€%2$sâ€" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: ar_member_touch antoi virheellisen paluuarvon kohteesta â€%sâ€" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() epäonnistui moduulitietojen noutamisessa, tila = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() epäonnistui, tila = %d" + +#: src/arscan.c:261 +#, fuzzy, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "kirjastoa â€%s†ei voi avata jäsenen â€%s†etsimiseksi" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Jäsen â€%sâ€%s: %ld tavua kohdassa %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (nimi voi olla typistynyt)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Päiväys %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, oikeudet = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Reseptissä on liikaa rivejä (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Katkaisu.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Arkistojäsen â€%s†voi olla viallinen – ei poisteta" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Arkistojäsen â€%s†voi olla viallinen – ei poisteta" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Poistetaan tiedosto â€%sâ€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Poistetaan tiedosto â€%sâ€" + +#: src/commands.c:685 +#, fuzzy +msgid "# recipe to execute" +msgstr "# käynnisetttävät komennot" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (sisäänrakennettu):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (tiedosto â€%sâ€, rivi %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Hakemistot\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: tilaa ei voitu lukea.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (avain %s, maika %d): ei voitu avata.\n" + +#: src/dir.c:1126 +#, 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" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (laite %ld, i-solmu %ld): ei voitu avata.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (avain %s, maika %d: " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (laite %d, i-solmu [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (laite %ld, i-solmu %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ei" + +# Juuri näin, muodostetaan käännöslause yksittäisistä sanoista... +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " tiedostoa, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ei" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " mahdottomuutta" + +#: src/dir.c:1180 +msgid " so far." +msgstr " tähän mennessä." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " mahdottomuutta %lu hakemistossa.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Rekursiivinen muuttuja â€%s†viittaa (lopulta) itseensä" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "päättämätön muuttujaviittaus" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Tiedostolle â€%s†määriteltiin resepti paikassa %s:%lu," + +#: src/file.c:277 +#, fuzzy, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "Tiedostolle â€%s†löytyi komentoja oletussääntöhaussa," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "mutta â€%sâ€:n katsotaan nyt olevan sama tiedosto kuin â€%sâ€." + +#: src/file.c:284 +#, fuzzy, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" +"Tiedoston â€%s†komentoja ei huomioida, vaan käytetään komentoja tiedostosta " +"â€%sâ€." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Poistetaan aputiedosto â€%sâ€" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Poistetaan aputiedostot...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Tämänhetkinen aika" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Aikaleima ei ole sallitulla välillä, korvataan %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ei kohde:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Valekohde (ennakkoehto .PHONY:lle)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Komentorivikohde." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Oletus-, MAKEFILES- tai -include/sinclude -makefile-tiedosto." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Sisäänrakennettu sääntö" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Oletussääntöhaku on suoritettu." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Oletussääntöhakua ei ole suoritettu." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Tiedosto on välitason ennakkoehto." + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Valekohde (ennakkoehto .PHONY:lle)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Tuotetaan myös:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Muutosaikaa ei koskaan tarkastettu." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Tiedosto ei ole olemassa." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Tiedosto on hyvin vanha." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Viimeksi muutettu %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Tiedosto on päivitetty." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Tiedostoa ei ole päivitetty." + +#: src/file.c:1139 +#, fuzzy +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Ajossa olevat komennot (TÄMÄ ON OHJELMISTOVIKA)." + +#: src/file.c:1142 +#, fuzzy +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Ajossa olevat riippuvuuskomennot (TÄMÄ ON OHJELMISTOVIKA)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Päivitetty onnistuneesti." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Vaatii päivitystä (-q on asetettu)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Päivitys epäonnistui." + +#: src/file.c:1163 +#, fuzzy +msgid "# Invalid value in 'command_state' member!" +msgstr "# Virheellinen arvo â€command_stateâ€-jäsenessä!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Tiedostot" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# tilasto tiedostojen hajautustaulusta:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Kenttää â€%s†ei välimuistitettu: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "ei-numeerinen ensimmäinen argumentti â€wordâ€-funktiolle" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "â€wordâ€-funktion ensimmäisen argumentin on oltava suurempi kuin 0" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "ei-numeerinen ensimmäinen argumentti â€wordlistâ€-funktiolle" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "ei-numeerinen toinen argumentti â€wordlistâ€-funktiolle" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "ei-numeerinen ensimmäinen argumentti â€wordlistâ€-funktiolle" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "ei-numeerinen toinen argumentti â€wordlistâ€-funktiolle" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) epäonnistui (v=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) epäonnistui (v=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() epäonnistui (v=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() epäonnistui\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Siivotaan väliaikainen komentotiedosto %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "tiedosto: tiedostonimi puuttuu" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "tiedosto: liian monta argumenttia" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "tiedosto: virheellinen tiedostotoiminto: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "liian vähän (%d) argumentteja funktiolle â€%sâ€" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ei toteutettu tällä alustalla: funktio â€%sâ€" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "päättämätön kutsu funktioon â€%sâ€: puuttuva â€%câ€" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Tyhjä funktionimi" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Virheellinen funktionimi: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Funktionimi on liian pitkä: %s" + +#: src/function.c:2798 +#, fuzzy, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Virheellinen vähimmäisargumenttimäärä (%d) funktiolle %s" + +#: src/function.c:2801 +#, fuzzy, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Virheellinen enimmäisargumenttimäärä (%d) funktiolle %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: valitsin â€%s†on moniselitteinen\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: valitsin â€--%s†ei salli argumenttia\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: valitsin â€%c%s†ei salli argumenttia\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: valitsin â€%s†vaatii argumentin\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: tunnistamaton valitsin â€--%sâ€\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: tunnistamaton valitsin â€%c%sâ€\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: virheellinen valitsin -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: virheellinen valitsin -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: valitsin vaatii argumentin -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: valitsin â€-W %s†on moniselitteinen\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: valitsin â€-W %s†ei salli argumenttia\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Lavennetaan â€%sâ€\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Lavennetaan â€%sâ€\n" + +#: src/hash.c:50 +#, fuzzy, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "ei voida varata %ld tavua hajautustaululle: muisti lopussa" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Kuormitus=%lu/%lu=%.0f %%, " + +#: src/hash.c:282 +#, fuzzy, c-format +msgid "Rehash=%u, " +msgstr "Uudelleenhajautus=%d, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Törmäykset=%lu/%lu=%.0f %%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Etsitään oletussääntöä kohteelle â€%sâ€.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Etsitään arkistojäsenen oletussääntöä kohteelle â€%sâ€.\n" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Etsitään arkistojäsenen oletussääntöä kohteelle â€%sâ€.\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Vältetään oletussääntörekursio.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Kokeillaan hahmosääntöä rungolla â€%.*sâ€.\n" + +#: src/implicit.c:506 +#, fuzzy, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Liian pitkä runko: â€%.*sâ€.\n" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Hylätään mahdoton säännön ennakkoehto â€%sâ€.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Hylätään mahdoton oletusennakkoehto â€%sâ€.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Yritetään käyttää säännön ennakkoehtoa â€%sâ€.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Yritetään käyttää oletusennakkoehtoa â€%sâ€.\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Tiedosto â€%s†ei ole olemassa.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" +"%1$sâ€%3$sâ€-kohteen tarvitseman kohteen â€%2$s†tuottamiseen ei ole sääntöä%4$s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Kohteen â€%2$s†ennakkoehto â€%1$s†ei ole olemassa.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Löydettiin ennakkoehto â€%sâ€, joka on VPATH â€%sâ€\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Etsitään sääntöä aputiedostolla â€%sâ€.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Etsitään sääntöä aputiedostolla â€%sâ€.\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Hylätään mahdoton säännön ennakkoehto â€%sâ€.\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Kohteelle â€%s†ei löytynyt oletussääntöä.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Kohteelle â€%s†löytyi oletussääntö.\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Etsitään oletussääntöä kohteelle â€%sâ€.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Kohteelle â€%s†ei löytynyt oletussääntöä.\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "Väliaikaistiedoston luominen ei onnistu\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (muisti vedostettu)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ei huomioida)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Virhe %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Odotetaan keskeneräisiä töitä...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (etä)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Siivotaan väliaikainen komentotiedosto %s\n" + +#: src/job.c:972 +#, fuzzy, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Siivotaan väliaikainen komentotiedosto %s\n" + +#: src/job.c:1083 +#, fuzzy, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Poistetaan ketjusta lapsiprosessi 0x%08lx PID %ld%s.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1583 src/job.c:2497 +#, 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" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Laskettiin %d argumenttia epäonnistuneessa käynnistyksessä\n" + +#: src/job.c:1650 +#, 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" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1909 +#, fuzzy, c-format +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" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: kohde â€%s†ei ole olemassa" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "kuormarajoja ei voi ottaa käyttöön tässä käyttöjärjestelmässä" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "kuormarajaa ei voi ottaa käyttöön: " + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"tiedostokahvoja ei ole enempää: vakiosyötteen kahdentaminen ei onnistunut\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"tiedostokahvoja ei ole enempää: vakiotulosteen kahdentaminen epäonnistui\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"tiedostokahvoja ei ole enempää: vakiovirhetulosteen kahdentaminen ei " +"onnistunut\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Vakiosyötettä ei voitu palauttaa\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Vakiotulostetta ei voitu palauttaa\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Vakiovirhetulostetta ei voitu palauttaa\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: ympäristötila saattaa olla lopussa" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL muuttunut (oli â€%sâ€, nyt â€%sâ€)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Luodaan väliaikainen komentotiedosto %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Komentojonotiedoston sisältö:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Komentojonotiedoston sisältö:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, 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" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Ladattua objektia %s ei ole esitelty GPL-yhteensopivaksi" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Rinnakkaiset työt (-j) eivät ole tuettuja tällä alustalla." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Valitsimet:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" +" -b, -m Yhteensopivuuden vuoksi jätetään huomiotta.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Tuota kaikki kohteet ehdoitta.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C HAKEMISTO, --directory=HAKEMISTO\n" +" Siirry HAKEMISTOon ennen jatkamista.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Näytä runsaasti vianetsintätietoja.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr " --debug[=LIPUT] Näytä monenlaisia vianetsintätietoja.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Ympäristömuuttujat kumoavat makefile-" +"tiedostot.\n" + +#: src/main.c:332 +#, fuzzy +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E MJONO, --eval=MJONO Lavenna MJONO makefile-lausekkeena.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f TIEDOSTO, --file=TIEDOSTO, --makefile=TIEDOSTO\n" +" Käytä TIEDOSTOa makefile-tiedostona.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Näytä tämä viesti ja poistu.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" +" -i, --ignore-errors Älä huomioi suoritettujen reseptien virheitä.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I HAKEMISTO, --include-dir=HAKEMISTO\n" +" Etsi sisällytettäviä makefile:ja " +"HAKEMISTOsta.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Salli N yhtäaikaista työtä; ilman N:ää " +"ääretön.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +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" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Älä aloita useita töitä ellei kuormitus alle " +"N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Käytä uusinta mtime-aikaa symlinkkien ja\n" +" kohteen välillä.\n" + +#: src/main.c:355 +#, fuzzy +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" +" -n, --just-print, --dry-run, --recon\n" +" Näytä ajettavat komennot, älä käynnistä " +"niitä.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o TIEDOSTO, --old-file=TIEDOSTO, --assume-old=TIEDOSTO\n" +" Käsittele TIEDOSTO vanhana, älä tuota sitä.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base Näytä make:in sisäinen tietokanta.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Älä aja reseptiä; paluuarvo kertoo ajan-\n" +" tasaisuuden.\n" + +#: src/main.c:368 +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" + +#: src/main.c:370 +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" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +#, fuzzy +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Älä kaiuta komentoja.\n" + +#: src/main.c:377 +#, fuzzy +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" -q, --question Älä aja komentoja; paluuarvo kertoo ajan-\n" +" tasaisuuden.\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Kumoaa valitsimen -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr " -t, --touch Kosketa kohteita tuottamisen sijaan.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Näytä jäljitystietoja.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version Näytä make:in versionumero ja poistu.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Näytä nykyinen hakemisto.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Kumoa -w, vaikka se olisi käytössä " +"oletuksena.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W TIEDOSTO, --what-if=TIEDOSTO, --new-file=TIEDOSTO, --assume-" +"new=TIEDOSTO\n" +" Käsittele TIEDOSTO aina uutena.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Varoita viittauksista määrittelemättömiin\n" +" muuttujiin.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "kirjoitusvirhe: vakiotuloste" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "tyhjä merkkijono ei kelpaa tiedostonimeksi" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "tuntematon vianetsintätason määritys â€%sâ€" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Käyttö: %s [valitsimet] [kohde] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Tämä ohjelma on käännetty järjestelmälle %s.\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Tämä ohjelma on käännetty järjestelmälle %s (%s).\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Ilmoita ohjelmistovioista (englanniksi) osoitteeseen .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Keskeytys/poikkeus siepattu (koodi = 0x%lx, osoite = 0x%p)\n" + +#: src/main.c:947 +#, fuzzy, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Ohjelmasta %s kutsuttiin käsittelemätöntä poikkeussuodinta\n" +"Poikkeuskoodi = %x\n" +"Poikkeusliput = %x\n" +"Poikkeusosoite = %x\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Suojausvirhe: kirjoitusoperaatio osoitteeseen 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Suojausvirhe: lukuoperaatio osoitteeseen 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, fuzzy, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell asettaa default_shell = %s\n" + +#: src/main.c:1098 +#, 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" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (väliaikaistiedosto): " + +#: src/main.c:1833 +#, fuzzy, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"varoitus: työpalvelin ei käytettävissä: käytetään -j1. Lisää â€+†ylemmän " +"tason make-sääntöön." + +#: src/main.c:1841 +#, fuzzy, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "varoitus: -jN pakotettu ali-make:ssa: poistetaan työpalvelin käytöstä." + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile-tiedosto vakiosyötteestä määritelty kahdesti." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (väliaikaistiedosto)" + +#: src/main.c:2095 +#, fuzzy, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "varoitus: -jN pakotettu ali-make:ssa: poistetaan työpalvelin käytöstä." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Rinnakkaiset työt (-j) eivät ole tuettuja tällä alustalla." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Palataan yhden työn (-j1) tilaan." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Ei tukea symbolisille linkeille: poistetaan -L käytöstä." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Päivitetään makefile-tiedostoja....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" +"Ei uudelleentuoteta makefile-tiedostoa â€%s†– vältetään mahdollinen ikuinen " +"silmukka.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: lataaminen epäonnistui" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Makefile-tiedoston â€%s†uudelleentuottaminen epäonnistui." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Sisällytettyä makefile-tiedostoa â€%s†ei löytynyt." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile-tiedostoa â€%s†ei löytynyt" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Ei voitu siirtyä takaisin alkuperäiseen hakemistoon." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Uudelleenkäynnistetään[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL sisältää yli yhden kohteen" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Ei kohteita" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Kohteita ei ole annettu, eikä makefileä löytynyt" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"varoitus: Havaittu väärä kellonaika. Koonnos saattaa olla epätäydellinen." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "valitsin â€%s%s†vaatii ei-tyhjän merkkijonoargumentin" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "valitsin â€-%c†vaatii positiivisen kokonaislukuargumentin" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sTämä ohjelma on käännetty järjestelmälle %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sTämä ohjelma on käännetty järjestelmälle %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make-tietokanta, tulostettu %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Make-tietokanta saatu valmiiksi %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Käytetään oletuskomentoja kohteelle â€%sâ€.\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Luodaan väliaikainen komentotiedosto %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (väliaikaistiedosto): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (väliaikaistiedosto)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (väliaikaistiedosto)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Siirrytään tuntemattomaan hakemistoon\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Poistutaan tuntemattomasta hakemistosta\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Siirrytään hakemistoon â€%sâ€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Poistutaan hakemistosta â€%sâ€\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Siirrytään tuntemattomaan hakemistoon\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Poistutaan tuntemattomasta hakemistosta\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Siirrytään hakemistoon â€%sâ€\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Poistutaan hakemistosta â€%sâ€\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Seis.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "sisäinen virhe: virheellinen --jobserver-fds -merkkijono â€%sâ€" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "luodaan työputki" + +#: src/posixos.c:201 src/posixos.c:434 +#, fuzzy +msgid "duping jobs pipe" +msgstr "luodaan työputki" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "alustetaan työpalvelimen putki" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "sisäinen virhe: virheellinen --jobserver-fds -merkkijono â€%sâ€" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "työpalvelimen kirjoitus" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +#, fuzzy +msgid "pselect jobs pipe" +msgstr "työputken luku" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "työputken luku" + +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "sisäinen virhe: virheellinen --jobserver-fds -merkkijono â€%sâ€" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Luetaan makefile-tiedostoja...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Luetaan makefile-tiedosto â€%sâ€" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr "" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (hakupolku)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ei välitetä)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (ei ~-laajennusta)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "Ohitetaan UTF-8-BOM makefile-tiedostossa â€%sâ€\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Ohitetaan UTF-8-BOM makefile-puskurissa\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "virheellinen syntaksi ehtolauseessa" + +#: src/read.c:1002 +#, fuzzy, c-format +msgid "recipe commences before first target" +msgstr "komennot alkavat ennen ensimmäistä kohdetta" + +#: src/read.c:1053 +#, fuzzy, c-format +msgid "missing rule before recipe" +msgstr "puuttuva sääntö ennen komentoja" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "puuttuva erotin (tarkoititko sarkainta eikä kahdeksaa välilyöntiä?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "puuttuva erotin" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "puuttuva kohdehahmo" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "useita kohdehahmoja" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "kohdehahmo ei sisällä â€%%â€-merkkiä" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "puuttuva â€endifâ€" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "tyhjä muuttujan nimi" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "ylimääräistä tekstiä â€endefâ€-toimintaohjeen jälkeen" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "puuttuva â€endefâ€, päättämätön â€defineâ€" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "ylimääräistä tekstiä â€endefâ€-toimintaohjeen jälkeen" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "ylimääräistä tekstiä â€%sâ€-toimintaohjeen jälkeen" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "ylimääräinen â€%sâ€" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "vain yksi â€else†ehtolausetta kohden" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Väärin muotoiltu kohdekohtainen muuttujamäärittely" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +# skripti? +#: src/read.c:2039 +#, fuzzy, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "ennakkoehtoja ei voi määritellä komentoskripteissä" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "kohde â€%s†ei täsmää kohdehahmon kanssa" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "kohdetiedostolla â€%s†on sekä :- että ::-merkinnät" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "kohde â€%s†annettu yli yhden kerran samassa säännössä" + +#: src/read.c:2186 +#, fuzzy, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "varoitus: syrjäytetään kohteen â€%s†komennot" + +#: src/read.c:2189 +#, fuzzy, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "varoitus: ei huomioida vanhoja komentoja kohteelle â€%sâ€" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" + +#: src/read.c:2325 +#, fuzzy, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "varoitus: syrjäytetään kohteen â€%s†komennot" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "varoitus: havaittu NUL-merkki, rivin loppuosaa ei huomioida" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "varoitus: syrjäytetään kohteen â€%s†komennot" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Kohteelle â€%s†ei tarvitse tehdä mitään." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "â€%s†on ajan tasalla." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Karsitaan tiedosto â€%sâ€.\n" + +#: src/remake.c:416 +#, 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" + +#: src/remake.c:426 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sKohteen â€%s†tuottamiseen ei ole sääntöä%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Tarkastellaan kohdetiedostoa â€%sâ€.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Tiedoston â€%s†päivitysyritys epäonnistui äskettäin.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Tiedostoa â€%s†on jo tarkasteltu.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Päivitetään edelleen tiedostoa â€%sâ€.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Tiedoston â€%s†päivitys valmistui.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Tiedosto â€%s†ei ole olemassa.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Varoitus: .LOW_RESOLUTION_TIME-tiedostolla â€%s†on korkearesoluutioinen " +"aikaleima" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Kohteen â€%2$s†ennakkoehto â€%1$s†ei ole olemassa.\n" + +#: src/remake.c:558 +#, fuzzy, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Käytetään oletuskomentoja kohteelle â€%sâ€.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Kehäriippuvuus %s <- %s hylätty." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Kohdetiedoston â€%s†ennakkoehdot täytetty.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Kohteen â€%s†ennakkoehtoja täytetään.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Luovutaan kohdetiedostosta â€%sâ€.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Kohdetta â€%s†ei tuotettu uudelleen virheiden vuoksi." + +#: src/remake.c:814 +#, fuzzy, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Ennakkoehto â€%s†on vanhempi kuin kohde â€%sâ€.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Kohteen â€%2$s†ennakkoehto â€%1$s†ei ole olemassa.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Ennakkoehto â€%s†on uudempi kuin kohde â€%sâ€.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Ennakkoehto â€%s†on vanhempi kuin kohde â€%sâ€.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Tuotetaan â€%sâ€, koska always-make-lippu on käytössä.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Ei tarvetta uudelleentuottaa kohdetta â€%sâ€" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; käytetään VPATH-nimeä â€%sâ€" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Kohde â€%s†on tuotettava uudelleen.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Ei huomioida VPATH-nimeä â€%sâ€.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Kohdetiedoston â€%s†uudelleentuottaminen epäonnistui.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Kohdetiedosto â€%s†uudelleentuotettiin onnistuneesti.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Käytetään oletuskomentoja kohteelle â€%sâ€.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Varoitus: Tiedoston â€%s†muutosaika on %s sekuntia tulevaisuudessa" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS-elementti â€%s†ei ole hahmo" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Oletussäännöt" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Ei oletussääntöjä." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u oletussääntöä, %u (%.1f %%) päättyvää." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "VIKA: num_pattern_rules on väärä! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "tuntematon signaali" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Linjankatkaisu" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Keskeytys" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Lopetettu" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Virheellinen käsky" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Jäljitys/katkaisupisteansa" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Keskeytetty" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT-ansa" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT-ansa" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Liukulukupoikkeus" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Tapettu" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Väylävirhe" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Muistialueen ylitys" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Virheellinen järjestelmäkutsu" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Katkennut putki" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Herätyskello" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Päätetty" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Käyttäjän määrittelemä signaali 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Käyttäjän määrittelemä signaali 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Lapsi lopetti" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Sähkökatko" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Pysäytetty" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Pysäytetty (päätteen syöte)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Pysäytetty (päätteen tuloste)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Pysäytetty (signaali)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Suoritinaikaraja ylittynyt" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Tiedoston kokoraja ylitetty" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtuaaliajastin vanhentunut" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profilointiajastin vanhentunut" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Ikkuna vaihtunut" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Jatkettu" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Kiireellinen I/O-tilanne" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O mahdollista" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resurssi menetetty" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Vaarasignaali" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Tietopyyntö" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Käytettävissä ei ole liukulukusuoritinta" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# tilasto tiedostojen hajautustaulusta:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automaattinen" + +#: src/variable.c:1789 +msgid "default" +msgstr "oletus" + +#: src/variable.c:1792 +msgid "environment" +msgstr "ympäristö" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "-e:n alainen ympäristö" + +#: src/variable.c:1801 +msgid "command line" +msgstr "komentorivi" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "â€overrideâ€-toimintaohje" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (tiedosto â€%sâ€, rivi %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# muuttujajoukon hajautustaulutilastot:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Muuttujat\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Hahmokohtaisia muuttujien arvoja" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Ei hahmokohtaisia muuttuja-arvoja." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u hahmokohtaista muuttuja-arvoa" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "varoitus: määrittelemätön muuttuja â€%.*sâ€" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search epäonnistui arvolla %d\n" + +#: src/vmsjobs.c:244 +#, 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" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "SISÄÄNRAKENNETTU CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, fuzzy, c-format +msgid "Append output to %s\n" +msgstr "Tuloste uudelleenohjattu kohteeseen %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Käynnistetään sen sijaan %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH-hakupolut\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Ei â€vpathâ€-hakupolkuja." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u â€vpathâ€-hakupolkua.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ei yleistä (â€VPATHâ€-muuttuja) hakupolkua." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Yleinen (â€VPATHâ€-muuttuja) hakupolku:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Virheellinen funktionimi: %s" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: käyttäjä %lu (todellinen %lu), ryhmä %lu (todellinen %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Alkuperäiset käyttöoikeudet" + +#~ msgid "User access" +#~ msgstr "Käyttäjän käyttöoikeudet" + +#~ msgid "Make access" +#~ msgstr "Make-prosessin käyttöoikeudet" + +#~ msgid "Child access" +#~ msgstr "Lapsiprosessin käyttöoikeudet" + +#, fuzzy +#~| msgid "init jobserver pipe" +#~ msgid "jobserver pipeline" +#~ msgstr "alustetaan työpalvelimen putki" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: Komentoa ei löytynyt\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Komentoa ei löytynyt\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Kuoriohjelmaa ei löytynyt" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s keskeytyy 30 sekunniksi..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) valmis. Jatketaan.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Tuntematon virhe %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Varoitus: Tiedoston â€%s†muutosaika on tulevaisuudessa" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Virhe 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "kaksinkertainen työpalvelin" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Varoitus: Tyhjä uudelleenohjaus\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "sisäinen virhe: â€%s†command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "SISÄÄNRAKENNETTU [%s][%s]\n" + +#, fuzzy +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "SISÄÄNRAKENNETTU CD %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Tuntematon sisäänrakennettu komento â€%sâ€\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Virhe, tyhjä komento\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Syöte uudelleenohjattu kohteesta %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Virhetuloste uudelleenohjattu kohteeseen %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Tuloste uudelleenohjattu kohteeseen %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Virhe käynnistyksessä, %d\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ä." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Palautetaan make yhden työn tilaan." + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "sisäinen virhe: useitan --jobserver-fds -valitsimia" + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sTämä on vapaa ohjelmisto; katso kopiointiehdot lähdekoodista.\n" +#~ "%sTakuuta EI ole, ei edes KAUPALLISESTI HYVÄKSYTTÄVÄSTÄ LAADUSTA tai\n" +#~ "%sSOPIVUUDESTA TIETTYYN TARKOITUKSEEN.\n" + +#~ msgid "virtual memory exhausted" +#~ msgstr "virtuaalimuisti lopussa" + +#~ msgid "write error" +#~ msgstr "kirjoitusvirhe" + +#~ msgid "extraneous `endef'" +#~ msgstr "ylimääräinen â€endefâ€" + +#~ msgid "empty `override' directive" +#~ msgstr "tyhjä â€overrideâ€-toimintaohje" + +#~ msgid "invalid `override' directive" +#~ msgstr "virheellinen â€overrideâ€-toimintaohje" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-varoitus, Ctrl-Y jättää aliprosessi(n/t) käyntiin.\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "SISÄÄNRAKENNETTU RM %s\n" + +#~ msgid "Syntax error, still inside 'â€'\n" +#~ msgstr "Syntaksivirhe, edelleen â€:n sisällä\n" diff --git a/local/recipes/dev/gnu-make/source/po/fr.gmo b/local/recipes/dev/gnu-make/source/po/fr.gmo new file mode 100644 index 0000000000..3cb2e38340 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/fr.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/fr.po b/local/recipes/dev/gnu-make/source/po/fr.po new file mode 100644 index 0000000000..4076a2e78a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/fr.po @@ -0,0 +1,2917 @@ +# Messages français pour make. +# Copyright © 2010 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# 30-juillet-2001, n'avons plus de nouvelle de Marc depuis 5 janvier 1997 +# Marc Baudoin , Frédéric Liné , 1996. +# Michel Robitaille , 1996-2006 +# Christophe Combelles , 2009, 2010 +# Kévin Raymond , 2012-2016, 2018, 2020 +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2020-05-25 08:54+0200\n" +"Last-Translator: Kévin Raymond \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.3\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "tentative d'utiliser une fonctionnalité non prise en charge : « %s »" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "impossible de modifier la date d'un membre d'une archive sur VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch : l'archive « %s » n'existe pas" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch : « %s » n'est pas une archive valide" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch : le membre « %s » n'existe pas dans « %s »" + +#: src/ar.c:168 +#, 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 »" + +#: src/arscan.c:130 +#, 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" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() a échoué avec un code = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"impossible d'ouvrir la bibliothèque « %s » pour récupérer le statut du " +"membre « %d »" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Membre `%s'%s : %ld octets à %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (le nom peut être tronqué)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Date %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mode = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "La recette contient trop de lignes (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Arrêt.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "" +"*** [%s] le membre « %s » de l'archive peut avoir un problème ; il n'a pas " +"été supprimé" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "" +"*** Le membre « %s » de l'archive peut avoir un problème ; il n'a pas été " +"supprimé" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Suppression du fichier « %s »" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Suppression du fichier « %s »" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# recette à exécuter" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (commande interne) :" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (de « %s », ligne %lu) : \n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Répertoires\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: « stat » impossible.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (clé %s, mtime %I64u) : ouverture impossible.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : ouverture impossible.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (périphérique %ld, inode %ld) : ouverture impossible.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (clé %s, mtime %I64u) : " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (périphérique %ld, inode %ld) : " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Aucun" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " fichier(s), " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "aucune" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " impossibilité(s)" + +#: src/dir.c:1180 +msgid " so far." +msgstr " jusqu'ici." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " impossibilités dans %lu répertoires.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "La variable récursive « %s » se référence elle-même (à la fin)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "référence incomplète à une variable" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Une recette a été spécifiée pour le fichier « %s » dans %s : %lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"La recette pour le fichier « %s » a été trouvée par une recherche de règle " +"implicite," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "" +"mais « %s » est maintenant considéré comme étant le même fichier que « %s »." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "La recette pour « %s » sera ignorée en faveur de celle pour « %s »." + +#: src/file.c:304 +#, 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 »" + +#: src/file.c:310 +#, 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 »" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Suppression du fichier intermédiaire « %s »" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Suppression des fichiers intermédiaires...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Heure actuelle" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s : horodatage hors limite ; remplacement par %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Pas une cible :" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Fichier précieux (dépendance de .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Cible factice (dépendance de .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Cible de la ligne de commande." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Une valeur par défaut, MAKEFILES ou -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Pas de règle interne" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# La recherche de règle implicite a été effectuée." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# La recherche de règle implicite n'a pas été effectuée." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Préfixe de motif implicite ou statique : « %s »\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Le fichier est une dépendance intermédiaire." + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Fichier précieux (dépendance de .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Cible factice (dépendance de .PHONY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Fabrique également :" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Heure de modification jamais vérifiée." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Le fichier n'existe pas." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Le fichier est très ancien." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Dernière modification %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Le fichier a été mis à jour." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Le fichier n'a pas été mis à jour." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Recette en cours d'exécution (CECI EST UNE ANOMALIE)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "" +"# Recette de dépendances en cours d'exécution (CECI EST UNE ANOMALIE)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Mise à jour réussie." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# À besoin d'être mis à jour (l'option -q est activée)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# N'a pas pu être mis à jour." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valeur non valable dans le membre « command_state » !" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Fichiers" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# stats des tables de hachage des fichiers :\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s : le champ « %s » n'est pas en cache : %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "le premier argument de la fonction « word » doit être numérique" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "le premier argument de la fonction « word » doit être supérieur à 0" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "le premier argument de la fonction « wordlist » doit être numérique" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "le deuxième argument de la fonction « wordlist » doit être numérique" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "le premier argument de la fonction « wordlist » doit être numérique" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "le deuxième argument de la fonction « wordlist » doit être numérique" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe : DuplicateHandle(In) a échoué (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe : DuplicateHandle(Err) a échoué (e=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() a échoué (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe() : process_init_fd() a échoué\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Nettoyage du fichier de commandes temporaire %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file : fichier manquant" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open : %s : %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write : %s : %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close : %s : %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file : trop d'arguments" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read : %s : %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file : opération invalide : %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "non implémenté sur cette plateforme : fonction « %s »" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "appel à la fonction « %s » non terminé : « %c » manquant" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Nom de fonction absent" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nom de fonction invalide : %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Nom de fonction trop long : %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Nombre d'arguments insuffisant (%u) pour la fonction %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Nombre d'arguments excessif (%u) pour la fonction %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s : l'option « %s » est ambiguë\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s : l'option « --%s » ne prend pas d'argument\n" + +#: src/getopt.c:688 +#, 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" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s : l'option « %s » nécessite un argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s : option non reconnue « --%s »\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s : option non reconnue « %c%s »\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s : option non admise -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s : option incorrecte -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s : l'option nécessite un argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s : l'option « -W %s » est ambiguë\n" + +#: src/getopt.c:862 +#, 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" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile : expansion de « %s »\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile : évaluation de « %s »\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"impossible d'allouer %lu octets pour la table de hachage : mémoire épuisée" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Charge=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Collisions=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Recherche d'une règle implicite pour « %s ».\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Recherche d'une règle implicite de membre d'archive pour « %s ».\n" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Recherche d'une règle implicite de membre d'archive pour « %s ».\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Évitement de récursion dans une règle implicite.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Essai du motif avec « %.*s » comme radical.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Motif trop long : « %s%.*s ».\n" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Rejet d'une dépendance de règle impossible « %s ».\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Rejet d'une dépendance implicite impossible « %s ».\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Essai de la dépendance de règle « %s ».\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Essai de la dépendance implicite « %s ».\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Le fichier « %s » n'existe pas.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s : mise à jour de la cible « %s » causée par : %s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Dépendance trouvée « %s » comme VPATH « %s »\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Recherche d'une règle contenant le fichier intermédaire « %s ».\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Recherche d'une règle contenant le fichier intermédaire « %s ».\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Rejet d'une dépendance de règle impossible « %s ».\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Pas de règle implicite trouvée pour « %s ».\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Règle implicite trouvée pour « %s ».\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Recherche d'une règle implicite pour « %s ».\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Pas de règle implicite trouvée pour « %s ».\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "Impossible de créer un fichier temporaire\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (core dump créé)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorée)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s : %s] Erreur %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Attente des tâches non terminées...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Processus fils actif %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (distant)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Récolte du processus fils gagnant %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Récolte du processus fils perdant %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Nettoyage du fichier de commande temporaire %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Le nettoyage du fichier de commandes temporaire %s a échoué (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Retrait du processus fils %p PID %s%s de la chaîne.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Jeton relâché pour le processus fils %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, 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" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"%d arguments comptés lors du lancement échoué\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Ajout du processus fils %p (%s) PID %s%s à la chaîne.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Jeton obtenu pour le processus fils %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s : mise à jour de la cible « %s » causée par : %s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s : la cible « %s » n'existe pas" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "" +"impossible d'imposer des limites de charge sur ce système d'exploitation" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "impossible d'imposer des limites de charge : " + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"plus d'identificateur de fichier disponible : impossible de dupliquer stdin\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"plus d'identificateur de fichier disponible : impossible de dupliquer " +"stdout\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"plus d'identificateurs de fichier disponible : impossible de dupliquer " +"stderr\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Impossible de restaurer stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Impossible de restaurer stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Impossible de restaurer stderr\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" +"make a récolté le processus fils pid %s, toujours en attente du pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe : l'espace d'environnement est peut-être épuisé" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL a été modifié (de « %s » à « %s »)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Création d'un fichier de commande temporaire %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Contenu du fichier de commande :\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Contenu du fichier Batch :%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, 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" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Echec de l'ouverture de la table des symboles générale : %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "L'objet chargé « %s » n'est pas déclaré compatible avec la GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Echec du chargement du symbole %s à partir de %s : %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nom du symbole absent pour l'opération « load » : %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Chargement du symbole %s à partir de %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "" +"Les opérations « load » ne sont pas prises en charge sur cette plateforme." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Options :\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignoré pour compatibilité.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" +" -B, --always-make Fabriquer toutes les cibles sans condition.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C RÉPERTOIRE, --directory=RÉPERTOIRE\n" +" Se placer dans le RÉPERTOIRE avant toute " +"action.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d Afficher beaucoup d'informations de débogage.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=FLAGS] Afficher divers types d'informations de " +"débogage.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Les variables d'environment sont prioritaires " +"sur les makefiles.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E STRING, --eval=STRING Évaluer la chaîne STRING comme une instruction " +"de makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FICHIER, --file=FICHIER, --makefile=FICHIER\n" +" Lire le FICHIER comme un makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Afficher ce message et quitter.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" +" -i, --ignore-errors Ignorer les erreurs venant des recettes.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I RÉPERTOIRE, --include-dir=RÉPERTOIRE\n" +" Chercher dans le RÉPERTOIRE les makefiles " +"traités par inclusion.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Autoriser N tâches simultanées ; nombre infini " +"si utilisé sans argument.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Poursuivre même si certaines cibles n'ont pas " +"pu être fabriquées.\n" + +#: src/main.c:350 +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 pas lancer de tâches multiples à moins que " +"la charge soit inférieure à N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Utiliser le « mtime » le plus récent entre les " +"liens symboliques et la cible.\n" + +#: src/main.c:355 +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'exécuter aucune recette ; seulement les " +"afficher.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o FICHIER, --old-file=FICHIER, --assume-old=FICHIER\n" +" Considérer le FICHIER comme étant très ancien " +"et ne pas le refabriquer.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronise la sortie des tâches parallèles " +"par TYPE.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base Afficher la base de données interne de make.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Ne pas exécuter de recette ; le code de sortie " +"indique si la cible est à jour.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Désactiver les règles implicites internes.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Désactiver les réglages des variables " +"internes.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Ne pas répéter les recettes.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Répéter les recette (désactive le mode --" +"silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Désactiver -k.\n" + +#: src/main.c:382 +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" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Afficher les traces mémoire.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version Afficher le numéro de version de make et " +"quitter.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Afficher le répertoire courant.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Désactiver l'option -w, même si elle a été " +"activée implicitement.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W FICHIER, --what-if=FICHIER, --new-file=FICHIER, --assume-new=FICHIER\n" +" Considérer le FICHIER comme étant toujours " +"nouveau.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Prévenir lorsqu'une variable non définie est " +"référencée.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "erreur d'écriture : stdout" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "une chaîne vide n'est pas un nom de fichier valable" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "niveau de débogage inconnu « %s »" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "type de output-sync « %s » inconnu" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Utilisation : %s [options] [cible] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ce programme est construit pour %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ce programme est construit pour %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Signaler les anomalies à .\n" + +#: src/main.c:940 +#, 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" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Filtre d'exception non pris en charge appelé depuis le programme %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Violation d'accès : opération d'écriture à l'adresse 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Violation d'accès : opération de lecture à l'adresse 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() définit default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" +"La recherche de chemin de find_and_set_shell() a définit default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (fichier temporaire) : " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"avertissement : jobserver n'est pas disponible : utilisation de -j1. Ajouter " +"« + » à la règle parent du make." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"avertissement : -j%d forcé dans un submake : réinitialisation du mode " +"jobserver." + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile depuis l'entrée standard spécifié deux fois." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (fichier temporaire)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"avertissement : -j%d forcé dans un makefile : réinitialisation du mode " +"jobserver." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "" +"Les tâches en parallèle (-j) ne sont pas prises en charge sur cette " +"plateforme." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "On revient en mode monotâche (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "type de output-sync « %s » inconnu" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "" +"Les liens symboliques ne sont pas pris en charge : désactivation de -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Mise à jour des makefiles....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Le makefile « %s » pourrait boucler ; on ne recommence pas.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s : %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s : echec du chargement" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Échec de refabrication du makefile « %s »." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Le makefile inclus « %s » est introuvable." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Le makefile « %s » est introuvable" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Impossible de revenir dans le répertoire d'origine." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Réexécution[%u] :" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL contient plus d'une cible" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Pas de cible" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Pas de cible spécifiée et aucun makefile n'a été trouvé" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Mise à jour des objectifs cibles....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"avertissement : décalage d'horloge détecté. La construction peut être " +"incomplète." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "l'option « %s%s » a besoin d'une chaîne non vide comme argument" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "l'option « -%c » prend en argument un entier positif" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sConstruit pour %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sConstruit pour %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 version 3 ou ultérieure \n" +"%sCeci est un logiciel libre : vous êtes autorisé à le modifier et à la " +"redistribuer.\n" +"%sIl ne comporte AUCUNE GARANTIE, dans la mesure de ce que permet la loi.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Base de données de Make, imprimée le %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Base de données de Make terminée le %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s : %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Utilisation de la recette par défaut pour « %s ».\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Création d'un fichier de commande temporaire %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (fichier temporaire) : " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (fichier temporaire)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (fichier temporaire)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s : on entre dans un répertoire inconnu\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s : on quitte un répertoire inconnu\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s : on entre dans le répertoire « %s »\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s : on quitte le répertoire « %s »\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u] : on entre dans un répertoire inconnu\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u] : on quitte un répertoire inconnu\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u] : on entre dans le répertoire « %s »\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u] : on quitte le répertoire « %s »\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Arrêt.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s : %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "type de output-sync « %s » inconnu" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "création d'un tube pour les tâches" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplication d'un tube pour les tâches" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "initialisation du tube du serveur de tâches" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "erreur interne : chaîne --jobserver-auth incorrecte « %s »" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "écriture vers le serveur de tâches" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "le serveur de tâche est arrêté" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect du tube de tâches" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "lecture du tube des processus" + +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "erreur interne : chaîne --jobserver-auth incorrecte « %s »" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "type de output-sync « %s » inconnu" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Lecture des makefiles...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Lecture du makefile « %s »" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (pas d'objectif par défaut)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (chemin de recherche)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (peu importe)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (pas de remplacement du ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "On saute les BOM UTF-8 du makefile « %s »\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "On saute les BOM UTF-8 du tampon makefile\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "syntaxe incorrecte dans la condition" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "la recette commence avant la première cible" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "règle manquante avant la recette" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "séparateur manquant (vouliez-vous dire TAB au lieu des 8 espaces ?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "séparateur manquant" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "motif de cible manquant" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "motifs de cible multiples" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "le motif de cible ne contient pas « %% »" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "« endif » manquant" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "nom de variable vide" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "texte superflu après la directive « define »" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "« endef » manquant, « define » non terminé" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "texte superflu après la directive « endef »" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "texte superflu après la directive « %s »" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "« %s » superflu" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "un seul « else » par condition" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Définition malformée de variable spécifique à une cible" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "les prérequis ne peuvent être définis dans des recettes" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "les cibles groupées doivent fournir une recette" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "mélange de règles implicites et statiques pour le motif" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "mélange de règles implicites et normales" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "la cible « %s » ne correspond pas au motif de cible" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "le fichier cible « %s » possède à la fois des entrées : et ::" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "la cible « %s » apparaît plus d'une fois dans la même règle" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "avertissement : surchargement de la recette pour la cible « %s »" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "avertissement : ancienne recette ignorée pour la cible « %s »" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** mélange de règles implicites et normales : syntaxe obsolète" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" +"avertissement : surchargement des groupes d'appartenance pour la cible « %s »" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "" +"avertissement : caractère NUL détecté ; le reste de la ligne est ignoré" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "avertissement : surchargement de la recette pour la cible « %s »" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Rien à faire pour « %s »." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "« %s » est à jour." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Élagage du fichier « %s ».\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "" +"%s Aucune règle pour fabriquer la cible « %s », nécessaire pour « %s »%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sAucune règle pour fabriquer la cible « %s »%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Étude du fichier cible « %s ».\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Tentative récente échouée de mettre à jour le fichier « %s ».\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Le fichier « %s » a déjà été étudié.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Mise à jour du fichier « %s » en cours.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Fin de la mise à jour du fichier « %s ».\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Le fichier « %s » n'existe pas.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Avertissement : le fichier .LOW_RESOLUTION_TIME « %s » a un horodatage à " +"haute résolution" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Utilisation de la recette par défaut pour « %s ».\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Dépendance circulaire %s <- %s abandonnée." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Fin des dépendances du fichier cible « %s ».\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Les dépendances de « %s » sont en cours de fabrication.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Abandon du fichier cible « %s ».\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "La cible « %s » n'a pas été refabriquée à cause d'erreurs." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "La dépendance « %s » ne commande que la cible « %s ».\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "La dépendance « %s » est plus récente que la cible « %s ».\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "La dépendance « %s » est plus ancienne que la cible « %s ».\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "La cible « %s » a un deux-points double et n'a pas de dépendance.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "Pas de recette pour « %s » et aucune dépendance n'a changé.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Fabrication de « %s » à cause de l'indicateur « always-make ».\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Inutile de refabriquer la cible « %s »" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr " ; utilisation du nom VPATH « %s »" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Il faut refabriquer la cible « %s ».\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " On ignore le nom VPATH « %s ».\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "La recette de « %s » est en cours d'exécution.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Échec de refabrication du fichier cible « %s ».\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Refabrication réussie du fichier cible « %s ».\n" + +#: src/remake.c:919 +#, 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" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Utilisation des commandes par défaut pour « %s ».\n" + +#: src/remake.c:1499 +#, 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" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "l'élément « %s » de .LIBPATTERNS n'est pas un motif" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "« customs » n'exportera pas : %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Règles implicites" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Pas de règle implicite." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u règles implicites, terminal %u (%.1f%%)." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "ANOMALIE : num_pattern_rules est faux ! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "signal inconnu" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Raccroche" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interrompt" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Quitte" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instruction non admise" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Point de trace/arrêt" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Annulé" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Appel IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Appel EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Exception en virgule flottante" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Tué" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Erreur de bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Erreur de segmentation" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Mauvais appel système" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Tube cassé" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarme" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminé" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Signal utilisateur 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Signal utilisateur 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Processus fils terminé" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Coupure d'alimentation" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Arrêté" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Arrêté (entrée tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Arrêté (sortie tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Arrêté (signal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Limite du temps CPU dépassée" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Limite de taille de fichier dépassée" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Compteur virtuel expiré" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Compteur de profiling expiré" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Fenêtre modifiée" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Reprise" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condition d'E/S urgente" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "E/S possible" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Ressource perdue" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Signal de danger" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Demande d'informations" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Coprocesseur en virgule flottante non disponible" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s pas de tampons strcache\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s strcache utilisé : %lu (%lu) / chaînes = %lu / espace = %lu o / moy = %lu " +"o\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s tampon courant : taille = %hu o / utilisé = %hu o / nombre = %hu / moy = " +"%u o\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s autre utilisé : total = %lu o / nombre = %lu / moy = %lu o\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s autre libre : total = %lu o / max = %lu o / min = %lu o / moy = %hu o\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s performance strcache : lookups = %lu / accès = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# stats des tables de hachage :\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatique" + +#: src/variable.c:1789 +msgid "default" +msgstr "défaut" + +#: src/variable.c:1792 +msgid "environment" +msgstr "environnement" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "environnement avec l'option -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "ligne de commande" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "directive « override »" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (depuis « %s », ligne %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# stats des tables de hachage de la variable « set » :\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variables\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valeurs de variable spécifiques au motif" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Pas de valeurs de variable spécifiques au motif." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valeurs de variable spécifiques au motif" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "avertissement : variable « %.*s » indéfinie" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() a échoué avec %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-attention, vous pourriez avoir besoin de réactiver le traitement de CTRL-Y " +"par DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "COMMANDE CD INTERNE %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL : %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Sortie ajoutée à %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Ajoute %.*s et nettoie\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Exécution de %s à la place\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Chemins de recherche VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Aucun chemin de recherche « vpath »." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u chemins de recherche « vpath ».\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Aucun chemin de recherche général (variable « VPATH »)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Chemin de recherche général (variable « VPATH ») :\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Nombre de clients jobserver limités à %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "création du sémaphore du jobserver : (erreur %ld : %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"erreur interne : impossible d'ouvrir le sémaphore « %s » du jobserver : " +"(erreur %ld : %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Client jobserver (semaphore %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "libération du sémaphore jobserver : erreur (%ld : %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "attente du sémaphore ou du processus fils : (erreur %ld : %s)" + +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "type de output-sync « %s » inconnu" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nom de fonction invalide : %s" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s : utilisateur %lu (reél %lu), groupe %lu (réel %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Accès initialisé" + +#~ msgid "User access" +#~ msgstr "Accès utilisateur" + +#~ msgid "Make access" +#~ msgstr "Accès de Make" + +#~ msgid "Child access" +#~ msgstr "Accès des fils" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TYPE] (--output-sync[=TYPE]) n'est pas configuré pour cette " +#~ "construction." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "client Jobserver (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "pipeline du serveur de tâches" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s : %s : commande introuvable\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u] : %s : commande introuvable\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s : programme Shell introuvable" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s s'arrête pendant 30 secondes..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) terminé. On continue.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Erreur inconnue %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "" +#~ "Avertissement : le fichier « %s » a une date de modification dans le futur" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s : la recette pour la cible « %s » a échoué" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Erreur 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "duplication du serveur de tâches" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "AVERTISSEMENT : redirection vide\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "erreur interne : « %s » command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "COMMANDE INTERNE [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "COMMANDE ECHO INTERNE %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Commande interne inconnue « %s »\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "Commande interne inconnue ou non prise en charge par .ONESHELL : « %s »\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Erreur, commande vide\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Entrée redirigée depuis %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Erreur redirigée vers %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Sortie redirigée vers %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Erreur de lancement, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "erreur interne : options --sync-mutex multiples" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "erreur interne : options --jobserver-fds multiples" + +#~ msgid "virtual memory exhausted" +#~ msgstr "mémoire virtuelle épuisée" + +#~ msgid "write error" +#~ msgstr "erreur d'écriture" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "COMMANDE RM INTERNE %s\n" + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Valeur non valable dans le membre « update_status » !" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Erreur 0x%x (ignorée)" + +#~ msgid "[%s] Error %d (ignored)" +#~ msgstr "[%s] Erreur %d (ignorée)" + +#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n" +#~ msgstr "" +#~ "Invocation de recette de %s:%lu pour mettre à jour la cible « %s ».\n" + +#~ msgid "Invoking builtin recipe to update target `%s'.\n" +#~ msgstr "" +#~ "Invocation de la recette incorporée pour mettre à jour la cible « %s ».\n" + +#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n" +#~ msgstr "%s nombre de tampons strcache : %d (* %d B/buffer = %d B)\n" + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# stats des tables de hachage strcache :\n" +#~ "# " + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "process_easy() n'a pas pu lancer de processus (e=%ld)\n" + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sCeci est un logiciel libre ; consultez le code source pour connaître " +#~ "les conditions de copie.\n" +#~ "%sIl n'y a PAS de garantie ; ni pour une utilisation COMMERCIALE ni pour\n" +#~ "%sune ADÉQUATION À UN BESOIN PARTICULIER.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "« endef » superflu" + +#~ msgid "empty `override' directive" +#~ msgstr "directive « override » vide" + +#~ msgid "invalid `override' directive" +#~ msgstr "directive « override » incorrecte" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-warning, CTRL-Y va laisser des sous-processsus dans la nature.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Ne pas spécifier -j ou --jobs si sh.exe n'est pas disponible." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Réinitialisation de make en mode de traitement simple des tâches." + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Erreur de syntaxe, toujours à l'intérieur de « \" »\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "" +#~ "Réception du signal SIGCHLD ; %u processus fils dont le statut de\n" +#~ "sortie n'a pas été récupé.\n" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "pas de nom de fichier pour « %sinclude »" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "la cible « %s » a laissé un schéma de dépendance vide" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Pas de fichiers." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u fichiers dans %u tables de hachage.\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "" +#~ "# moyenne de %.3f fichiers par table, maximum de %u fichiers dans une " +#~ "table.\n" + +#~ msgid "DIRECTORY" +#~ msgstr "RÉPERTOIRE" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "Changer de RÉPERTOIRE avant de faire quoi que ce soit" + +#~ msgid "FLAGS" +#~ msgstr "FANIONS" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Suspension de processus pour permettre au déboggeur de se rattacher" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "" +#~ "Les variables d'environnement écrasent celles définies dans les makefiles" + +#~ msgid "FILE" +#~ msgstr "FICHIER" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "Lit FICHIER en tant que makefile" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "Recherche les makefiles inclus dans DIRECTORY" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "N'exécute pas de tâches multiples si la charge dépasse N" + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "N'exécute pas les commandes ; elles sont juste affichées" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "Considère FILE comme étant très vieux et ne le refabrique pas" + +#~ msgid "Don't echo commands" +#~ msgstr "N'affiche pas les commandes" + +#~ msgid "Turns off -k" +#~ msgstr "Désactive -k" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "Considère FILE comme étant infiniment récent" + +#~ msgid "Entering" +#~ msgstr "Entre dans" + +#~ msgid "Leaving" +#~ msgstr "Quitte" + +#~ msgid "# No variables." +#~ msgstr "# Pas de variables." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "" +#~ "# moyenne de %.1f variables par table, maximum de %u dans une table.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "" +#~ "# moyenne de %d.%d variables par table, maximum de %u dans une table.\n" + +#~ msgid "Error in lbr$ini_control, %d\n" +#~ msgstr "Erreur dans lbr$ini_control, %d\n" + +#~ msgid "Error looking up module %s in library %s, %d\n" +#~ msgstr "Erreur en recherchant le module %s dans la bibliothèque %s, %d\n" + +#~ msgid "Error getting module info, %d\n" +#~ msgstr "Erreur lors de l'obtention des informations du module, %d\n" + +#~ msgid "touch: " +#~ msgstr "touch: " + +#~ msgid " not" +#~ msgstr " non" + +#~ msgid "# Last modified %.24s (%0lx)\n" +#~ msgstr "# Dernière modification %.24s (%0lx)\n" + +#~ msgid "undefined" +#~ msgstr "indéfini" + +#~ msgid "file" +#~ msgstr "fichier" + +#~ msgid "environment override" +#~ msgstr "écrasement par l'environnement" + +#~ msgid "override" +#~ msgstr "écrasement" + +#~ msgid "the `word' function takes a one-origin index argument" +#~ msgstr "la fonction `word' prend un argument d'index à une seule origine" + +#~ msgid "implicit" +#~ msgstr "dépendance implicite" + +#~ msgid "rule" +#~ msgstr "règle de dépendance" + +#~ msgid "Trying %s dependency `%s'.\n" +#~ msgstr "Essai de la %s `%s'.\n" + +#~ msgid "Found dependency as `%s'.%s\n" +#~ msgstr "Dépendance trouvée en tant que `%s'.%s\n" + +#~ msgid "intermediate" +#~ msgstr "intermédiaire" + +#~ msgid "Unknown%s job %d" +#~ msgstr "Tâche%s inconnue %d" + +#~ msgid " remote" +#~ msgstr " distante" + +#~ msgid "%s finished." +#~ msgstr "%s terminée." + +#~ msgid "losing" +#~ msgstr "perdant" + +#~ msgid "winning" +#~ msgstr "gagnant" + +#~ msgid "%sGNU Make version %s" +#~ msgstr "%sGNU Make version %s" + +#~ msgid "Unknown error 12345678901234567890" +#~ msgstr "Erreur inconnue 12345678901234567890" + +#~ msgid "User" +#~ msgstr "utilisateur" + +#~ msgid "Make" +#~ msgstr "make" + +#~ msgid "Child" +#~ msgstr "enfant" + +#~ msgid "Dependency `%s' does not exist.\n" +#~ msgstr "La dépendance `%s' n'existe pas.\n" + +#~ msgid "newer" +#~ msgstr "plus récente" + +#~ msgid "older" +#~ msgstr "plus ancienne" + +#~ msgid "exporting: Couldn't create return socket." +#~ msgstr "exportation : N'a pas pu créer la socket de retour." + +#~ msgid "exporting: " +#~ msgstr "exportation : " + +#~ msgid "exporting: %s" +#~ msgstr "exportation : %s" + +#~ msgid "Job exported to %s ID %u\n" +#~ msgstr "Tâche exportée vers %s ID %u\n" + +#~ msgid "Error getting load average" +#~ msgstr "Erreur lors de l'obtention de la charge moyenne" + +#~ msgid "1-minute: %f " +#~ msgstr "1 minute : %f " + +#~ msgid "5-minute: %f " +#~ msgstr "5 minutes : %f " + +#~ msgid "15-minute: %f " +#~ msgstr "15 minutes : %f " + +#~ msgid "digits occur in two different argv-elements.\n" +#~ msgstr "des chiffres apparaissent dans deux éléments différents de argv.\n" + +#~ msgid "option %c\n" +#~ msgstr "option %c\n" + +#~ msgid "option a\n" +#~ msgstr "option a\n" + +#~ msgid "option b\n" +#~ msgstr "option b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "option c ayant pour valeur `%s'\n" + +#~ msgid "?? getopt returned character code 0%o ??\n" +#~ msgstr "?? getopt a renvoyé le caractère de code 0%o ??\n" + +#~ msgid "non-option ARGV-elements: " +#~ msgstr "éléments de ARGV qui ne sont pas des options : " + +#~ msgid "option d with value `%s'\n" +#~ msgstr "option d ayant pour valeur `%s'\n" + +#~ msgid "%s: unknown signal" +#~ msgstr "%s : signal inconnu" + +#~ msgid "Signal 12345678901234567890" +#~ msgstr "Signal 12345678901234567890" + +#~ msgid "Signal %d" +#~ msgstr "Signal %d" diff --git a/local/recipes/dev/gnu-make/source/po/ga.gmo b/local/recipes/dev/gnu-make/source/po/ga.gmo new file mode 100644 index 0000000000..d0af64772d Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/ga.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/ga.po b/local/recipes/dev/gnu-make/source/po/ga.po new file mode 100644 index 0000000000..c5873c4aa7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/ga.po @@ -0,0 +1,2593 @@ +# Irish translations for make. +# Copyright (C) 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Kevin Patrick Scannell , 2005, 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.1\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2017-01-09 16:02-0500\n" +"Last-Translator: Kevin Patrick Scannell \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "rinneadh iarracht ar ghné gan tacaíocht a úsáid: '%s'" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "ní féidir 'touch' a dhéanamh ar bhall de chartlann ar VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Níl an chartlann '%s' ann" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: Níl '%s' ina cartlann bhailí" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Níl a leithéid de bhall '%s' i '%s'" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: Tháinig droch-chód ar ais ó ar_member_touch ar '%s'" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"níorbh fhéidir le lbr$set_module eolas faoin mhodúl a fháil, stádas = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "theip ar lbr$ini_control le stádas = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"ní féidir leabharlann '%s' a oscailt chun cuardach a dhéanamh ar stádas " +"baill %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Ball '%s'%s: %ld beart ag %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (seans go dteascfar an t-ainm)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Dáta %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mód = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "An iomarca línte san oideas (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Briseadh.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Seans gur ball bréige é '%s'; níor scriosadh é" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Seans gur ball bréige é '%s'; níor scriosadh é" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Comhad '%s' á scriosadh" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Comhad '%s' á scriosadh" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# oideas le rith" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (insuite):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (ó '%s', líne %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Comhadlanna\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: níorbh fhéidir é a stat.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (eochair %s, mtime %I64u): níorbh fhéidir é a oscailt.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): níorbh fhéidir é a oscailt.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (gléas %ld, i-nód %ld): níorbh fhéidir é a oscailt.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (eochair %s, mtime %I64u): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (gléas %ld, i-nód %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Níl" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " comhad, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "níl" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " rudaí neamhfhéideartha" + +#: src/dir.c:1180 +msgid " so far." +msgstr " go dtí seo." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " rudaí neamhfhéideartha i %lu comhadlann.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Déanann an athróg athchúrsach '%s' tagairt di féin (ar deireadh)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "tagairt d'athróg gan chríochnú" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Sonraíodh oideas le haghaidh comhaid '%s' ag %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "Aimsíodh oideas le haghaidh '%s' trí chuardach ar rialacha intuigthe," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "ach anois is ionann iad na comhaid '%s' agus '%s'." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" +"Déanfar neamhshuim ar an oideas le haghaidh '%s'; úsáidfear an ceann le " +"haghaidh '%s' ina ionad." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"ní féidir idirstad aonair '%s' a athainmnigh le hidirstad dúbailte '%s'" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "ní féidir idirstad dúbailte '%s' a athainmniú le hidirstad aonair '%s'" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Comhad idirmheánach '%s' á scriosadh" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Comhaid idirmheánacha á mbaint...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "An t-am anois" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Stampa ama as raon; %s á úsáid ina ionad" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ní sprioc é:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Comhad luachmhar (réamhriachtanas de .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Sprioc bhréige (réamhriachtanas de .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Sprioc líne na n-orduithe." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Makefile réamhshocraithe, nó ó MAKEFILES, nó -include/sinclude." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Riail insuite" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Rinneadh cuardach ar rialacha intuigthe." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Ní dhearnadh cuardach ar rialacha intuigthe." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Stoc patrúin intuigthe/statach: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Tá an comhad ina réamhriachtanas idirmheánach." + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Comhad luachmhar (réamhriachtanas de .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Sprioc bhréige (réamhriachtanas de .PHONY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Déanann sé freisin:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Níor seiceáladh an t-am mionathraithe riamh." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Níl a leithéid de chomhad ann." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Tá an comhad an-aosta." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Athraithe %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Nuashonraíodh an comhad." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Níor nuashonraíodh an comhad." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Oideas á rith faoi láthair (IS FABHT É SEO)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Oideas spleáchais á rith (IS FABHT É SEO)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# D'éirigh leis an nuashonrú." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Tá gá le nuashonrú (-q sainithe)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Theip ar an nuashonrú." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Luach neamhbhailí sa bhall 'command_state'!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Comhaid" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# comhaid hais-tábla stait:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Níl réimse '%s' i dtaisce: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "neamhuimhriúil an chéad argóint le feidhm 'word'" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "caithfidh an chéad argóint le feidhm 'word' a bheith deimhneach" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "neamhuimhriúil an chéad argóint le feidhm 'wordlist'" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "neamhuimhriúil an dara hargóint le feidhm 'wordlist'" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "neamhuimhriúil an chéad argóint le feidhm 'wordlist'" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "neamhuimhriúil an dara hargóint le feidhm 'wordlist'" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: theip ar DuplicateHandle(In) (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: theip ar DuplicateHandle(Earr) (e=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "Theip ar CreatePipe() (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): theip ar process_init_fd()\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Baisc-chomhad sealadach %s á ghlanadh\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "comhad: ainm comhaid ar iarraidh" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "oscailt: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "scríobh: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "dúnadh: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "comhad: an iomarca argóintí" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "léamh: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "comhad: oibríocht neamhbhailí ar chomhad: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "easpa argóintí (%d) ar fheidhm '%s'" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "níl feidhm '%s' ar fáil ar an chóras seo" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "glao ar fheidhm '%s' gan chríochnú: '%c' ar iarraidh" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Tá ainm na feidhme folamh" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Tá ainm na feidhme neamhbhailí: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Tá ainm na feidhme rófhada: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Ãosmhéid argóintí neamhbhailí (%u) d'fheidhm %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Uasmhéid argóintí neamhbhailí (%u) d'fheidhm %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: Tá an rogha '%s' débhríoch\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '--%s'\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '%c%s'\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: tá argóint de dhíth i ndiaidh na rogha '%s'\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: rogha anaithnid '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: rogha anaithnid '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: rogha neamhcheadaithe -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: rogha neamhbhailí -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: Tá an rogha '-W %s' débhríoch\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '-W %s'\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: '%s' á leathnú\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: '%s' á luacháil\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "ní féidir %lu beart a dháileadh le haghaidh hais-tábla: cuimhne ídithe" + +#: src/hash.c:280 +#, fuzzy, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Lód=%ld/%ld=%.0f%%, " + +#: src/hash.c:282 +#, fuzzy, c-format +msgid "Rehash=%u, " +msgstr "Ath-haiseáil=%d, " + +#: src/hash.c:283 +#, fuzzy, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Tuairteanna haiseála=%ld/%ld=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Ag lorg riail intuigthe le haghaidh '%s'.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Ag lorg riail intuigthe le haghaidh bhall cartlainne '%s'.\n" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Ag lorg riail intuigthe le haghaidh bhall cartlainne '%s'.\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Athchúrsáil de bharr rialacha intuigthe á seachaint.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Ag baint triail as riail phatrúin le stoc '%.*s'.\n" + +#: src/implicit.c:506 +#, fuzzy, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stoc rófhada: '%.*s'.\n" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Réamhriachtanas neamhfhéideartha rialach '%s' á dhiúltú.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Réamhriachtanas intuigthe neamhfhéideartha '%s' á dhiúltú.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Ag baint triail as réamhriachtanas rialach '%s'.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Ag baint triail as réamhriachtanas intuigthe '%s'.\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Níl comhad '%s' ann.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Níl réamhriachtanas '%s' den sprioc '%s' ann.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Aimsíodh réamhriachtanas '%s' mar VPATH '%s'\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Ag lorg riail le comhad idirmheánach '%s'.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Ag lorg riail le comhad idirmheánach '%s'.\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Réamhriachtanas neamhfhéideartha rialach '%s' á dhiúltú.\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Níor aimsíodh aon riail intuigthe le haghaidh '%s'.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Aimsíodh riail intuigthe le haghaidh '%s'.\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Ag lorg riail intuigthe le haghaidh '%s'.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Níor aimsíodh aon riail intuigthe le haghaidh '%s'.\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "Ní féidir comhad sealadach a chruthú\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (córdhumpa)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (rinneadh neamhshuim air)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Earráid %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Ag fanacht le jabanna neamhchríochnaithe..." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Mac beo %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (i gcéin)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Mac a bhuaigh á bhaint: %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Mac a chaill á bhaint: %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Baisc-chomhad sealadach %s á ghlanadh\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Níorbh fhéidir baisc-chomhad sealadach %s a ghlanadh (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Mac %p PID %s%s á bhaint ón slabhra.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Saoradh ceadchomhartha le haghaidh mac %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"%d argóint sa tosú teipthe\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Mac %p (%s) PID %s%s á chur ar an slabhra.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Fuarthas ceadchomhartha le haghaidh mac %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: níl sprioc '%s' ann" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "ní féidir srianta lóid a chur i bhfeidhm ar an chóras oibriúcháin seo" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "ní féidir srian lóid a chur i bhfeidhm: " + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdin a chóipeáil\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdout a chóipeáil\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stderr a chóipeáil\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Níorbh fhéidir stdin a athchóiriú\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Níorbh fhéidir stdout a athchóiriú\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Níorbh fhéidir stderr a athchóiriú\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "bhain make mac le PID %s, ag feitheamh le PID %s fós\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: seans nach bhfuil aon spás fágtha sa timpeallacht" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "Athraíodh $SHELL (ba '%s' é, ach is '%s' é anois)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Baisc-chomhad sealadach %s á chruthú\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Inneachar an bhaisc-chomhaid:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Inneachar an bhaisc-chomhaid:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" +"%s (líne %d) Droch-chomhthéacs blaoisce (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Níorbh fhéidir an tábla siombailí comhchoiteann a oscailt: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Níl an réad lódáilte %s comhoiriúnach leis an GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Níorbh fhéidir siombail %s a lódáil ó %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Tá ainm na siombaile le lódáil folamh: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Siombail %s á lódáil ó %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Níl an oibríocht 'load' ar fáil ar an gcóras seo." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Roghanna:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Déan neamhshuim (comhoiriúnacht)\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Déan gach sprioc, gan choinníollacha.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C COMHADLANN, --directory=COMHADLANN\n" +" Téigh go COMHADLANN roimh dhéanamh aon rud.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Taispeáin go leor eolas dífhabhtaithe.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=BRATACHA] Taispeáin eolas fabhtaithe de chineálacha " +"éagsúla.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Sáraíonn athróga timpeallachta makefileanna.\n" + +#: src/main.c:332 +#, fuzzy +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" --eval=TEAGHRÃN Luacháil TEAGHRÃN mar ráiteas makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f COMHAD, --file=COMHAD, --makefile=COMHAD\n" +" Léigh COMHAD mar makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Taispeáin an chabhair seo agus scoir.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Déan neamhshuim ar earráidí ó oidis.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I COMHADLANN, --include-dir=COMHADLANN\n" +" Cuardaigh i gCOMHADLANN ar makefileanna " +"breise.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Ceadaigh N jab le chéile; éigríoch mura " +"gceaptar arg.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Lean ar aghaidh fiú nach féidir sprioc a " +"dhéanamh.\n" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Ná tosaigh jabanna iomadúla mura bhfuil an lód " +"níos lú ná N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Úsáid an t-am modhnaithe is déanaí, ar an " +"nasc\n" +" siombalach nó ar an sprioc.\n" + +#: src/main.c:355 +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á rith aon oideas; taispeáin na orduithe " +"amháin.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o COMHAD, --old-file=COMHAD, --assume-old=COMHAD\n" +" Caith le COMHAD mar cheann cianaosta; ná " +"hathdhéan é.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[CINEÃL], --output-sync[=CINEÃL]\n" +" Sioncronaigh aschur ó jabanna comhthreomhara " +"de réir CINEÃL.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base Taispeáin an bunachar sonraí inmheánach.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Ná rith aon oideas; stádas scortha = 0 má tá " +"sé cothrom le dáta.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Díchumasaigh na rialacha intuigthe insuite.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables Díchumasaigh na hathróga insuite.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Ná déan macalla ar orduithe.\n" + +#: src/main.c:377 +#, fuzzy +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" -q, --question Ná rith aon oideas; stádas scortha = 0 má tá " +"sé cothrom le dáta.\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Múch -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Teagmhaigh spriocanna in ionad iad a " +"athdhéanamh.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Taispeáin faisnéis dífhabhtaithe.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version Taispeáin eolas faoin leagan agus scoir.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Taispeáin an chomhadlann reatha.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Múch -w, fiú má tá sé i bhfeidhm go " +"hintuigthe.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W COMHAD, --what-if=COMHAD, --new-file=COMHAD, --assume-new=COMHAD\n" +" Caith le COMHAD mar cheann úrnua (go " +"héigríoch).\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Tabhair rabhadh má dhéantar tagairt d'athróg " +"gan sainmhíniú.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "earráid scríofa: stdout" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "ní féidir teaghrán folamh a úsáid mar ainm comhaid" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "leibhéal dífhabhtaithe anaithnid '%s'" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Úsáid: %s [roghanna] [sprioc] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Tógadh an clár seo le haghaidh %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Tógadh an clár seo le haghaidh %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Seol tuairiscí fabhtanna chuig \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Fuarthas idirbhriseadh/eisceacht (cód = 0x%lx, seoladh = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Cuireadh glaoch ar scagaire eisceachta gan láimhseáil ón chlár %s\n" +"CódEisceachta = %lx\n" +"BratachaEisceachta = %lx\n" +"SeoladhEisceachta = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Sárú cearta rochtana: oibríocht scríofa ag seoladh 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Sárú cearta rochtana: oibríocht léimh ag seoladh 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "tá find_and_set_shell() ag socrú default_shell = %s\n" + +#: src/main.c:1098 +#, 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" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (comhad sealadach): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"rabhadh: níl an jabfhreastalaí ar fáil: ag úsáid -j1. Cuir '+' leis an " +"máthair-riail." + +#: src/main.c:1841 +#, fuzzy, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "rabhadh: -jN fórsáilte i bhfo-make: mód jabfhreastalaí á dhíchumasú." + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Sonraíodh Makefile ón ionchur caighdeánach faoi dhó." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (comhad sealadach)" + +#: src/main.c:2095 +#, fuzzy, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "rabhadh: -jN fórsáilte i bhfo-make: mód jabfhreastalaí á dhíchumasú." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Níl jabanna parailéalacha (-j) ar fáil ar an gcóras seo." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "à athshocrú le haghaidh jabanna aonair (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "ní thacaítear le naisc shiombalacha: -L á dhíchumasú." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Makefileanna á nuashonrú....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Seans go lúbfar an Makefile '%s'; ní athdhéanfar é.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: theip ar lódáil" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Níorbh fhéidir makefile '%s' a athdhéanamh." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Níor aimsíodh makefile '%s' atá san áireamh." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Níor aimsíodh makefile '%s'" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Níorbh fhéidir filleadh ar an gcomhadlann roimhe seo." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "à rith arís[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "tá níos mó ná aon sprioc amháin i .DEFAULT_GOAL" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Níl aon sprioc ann" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Níor sonraíodh aon sprioc agus níor aimsíodh aon makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Cinn sprice á nuashonrú....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "rabhadh: Clog ar sceabha. Seans nár chríochnaigh an tógáil." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "caithfidh tú teaghrán neamhfholamh a thabhairt mar argóint le '%s%s'" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "caithfidh tú slánuimhir dheimhneach a thabhairt mar argóint le '-%c'" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sTógadh an clár seo le haghaidh %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sTógadh an clár seo le haghaidh %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sCeadúnas GPLv3+: GNU GPL leagan 3 nó níos déanaí \n" +"%sIs saorbhogearra é seo: ceadaítear duit é a athrú agus a athdháileadh.\n" +"%sNíl baránta AR BITH ann, an oiread atá ceadaithe de réir dlí.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Bunachar sonraí Make, priontáilte ar %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Críochnaíodh an bunachar sonraí Make seo ar %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Ag baint úsáid as oideas réamhshocraithe le haghaidh '%s'.\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Baisc-chomhad sealadach %s á chruthú\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (comhad sealadach): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (comhad sealadach)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (comhad sealadach)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Ag dul isteach i gcomhadlann anaithnid\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Ag dul amach as comhadlann anaithnid\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Ag dul isteach i gcomhadlann '%s'\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Ag dul amach as comhadlann '%s'\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Ag dul isteach i gcomhadlann anaithnid\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Ag dul amach as comhadlann anaithnid\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Ag dul isteach i gcomhadlann '%s'\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Ag dul amach as comhadlann '%s'\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Stop.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "píopa na jabanna á chruthú" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "píopa na jabanna á chóipeáil" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "píopa an jabfhreastalaí á thúsú" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "earráid inmheánach: teaghrán neamhbhailí --jobserver-auth '%s'" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "scríobh jabfhreastalaí" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect píopa na jabanna" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "léadh píopa na jabanna" + +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "earráid inmheánach: teaghrán neamhbhailí --jobserver-auth '%s'" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Makefile-anna á léamh...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Makefile '%s' á léamh" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (gan ceann sprice réamhshocraithe)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (conair chuardaigh)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (is cuma)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (ná leathnaigh ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "Ag dul thar BOM UTF-8 i Makefile '%s'\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Ag dul thar BOM UTF-8 i maolán Makefile\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "comhréir neamhbhailí i gcoinníollach" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "tosaíonn an t-oideas roimh an chéad sprioc" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "riail ar iarraidh roimh an oideas" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "deighilteoir ar iarraidh (ar mhian leat TÃB in ionad ocht spás?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "deighilteoir ar iarraidh" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "patrún sprice ar iarraidh" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "ilphatrúin sprice" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "níl aon '%%' sa phatrún sprice" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "'endif' ar iarraidh" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "ainm folamh athróige" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "téacs breise i ndiaidh treorach 'define'" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "'endef' ar iarraidh, 'define' gan chríochnú" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "téacs breise i ndiaidh treorach 'endef'" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "téacs breise i ndiaidh treorach '%s'" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "'%s' breise" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "ní cheadaítear ach aon 'else' amháin le gach ráiteas coinníollach" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Is míchumtha é an sainmhíniú athróige (le haghaidh aon sprioc amháin)" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "ní féidir réamhriachtanais a shonrú in oidis" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "rialacha intuigthe agus rialacha statacha measctha le chéile" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "rialacha intuigthe agus gnáthrialacha measctha le chéile" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "níl sprioc '%s' comhoiriúnach leis an bpatrún sprice" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "tá iontrálacha : agus :: sa chomhad sprice '%s'" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "tá an sprioc '%s' ann níos mó ná uair amháin sa riail chéanna" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "rabhadh: oideas le haghaidh sprioc '%s' á shárú" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "rabhadh: ag déanamh neamhshuim ar sheanoideas le haghaidh sprioc '%s'" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" +"*** rialacha intuigthe agus gnáthrialacha measctha le chéile: comhréir dulta " +"i léig" + +#: src/read.c:2325 +#, fuzzy, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "rabhadh: oideas le haghaidh sprioc '%s' á shárú" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "" +"rabhadh: chonacthas carachtar NUL; ag déanamh neamhshuim ar an chuid eile " +"den líne" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "rabhadh: oideas le haghaidh sprioc '%s' á shárú" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Níl faic le déanamh i gcomhair '%s'." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "Tá '%s' cothrom le dáta." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Comhad '%s' á bhearradh.\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sNíl aon riail chun sprioc '%s' a dhéanamh, rud a theastaíonn '%s'%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sNíl aon riail chun sprioc '%s' a dhéanamh%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Comhad sprice '%s' á scrúdú.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "" +"Rinneadh iarracht comhad '%s' a nuashonrú le déanaí, ach theip ar an " +"iarracht.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Rinneadh scrúdú ar chomhad '%s' cheana.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Comhad '%s' á nuashonrú fós.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Nuashonraíodh comhad '%s'.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Níl comhad '%s' ann.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "*** Rabhadh: Stampa ama ardtaifidh ar comhad .LOW_RESOLUTION_TIME `%s'" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Níl réamhriachtanas '%s' den sprioc '%s' ann.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Ag baint úsáid as oideas réamhshocraithe le haghaidh '%s'.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Tréigeadh an spleáchas ciorclach %s <- %s." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Críochnaíodh na réamhriachtanais den chomhad sprice `%s'.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Réamhriachtanais '%s' á ndéanamh anois.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Comhad sprice '%s' á thréigean.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Ní dhearna an sprioc '%s' arís mar gheall ar earráidí." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Is réamhriachtanas ord-amháin é '%s' le haghaidh sprice '%s'.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Níl réamhriachtanas '%s' den sprioc '%s' ann.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Tá réamhriachtanas '%s' níos nuaí ná sprioc '%s'.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Tá réamhriachtanas '%s' níos sine ná sprioc '%s'.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Is sprioc le dhá idirstad é '%s' agus níl aon réamhriachtanas aice.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" +"Níl aon oideas ann le haghaidh '%s' agus níor athraigh aon réamhriachtanas.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "'%s' á dhéanamh mar gheall ar bhratach --always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Ní gá an sprioc '%s' a athdhéanamh" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; ag baint úsáid as ainm VPATH '%s'" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Caithfidh an sprioc '%s' a athdhéanamh.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Ag déanamh neamhshuim ar ainm VPATH '%s'.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Oideas le haghaidh '%s' á rith.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Níorbh fhéidir an comhad sprice '%s' a athdhéanamh.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "D'éirigh linn an comhad sprice '%s' a athdhéanamh.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Ní mór comhad sprice '%s' a athdhéanamh le rogha -q.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Ag baint úsáid as orduithe réamhshocraithe le haghaidh '%s'.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Rabhadh: Tá am athraithe an chomhaid '%s' %s soicind sa todhchaí" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Ní patrún é eilimint .LIBPATTERNS '%s'" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Ní easpórtálfar Customs: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Rialacha Intuigthe" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Níl aon riail intuigthe." + +#: src/rule.c:610 +#, fuzzy, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u riail intuigthe, %u" + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "FABHT: num_pattern_rules mícheart! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "comhartha anaithnid" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Croch suas" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Idirbhriseadh" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Scoir" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Treoir Neamhcheadaithe" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Rianaigh/brisphointe" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Tobscortha" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Gaiste IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Gaiste EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Eisceacht snámhphointe" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Maraithe" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Busearráid" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Fabht deighilte" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Drochghlao ar an gcóras" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Píopa briste" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Clog aláraim" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Scortha" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Comhartha saincheaptha 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Comhartha saincheaptha 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Scoir an mhacphróiseas" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Cliseadh cumhachta" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Stoptha" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Stoptha (ionchur tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Stoptha (aschur tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Stoptha (comhartha)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Teorainn ama LAP sáraithe" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Uasmhéid na gcomhad sáraithe" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Am fíorúil caite" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Am próifíle caite" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Athraíodh an fhuinneog" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Leanta" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Staid phráinneach A/I" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "A/I indéanta" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Acmhainn caillte" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Comhartha guaise" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Iarratas ar eolas" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Níl comhphróiseálaí snámhphointe ar fáil" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Gan maoláin strcache\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s maolán strcache: %lu (%lu) / teaghráin = %lu / stóras = %lu B / meán = " +"%lu B\n" + +#: src/strcache.c:308 +#, fuzzy, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s maolán reatha: méid = %hu B / úsáidte = %hu B / líon = %hu / meán = %hu " +"B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s eile úsáidte: iomlán = %lu B / líon = %lu / meán = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s eile saor: iomlán = %lu B / uas = %lu B / íos = %lu B / meán = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s feidhmíocht strcache: cuardaigh = %lu / ráta aimsithe = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# staitisticí an hais-tábla:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "uathoibríoch" + +#: src/variable.c:1789 +msgid "default" +msgstr "réamhshocraithe" + +#: src/variable.c:1792 +msgid "environment" +msgstr "timpeallacht" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "timpeallacht le -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "líne na n-orduithe" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "treoir 'override'" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (ó '%s', líne %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# athróg tacar hais-tábla stait:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Athróga\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Luachanna Athróige sainiúil don phatrún" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Níl aon luach athróige atá sainiúil don phatrún." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u luach athróige atá sainiúil don phatrún" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "rabhadh: athróg gan sainmhíniú '%.*s'" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "Theip ar sys$search() le stádas %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-rabhadh, is féidir gur gá duit ionramháil CTRL-Y a athchumasú ó DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "CD INSUITE %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Iarcheangail aschur le %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Iarcheangal %.*s agus glanadh\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "%s á rith ina áit\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH Conairí Cuardaigh\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Níl aon chonair chuardaigh 'vpath' ann." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u conair chuardaigh 'vpath'.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Níl aon chonair ghinearálta chuardaigh (athróg 'VPATH') ann." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Conair ghinearálta chuardaigh (athróg 'VPATH'):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Sliotáin an jabfhreastalaí teoranta do %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "séamafór an jabfhreastalaí á chruthú: (Earráid %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"earráid inmheánach: níorbh fhéidir séamafór an jabfhreastalaí '%s' a " +"oscailt: (Earráid %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Cliant an jabfhreastalaí (séamafór %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "séamafór an jabfhreastalaí a fhuascailt: (Earráid %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "séamafóir nó feitheamh le macphróiseas: (Earráid %ld: %s)" + +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "cineál anaithnid '%s' le haghaidh output-sync" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Tá ainm na feidhme neamhbhailí: %s" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: Ordú gan aimsiú\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Ordú gan aimsiú\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Clár blaoisce gan aimsiú" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "níl -O[CINEÃL] (--output-sync[=CINEÃL]) ar fáil sa leagan seo." + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "cuirfear %s ar fionraí ar feadh tréimhse 30 soicind..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) críochnaithe. Ag leanúint ar aghaidh.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Earráid anaithnid %d" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: úsáideoir %lu (fíor %lu), grúpa %lu (fíor %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Rochtain túsaithe" + +#~ msgid "User access" +#~ msgstr "Rochtain úsáideora" + +#~ msgid "Make access" +#~ msgstr "Rochtain make" + +#~ msgid "Child access" +#~ msgstr "Rochtain mic" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Cliant jabfhreastalaí (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "píblíne an jabfhreastalaí" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Rabhadh: Sa todhchaí am athraithe an chomhaid '%s'" + +#~ msgid " terminal." +#~ msgstr " teirminéal." + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Luach neamhbhailí sa bhall `update_status'!" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Earráid 0x%x (rinneadh neamhshuim air)" + +#~ msgid "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] Earráid 0x%x" + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "earráid inmheánach: roghanna --jobserver-fds iomadúla" + +#~ msgid "dup jobserver" +#~ msgstr "jabfhreastalaí dup" + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sIs saorbhogearra an ríomhchlár seo; féach ar an bhunchód le haghaidh\n" +#~ "%scoinníollacha cóipeála. Níl baránta ar bith ann; go fiú níl baránta " +#~ "ann\n" +#~ "%sd'INDÃOLTACHT nó FEILIÚNACHT D'FHEIDHM AR LEITH.\n" + +#~ msgid "virtual memory exhausted" +#~ msgstr "cuimhne fhíorúil ídithe" + +#~ msgid "write error" +#~ msgstr "earráid sa scríobh" + +#~ msgid "extraneous `endef'" +#~ msgstr "`endef' breise" + +#~ msgid "empty `override' directive" +#~ msgstr "treoir `override' folamh" + +#~ msgid "invalid `override' directive" +#~ msgstr "treoir neamhbhailí `override'" + +#~ msgid "" +#~ "\n" +#~ "%s # of strings in strcache: %d\n" +#~ msgstr "" +#~ "\n" +#~ "%s líon na dteaghrán i strcache: %d\n" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Rabhadh: Atreorú folamh\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "earráid inmheánach: `%s' command_state" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-rabhadh, fágfaidh CTRL-Y fo-phróisis gan ghlanadh.\n" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "INSUITE [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "RM INSUITE %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Ordú anaithnid insuite '%s'\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Earráid, ordú folamh\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Atreoraíodh ionchur ó %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Atreoraíodh earráidí go %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Earráid le linn sceitheadh, %d\n" diff --git a/local/recipes/dev/gnu-make/source/po/gl.gmo b/local/recipes/dev/gnu-make/source/po/gl.gmo new file mode 100644 index 0000000000..5fa3c55f00 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/gl.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/gl.po b/local/recipes/dev/gnu-make/source/po/gl.po new file mode 100644 index 0000000000..7d2e415998 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/gl.po @@ -0,0 +1,2880 @@ +# 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 , 2000, 2002. +# Leandro Regueiro , 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.82\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2012-11-12 16:40+0100\n" +"Last-Translator: Leandro Regueiro \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/ar.c:47 +#, fuzzy, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "tentouse usar unha característica non admitida: «%s»" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "a operación de tocar un membro do arquivo non está dispoñíbel en VMS" + +#: src/ar.c:151 +#, fuzzy, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: O arquivo «%s» non existe" + +#: src/ar.c:154 +#, fuzzy, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: «%s» non é un arquivo válido" + +#: src/ar.c:161 +#, fuzzy, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: O membro «%s» non existe en «%s»" + +#: src/ar.c:168 +#, 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»" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"a chamada a lbr$set_module() fallou ao extraer a información do módulo, " +"estado = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "a chamada a lbr$ini_control() fallou con estado = %d" + +#: src/arscan.c:261 +#, fuzzy, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "non é posíbel abrir a biblioteca «%s» para buscar o membro «%s»" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, fuzzy, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Membro «%s»%s: %ld bytes en %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (o nome pode quedar truncado)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Data %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, modo = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Interrompido.\n" + +#: src/commands.c:629 +#, 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" + +#: src/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" + +#: src/commands.c:647 +#, fuzzy, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Eliminando o ficheiro «%s»" + +#: src/commands.c:649 +#, fuzzy, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Eliminando o ficheiro «%s»" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (incorporadas):" + +#: src/commands.c:690 +#, fuzzy, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (desde «%s», liña %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directorios\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: non foi posíbel facer a operación de stat.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (clave %s, mtime %d): non foi posíbel abrir.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (dispositivo %d, inodo [%d,%d,%d]): non foi posíbel abrir.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (dispositivo %ld, inodo %ld): non foi posíbel abrir.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (clave %s, mtime %d): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (dispositivo %d, inodo [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispositivo %ld, inodo %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Non" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " ficheiros, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "non" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " imposíbeis" + +#: src/dir.c:1180 +msgid " so far." +msgstr " ata aquí." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " imposíbeis en %lu directorios.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, fuzzy, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "A variábel recursiva «%s» fai referencia a si mesma (ao final)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "referencia a variábel non rematada" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "" + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" + +#: src/file.c:281 +#, fuzzy, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "pero agora considérase que «%s» é o mesmo ficheiro que «%s»." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" + +#: src/file.c:304 +#, 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" + +#: src/file.c:310 +#, 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" + +#: src/file.c:407 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Eliminando o ficheiro intermedio «%s»" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Retirando os ficheiros intermedios...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Hora actual" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Marca de tempo fóra de rango; substituíndo %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Non é un obxectivo:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Ficheiro precioso (prerrequisito de .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Obxectivo falso (prerrequisito de .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Obxectivo da liña de ordes." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Un ficheiro de make por defecto, MAKEFILES, ou -include/sinclude." + +#: src/file.c:1102 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# Non hai regras implícitas." + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Fíxose a busca de regras implícitas." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Non se fixo a busca de regras implícitas." + +#: src/file.c:1107 +#, fuzzy, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Raíz do patrón implícito/estático: «%s»\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# O ficheiro é un prerrequisito intermedio." + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Ficheiro precioso (prerrequisito de .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Obxectivo falso (prerrequisito de .PHONY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Tamén se fai:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Nunca se comprobou o tempo de modificación." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# O ficheiro non existe." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# O ficheiro é moi antigo." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Última modificación: %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# O ficheiro foi actualizado." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# O ficheiro non foi actualizado." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "" + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Actualizado con éxito." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Ten que ser actualizado (-q está definido)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Produciuse un erro ao actualizar." + +#: src/file.c:1163 +#, fuzzy +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valor non válido no membro «command_state»!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Ficheiros" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# estatísticas da táboa hash de ficheiros:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "primeiro argumento da función «word» non numérico" + +#: src/function.c:803 +#, fuzzy, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "o primeiro argumento da función «word» debe ser maior que 0" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "primeiro argumento da función «wordlist» non numérico" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "segundo argumento da función «wordlist» non numérico" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "primeiro argumento da función «wordlist» non numérico" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "segundo argumento da función «wordlist» non numérico" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe(): a chamada a DuplicateHandle(In) fallou (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" +"windows32_open_pipe(): a chamada a DuplicateHandle(Err) fallou (e=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "A chamada a CreatePipe() fallou (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): a chamada a process_init_fd() fallou\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Limpando o ficheiro de lotes temporal %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, fuzzy, c-format +msgid "open: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2360 +#, fuzzy, c-format +msgid "write: %s: %s" +msgstr "erro de escritura: %s" + +#: src/function.c:2363 src/function.c:2402 +#, fuzzy, c-format +msgid "close: %s: %s" +msgstr "%s%s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, fuzzy, c-format +msgid "read: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2409 +#, fuzzy, c-format +msgid "file: invalid file operation: %s" +msgstr "%s: opción incorrecta -- %c\n" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»" + +#: src/function.c:2539 +#, fuzzy, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "non implementada nesta plataforma: función «%s»" + +#: src/function.c:2608 +#, fuzzy, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "chamada á función «%s» non rematada: falta «%c»" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: src/function.c:2798 +#, fuzzy, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»" + +#: src/function.c:2801 +#, fuzzy, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»" + +#: src/getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: a opción «%s» é ambigua\n" + +#: src/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" + +#: src/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" + +#: src/getopt.c:705 src/getopt.c:878 +#, fuzzy, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: a opción «%s» require un argumento\n" + +#: src/getopt.c:734 +#, fuzzy, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opción «--%s» non recoñecida\n" + +#: src/getopt.c:738 +#, fuzzy, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opción «%c%s» non recoñecida\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opción inaceptábel -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opción incorrecta -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opción require un argumento -- %c\n" + +#: src/getopt.c:844 +#, fuzzy, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: a opción «-W %s» é ambigua\n" + +#: src/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" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "non se poden reservar %lu bytes para a táboa hash: memoria esgotada" + +#: src/hash.c:280 +#, fuzzy, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Carga=%ld/%ld=%.0f%%, " + +#: src/hash.c:282 +#, fuzzy, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%d, " + +#: src/hash.c:283 +#, fuzzy, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Colisións=%ld/%ld=%.0f%%" + +#: src/implicit.c:41 +#, fuzzy, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Buscando unha regra implícita para «%s».\n" + +#: src/implicit.c:57 +#, 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" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Buscando unha regra implícita membro do arquivo para «%s».\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Evitando a recursión de regras implícitas.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Probando a regra de patrón con raíz «%.*s».\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Rexeitando o prerrequisito imposíbel «%s».\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Rexeitando o prerrequisito implícito imposíbel «%s».\n" + +#: src/implicit.c:787 +#, fuzzy, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Probando o prerrequisito «%s».\n" + +#: src/implicit.c:788 +#, fuzzy, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Probando o prerrequisito implícito «%s».\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "O ficheiro «%s» non existe.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "O prerrequisito «%s» do obxectivo «%s» non existe.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Atopouse a o prerrequisito «%s» como VPATH «%s»\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Buscando unha regra co ficheiro intermedio «%s».\n" + +#: src/implicit.c:886 +#, fuzzy, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Buscando unha regra co ficheiro intermedio «%s».\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Rexeitando o prerrequisito imposíbel «%s».\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Non se atopou unha regra implícita para «%s».\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Atopouse unha regra implícita de «%s».\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Buscando unha regra implícita para «%s».\n" + +#: src/implicit.c:1157 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Non se atopou unha regra implícita para «%s».\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "Non foi posíbel crear un ficheiro temporal\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (memoria envorcada)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorado)" + +#: src/job.c:561 src/job.c:1900 +#, fuzzy +msgid "" +msgstr " (incorporadas):" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "*** [%s] Erro %d" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Agardando por traballos non rematados...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Proceso fillo vivo %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (remoto)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Colleitando o proceso fillo gañador %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Colleitando o proceso fillo perdedor %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Limpando o ficheiro de lotes temporal %s\n" + +#: src/job.c:972 +#, fuzzy, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Limpando o ficheiro de lotes temporal %s\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Retirando o proceso fillo %p PID %s%s da cadea.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Liberouse un elemento para o proceso fillo %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "produciuse un erro ao iniciar process_easy() o proceso (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Contáronse %d argumentos no inicio que fallou\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Poñendo o proceso fillo %p (%s) PID %s%s na cadea.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Obtívose un elemento para o proceso fillo %p (%s).\n" + +#: src/job.c:1909 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%sNon hai unha regra para facer o obxectivo «%s», que precisa «%s»%s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "# O ficheiro non existe." + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "non é posíbel impoñer límites de carga neste sistema operativo" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "non é posíbel impoñer un límite de carga: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" +"make colleitou un proceso fillo de pid %s, aínda se agarda polo pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "" + +#: src/job.c:2869 +#, fuzzy, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "O valor de $SHELL cambiou (antes era «%s», agora é «%s»)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Creando un ficheiro por lotes temporal %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" +"%s (liña %d) Contexto do intérprete de ordes incorrecto (!unixy && !" +"batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Non se admiten os traballos en paralelo (-j) nesta plataforma." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opcións:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorado por compatibilidade.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" +" -B, --always-make Facer todos os obxectivos incondicionalmente.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTORIO, --directory=DIRECTORIO\n" +" Cambiar ao DIRECTORIO antes de facer nada.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d Mostrar moita información de depuración.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=MODIFICADORES] Mostrar varios tipos de información de " +"depuración.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" As variábei de ambiente substitúen aos " +"makefiles.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n" +" Ler o FICHEIRO como makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Mostrar esta mensaxe e saír.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRECTORIO, --include-dir=DIRECTORIO\n" +" Buscar os makefiles incluídos\n" +" no DIRECTORIO.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Permitir N traballos á vez; infinitos sen\n" +" un argumento.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Continuar cando no se poidan facer\n" +" algúns obxectivos.\n" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Non iniciar varios traballos con carga\n" +" superior a N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" + +#: src/main.c:355 +#, fuzzy +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" +" -n, --just-print, --dry-run, --recon\n" +" Non executar ningún comando; só amosalos.\n" + +#: src/main.c:358 +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" +" Tratar o FICHEIRO como moi antigo e non " +"refacelo.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base Mostrar a base de datos interna de make.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Desactivar as regras implícitas incorporadas.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Desactivar os valores das variábeis " +"incorporadas.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr "" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Desactiva -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Tocar os obxectivos no canto de os refacer.\n" + +#: src/main.c:384 +#, fuzzy +msgid " --trace Print tracing information.\n" +msgstr "" +" -d Mostrar moita información de depuración.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version Mostrar o número de versión de make e saír.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Mostrar o directorio actual.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Desactivar -w, incluso se se activou\n" +" implicitamente.\n" + +#: src/main.c:392 +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" +" Tratar o FICHEIRO como infinitamente novo.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Avisar cando se faga referencia a\n" +" unha variábel non definida.\n" + +#: src/main.c:728 src/main.c:730 +#, fuzzy, c-format +msgid "write error: stdout" +msgstr "erro de escritura: %s" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "a cadea baleira non é válida como nome de ficheiro" + +#: src/main.c:834 +#, fuzzy, c-format +msgid "unknown debug level specification '%s'" +msgstr "especificación de nivel de depuración descoñecido «%s»" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opcións] [obxectivo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa compilou para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa compilou para %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Envíe informes de fallo no programa a .\n" +"Envíe informes de fallo na tradución a .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" +"%s: Atrapouse unha Interrupción/Excepción (código = 0x%lx, enderezo = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Filtro de excepcións non manexadas chamado desde o programa %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Violación de acceso: operación de escritura no enderezo 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Violación de acceso: operación de lectura no enderezo 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() definindo default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "A busca de rutas de find_and_set_shell() define default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (ficheiro temporal)" + +#: src/main.c:1833 +#, fuzzy, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"aviso: o servidor de traballos non está dispoñíbel: usando -j1. Engada «+» á " +"regra do make pai." + +#: src/main.c:1841 +#, fuzzy, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"aviso: -jN forzado no submake: desactivando o modo de servidor de traballos." + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "O ficheiro de make da entrada estándar especificouse dúas veces." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (ficheiro temporal)" + +#: src/main.c:2095 +#, fuzzy, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"aviso: -jN forzado no submake: desactivando o modo de servidor de traballos." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Non se admiten os traballos en paralelo (-j) nesta plataforma." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Reiniciando para entrar no modo de traballo único (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "" + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Actualizando os ficheiros de make....\n" + +#: src/main.c:2397 +#, 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" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2528 +#, fuzzy, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Produciuse un erro ao refacer o ficheiro de make «%s»." + +#: src/main.c:2548 +#, fuzzy, c-format +msgid "Included makefile '%s' was not found." +msgstr "Non se atopou o ficheiro de make incluído «%s»." + +#: src/main.c:2552 +#, fuzzy, c-format +msgid "Makefile '%s' was not found" +msgstr "Non se atopou o ficheiro de make «%s»" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Non foi posíbel volver ao directorio orixinal." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Re-executando[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Non hai obxectivos" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Non se especificaron obxectivos e non se atopou un ficheiro de make" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Actualizando os obxectivos meta....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"aviso: Detectáronse inconsistencias de reloxo. A operación pode quedar " +"incompleta." + +#: src/main.c:3186 +#, fuzzy, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "a opción «%s%s» require un argumento de cadea non baleira" + +#: src/main.c:3267 +#, fuzzy, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "a opción «-%c» require un argumento integral positivo" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sCompilado para %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sCompilado para %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sLicenza GPLv3+: GNU GPL versión 3 ou posterior \n" +"%sIsto é software libre: pode modificalo e redistribuílo.\n" +"%sNon hai NINGUNHA GARANTÃA, ata onde o permita a lei.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Base de datos de Make, imprimida en %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Base de datos de Make rematada en %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Usando as ordes por defecto para «%s».\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Creando un ficheiro por lotes temporal %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (ficheiro temporal)" + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporal)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporal)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Entrando nun directorio descoñecido\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Saíndo dun directorio descoñecido\n" + +#: src/output.c:100 +#, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Entrando no directorio «%s»\n" + +#: src/output.c:102 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Saíndo do directorio «%s»\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Entrando nun directorio descoñecido\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Saíndo dun directorio descoñecido\n" + +#: src/output.c:111 +#, fuzzy, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Entrando no directorio «%s»\n" + +#: src/output.c:113 +#, fuzzy, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Saíndo do directorio «%s»\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Detido.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "creando a canalización de traballos" + +#: src/posixos.c:201 src/posixos.c:434 +#, fuzzy +msgid "duping jobs pipe" +msgstr "creando a canalización de traballos" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inicializar a canalización do servidor de traballos" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "erro interno: cadea --jobserver-fds non válida «%s»" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +#, fuzzy +msgid "pselect jobs pipe" +msgstr "lectura da canalización de traballos" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "lectura da canalización de traballos" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Lendo os ficheiros de make...\n" + +#: src/read.c:330 +#, fuzzy, c-format +msgid "Reading makefile '%s'" +msgstr "Lendo o ficheiro de make «%s»" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (non hai unha meta por defecto)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (ruta de busca)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (non importa)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (non hai expansión de ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintaxe non válida no condicional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "" + +#: src/read.c:1154 +#, fuzzy, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr " (quixo dicir TAB no canto de 8 espazos?)" + +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator" +msgstr "falta un separador%s" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "falta un patrón obxectivo" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "patróns de obxectivo múltiples" + +#: src/read.c:1306 +#, fuzzy, c-format +msgid "target pattern contains no '%%'" +msgstr "o patrón obxectivo non contén «%%»" + +#: src/read.c:1349 +#, fuzzy, c-format +msgid "missing 'endif'" +msgstr "falta «endif»" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "nome de variábel baleiro" + +#: src/read.c:1423 +#, fuzzy, c-format +msgid "extraneous text after 'define' directive" +msgstr "texto superfluo trala directiva «define»" + +#: src/read.c:1448 +#, fuzzy, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "falta «endef», «define» sen rematar" + +#: src/read.c:1476 +#, fuzzy, c-format +msgid "extraneous text after 'endef' directive" +msgstr "Texto superfluo trala directiva «endef»" + +#: src/read.c:1548 +#, fuzzy, c-format +msgid "extraneous text after '%s' directive" +msgstr "Texto superfluo trala directiva «%s»" + +#: src/read.c:1549 +#, fuzzy, c-format +msgid "extraneous '%s'" +msgstr "«%s» superfluo" + +#: src/read.c:1577 +#, fuzzy, c-format +msgid "only one 'else' per conditional" +msgstr "só un «else» por condicional" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Definición dunha variábel por obxectivo mal formada" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "regras de patrón implícitas e estáticas mesturadas" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "regras implícitas e normais mesturadas" + +#: src/read.c:2155 +#, fuzzy, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "o obxectivo «%s» non coincide co patrón do obxectivo" + +#: src/read.c:2170 src/read.c:2221 +#, fuzzy, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "o ficheiro obxectivo «%s» ten entradas : e ::" + +#: src/read.c:2176 +#, 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." + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "" + +#: src/read.c:2308 +#, fuzzy, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "regras implícitas e normais mesturadas" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "aviso: viuse un carácter NUL; ignórase o resto da liña" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "" + +#: src/remake.c:254 +#, fuzzy, c-format +msgid "Nothing to be done for '%s'." +msgstr "Non hai nada que facer para «%s»" + +#: src/remake.c:255 +#, fuzzy, c-format +msgid "'%s' is up to date." +msgstr "«%s» está actualizado." + +#: src/remake.c:350 +#, fuzzy, c-format +msgid "Pruning file '%s'.\n" +msgstr "Podando o ficheiro «%s».\n" + +#: src/remake.c:416 +#, 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" + +#: src/remake.c:426 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sNon hai unha regra para facer o obxectivo «%s»%s" + +#: src/remake.c:452 +#, fuzzy, c-format +msgid "Considering target file '%s'.\n" +msgstr "Considerando o ficheiro obxectivo «%s».\n" + +#: src/remake.c:459 +#, 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" + +#: src/remake.c:471 +#, fuzzy, c-format +msgid "File '%s' was considered already.\n" +msgstr "O ficheiro «%s» xa fora considerado.\n" + +#: src/remake.c:481 +#, fuzzy, c-format +msgid "Still updating file '%s'.\n" +msgstr "Aínda se está actualizando o ficheiro «%s».\n" + +#: src/remake.c:484 +#, fuzzy, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Rematouse de actualizar o ficheiro «%s».\n" + +#: src/remake.c:513 +#, fuzzy, c-format +msgid "File '%s' does not exist.\n" +msgstr "O ficheiro «%s» non existe.\n" + +#: src/remake.c:520 +#, fuzzy, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Aviso: o ficheiro «%s» de .LOW_RESOLUTION_TIME ten unha marca de tempo " +"de alta resolución" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "O prerrequisito «%s» do obxectivo «%s» non existe.\n" + +#: src/remake.c:558 +#, fuzzy, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Usando as ordes por defecto para «%s».\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "A dependencia circular %s <- %s foi eliminada." + +#: src/remake.c:737 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Rematáronse os prerrequisitos do ficheiro obxectivo «%s».\n" + +#: src/remake.c:743 +#, fuzzy, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Están a se facer os prerrequisitos de «%s».\n" + +#: src/remake.c:757 +#, fuzzy, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Abandonando no ficheiro obxectivo «%s».\n" + +#: src/remake.c:762 +#, fuzzy, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Non se refai o obxectivo «%s» a causa dos erros." + +#: src/remake.c:814 +#, fuzzy, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "O prerrequisito «%s» é só-orde para o obxectivo «%s».\n" + +#: src/remake.c:819 +#, fuzzy, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "O prerrequisito «%s» do obxectivo «%s» non existe.\n" + +#: src/remake.c:824 +#, fuzzy, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "O prerrequisito «%s» é máis novo que o obxectivo «%s».\n" + +#: src/remake.c:827 +#, fuzzy, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "O prerrequisito «%s» é máis vello que o obxectivo «%s».\n" + +#: src/remake.c:845 +#, fuzzy, 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" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" + +#: src/remake.c:857 +#, fuzzy, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Facendo «%s» debido á marca de sempre-facer.\n" + +#: src/remake.c:865 +#, fuzzy, c-format +msgid "No need to remake target '%s'" +msgstr "Non é preciso refacer o obxectivo «%s»" + +#: src/remake.c:867 +#, fuzzy, c-format +msgid "; using VPATH name '%s'" +msgstr "; usando o nome de VPATH «%s»" + +#: src/remake.c:891 +#, fuzzy, c-format +msgid "Must remake target '%s'.\n" +msgstr "Debe refacerse o obxectivo «%s».\n" + +#: src/remake.c:897 +#, fuzzy, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Ignorando o nome VPATH «%s».\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "" + +#: src/remake.c:913 +#, fuzzy, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Produciuse un erro ao refacer o ficheiro obxectivo «%s».\n" + +#: src/remake.c:916 +#, fuzzy, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "O ficheiro obxectivo «%s» foi feito de novo con éxito.\n" + +#: src/remake.c:919 +#, fuzzy, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "O ficheiro obxectivo «%s» precisa refacerse con -q.\n" + +#: src/remake.c:1118 +#, fuzzy, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Usando as ordes por defecto para «%s».\n" + +#: src/remake.c:1499 +#, 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" + +#: src/remake.c:1747 +#, fuzzy, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "O elemento de .LIBPATTERNS «%s» non é un patrón" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "A Aduana non exporta: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Regras implícitas" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Non hai regras implícitas." + +#: src/rule.c:610 +#, fuzzy, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u regras implícitas, %u" + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "FALLO: num_pattern_rules é incorrecto! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "sinal descoñecido" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Colgar" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interrompido" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Saír" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instrución inaceptábel" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Trampa de trazado/punto de detención" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abortado" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Trampa de IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Trampa EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Excepción de coma flotante" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Matado" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Erro do bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Fallo de segmento" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Chamada ao sistema incorrecta" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Canalización rota" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Temporizador" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminado" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Sinal definido polo usuario 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Sinal definido polo usuario 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "O proceso fillo saíu" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Fallo de subministración eléctrica" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Detido" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Detido (entrada de consola)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Detido (saída de consola)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Detido (sinal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Excedeuse o límite de tempo de CPU" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Excedeuse o límite de tamaño do ficheiro" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Temporizador virtual esgotado" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "A xanela cambiou" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuado" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condición de E/S urxente" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "A E/S é posíbel" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Recurso perdido" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Sinal de perigo" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Petición de información" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "O coprocesador de coma flotante non está dispoñíbel" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +#, fuzzy +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"\n" +"# estatísticas da táboa hash de ficheiros:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automático" + +#: src/variable.c:1789 +msgid "default" +msgstr "por defecto" + +#: src/variable.c:1792 +msgid "environment" +msgstr "ambiente" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "ficheiro de make" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "ambiente baixo -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "liña de ordes" + +#: src/variable.c:1804 +#, fuzzy +msgid "'override' directive" +msgstr "directiva «override»" + +#: src/variable.c:1814 +#, fuzzy, c-format +msgid " (from '%s', line %lu)" +msgstr " (desde «%s», liña %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# estatísticas da táboa hash de conxunto de variábeis:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variábeis\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valores de variábeis específicas do patrón" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Non hai valores específicos do patrón." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valores de variábeis específicos do patrón" + +#: src/variable.h:237 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "aviso: variábel non definida «%.*s»" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "a chamada a sys$search() fallou con %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-aviso, pode que teña que reactivar o manexo de CTRL-Y desde o DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Executando %s no canto\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Rutas de busca VPATH\n" + +#: src/vpath.c:617 +#, fuzzy +msgid "# No 'vpath' search paths." +msgstr "# Non hai rutas de busca «vpath»" + +#: src/vpath.c:619 +#, fuzzy, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u rutas de busca «vpath».\n" + +#: src/vpath.c:622 +#, fuzzy +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Non hai unha ruta de busca xeral (variábel «VPATH»)." + +#: src/vpath.c:628 +#, fuzzy +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Ruta de busca xeral (variábel «VPATH»):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + +#~ 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 0x%x" +#~ msgstr "*** [%s] Erro 0x%x" + +#~ msgid "[%s] Error %d (ignored)" +#~ msgstr "[%s] Erro %d (ignorado)" + +#~ msgid "%s: Command not found" +#~ msgstr "%s: Orde non atopada" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Programa para o intérprete de ordes non atopado" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s está suspendido durante 30 segundos..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "rematouse sleep(30). Continuando.\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "erro interno: opcións --jobserver-fds múltiples" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ msgid "Unknown error %d" +#~ msgstr "Erro %d descoñecido" + +#~ msgid "virtual memory exhausted" +#~ msgstr "memoria virtual esgotada" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: usuario %lu (real %lu), grupo %lu (real %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Acceso inicializado" + +#~ msgid "User access" +#~ msgstr "Acceso de usuario" + +#~ msgid "Make access" +#~ msgstr "Acceso de make" + +#~ msgid "Child access" +#~ msgstr "Acceso de fillo" + +#~ msgid "write error" +#~ msgstr "erro de escritura" + +#~ msgid "Warning: File `%s' has modification time in the future" +#~ msgstr "Aviso: O ficheiro «%s» ten un tempo de modificación no futuro" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "" +#~ "\n" +#~ "# strcache hash-table stats:\n" +#~ "# " +#~ msgstr "" +#~ "\n" +#~ "# estatísticas da táboa hash strcache:\n" +#~ "# " + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Aviso: Redirección baleira\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "erro interno: «%s» command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "BUILTIN [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "BUILTIN RM %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Orde incorporada descoñecida «%s»\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Erro, orde baleira\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Entrada redirixida desde %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Erros redirixidos a %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Saída redirixida a %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Erro ao lanzar, %d\n" + +#~ msgid "create_child_process: DuplicateHandle(In) failed (e=%d)\n" +#~ msgstr "" +#~ "create_child_process: a chamada a DuplicateHandle(In) fallou (e=%d)\n" + +#~ msgid "create_child_process: DuplicateHandle(Err) failed (e=%d)\n" +#~ msgstr "" +#~ "create_child_process: a chamada a DuplicateHandle(Err) fallou (e=%d)\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Erro de sintaxe, ainda dentro de '\"'\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "Recibiuse un sinal SIGCHLD; %u procesos fillos non colleitados.\n" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-aviso, CTRL-Y deixará subprocesos ceibos.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Non especifique -j ou --jobs se sh.exe non está dispoñible." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Reiniciando make para entrar no modo de un traballo." + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sIsto é software libre; vexa o código fonte polas condicións de copia.\n" +#~ "%sNON hai garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA\n" +#~ "%sUN FIN DETERMINADO.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "`endef' superfluo" + +#~ msgid "empty `override' directive" +#~ msgstr "directiva `override' baleira" + +#~ msgid "invalid `override' directive" +#~ msgstr "directiva `override' non válida" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "non hai un home de ficheiro en `%sinclude'" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "o obxectivo `%s' deixa o patrón prerrequisito baleiro" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Non hai ficheiros." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u ficheiros en %u baldes hash.\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "" +#~ "# %.3f ficheiros de media por balde, máximo de %u ficheiros nun balde.\n" + +#~ msgid "DIRECTORY" +#~ msgstr "DIRECTORIO" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "Entrar no DIRECTORIO antes de facer nada" + +#~ msgid "FLAGS" +#~ msgstr "MODIFICADORES" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Suspende-lo proceso para poder conectar un depurador" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "" +#~ "As variables de ambiente teñen prioridade sobre os ficheiros de make" + +#~ msgid "FILE" +#~ msgstr "FICHEIRO" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "Le-lo FICHEIRO coma un ficheiro de make" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "Busca-los ficheiros de make incluidos no DIRECTORIO" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "Non comezar traballos múltiples se a carga non é inferior a N" + +#~ msgid "Don't actually run any commands; just print them" +#~ 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" + +#~ msgid "Don't echo commands" +#~ msgstr "Non amosa-los comandos" + +#~ msgid "Turns off -k" +#~ msgstr "Desactiva -k" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "Considerar que o FICHEIRO é infinitamente novo" + +#~ msgid "Entering" +#~ msgstr "Entrando" + +#~ msgid "Leaving" +#~ msgstr "Saindo" + +#~ msgid "# No variables." +#~ msgstr "# Non hai variables." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# %.1f variables de media por balde, máximo de %u nun balde.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# %d.%d variables de media por balde, máximo de %u nun balde.\n" + +#~ msgid "the `word' function takes a positive index argument" +#~ msgstr "a función `word' toma un argumento índice positivo" + +#~ msgid " not" +#~ msgstr " non" + +#~ msgid " remote" +#~ msgstr " remoto" + +#~ msgid " with arg %s" +#~ msgstr " co argumento %s" + +#~ msgid "%s finished." +#~ msgstr "%s rematou." + +#~ msgid "%s: unknown signal" +#~ msgstr "%s: sinal descoñecido" + +#~ msgid "%sGNU Make version %s" +#~ msgstr "%sGNU Make versión %s" + +#~ msgid "1-minute: %f " +#~ msgstr "1 minuto: %f " + +#~ msgid "15-minute: %f " +#~ msgstr "15 minutos: %f " + +#~ msgid "5-minute: %f " +#~ msgstr "5 minutos: %f " + +#~ msgid "?? getopt returned character code 0%o ??\n" +#~ msgstr "?? getopt devolveu o código do carácter 0%o ??\n" + +#~ msgid "Child" +#~ msgstr "Fillo" + +#~ msgid "Dependency `%s' does not exist.\n" +#~ msgstr "A dependencia `%s' non existe.\n" + +#~ msgid "Error %ld" +#~ msgstr "Erro %ld" + +#~ msgid "Error getting load average" +#~ msgstr "Erro ao obte-la carga media" + +#~ msgid "Error mallocing for FAB\n" +#~ msgstr "Erro ao reservar memoria para FAB\n" + +#~ msgid "Error mallocing for NAM\n" +#~ msgstr "Erro ao reservar memoria para NAM\n" + +#~ msgid "Error mallocing for direct\n" +#~ msgstr "Erro ao reservar memoria para direct\n" + +#~ msgid "Error mallocing for searchspec\n" +#~ msgstr "Erro ao reservar memoria para searchspec\n" + +#~ msgid "ExceptionAddress = %x\\r\n" +#~ msgstr "ExceptionAddress = %x\\r\n" + +#~ msgid "ExceptionCode = %x\\r\n" +#~ msgstr "ExceptionCode = %s\\r\n" + +#~ msgid "ExceptionFlags = %x\\r\n" +#~ msgstr "ExceptionFlags = %x\\r\n" + +#~ msgid "Job exported to %s ID %u\n" +#~ msgstr "Traballo exportado a %s ID %u\n" + +#~ msgid "MyExecute: Cannot allocate space for calling a command" +#~ msgstr "MyExecute: Non se pode reservar espacio para chamar un comando" + +#~ msgid "Trying %s dependency `%s'.\n" +#~ msgstr "Probando a dependencia %s `%s'.\n" + +#~ msgid "Unknown error 12345678901234567890" +#~ msgstr "Erro 12345678901234567890 descoñecido" + +#~ msgid "Unknown%s job %d" +#~ msgstr "Traballo%s %d descoñecido" + +#~ msgid "User" +#~ msgstr "Usuario" + +#~ msgid "arg with white space or doublequotes: %s\n" +#~ msgstr "argumento con espacios en branco ou comiñas dobres: %s\n" + +#~ msgid "digits occur in two different argv-elements.\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" + +#~ msgid "environment override" +#~ msgstr "supli-lo ambiente" + +#~ msgid "execve: " +#~ msgstr "execve: " + +#~ msgid "execvp: " +#~ msgstr "execvp: " + +#~ msgid "expand_function: unable to launch process (e=%d)\n" +#~ msgstr "expand_function: non se puido lanza-lo proceso (e=%d)\n" + +#~ msgid "exporting: " +#~ msgstr "exportando: " + +#~ msgid "exporting: %s" +#~ msgstr "exportando: %s" + +#~ msgid "exporting: Couldn't create return socket." +#~ msgstr "exportando: Non se puido crea-lo socket de retorno." + +#~ msgid "getcwd: " +#~ msgstr "getcwd: " + +#~ msgid "getwd: %s" +#~ msgstr "getwd: %s" + +#~ msgid "implicit" +#~ msgstr "implícita" + +#~ msgid "intermediate" +#~ msgstr "intermedia" + +#~ msgid "losing" +#~ msgstr "que perde" + +#~ msgid "never" +#~ msgstr "nunca" + +#~ msgid "newer" +#~ msgstr "máis novo" + +#~ msgid "non-option ARGV-elements: " +#~ msgstr "elementos ARGV que non son opcións: " + +#~ msgid "older" +#~ msgstr "máis vello" + +#~ msgid "option %c\n" +#~ msgstr "opción %c\n" + +#~ msgid "option %s" +#~ msgstr "opción %s" + +#~ msgid "option a\n" +#~ msgstr "opción a\n" + +#~ msgid "option b\n" +#~ msgstr "opción b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "opción c co valor `%s'\n" + +#~ msgid "option d with value `%s'\n" +#~ msgstr "opción d co valor `%s'\n" + +#~ msgid "original arg: %s\n" +#~ msgstr "argumento orixinal: %s\n" + +#~ msgid "override" +#~ msgstr "suplir" + +#~ msgid "plain arg: %s\n" +#~ msgstr "argumento simple: %s\n" + +#~ msgid "process_begin: CreateProcess(%s, %s, ...) failed.\n" +#~ msgstr "process_begin: a chamada a CreateProcess(%s, %s, ...) fallou.\n" + +#~ msgid "process_easy: DuplicateHandle(Out) failed (e=%d)\n" +#~ msgstr "process_easy: a chamada a DuplicateHandle(Out) fallou (e=%d)\n" + +#~ msgid "read" +#~ msgstr "lectura" + +#~ msgid "rule" +#~ msgstr "regra" + +#~ msgid "touch %s" +#~ msgstr "tocar %s" + +#~ msgid "undefined" +#~ msgstr "non definido" + +#~ msgid "unlink: " +#~ msgstr "unlink: " + +#~ msgid "winning" +#~ msgstr "que gaña" + +#~ msgid "write" +#~ msgstr "escritura" diff --git a/local/recipes/dev/gnu-make/source/po/he.gmo b/local/recipes/dev/gnu-make/source/po/he.gmo new file mode 100644 index 0000000000..fb73f0a092 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/he.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/he.po b/local/recipes/dev/gnu-make/source/po/he.po new file mode 100644 index 0000000000..4743ec08fc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/he.po @@ -0,0 +1,2616 @@ +# Hebrew messages for GNU Make +# Copyright (C) 2002 Free Software Foundation, Inc. +# Eli Zaretskii , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: make 3.79.1\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2002-03-30 21:33+0300\n" +"Last-Translator: Eli Zaretskii \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, fuzzy, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "úëîúð äððéàù `%s' äðåëúá ùåîéù ïåéñð" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "VMS úëøòîá ïåéëøàá øáà ìù äòù/êéøàú éåðéùá äëéîú ïéà" + +#: src/ar.c:151 +#, fuzzy, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "íéé÷ åðéà `%s' ïåéëøà õáå÷ :touch" + +#: src/ar.c:154 +#, fuzzy, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "ïé÷ú ïåéëøà õáå÷ åðéà `%s' :touch" + +#: src/ar.c:161 +#, fuzzy, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "`%s' øáà ìéëî åðéà `%s' ïåéëøà :touch" + +#: src/ar.c:168 +#, fuzzy, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "`%s' øåáò ïé÷ú-àì ãå÷ äøéæçä ar_member_touch :touch" + +#: src/arscan.c:130 +#, fuzzy, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "%d ñåèèñ ,lib$rset_module é\"ò ìåãåî ìò òãéî úôéìùá ïåìùë" + +#: src/arscan.c:236 +#, fuzzy, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "%d ñåèèñ íò ìùëð lbr$ini_control" + +#: src/arscan.c:261 +#, fuzzy, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "(`%s' äéøôñ) `%s' øáà øåáò äéøôñ úçéúôá äì÷ú" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +# These are not translated, since they belong to a test program. +#: src/arscan.c:995 +#, fuzzy, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Member `%s'%s: %ld bytes at %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (name might be truncated)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Date %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mode = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Break. ***\n" + +#: src/commands.c:629 +#, fuzzy, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] ÷çîéé àì ;ïé÷ú-éúìá úåéäì ìåìò `%s' ïåéëøà øáà ***" + +#: src/commands.c:633 +#, fuzzy, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** ÷çîéé àì ;ïé÷ú-éúìá úåéäì ìåìò `%s' ïåéëøà øáà ***" + +#: src/commands.c:647 +#, fuzzy, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] `%s' õáå÷ ÷çåî ***" + +#: src/commands.c:649 +#, 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. +#: src/commands.c:685 +#, fuzzy +msgid "# recipe to execute" +msgstr "# commands to execute" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (built-in):" + +#: src/commands.c:690 +#, fuzzy, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (from `%s', line %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directories\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: could not be stat'd.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (key %s, mtime %d): could not be opened.\n" + +#: src/dir.c:1126 +#, 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" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (device %ld, inode %ld): could not be opened.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (key %s, mtime %d): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (device %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (device %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "No" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " files, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "no" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " impossibilities" + +#: src/dir.c:1180 +msgid " so far." +msgstr " so far." + +#: src/dir.c:1197 +#, fuzzy, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " impossibilities in %u directories.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, fuzzy, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "(øáã ìù åôåñá) åîöòì äééðôäì íøåâ `%s' éáéñøå÷ø äðúùî" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "äëìäë úîééúñî äðéà äðúùîì äééðôä" + +#: src/file.c:272 +#, fuzzy, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr ",`%s' õáå÷ øåáò úåãå÷ô åðúéð %s õáå÷á %lu äøåùá" + +#: src/file.c:277 +#, fuzzy, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr ",íéùøåôî-éúìá íéììëá ùåôéç é\"ò åàöîð `%s' õáå÷ øåáò úåãå÷ô" + +#: src/file.c:281 +#, fuzzy, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr ".õáå÷ åúåàì äúò íéáùçð `%s' ïäå `%s' ïä íìåàå" + +#: src/file.c:284 +#, fuzzy, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr ".`%s' øåáò åìà ìò úåôéãò `%s' øåáò úåãå÷ô" + +#: src/file.c:304 +#, fuzzy, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "`%s' íéããåá íééúåãå÷ðî `%s' íéìåôë íééúåãå÷ðì êåôäì ïúéð àì" + +#: src/file.c:310 +#, fuzzy, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "`%s' íéìåôë íééúåãå÷ðî `%s' íéããåá íééúåãå÷ðì êåôäì ïúéð àì" + +#: src/file.c:407 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***" + +#: src/file.c:411 +#, fuzzy, c-format +msgid "Removing intermediate files...\n" +msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "úëøòî ïåòù" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "øúåîä íåçúì õåçî äðéäù ,%s ìù ïîæä úîéúç úà %s-á óéìçî" + +# See the comment above about translations of text printed under -p. +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Not a target:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Precious file (prerequisite of .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Phony target (prerequisite of .PHONY)." + +#: src/file.c:1098 +#, fuzzy +msgid "# Command line target." +msgstr "# Command-line target." + +#: src/file.c:1100 +#, fuzzy +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# A default or MAKEFILES makefile." + +#: src/file.c:1102 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# No implicit rules." + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Implicit rule search has been done." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Implicit rule search has not been done." + +#: src/file.c:1107 +#, fuzzy, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Implicit/static pattern stem: `%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# File is an intermediate prerequisite." + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Precious file (prerequisite of .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Phony target (prerequisite of .PHONY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Also makes:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Modification time never checked." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# File does not exist." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# File is very old." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Last modified %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# File has been updated." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# File has not been updated." + +#: src/file.c:1139 +#, fuzzy +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Commands currently running (THIS IS A BUG)." + +#: src/file.c:1142 +#, fuzzy +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Dependencies commands running (THIS IS A BUG)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Successfully updated." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Needs to be updated (-q is set)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Failed to be updated." + +#: src/file.c:1163 +#, fuzzy +msgid "# Invalid value in 'command_state' member!" +msgstr "# Invalid value in `command_state' member!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Files" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "øôñî åðéà `word' úééö÷ðåôì ïåùàø èðîåâøà" + +#: src/function.c:803 +#, fuzzy, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "éáåéç úåéäì áééç `word' úééö÷ðåôì ïåùàø èðîåâøà" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "øôñî åðéà `wordlist' úééö÷ðåôì ïåùàø èðîåâøà" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "øôñî åðéà `wordlist' úééö÷ðåôì éðù èðîåâøà" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "øôñî åðéà `wordlist' úééö÷ðåôì ïåùàø èðîåâøà" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "øôñî åðéà `wordlist' úééö÷ðåôì éðù èðîåâøà" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "create_child_process: DuplicateHandle(In) failed (e=%d)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "create_child_process: DuplicateHandle(Err) failed (e=%d)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() failed (e=%d)\n" + +#: src/function.c:1723 +#, fuzzy, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe (): process_init_fd() failed\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "" + +#: src/function.c:2409 +#, fuzzy, c-format +msgid "file: invalid file operation: %s" +msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô" + +#: src/function.c:2539 +#, fuzzy, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "åæ úëøòîá úùîåîî äðéà `%s' äéö÷ðåô" + +#: src/function.c:2608 +#, fuzzy, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "`%s' äéö÷ðåôì äàéø÷á `%c' øñç" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: src/function.c:2798 +#, fuzzy, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô" + +#: src/function.c:2801 +#, fuzzy, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô" + +#: src/getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `%s' ïééôàî\n" + +#: src/getopt.c:683 +#, fuzzy, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `--%s' ïééôàî\n" + +#: src/getopt.c:688 +#, fuzzy, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `%c%s' ïééôàî\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, fuzzy, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà áééçî `%s' ïééôàî\n" + +#: src/getopt.c:734 +#, fuzzy, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s úéðëú øåáò `--%s' ääåæî-éúìá ïééôàî\n" + +#: src/getopt.c:738 +#, fuzzy, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s úéðëú øåáò `%c%s' ääåæî-éúìá ïééôàî\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: é÷åç-éúìá ïééôàî -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: èðîåâøà áééçî ïééôàî -- %c\n" + +#: src/getopt.c:844 +#, fuzzy, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `-W %s' ïééôàî\n" + +#: src/getopt.c:862 +#, fuzzy, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `-W %s' ïééôàî\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "" + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "" + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "" + +#: src/implicit.c:41 +#, fuzzy, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr ".`%s' øåáò ùøåôî-éúìá ììë ùôçî\n" + +#: src/implicit.c:57 +#, fuzzy, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr ".`%s' øåáò ïåéëøà éøáàì ùøåôî-éúìá ììë ùôçî\n" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr ".`%s' øåáò ïåéëøà éøáàì ùøåôî-éúìá ììë ùôçî\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr ".úùøåôî-éúìá äéñøå÷øî òðîð\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr ".`%.*s' ùøåù íò úéðáú ììë äñðî\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' íã÷ úùéøã äçåã\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' úùøåôî-éúìá íã÷ úùéøã äçåã\n" + +#: src/implicit.c:787 +#, fuzzy, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr ".`%s' íã÷ úùéøã ììë äñðî\n" + +#: src/implicit.c:788 +#, fuzzy, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr ".`%s' úùøåôî-éúìá íã÷ úùéøã äñðî\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr ".íéé÷ åðéà `%s' õáå÷\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr ".íéé÷ åðéàù `%s' éàðúë úùøåã `%s' äøèî\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "`%s' íã÷ úùéøãë VPATH `%s' éúàöî\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr ".`%s' éðîæ õáå÷ íò ììë ùôçî\n" + +#: src/implicit.c:886 +#, fuzzy, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr ".`%s' éðîæ õáå÷ íò ììë ùôçî\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' íã÷ úùéøã äçåã\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr ".`%s' øåáò íéùøåôî-éúìá íéììë åàöîð àì\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr ".`%s' øåáò ùøåôî-éúìá ììë éúàöî\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr ".`%s' øåáò ùøåôî-éúìá ììë ùôçî\n" + +#: src/implicit.c:1157 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr ".`%s' øåáò íéùøåôî-éúìá íéììë åàöîð àì\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "fwrite (temporary file)" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (core õáå÷á íùøð ïåøëæä ïëåú)" + +#: src/job.c:557 +#, fuzzy +msgid " (ignored)" +msgstr "[%s] %d äì÷úî éúîìòúä" + +#: src/job.c:561 src/job.c:1900 +#, fuzzy +msgid "" +msgstr " (built-in):" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "*** [%s] %d äì÷ú" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** ...åîééúñð íøèù úåãåáòì ïéúîî" + +#: src/job.c:719 +#, fuzzy, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "äöø 0x%08lx (%s) PID=%ld %s úá-úéðëú\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr "(ú÷çåøî)" + +#: src/job.c:914 +#, fuzzy, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "äçéìöäù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n" + +#: src/job.c:915 +#, fuzzy, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "äìùëðù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n" + +#: src/job.c:972 +#, fuzzy, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n" + +#: src/job.c:1083 +#, fuzzy, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr ".úåãåáò úøùøùî 0x%08lx PID=%ld %s úá-úéðëú ÷éçøî\n" + +#: src/job.c:1146 +#, fuzzy, c-format +msgid "Released token for child %p (%s).\n" +msgstr ".øøçåù 0x%08lx (%s) úá-úéðëú øåáò ïåîéñàä\n" + +#: src/job.c:1583 src/job.c:2497 +#, fuzzy, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "(e=%d) úéðëú-úú øåâéùá ìùëð process_easy()\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"ìùëðù øåâéùá åðîð íéèðîåâøà %d\n" + +#: src/job.c:1650 +#, fuzzy, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr ".úåãåáò úøùøùì 0x%08lx (%s) PID=%ld %s úá-úéðëú óøöî\n" + +#: src/job.c:1883 +#, fuzzy, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr ".0x%08lx (%s) úá-úéðëú øåáò ïåîéñà ìá÷úä\n" + +#: src/job.c:1909 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%säúééðáì íéììë ïéà êà ,`%s' úùøåã `%s'%s äøèî" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "# File does not exist." + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "åæ úëøòîá ñîåò úåìáâî úåôëì ïúéð àì" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "cannot enforce load limit: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "" + +#: src/job.c:2530 +#, fuzzy, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "äôñàð pid %d úá-úéðëú ,pid %d-ì äëçî ïééãò\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "" + +#: src/job.c:2869 +#, fuzzy, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "(`%s' äéä íãå÷ ,`%s' åéùëò) äðúùä $SHELL ìù åëøò" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "`%s' éðîæ batch õáå÷ øöåé\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" +"(!unixy && !batch_mode_shell) shell-mode úòéá÷á äì÷ú :%s õáå÷ ìù %d äøåù\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá" + +#: src/main.c:317 +msgid "Options:\n" +msgstr " :íéðééôàî\n" + +#: src/main.c:318 +#, fuzzy +msgid " -b, -m Ignored for compatibility.\n" +msgstr "úåîéàú ïòîì èîùåî" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" + +#: src/main.c:325 +#, fuzzy +msgid " -d Print lots of debugging information.\n" +msgstr "úåàéâù éåôéð úáåèì òãéî ìù òôù âöä" + +#: src/main.c:327 +#, fuzzy +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "úåàéâù éåôéð úáåèì òãéî ìù íéðåù íéâåñ âöä" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" + +#: src/main.c:337 +#, fuzzy +msgid " -h, --help Print this message and exit.\n" +msgstr "úéðëúäî àöå äæ äøæò êñî âöä" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" + +#: src/main.c:344 +#, fuzzy +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "äìáâî ïéà èðîåâøà àìì ;úéðîæ-åá úåãåáò N-î øúåé àì" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +#, fuzzy +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "äéðáì úåðúéð ïðéà úåøèîäî äîë íà åìéôà êùîä" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" + +#: src/main.c:355 +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: src/main.c:364 +#, fuzzy +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "Make ìù éîéðô íéðåúð ñéñá âöä" + +#: src/main.c:366 +#, fuzzy +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "úðëãåòî äøèî íàá øîåà äàéöé ãå÷ ;úåãå÷ô õéøú ìà" + +#: src/main.c:368 +#, fuzzy +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "íéùøåôî-éúìá íéðáåî íéììë ìøèð" + +#: src/main.c:370 +#, fuzzy +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "íéðúùî ìù úåðáåî úåøãâä ìøèð" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr "" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" + +#: src/main.c:382 +#, fuzzy +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "ïúåðáì íå÷îá úåøèî ìù ïîæ úîéúç ïëãò" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" + +#: src/main.c:386 +#, fuzzy +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "úéðëúäî àöå Make ìù àñøéâ øôñî âöä" + +#: src/main.c:388 +#, fuzzy +msgid " -w, --print-directory Print the current directory.\n" +msgstr "úéçëåð äé÷éú íù âöä" + +#: src/main.c:390 +#, fuzzy +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "ùøåôîá ïéåö àåä íà åìéôà -w ìèá" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" + +#: src/main.c:395 +#, fuzzy +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "øãâåä àìù äðúùîì äééðôä äø÷îá äøäæà âöä" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "õáå÷ íùë úìá÷úî äðéà ä÷éø úæåøçî" + +#: src/main.c:834 +#, fuzzy, c-format +msgid "unknown debug level specification '%s'" +msgstr "úåàéâù éåôéðì òãéî ìù `%s' øëåî-éúìá ïééôàî" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "%s [íéðééôàî] [äøèî] ... :ùåîéù ïôåà\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" + +#: src/main.c:909 +#, fuzzy, c-format +msgid "Report bugs to \n" +msgstr "" +"\n" +".-ì äì÷ú éçååéã çåìùì àð\n" + +#: src/main.c:940 +#, fuzzy, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s úéðëúá (code = 0x%x, addr = 0x%x) äâéøç åà ä÷éñô\n" + +#: src/main.c:947 +#, fuzzy, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"%s úéðëú êåúî àø÷ð ìåôéè àìì úåâéøç ïðñî\n" +"ExceptionCode = %x\n" +"ExceptionFlags = %x\n" +"ExceptionAddress = %x\n" + +#: src/main.c:955 +#, fuzzy, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "%x úáåúëì äáéúë :ïåøëæì äùéâ úì÷ú\n" + +#: src/main.c:956 +#, fuzzy, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "%x úáåúëî äàéø÷ :ïåøëæì äùéâ úì÷ú\n" + +#: src/main.c:1028 src/main.c:1042 +#, fuzzy, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell setting default_shell = %s\n" + +#: src/main.c:1098 +#, 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" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (temporary file): " + +#: src/main.c:1833 +#, fuzzy, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +".Make ìù áàä ììëì `+' óñåä .-j1-á ùåîéù äùòéé ;ïéîæ åðéà jobserver :äøäæà" + +#: src/main.c:1841 +#, fuzzy, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "jobserver ïôåà ìèáî ;-jN áééçî Make-úú :äøäæà" + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr ".úçà íòôî øúåé ïúéð éð÷ú èì÷ õåøòî Makefile" + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (temporary file)" + +#: src/main.c:2095 +#, fuzzy, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "jobserver ïôåà ìèáî ;-jN áééçî Make-úú :äøäæà" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá" + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr ".(-j1) éúøãñ ïôåàá åòöåáé úåãå÷ô" + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "" + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "...makefile éöá÷ ïëãòî\n" + +#: src/main.c:2397 +#, fuzzy, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr ".ùãçî åøöééìî òðîð ;úéôåñðéà äàìåì øåöéì ìåìò `%s' Makefile\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2528 +#, fuzzy, c-format +msgid "Failed to remake makefile '%s'." +msgstr ".`%s' makefile ìù ùãçî-äøéöéá äì÷ú" + +#: src/main.c:2548 +#, fuzzy, c-format +msgid "Included makefile '%s' was not found." +msgstr ".àöîð àì `%s' ììëåî makefile" + +#: src/main.c:2552 +#, fuzzy, c-format +msgid "Makefile '%s' was not found" +msgstr "àöîð àì `%s' Makefile" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr ".úéøå÷îä äé÷éúì øåæçì ïúéð àì" + +#: src/main.c:2708 +#, fuzzy, c-format +msgid "Re-executing[%u]:" +msgstr "Re-executing:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "úåøèî ïéà" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "makefile éöá÷ åàöîð àìå úåøèî ïåéö ïéà" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "...ãòé úåøèî ïëãòî\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr ".äîìù àì úåéäì äìåìò äéðáä .ïåòù úùéìâ äúìâúð :úåøéäæ" + +#: src/main.c:3186 +#, fuzzy, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî" + +#: src/main.c:3267 +#, fuzzy, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make data base, printed on %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Finished Make data base on %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "`%s' éðîæ batch õáå÷ øöåé\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (temporary file): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (temporary file)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (temporary file)" + +#: src/output.c:95 +#, fuzzy, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "an unknown directory" + +#: src/output.c:97 +#, fuzzy, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "an unknown directory" + +#: src/output.c:100 +#, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "directory `%s'\n" + +#: src/output.c:102 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "directory `%s'\n" + +#: src/output.c:106 +#, fuzzy, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "an unknown directory" + +#: src/output.c:108 +#, fuzzy, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "an unknown directory" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "" + +#: src/output.c:113 +#, fuzzy, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "directory `%s'\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Stop.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "creating jobs pipe" + +#: src/posixos.c:201 src/posixos.c:434 +#, fuzzy +msgid "duping jobs pipe" +msgstr "creating jobs pipe" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "init jobserver pipe" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "--jobserver-fds ïééôàîá `%s' äéåâù úæåøçî :úéîéðô äðëú úì÷ú" + +# Here and elsewhere leading strings passed to perror are not translated, +# since they will be followed by an error message in English. +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "write jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +#, fuzzy +msgid "pselect jobs pipe" +msgstr "read jobs pipe" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "read jobs pipe" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "...makefile éöá÷ àøå÷\n" + +#: src/read.c:330 +#, fuzzy, c-format +msgid "Reading makefile '%s'" +msgstr "Reading makefile `%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (no default goal)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (search path)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (don't care)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (no ~ expansion)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "éàðú ìù éåâù øéáçú" + +#: src/read.c:1002 +#, fuzzy, c-format +msgid "recipe commences before first target" +msgstr "äðåùàø äøèî éðôì úåìéçúî úåãå÷ô" + +#: src/read.c:1053 +#, fuzzy, c-format +msgid "missing rule before recipe" +msgstr "ïäéðôì ììë àìì úåãå÷ô" + +#: src/read.c:1154 +#, fuzzy, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "(?íéçååø 8 íå÷îá TAB-ì úðååëúä íàä) " + +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator" +msgstr "%sãéøôî øñç" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "äøèî úéðáú ïéà" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "úåáåøî äøèî úåéðáú" + +#: src/read.c:1306 +#, fuzzy, c-format +msgid "target pattern contains no '%%'" +msgstr "`%%' àìì äøèî úéðáú" + +#: src/read.c:1349 +#, fuzzy, c-format +msgid "missing 'endif'" +msgstr "øñç `endif'" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "÷éø äðúùî íù" + +#: src/read.c:1423 +#, fuzzy, c-format +msgid "extraneous text after 'define' directive" +msgstr "`endef' úàøåä éøçà øúåéî èñ÷è" + +#: src/read.c:1448 +#, fuzzy, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "íåéñ àìì `define' úàøåä ,øñç `endef'" + +#: src/read.c:1476 +#, fuzzy, c-format +msgid "extraneous text after 'endef' directive" +msgstr "`endef' úàøåä éøçà øúåéî èñ÷è" + +#: src/read.c:1548 +#, fuzzy, c-format +msgid "extraneous text after '%s' directive" +msgstr "`%s' úàøåä éøçà øúåéî èñ÷è" + +#: src/read.c:1549 +#, fuzzy, c-format +msgid "extraneous '%s'" +msgstr "øúåéî `%s'" + +#: src/read.c:1577 +#, fuzzy, c-format +msgid "only one 'else' per conditional" +msgstr "éàðú ìëì ãéçé `else' ÷ø øúåî" + +#: src/read.c:1853 +#, fuzzy, c-format +msgid "Malformed target-specific variable definition" +msgstr "äøèîì éôéöôñ äðúùî ìù äéåâù äøãâä" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "íéùøåôî-éúìáå íééèèñ úéðáú éììë ìù áåáøò" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "íéùøåôî-éúìáå íéìéâø íéììë ìù áåáøò" + +#: src/read.c:2155 +#, fuzzy, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "ãòéä úéðáú úà úîàåú äðéà `%s' äøèî" + +#: src/read.c:2170 src/read.c:2221 +#, fuzzy, c-format +msgid "target file '%s' has both : and :: entries" +msgstr ":: ïäå : âåñî ïä íéììë ùé `%s' äøèî õáå÷ì" + +#: src/read.c:2176 +#, fuzzy, c-format +msgid "target '%s' given more than once in the same rule" +msgstr ".ììë åúåàá úçà íòôî øúåé äòéôåî `%s' äøèî" + +#: src/read.c:2186 +#, fuzzy, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "`%s' äøèî øåáò úåãå÷ô ñøåã :úåøéäæ" + +#: src/read.c:2189 +#, fuzzy, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "`%s' äøèî øåáò úåîãå÷ úåãå÷ôî íìòúî :úåøéäæ" + +#: src/read.c:2308 +#, fuzzy, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "íéùøåôî-éúìáå íéìéâø íéììë ìù áåáøò" + +#: src/read.c:2325 +#, fuzzy, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "`%s' äøèî øåáò úåãå÷ô ñøåã :úåøéäæ" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "äçðæð äøåùä úøúé ;NUL åú éúùâô :äøäæà" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "`%s' äøèî øåáò úåãå÷ô ñøåã :úåøéäæ" + +#: src/remake.c:254 +#, fuzzy, c-format +msgid "Nothing to be done for '%s'." +msgstr ".`%s øåáò úåùòì äî ïéà" + +#: src/remake.c:255 +#, fuzzy, c-format +msgid "'%s' is up to date." +msgstr ".éðëãò øáë `%s'" + +#: src/remake.c:350 +#, fuzzy, c-format +msgid "Pruning file '%s'.\n" +msgstr ".`%s' øåáò úåéåìú óøâ õö÷î\n" + +#: src/remake.c:416 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%säúééðáì íéììë ïéà êà ,`%s' úùøåã `%s'%s äøèî" + +#: src/remake.c:426 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%s`%s'%s äøèî úééðáì íéììë ïéà" + +#: src/remake.c:452 +#, fuzzy, c-format +msgid "Considering target file '%s'.\n" +msgstr ".`%s' äøèî õáå÷ ïçåá\n" + +#: src/remake.c:459 +#, fuzzy, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr ".`%s' õáå÷ ïåëãòá éúìùëðå éúéñéð ïîæî àì\n" + +#: src/remake.c:471 +#, fuzzy, c-format +msgid "File '%s' was considered already.\n" +msgstr ".ïë-éðôì ïçáð øáë `%s' õáå÷\n" + +#: src/remake.c:481 +#, fuzzy, c-format +msgid "Still updating file '%s'.\n" +msgstr ".`%s' õáå÷ ïëãòî ïééãò\n" + +#: src/remake.c:484 +#, fuzzy, c-format +msgid "Finished updating file '%s'.\n" +msgstr ".`%s' õáå÷ ïëãòì éúîééñ\n" + +#: src/remake.c:513 +#, fuzzy, c-format +msgid "File '%s' does not exist.\n" +msgstr ".íéé÷ åðéà `%s' õáå÷\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr ".íéé÷ åðéàù `%s' éàðúë úùøåã `%s' äøèî\n" + +#: src/remake.c:558 +#, fuzzy, c-format +msgid "Using default recipe for '%s'.\n" +msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr ".%s <- %s úéìâòî ìåìú èéîùî" + +#: src/remake.c:737 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr ".`%s' äøèî õáå÷ ìù íã÷-úåùéøã íò éúîééñ\n" + +#: src/remake.c:743 +#, fuzzy, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr ".äéðáá `%s' ìù íã÷ä úåùéøã\n" + +#: src/remake.c:757 +#, fuzzy, c-format +msgid "Giving up on target file '%s'.\n" +msgstr ".`%s' äøèî õáå÷ éáâì íééãé éúîøä\n" + +#: src/remake.c:762 +#, fuzzy, c-format +msgid "Target '%s' not remade because of errors." +msgstr ".úåàéâù á÷ò ùãçî äúðáð àì `%s' äøèî" + +#: src/remake.c:814 +#, fuzzy, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n" + +#: src/remake.c:819 +#, fuzzy, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr ".íéé÷ åðéàù `%s' éàðúë úùøåã `%s' äøèî\n" + +#: src/remake.c:824 +#, fuzzy, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr ".`%s' íã÷ä úùéøãî äðùé `%s' äøèî\n" + +#: src/remake.c:827 +#, fuzzy, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n" + +#: src/remake.c:845 +#, fuzzy, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr ".íã÷ úåùéøã àììå íéìåôë íééúåãå÷ð íò äðéä `%s' äøèî\n" + +#: src/remake.c:852 +#, fuzzy, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr ".äùòîì äúðúùä àì íã÷ úùéøã óàå `%s' øåáò úåãå÷ô ïéà\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "" + +#: src/remake.c:865 +#, fuzzy, c-format +msgid "No need to remake target '%s'" +msgstr "`%s' äøèî ùãçî úåðáì êøåö ïéà" + +#: src/remake.c:867 +#, fuzzy, c-format +msgid "; using VPATH name '%s'" +msgstr " (`%s' :VPATH õáå÷ íù)" + +#: src/remake.c:891 +#, fuzzy, c-format +msgid "Must remake target '%s'.\n" +msgstr ".`%s' äøèî ùãçî úåðáì áééç\n" + +#: src/remake.c:897 +#, fuzzy, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " .`%s' VPATH íùî íìòúî\n" + +#: src/remake.c:906 +#, fuzzy, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr ".`%s' øåáò úåãå÷ô õéøî\n" + +#: src/remake.c:913 +#, fuzzy, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr ".ùãçî `%s' úåðáì ïåéñð ìùëð\n" + +#: src/remake.c:916 +#, fuzzy, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr ".`%s' ùãçî úééðáá äçìöä\n" + +#: src/remake.c:919 +#, fuzzy, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr ".-q íò úåðáéäì êéøö `%s' äøèî õáå÷\n" + +#: src/remake.c:1118 +#, fuzzy, c-format +msgid "Using default commands for '%s'.\n" +msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n" + +#: src/remake.c:1499 +#, fuzzy, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "*** `%s' õáå÷ øåáò (%s > %s) ãéúòá åðéä ïåøçà éåðéù ïîæ :äøäæà ***" + +#: src/remake.c:1747 +#, fuzzy, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "úéðáú åðéà .LIBPATTERNS ìù `%s' èðîìà" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "%s àöééî åðéà Customs\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +#, fuzzy +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# No implicit rules." + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# No implicit rules." + +#: src/rule.c:610 +#, fuzzy, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implicit rules, %u" + +#: src/rule.c:619 +#, fuzzy, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "BUG: num_pattern_rules wrong! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +# It's no use to try to translate the signal names. +#: src/signame.c:84 +msgid "unknown signal" +msgstr "unknown signal" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Hangup" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interrupt" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Quit" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Illegal Instruction" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Trace/breakpoint trap" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Aborted" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT trap" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT trap" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Floating point exception" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Killed" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Bus error" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Segmentation fault" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Bad system call" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Broken pipe" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarm clock" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminated" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "User defined signal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "User defined signal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Child exited" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Power failure" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Stopped" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Stopped (tty input)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Stopped (tty output)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Stopped (signal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU time limit exceeded" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "File size limit exceeded" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtual timer expired" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profiling timer expired" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Window changed" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continued" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Urgent I/O condition" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O possible" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resource lost" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Danger signal" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Information request" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Floating point co-processor not available" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatic" + +# These are printed under -p, so they are left in English. +#: src/variable.c:1789 +msgid "default" +msgstr "default" + +#: src/variable.c:1792 +msgid "environment" +msgstr "environment" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "environment under -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "command line" + +#: src/variable.c:1804 +#, fuzzy +msgid "'override' directive" +msgstr "`override' directive" + +#: src/variable.c:1814 +#, fuzzy, c-format +msgid " (from '%s', line %lu)" +msgstr " (from `%s', line %lu):\n" + +#: src/variable.c:1877 +#, fuzzy +msgid "# variable set hash-table stats:\n" +msgstr "# %u variables in %u hash buckets.\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variables\n" + +#: src/variable.c:1892 +#, fuzzy +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Pattern-specific variable values" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# No pattern-specific variable values." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u pattern-specific variable values" + +#: src/variable.h:237 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "`%.*s' øãâåî-éúìá äðúùî :úåøéäæ" + +#: src/vmsfunctions.c:91 +#, fuzzy, c-format +msgid "sys$search() failed with %d\n" +msgstr "%d íò ìùëð sys$search\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr ".DCL-î CTRL-Y-á ìåôéè øåùôéàá êøåö úåéäì ìåìò :úåøéäæ\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, fuzzy, c-format +msgid "Append output to %s\n" +msgstr "%s-ì èìô úééðôä\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "%s õéøî úàæ íå÷îá\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH Search Paths\n" + +#: src/vpath.c:617 +#, fuzzy +msgid "# No 'vpath' search paths." +msgstr "# No `vpath' search paths." + +#: src/vpath.c:619 +#, fuzzy, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u `vpath' search paths.\n" + +#: src/vpath.c:622 +#, fuzzy +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# No general (`VPATH' variable) search path." + +#: src/vpath.c:628 +#, fuzzy +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# General (`VPATH' variable) search path:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Invalid value in `update_status' member!" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# No files." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" + +#~ 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 "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] 0x%x äì÷ú ***" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "ä÷éø äééðôä :úåøéäæ\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "'\"' êåúá ïééãò ,øéáçú úàéâù\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr ".åôñàð íøèù úá-úåéðëú %u ;SIGCHLD ìá÷úä\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "command_state `%s' :úéîéðô äðëú úì÷ú" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr ".úåìéòô úá-úåéðëú øéàùäì ìåìò CTRL-Y :úåøéäæ\n" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "BUILTIN [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "BUILTIN RM %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "úøëåî äðéà '%s'úéðáåî äãå÷ô\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "ä÷éø äãå÷ô :äì÷ú\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "%s-î èì÷ úééðôä\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "%s-ì úåàéâù úééðôä\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "%d :úá-úéðëú úìòôäá äì÷ú\n" + +#~ msgid "%s: Command not found" +#~ msgstr "äàöîð àì åæ äãå÷ô :%s" + +#~ msgid "%s: Shell program not found" +#~ msgstr "äàöîð àì shell úãå÷ô :%s" + +#~ msgid "DIRECTORY" +#~ msgstr "DIRECTORY" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "äãåáò úìéçú éðôì DIRECTORY-ì äé÷éú äðù" + +#~ msgid "FLAGS" +#~ msgstr "FLAGS" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "äéìà äôðîä øåáéç êøåöì úéðëúä á÷ò" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "makefile-á íéðúùî íéñøåã äáéáñ éðúùî" + +#~ msgid "FILE" +#~ msgstr "FILE" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "makefile-ë FILE àø÷" + +#~ msgid "Ignore errors from commands" +#~ msgstr "úåéðëú-úúá úåàéâùî íìòúä" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "DIRECTORY-á íéììëð makefile éöá÷ ùôç" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "N-ì úçúî ñîåòä íà àìà úåáåøî úåãåáò ìéçúú ìà" + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "íúåà ñôãä ÷ø ;ììë úåãå÷ô õéøú ìà" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "ùãçî åúåà äðáú ìàå ,ïùé ãàî äéä åìéàë FILE-á âäð" + +#~ msgid "Don't echo commands" +#~ msgstr "úåòöåáî úãå÷ô âéöú ìà" + +#~ msgid "Turns off -k" +#~ msgstr "-k ìèáî" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "øùôàù ùãç éëä äéä FILE åìéàë âäð" + +#~ 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. +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr " äîééúñð\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr ".ïéîæ åðéà sh.exe íà --jobs åà -j-á êåîúì ïúéð àì" + +#~ msgid "Resetting make for single job mode." +#~ msgstr ".éúøãñ ïôåàá åòöåáé úåãå÷ô" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "íéáåøî --jobserver-fds éðééôàî :úéîéðô äðëú úì÷ú" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ 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 .\n" +#~ "\n" +#~ msgstr "" +#~ ", by Richard Stallman and Roland McGrath.\n" +#~ "%s %s øåáò äúðáð\n" +#~ "%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n" +#~ "%s\tFree Software Foundation, Inc.\n" +#~ "%s .øå÷î éöá÷á ïééò ä÷úòä úåéåëæì ;úéùôç äðëú éäåæ\n" +#~ "%s äîàúä åà úåøéçñ øåáò àì åìéôà ;úåéøçà áúëá äååìî äðéà åæ úéðëåú\n" +#~ "%s .éäùìë úéìëúì\n" +#~ "\n" +#~ "%s -ì äì÷ú éçååéã çåìùì àð\n" +#~ "\n" + +#~ msgid "Entering" +#~ msgstr "Entering" + +#~ msgid "Leaving" +#~ msgstr "Leaving" + +#~ msgid "Unknown error %d" +#~ msgstr "Unknown error %d" + +#~ msgid "virtual memory exhausted" +#~ msgstr "éìàåèøéåä ïåøëæä øîâð" + +#~ msgid "%s access: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s access: user %lu (real %lu), group %lu (real %lu)\n" + +#~ msgid "Initialized" +#~ msgstr "Initialized" + +#~ msgid "extraneous `endef'" +#~ msgstr "øúåéî `endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "ä÷éø `override' úàøåä" + +#~ msgid "invalid `override' directive" +#~ msgstr "äéåâù `override' úàøåä" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "õáå÷ íù àìì `%sinclude' úàøåä" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "ä÷éø íã÷ä úùéøã úéðáú úà äøéàùî `%s' äøèî" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "# No variables." +#~ msgstr "# No variables." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# average of %.1f variables per bucket, max %u in one bucket.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# average of %d.%d variables per bucket, max %u in one bucket.\n" diff --git a/local/recipes/dev/gnu-make/source/po/hr.gmo b/local/recipes/dev/gnu-make/source/po/hr.gmo new file mode 100644 index 0000000000..a823d813a6 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/hr.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/hr.po b/local/recipes/dev/gnu-make/source/po/hr.po new file mode 100644 index 0000000000..60dcecf584 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/hr.po @@ -0,0 +1,2751 @@ +# Translation of CNU make messages to Croatian. +# Copyright © 2016 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Hrvoje Niksic , 2002. +# Tomislav Krznar , 2012. +# Božidar Putanec , 2016, 2018, 2019, 2020, 2022. +msgid "" +msgstr "" +"Project-Id-Version: make 4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-28 10:58-0700\n" +"Last-Translator: Božidar Putanec \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\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" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.2\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "pokuÅ¡aj upotrebe nepodržane znaÄajke „%s“" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "u VMS sustavu nije moguće promijeniti vremenske oznake Älanu arhive" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: arhiva „%s“ ne postoji" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: „%s“ nije valjana arhiva" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Älan arhive „%s“ ne postoji u arhivi „%s“" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: ar_member_touch() na „%s“ nije uspjela" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() nije uspjela izvući podatke o modulu, status = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() nije uspjela, status = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "nemoguće je otvoriti biblioteku „%s“ radi uvida u status Älana %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Nevaljani %s za arhivu %s, Älan %s" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "ÄŒlan arhive „%s“%s: %ld bajtova na adresi %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (ime je možda skraćeno)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Datum %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mÈd = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Recept ima previÅ¡e redaka (max. je %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Prekid.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] ÄŒlan arhive „%s“ je možda lažan; nije izbrisan" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** ÄŒlan arhive „%s“ je možda lažan; nije izbrisan" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] BriÅ¡emo datoteku „%s“" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** BriÅ¡emo datoteku „%s“" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# recept koji treba izvrÅ¡iti" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (ugraÄ‘eno):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (iz „%s“, redak %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Direktoriji\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# nije bilo moguće dobiti status od %s.\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "" +"# %s (kljuÄ %s, vrijeme zadnje izmjene, mtime %s): nije bilo moguće " +"otvoriti.\n" + +# inode > index in a table of contents or an inode in a Unix-like file system > iÄvor +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (ureÄ‘aj %d, inode [%d,%d,%d]): nije bilo moguće otvoriti.\n" + +# An inode is a data structure on a filesystem on Linux and other Unix-like operating systems that stores all the information about a file except its name and its actual data. +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (ureÄ‘aj %ld, inode %ld): nije bilo moguće otvoriti.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (kljuÄ %s, vrijeme zadnje izmjene %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (ureÄ‘aj %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (ureÄ‘aj %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ne" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " datoteke, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ne" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " nemogućnosti" + +#: src/dir.c:1180 +msgid " so far." +msgstr " do sada." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " nemogućnosti u %lu direktorija.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu: %s se ne proÅ¡iruje rekurzivno za izvoz ljuskinoj funkciji\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Rekurzivna varijabla „%s“ pokazuje na samu sebe (eventualno)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "nedovrÅ¡ena referencija na varijablu" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Recept za datoteku „%s“ bio je naveden u %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "Recept za datoteku „%s“ je pronaÄ‘en u implicitnim pravilima," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "ali se „%s“ sada smatra istom datotekom kao i „%s“." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "Recept za „%s“ je zanemaren u korist ovog za „%s“." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"ne može se preimenovati „%s“ s jednom dvotoÄkom u „%s“ s dvije dvotoÄke" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"ne može se preimenovati „%s“ s dvije dvotoÄke u „%s“ s jednom dvotoÄkom" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** BriÅ¡emo privremenu posredniÄku datoteku „%s“" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Uklanjamo privremene posredniÄke datoteke...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s ne može biti istovremeno .NOTINTERMEDIATE i .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s ne može biti istovremeno .NOTINTERMEDIATE and .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE i .SECONDARY se meÄ‘usobno iskljuÄuju" + +#: src/file.c:942 +msgid "Current time" +msgstr "Trenutno vrijeme" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Vremenski žig je izvan granica raspona; zamijenjen je s %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Nije cilj (target):" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Dragocjena (precious) datoteka (preduvjet za .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Lažni (phony) cilj (preduvjet za .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Cilj naredbenog retka." + +# Zadan > standardni +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Zadano, MAKEFILES ili -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# UgraÄ‘eno pravilo" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Provedeno je pretraživanje pomoću implicitnih pravila." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Nije provedeno pretraživanje pomoću implicitnih pravila." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Implicitni ili statiÄki korijen uzorka: „%s“\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Datoteka je privremeni preduvjet." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Datoteka je preduvjet za .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Datoteka je sekundarna (preduvjet za .SECONDARY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# TakoÄ‘er napravi:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Vrijeme zadnje izmjene nije nikada provjereno." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Datoteka ne postoji." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Datoteka je vrlo stara." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Posljednja promjena %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Datoteka je osvježena." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Datoteka nije osvježena." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Recept je joÅ¡ u tijeku (OVO JE PROGRAMSKA GREÅ KA)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Recept za ovisnosti je joÅ¡ u tijeku (OVO JE PROGRAMSKA GREÅ KA)" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# UspjeÅ¡no osvježena." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Osvježavanje je nužno (dana je opcija -q)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Osvježavanje nije uspjelo." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Nevaljana vrijednost u command_state Älanu!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Datoteke" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# status datoteka hash-tablice:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Polja „%s“ nema u predmemoriji (nije cached): %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: prazna vrijednost" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: '%s' izvan opsega" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "nevaljani prvi argument za ‘word’ funkciju" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "prvi argument funkcije „word“ mora biti veći od 0" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "nevaljani prvi argument funkcije ‘wordlist’" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "nevaljani drugi argument funkcije ‘wordlist’" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "ne numeriÄki prvi argument funkcije ‘intcmp’" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "ne numeriÄki drugi argument funkcije ‘intcmp’" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) nije uspjeÅ¡na (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_open_pipe: DuplicateHandle(Err) nije uspjeÅ¡na (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() nije uspjeÅ¡na (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() nije uspjeÅ¡na\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Izbrisana je privremena batch datoteka %s.\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "datoteka: nema imena datoteke" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open(): %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write(): %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close(): %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: previÅ¡e argumenata" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read(): %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: nevaljana operacija na datoteci: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "nedovoljan broj argumenata (%u) za funkciju ‘%s’" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "nije realizirana na ovoj platformi: funkcija „%s“" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "nedovrÅ¡eni poziv funkciji „%s“: nedostaje %c" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Prazno ime funkcije" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nevaljani naziv funkcije: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Predugo ime funkcije: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Nevaljani minimalni broj argumenata (%u) za funkciju %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Nevaljani maksimalni broj argumenata (%u) za funkciju %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: opcija „%s“ nije jednoznaÄna\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: opcija „--%s“ ne dopuÅ¡ta argument\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: opcija „%c%s“ ne dopuÅ¡ta argument\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: opcija „%s“ zahtijeva argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: neprepoznata opcija „--%s“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: neprepoznata opcija „%c%s“\n" + +# * 1003.2 specifies the format of this message. */ +# fprintf (stderr, _("%s: illegal option -- %c\n"), +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: nedopuÅ¡tena opcija -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: nevaljana opcija -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opcija zahtijeva argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: opcija „-W %s“ nije jednoznaÄna\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: opcija „-W %s“ ne dopuÅ¡ta argument\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: ProÅ¡irivanje „%s“\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Procjenjivanje „%s“\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "ne može dodijeliti %lu bajtova za hash-tablicu: nema dovoljno memorije" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Opterećenje=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u, " + +# možda bi bolje bilo > Kontradikcije +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Sudari=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Potraga za implicitnim pravilom za „%s“.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Tražimo implicitno pravilo za Älana arhive za „%s“\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Nije pronaÄ‘eno implicitno pravilo arhivske stavke za ‘%s’.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Izbjegavamo implicitno pravilo rekurzije za ‘%s’.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Trudimo se joÅ¡ viÅ¡e.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Pravilo uzorka ‘%s’ s iskuÅ¡ano s osnovom ‘%.*s’.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Predugi korijen uzorka: „%s%.*s“.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Odbijamo pravilo ‘%s’ s nemogućim zahtjevom pravila ‘%s’.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Odbijamo pravilo ‘%s’ s nemogućim implicitnim zahtjevom ‘%s’.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Isprobavamo pravilo preduvjeta „%s“.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Isprobavamo implicitni preduvjet „%s“.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "‘%s’ bi trebalo postojati.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "PronaÄ‘en je ‘%s’.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Koristimo pravilo kompatibilnosti ‘%s’ zbog ‘%s’.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Preduvjet ‘%s’ pravila ‘%s’ ne ispunjava ono Å¡to bi trebalo postojati.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "NaÄ‘eni preduvjet „%s“ kao VPATH „%s“\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Potraga za pravilom s eksplicitnom datotekom „%s“.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Potraga za pravilom s posredniÄkom datotekom „%s“.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Odbijamo pravilo „%s“ s nemogućim implicitnim zahtjevom „%s“.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Nije pronaÄ‘eno „%s“.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "NaÄ‘eno je implicitno pravilo „%s“ za „%s“.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Potraga za kompatibilnim pravilom za „%s“.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nijedno implicitno pravilo nije naÄ‘eno za „%s“.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Ne moguće stvoriti privremenu datoteku" + +# A core dump is a file of a computer's documented memory of when a program or computer crashed. +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (**krah**: stanje (dump) memorije je zapisano!)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (zanemareno)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] GreÅ¡ka %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** ÄŒekamo na nedovrÅ¡ene poslove..." + +# child > dijete > potomak; pridjev potamaÄki +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Živi potomak (nedovrÅ¡eni dijete-proces) %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (udaljeno)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "ÄŒišćenje iza uspjeÅ¡nog potomka (dijete-procesa) %p PID %s %s\n" + +# reap (in cs) > To terminate a child process that has previously exited, thereby removing it from the process table +# Until a child process is reaped, it may be listed in the process table as a zombie or defunct process. +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "ÄŒišćenje iza neuspjeÅ¡nog potomka (dijete-procesa) %p PID %s %s\n" + +# batch file > naredbena datoteka sustava (skript datoteka) +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "ÄŒišćenje iza privremene batch datoteke %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "ÄŒišćenje iza privremene batch datoteke %s nije uspjelo (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Potomak (dijete-proces) %p PID %s%s je uklonjen iz lanca.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "OsloboÄ‘en je token za potomka (dijete-procesa) %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() nije uspjela pokrenuti proces (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"izbrojeno je %d argumenata pri neuspjelom pokretanju\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Umetanje potomka (dijete-procesa) %p (%s) PID %s%s u lanac.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Dobiveni je token za potomka (dijete-procesa) %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: osvježava cilj „%s“ za potrebe: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "cilj ne postoji" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "nije moguće nametnuti granice opterećenja na ovom operacijskom sustavu" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "ne može nametnuti granice opterećenja: " + +# In Unix and related computer operating systems, a file descriptor is an abstract indicator (handle) used to access a file +# stdin > standardni ulaz +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"nema viÅ¡e datoteÄnih kvaÄica: nije moguće duplicirati standardni ulaz, stdin" + +# stdout > standardni izlaz +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"nema viÅ¡e datoteÄnih kvaÄica: nije moguće duplicirati standardni izlaz, " +"stdout" + +# stderr > standard error +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"nema viÅ¡e datoteÄnih kvaÄica: nije bilo duplicirati standardne greÅ¡ke, stderr" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Nije moguće obnoviti standardni ulaz, stdin" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Nije moguće obnoviti standardni izlaz, stdout" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Nije moguće obnoviti standardne greÅ¡ke, stderr" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" +"make je poÄistio potomka (dijete-proces) PID %s, ali joÅ¡ uvijek Äeka na PID " +"%s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: može biti da u okolini nema dovoljno prostora" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "Varijabla $SHELL se promijenila (prije „%s“, sada „%s“)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Stvaramo privremenu batch datoteku %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Sadržaj batch datoteke:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Sadržaj batch datoteke:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (redak %d) LoÅ¡i kontekst ljuske (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Otvaranje globalne tablice simbola nije uspio: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "UÄitan dijeljeni (zajedniÄki) objekt %s\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "UÄitani objekt %s nema deklaraciju da je kompatibilan s GPL-om" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Simbol %s iz %s nije uspjelo uÄitati: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Prazno ime simbola za uÄitavanje: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "UÄitavamo simbol %s iz %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Istovar (unloading) dijeljenog (shared) objekta %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Operacija „load“ nije podržana na ovoj platformi" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opcije:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m zanemareno zbog kompatibilnosti\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make bezuvjetno napravi sve ciljeve\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIREKTORIJ, --directory=DIREKTORIJ\n" +" prije poÄetka rada prijeÄ‘e u DIREKTORIJ\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d ispisuje puno podataka za debugiranje\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=ZASTAVICE] ispisuje razne vrste informacija za " +"debugiranje\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" uÄini da „make“ rabi varijable okoline " +"umjesto\n" +" tih istih varijabli iz Makefiles\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E STRING, --eval=STRING evaluira STRING kao Makefile direktivu\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f DATOTEKA, --file=DATOTEKA, --makefile=DATOTEKA\n" +" Äita i koristi DATOTEKU kao Makefile\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help ova pomoć\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors zanemari sve greÅ¡ke u receptima\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIREKTORIJ, --include-dir=DIREKTORIJ\n" +" traži ukljuÄene Makefiles u DIREKTORIJU\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] dopuÅ¡ta N istovremenih poslova; ako se " +"izostavi\n" +" argument N, nema ograniÄenja broju poslova\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STIL izabere STIL koji će koristi jobserver\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going nastavlja raditi (iako se neki od ciljeva\n" +" ne mogu napraviti).\n" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" ne pokreće viÅ¡e poslova istovremeno ako\n" +" je opterećenje veće od N\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times koristi najkasniji mtime izmeÄ‘u simboliÄke " +"veze i njena cilja\n" + +#: src/main.c:355 +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" +" ne pokreće recepte već ih samo ispiÅ¡e\n" + +# remake > make (something) again or differently. +# remake > gl. prepraviti, preurediti / im. prepravak, prerada +# na nov naÄin, drugaÄije urediti, izmijeniti da na drugi naÄin služi svrsi; preureÄ‘enje, preureÄ‘en. +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o DATOTEKA, --old-file=DATOTEKA, --assume-old=DATOTEKA\n" +" ne obnavlja DATOTEKU jer je vrlo stara\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TIP]\n" +" TIP sinkronizacije izlaznih paralelnih " +"poslova\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base ispiÅ¡e internu bazu podataka „make“ programa\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question ne pokreće recepte; izlazni status pokaže\n" +" jesu li trenutni\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules onemogući ugraÄ‘ena implicitna pravila\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables onemogući ugraÄ‘ene vrijednosti varijabli\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" mijeÅ¡a zahtjeve i ciljeve\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet ne ispisuje recepte\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent odjekuje recepte (poniÅ¡ti --silent naÄin)\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" ukida opciju -k\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch „touch“ (osvježi vrijeme) ciljeve umjesto\n" +" da ih iznova napravi\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" +" -d ispisuje informacije praćenja (tracing)\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version informacije o ovoj inaÄici programa\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory ispiÅ¡e trenutni direktorij\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory ukida opciju -w (Äak i ako je implicirana)\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W DATOTEKA, --what-if=DATOTEKA, --new-file=DATOTEKA, --assume-" +"new=DATOTEKA\n" +" smatra da je DATOTEKA zauvijek nova\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables upozori na referiranje nedefinirane varijable\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "greÅ¡ka u pisanju: standardni izlaz (stdout)" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "prazni string nije valjano ime datoteke" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "nepoznata specifikacija „%s“ za razinu dijagnostike" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "nepoznati tip sinkronizacije izlaza „%s“" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uporaba: %s [opcije] [cilj] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ovaj program je proizveden za %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ovaj program je proizveden za %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"GreÅ¡ke (bugs) na engleskom javite na \n" +"PogreÅ¡ke u prijevodu i vaÅ¡e prijedloge javite na \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Prekid/iznimka primljena (kÈd = 0x%lx, adresa = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Filtar neobraÄ‘ene iznimke pozvan je iz programa %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Povreda prava pristupa: operacija pisanja na adresi 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Povreda prava pristupa: operacija Äitanja na adresi 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() postavlja default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "find_and_set_shell() pretragom staze postavlja default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (privremena datoteka): " + +# parent > roditelj > predak; pridjev predaÄki +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"upozorenje: jobserver nije dostupni: koristi se -j1.\n" +"Dodajte „+“ make pravilu pretka (parent)" + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "upozorenje: -j%d je forsiran u submake: resetira mÈd jobservera." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile iz standardnog ulaza je dva puta naveden" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: privremena datoteka %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "upozorenje: -j%d je nametnut u makefile: resetira mÈd jobservera." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Paralelni poslovi (-j) nisu podržani na ovoj platformi." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Povratak na naÄin rada s jednim poslom (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Koristimo %s kontroler jobserver-a\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Koristimo zakljuÄavanje (mutex) izlazne sinkronizacije „%s“\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "SimboliÄke veze nisu podržane: onemogućujemo -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Omogućen je mijeÅ¡anje (naÄin rada): %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Osvježavamo Makefiles....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile „%s“ bi mogao ući u petlju; ne obnavljamo ga.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: uÄitavanje nije uspjelo" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Nije uspjelo preraditi Makefile „%s“." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "„%s“ ukljuÄeni Makefile nije pronaÄ‘en." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile „%s“ nije pronaÄ‘en" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Nije bilo moguće vratiti se u izvorni direktorij" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Ponovno izvrÅ¡avanje[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL sadrži viÅ¡e od jednog cilja" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Nema ciljeva" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Nije navedeni nijedan cilj i nije pronaÄ‘eni nijedan Makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Osvježavamo ciljeve....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"upozorenje: Otkriveni je problem sa satom. Kompilacija možda nije kompletna." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "opcija %s%s zahtijeva ne-prazni string za argument" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "opcija -%c zahtijeva pozitivni cijeli broj za argument" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sProizvedeno za %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sProizvedeno za %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sLicenca GPLv3+: GNU GPL v. 3 ili kasnija \n" +"%sOvo je slobodan softver: slobodno ga mijenjajte i dijelite.\n" +"%sNEMA JAMSTVA do granica dopuÅ¡tenih zakonom.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# „Make“ baza podataka, ispisana na %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Gotova „Make“ baza podataka je spremna na %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s vrijednost %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s vrijednost %s: nije direktorij" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "rabimo zadani (default) privremeni direktorij „%s“" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "stvori privremenu datoteku %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "brisanje privremene datoteke %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: privremena datoteka %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: privremena datoteka %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Ulazimo u nepoznati direktorij\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Izlazimo iz nepoznatog direktorija\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Ulazimo u direktorij „%s“\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Izlazimo iz direktorija „%s“\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Ulazimo u nepoznati direktorij\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Izlazimo iz nepoznatog direktorija\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Ulazimo u direktorij „%s“\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Izlazimo iz direktorija „%s“\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"upozorenje: Nije moguće postići zakljuÄavanje izlaza: Onemogućujemo " +"sinkronizaciju izlaza." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Zaustavljeno.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Nije moguće otvoriti jobserver %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Nepoznati stil autorizacije jobservera „%s“" + +# In computer science, an anonymous pipe is a simplex FIFO communication channel that may be used for one-way interprocess communication (IPC). An implementation is often integrated into the operating system's file IO subsystem. +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "otvaramo cijevi za poslove" + +# http://make.mad-scientist.net/papers/jobserver-implementation/ +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "dupliciramo cijevi za poslove" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inicijalizacija cijevi jobservera" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "nevaljani string „%s“ za --jobserver-auth" + +# Å to bi ovdje trebalo ići? +# bp: iz izvornog kÈda, možda ovo. +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "pisati na jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "jobserver je ugaÅ¡en" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect() cijevi poslova" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "Äitanje iz cijevi poslova" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "nevaljani string „%s“ za --sync-mutex" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "nije moguće otvoriti bravu (mutex) %s za izlaznu sinkronizaciju: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Nije moguće otvoriti „%s“ s O_TMPFILE: %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "ÄŒitamo Makefiles...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "ÄŒitamo Makefile „%s“" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (nema zadanog cilja)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (staza pretraživanja)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (nije važno)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (bez proÅ¡irenja znaka ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "PreskaÄemo UTF-8 BOM u Makefile „%s“\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "PreskaÄemo UTF-8 BOM u Makefile meÄ‘uspremniku\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "nevaljana sintaksa u uvjetnom izrazu" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "recept zapoÄinje prije prvog cilja" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "nema pravila prije recepta" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "nema separatora (Mislili ste TAB umjesto 8 razmaka?)" + +# Grr, živjela engleska množina! I Å¡to sad da radim s onim %s-om? +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "nema separatora" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "nema uzorka za cilj" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "nekoliko uzoraka za cilj" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "uzorak cilja ne sadrži „%%“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "nema „endif“" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "prazno ime varijable" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "suviÅ¡ni tekst nakon direktive „define“" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "nema „endef“, nedovrÅ¡eni „define“" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "suviÅ¡ni tekst nakon direktive „endef“" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "suviÅ¡ni tekst nakon „%s“ direktive" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "suviÅ¡ni „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "samo jedan „else“ po uvjetnom izrazu" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Deformirana definicija varijable specifiÄne za cilj" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT ne bi trebao imati preduvjete (zahtjeve)" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT ne bi trebao imati naredbe" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "preduvjeti se ne mogu definirani u receptima" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "grupirani ciljevi moraju osigurati recept" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "pomijeÅ¡ana su implicitna i statiÄka pravila za uzorak" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "pomijeÅ¡ana su implicitna i normalna pravila" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "cilj „%s“ se ne podudara s uzorkom cilja" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "ciljna datoteka „%s“ sadrži „:“ i „::“" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "cilj „%s“ je naveden viÅ¡e od jedanput u istom pravilu" + +# prebrisati> briÅ¡ući ukloniti, briÅ¡ući poniÅ¡titi, prebrisati dio teksta, odbaciti +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "upozorenje: zanemaren je recept za cilj „%s“" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "upozorenje: zanemarujemo stari recept za cilj „%s“" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" +"*** pomijeÅ¡ana su implicitna i normalna pravila: to je zastarjela sintaksa" + +# prebrisati> briÅ¡ući ukloniti, briÅ¡ući poniÅ¡titi, prebrisati dio teksta, odbaciti +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "upozorenje: zanemareno je Älanstvo grupe za cilj „%s“" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "upozorenje: proÄitan je NUL znak; ostatak retka je zanemaren" + +# prebrisati> briÅ¡ući ukloniti, briÅ¡ući poniÅ¡titi, prebrisati dio teksta, odbaciti +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "upozorenje: recept uzorka nije ažurirao cilj partnera „%s“." + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "NiÅ¡ta se ne može napraviti za„%sâ€." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s“ je osvježena." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "ÄŒistimo datoteku „%s“.\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sNema pravila za izradu cilja „%s“ koji je potreban za „%s“%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sNema pravila za izradu cilja „%s“%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Razmatramo ciljnu datoteku „%s“.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Nedavni pokuÅ¡aj osvježavanja datoteke „%s“ nije uspio.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Datoteka „%s“ je već bila razmatrana.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Datoteka „%s“ se joÅ¡ uvijek osvježava.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Osvježavanje datoteke „%s“ je zavrÅ¡eno.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Datoteka „%s“ ne postoji.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Upozorenje: .LOW_RESOLUTION_TIME datoteka „%s“ ima\n" +" vremenski žig visoke rezolucije" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Grupni ciljni partner „%s“ iz datoteke „%s“ ne postoji.\\\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Rabimo zadani recept za „%s“.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Kružna ovisnost %s <- %s je odbaÄena." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Preduvjeti za ciljnu datoteku „%s“ su ispunjeni.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Preduvjeti za „%s“ se izraÄ‘uju.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Odustajemo od izrade ciljne datoteke „%s“.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Cilj „%s“ nije bio ponovno izraÄ‘en zbog greÅ¡aka." + +# Nisam siguran da sam ovo ispravno shvatio. +# bp: impose a specific ordering on the rules to be invoked without forcing the target to be updated if one of those rules is executed +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "" +"Preduvjet „%s“ je order-only za cilj „%s“.\n" +"order-only: make neće preraditi (remake) „normalne“ recepte ako se izmjeni\n" +"vremenski žig na order-only cilju (normalno, make uvijek preradi\n" +"recepte kad god se izmjeni vremenski žig na bilo kojem objektu).\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Preduvjet „%s“ za cilj „%s“ ne postoji.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Preduvjet „%s“ je noviji nego od od njega ovisni cilj „%s“.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Preduvjet „%s“ je stariji nego od od njega ovisni cilj „%s“.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Cilj „%s“ je s dvije dvotoÄke i nema preduvjeta.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" +"Nema recepta za „%s“ i zapravo nijedan od preduvjeta nije promijenjen.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "„%s“ se zbog zastavice always-make ponovno izraÄ‘uje.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Nema potrebe preraditi cilj „%s“" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; rabimo naziv „%s“ za VPATH" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Cilj „%s“ se mora preraditi.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Zanemareni naziv „%s“ za VPATH.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Recept za „%s“ se upravo izvrÅ¡ava.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Prerada ciljne datoteke „%s“ nije uspjela.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Ciljna datoteka „%s“ je uspjeÅ¡no preraÄ‘ena.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Ciljnu datoteku „%s“ treba ponovno preraditi s opcijom -q.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Rabimo zadane naredbe za „%s“.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "" +"Upozorenje: Vremenski žig modifikacije datoteke „%s“ je za\n" +" %s sekunda u budućnosti" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS Älan „%s“ nije uzorak" + +# Customs' is literal (a library name). See README.customs. +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs nije moguće eksportirati: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" +"upozorenje: zanemarujemo preduvjete (zahtjeve) definicije pravila sufiksa" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Implicitna pravila" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Nema implicitnih pravila." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implicitnih pravila, %u (%.1f%%) terminal." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "PROGRAMSKA GREÅ KA: pogreÅ¡na num_pattern_rules! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "nevaljani naÄin mijeÅ¡anja: %s: „%s“" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "nepoznati signal" + +# Keep signal names in sync with GNU libc translations. +#: src/signame.c:92 +msgid "Hangup" +msgstr "Poklopi (SIGHUP)" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Prekini (SIGINT)" + +#: src/signame.c:98 +msgid "Quit" +msgstr "ZavrÅ¡i" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Nepropisna instrukcija" + +# Breakpoint trap just means the processor has hit a breakpoint.Your process is running more than one thread. +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Trace/breakpoint (SIGTRAP)" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Prekid (SIGABRT)" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT zamka (SIGIOT)" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT zamka (SIGEMT)" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Iznimka (broja) s pomiÄnim zarezom (SIGFPE)" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Ubijen (SIGKILL)" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "GreÅ¡ka sabirnice (SIGBUS)" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Segmentacijska greÅ¡ka (SIGSEGV)" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "LoÅ¡i sustavski poziv (SIGSYS)" + +# a condition in programming (also known in POSIX as EPIPE error code and SIGPIPE signal), when a process requests an output to pipe or socket, which was closed by peer +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Prekinuta cijev (SIGPIPE)" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Budilica (SIGALRM)" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "ZavrÅ¡eno (SIGTERM)" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Korisnikom definiran signal 1 (SIGUSR1)" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Korisnikom definiran signal 2 (SIGUSR2)" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Potomak (child process) je zavrÅ¡io (SIGCHLD)" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Prekinuto napajanje (SIGPWR)" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Zaustavljeno" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Zaustavljeno (tty ulaz) (SIGTTIN)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Zaustavljeno (tty izlaz) (SIGTTOU)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Zaustavljeno (signal) (SIGSTOP)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Procesor je premaÅ¡io ograniÄenje za vrijeme procesora (SIGCPU)" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "VeliÄina datoteke je premaÅ¡ila ograniÄenje za veliÄinu" + +# Kako prevesti "virtual timer"? +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtualni tajmer je istekao (SIGVTALRM)" + +# Kako prevesti "profiling timer"? +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Isteklo je vrijeme za profiliranje (SIGPROF)" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Prozor se promijenio (SIGWINCH)" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Nastavlja se (SIGCONT)" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Hitno U/I stanje" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "U/I je sada moguć" + +# Jesu li ova dva signala vic ili Å¡to? U svakom sluÄaju, ovo su samo +# descriptioni. Za svaki sluÄaj, nisam ih dirao. +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resurs je izgubljen (SIGLOST)" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Signal za opasnost (SIGDANGER)" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Zahtjev za informacijom (SIGINFO)" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Koprocesor za rad s pomiÄnim zarezom/toÄkom nije dostupan (SIGNOFP)" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Nema meÄ‘uspremnika za strcache\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s strcache meÄ‘uspremnici: %lu (%lu) / stringova = %lu\n" +" pohrana = %lu B / prosjek = %lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s trenutni meÄ‘uspremnik: veliÄina = %hu B / koriÅ¡teno = %hu B\n" +" broj = %hu / prosjek = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s ostalo koriÅ¡teno: ukupno = %lu B / broj = %lu / prosjek = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s ostalo slobodno: ukupno = %lu B / max = %lu B / min = %lu B\n" +" prosjek = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache uÄinkovitost: pretraga = %lu / pogodaka = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statistika hash-tablice:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatsko" + +#: src/variable.c:1789 +msgid "default" +msgstr "zadano" + +#: src/variable.c:1792 +msgid "environment" +msgstr "okolina" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "Makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "okolina ispod -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "naredbeni redak" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "„override“ direktiva" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (iz „%s“, redak %lu)" + +# https://en.wikipedia.org/wiki/Hash_table +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# statistika varijabli u hash-tablici:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Varijable\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Vrijednosti varijabli specifiÄne za uzorke" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Nema vrijednosti varijabli specifiÄne za uzorke." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u vrijednosti varijabli specifiÄne za uzorke" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "upozorenje: nedefinirana varijabla %.*s" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "neuspjeÅ¡na sys$search() s greÅ¡kom %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-upozorenje, možda ćete morati ponovno omogućiti obraÄ‘ivanje CTRL-Y iz DCL-" +"a.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "UGRAÄENI CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Izlaz pripojen na kraj %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "%.*s pripojiti i poÄistiti\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Umjesto toga izvrÅ¡avamo %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH staza za pretraživanje\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Nema „vpath“ staze za pretraživanje." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u „vpath“ staza za pretraživanje.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Nema općenite („VPATH“ varijable) staze za pretraživanje." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Općenita („VPATH“ varijabla) staza za pretraživanje:\n" +"# " + +# If the ‘-j’ option is followed by an integer, this is the number of recipes to execute at once; this is called the number of job slots. If there is nothing looking like an integer after the ‘-j’ option, there is no limit on the number of job slots. The default number of job slots is one, which means serial execution (one thing at a time). +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Jobserver broj mjesta je ograniÄen na %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "stvaranje semafora jobservera: (GreÅ¡ka %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"interna greÅ¡ka: nije moguće otvoriti semafor jobservera „%s“: (GreÅ¡ka %ld: " +"%s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Klijent jobservera (semafor %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "oslobaÄ‘anje semafora jobservera: (GreÅ¡ka %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "Äekanje na semafor ili na potomka (dijete-procesa): (GreÅ¡ka %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" +"nije moguće raÅ¡Älaniti zakljuÄavanje (mutex) izlazne sinkronizacije %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "nevaljano zakljuÄavanje (mutex) sinkronizacije izlaza: %s" + +# Da prevedem ovo? +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: korisnik %lu (stvarni %lu), grupa %lu (stvarna %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Pristup je iniciran" + +#~ msgid "User access" +#~ msgstr "Pristup korisnikom" + +#~ msgid "Make access" +#~ msgstr "Pristup make-om" + +#~ msgid "Child access" +#~ msgstr "Pristup potomkom (dijete-proces)" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "Opcija -O[TYPE] (--output-sync[=TYPE]) nije ugraÄ‘ena u ovu kompilaciju." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Klijent jobservera (fds %d,%d)\n" + +# In computing, a pipeline is a set of data processing elements connected in series, where the output of one element is the input of the next one. +#~ msgid "jobserver pipeline" +#~ msgstr "cjevovod (pipeline) jobservera" + +#~ msgid "PrekoraÄeno je ograniÄenje veliÄine datoteke" +#~ msgstr "PrekoraÄeno ograniÄenje veliÄine datoteke (SIGXFS2)" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: Naredba nije pronaÄ‘ena\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Naredba nije pronaÄ‘ena\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Shell program (ljuska: interpreter komandi) nije pronaÄ‘en" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s će spavati 30 sekundi..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "proÅ¡lo je 30 sekunda spavanja. Nastavlja se.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Nepoznata greÅ¡ka %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "" +#~ "Upozorenje: Vremenska oznaka modifikacije datoteke „%s“ je u budućnosti" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Nevaljana vrijednost u elementu „update_statusâ€!" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] GreÅ¡ka 0x%x (zanemarena)" + +#~ msgid "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] GreÅ¡ka 0x%x" + +#~ 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 "internal error: multiple --jobserver-fds options" +#~ msgstr "interna greÅ¡ka: viÅ¡estruko pojavljivanje opcije --jobserver-fds" + +# Treba li ovo prevesti? +#~ msgid "dup jobserver" +#~ msgstr "dup server poslova" + +#~ msgid "virtual memory exhausted" +#~ msgstr "virtualna memorija iscrpljena" + +# Å to bi ovdje trebalo ići? +#~ msgid "write error" +#~ msgstr "gresÌŒka pisanja" + +#~ 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 "Warning: Empty redirection\n" +#~ msgstr "Upozorenje: Prazno preusmjeravanje\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "interna greÅ¡ka: „%s†command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "UGRAÄEN [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "UGRAÄEN RM %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Nepoznata ugraÄ‘ena naredba „%sâ€\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "GreÅ¡ka, prazna naredba\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Preusmjeren ulaz iz %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Preusmjerene greÅ¡ke u %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Preusmjeren izlaz u %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "GreÅ¡ka pri pokretanju, %d\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "GreÅ¡ka u sintaksi, joÅ¡ uvijek unutar '\"'\n" + +# Nepožetene ili nepožnjete? +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "Dobio SIGCHLD; %u nepožetene djece.\n" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-upozorenje, CTRL-Y će ostaviti potproces(e) na životu.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Nemojte koristiti -j ili --jobs ako sh.exe nije dostupan." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Resetiram make u mÈd jednog posla." + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sOvaj program je slobodan; u izvornom kodu nalaze se uvjeti kopiranja.\n" +#~ "%sNema NIKAKVOG jamstva, Äak ni za PROIZVODNOST ili UPOTREBLJIVOST ZA\n" +#~ "%sPOJEDINU SVRHU.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "suviÅ¡an `endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "prazna direktiva `ovverride'" + +#~ msgid "invalid `override' directive" +#~ msgstr "neispravna direktiva `override'" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "nedostaje naziv spisa za `%sinclude'" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "meta `%s' ostavlja prerekvizitni uzorak praznim" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Nijedan spis." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u spisa u %u rasprÅ¡enih džepova.\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "# prosjeÄno %.3f spisa po džepu, maks. %u spisa u jednom džepu.\n" + +#~ msgid "DIRECTORY" +#~ msgstr "DIREKTORIJ" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "Promijeni u DIREKTORIJ prije nego Å¡to iÅ¡ta napraviÅ¡" + +#~ msgid "FLAGS" +#~ msgstr "ZASTAVICE" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Zaustavi proces tako da se debugger može zakaÄiti" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "Varijable iz okoliÅ¡a imaju veću važnost od makefilea" + +#~ msgid "FILE" +#~ msgstr "SPIS" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "ProÄitaj SPIS kao makefile" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "Pretraži DIREKTORIJ za ukljuÄenim makefileovima" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "Ne pokreći viÅ¡estruke poslove osim ako je opterećenje ispod N" + +#~ msgid "Don't actually run any commands; just print them" +#~ 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" + +#~ msgid "Don't echo commands" +#~ msgstr "Ne ispisuj naredbe" + +#~ msgid "Turns off -k" +#~ msgstr "IskljuÄuje -k" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "Smatraj SPIS beskonaÄno novim" + +#~ msgid "Entering" +#~ msgstr "Ulazim u" + +#~ msgid "Leaving" +#~ msgstr "Izlazim iz" + +#~ msgid "# No variables." +#~ msgstr "# Nema varijabli." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# prosjeÄno %.1f varijabli po džepu, maks. %u u jednom džepu.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# prosjeÄno %d.%d varijabli po džepu, maks. %u u jednom džepu.\n" diff --git a/local/recipes/dev/gnu-make/source/po/id.gmo b/local/recipes/dev/gnu-make/source/po/id.gmo new file mode 100644 index 0000000000..5098f791fd Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/id.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/id.po b/local/recipes/dev/gnu-make/source/po/id.po new file mode 100644 index 0000000000..68d61ecb00 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/id.po @@ -0,0 +1,2705 @@ +# Pesan Bahasa Indonesia untuk GNU make +# Copyright (C) 2006 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Arif E. Nugroho , 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2021-08-28 09:45+0700\n" +"Last-Translator: Arif E. Nugroho \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "usaha untuk menggunakan layanan yang tidak didukung: '%s'" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "touch anggota archive tidak tersedia di VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Archive '%s' tidak ada" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: '%s' bukan archive yang valid" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Anggota '%s' tidak terdapat dalam '%s'" + +#: src/ar.c:168 +#, 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'" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() gagal untuk mengekstrak info module, status = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() gagal dengan status = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "tidak dapat membuka perpustakaan '%s' untuk melihat status anggota %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Anggota '%s'%s: %ld bytes pada %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (nama mungkin akan di potong)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Tanggal %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mode = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Recipe has too many lines (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Berhenti.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Anggota archive '%s' mungkin palsu: tidak dihapus" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Anggota archive '%s' mungkin palsu; tidak dihapus" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Menghapus berkas '%s'" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Menghapus berkas '%s'" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# perintah untuk dijalankan" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (bawaan):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (dari '%s', baris %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Direktori\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: tidak dapat melihat statistik.\n" + +# +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (kunci %s, mtime %I64u): tidak dapat dibuka.\n" + +#: src/dir.c:1126 +#, 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" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (perangkat %ld, inode %ld): tidak dapat dibuka.\n" + +# +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (kunci %s, mtime %I64u): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (perangkat %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (perangkat %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Tidak" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " berkas, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "tidak" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " tidak mungkin" + +#: src/dir.c:1180 +msgid " so far." +msgstr " sejauh ini." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " tidak mungkin dalam direktori %lu.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Variabel rekursif '%s' menunjuk pada dirinya sendiri" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "referensi variabel tidak diselesaikan" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Perintah di spesifikasikan untuk berkas '%s' di %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "Perintah untuk berkas '%s' ditemukan dalam pencarian aturan implisit," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "" +"tetapi '%s' sekarang dipertimbangkan sebagai berkas yang sama dengan '%s'." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "Perintah untuk '%s' akan diabaikan untuk menghargai '%s'." + +#: src/file.c:304 +#, 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'" + +#: src/file.c:310 +#, 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'" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Menghapus berkas sementara '%s'" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Menghapus berkas sementara...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Waktu saat ini" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Timestamp diluar jangkauan; digantikan dengan %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Bukan sebuah target:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Phony target (dibutuhkan oleh .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Baris perintah target." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Merupakan baku, MAKEFILES atau -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Tidak ada aturan implisit." + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Pencarian aturan implisit sudah selesai." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Pencarian aturan implisit belum selesai." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Pola/implisit atau statis stem: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Berkas merupakan dibutuhkan untuk sementara." + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Phony target (dibutuhkan oleh .PHONY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Juga membuat:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Waktu ubah sudah diperiksa." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Berkas tidak ada." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Berkas sudah sangat tua." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Terakhir dimodifikasi %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Berkas sudah diperbarui." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Berkas belum diperbarui." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Perintah sedang berjalan (INI MERUPAKAN SEBUAH BUG)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Perintah ketergantungan sedang berjalan (INI MERUPAKAN SEBUAH BUG)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Sukses memperbarui." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Perlu untuk diupdate (-q diset)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Gagal untuk mengupdate." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Nilai yang salah dalam anggota 'command_state' !" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Berksa" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# berkas statistik hash-table:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Field '%s' not cached: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "argumen pertama untuk fungsi 'word' bukan numerik" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "argumen pertama untuk fungsi 'word' harus lebih besar dari 0" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "argumen pertama untuk fungsi 'wordlist' bukan numerik" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "argumen kedua dari fungsi 'wordlist' bukan numerik" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "argumen pertama untuk fungsi 'wordlist' bukan numerik" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "argumen kedua dari fungsi 'wordlist' bukan numerik" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) gagal (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) gagal (e=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() gagal (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() gagal\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Membersihkan berkas batch sementara %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "berkas: nama berkas tidak ada" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "menulis: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "berkas: terlalu banyak argument" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "baca: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: invalid file operation: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "Jumlah dari argumen (%d) untuk fungsi '%s' tidak mencukupi" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "Tidak terimplementasi dalam platform ini: fungsi '%s'" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "fungsi '%s' tidak diselesaikan: hilang '%c'" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Empty function name" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Invalid function name: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Function name too long: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Jumlah dari minimal argumen tidak valid (%u) untuk fungsi %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Jumlah dari maksimal argumen tidak valid (%u) untuk fungsi %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: opsi '%s' merupakan ambigu\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: opsi '--%s' tidak memperbolehkan argumen\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: opsi '%c%s' tidak memperbolehkan argumen\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: opsi '%s' membutuhkan sebuah argumen\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opsi tidak dikenali '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opsi tidak dikenali '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opsi tidak legal -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opsi tidak valid -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opsi membutuhkan sebuah argumen -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: opsi '-W %s' merupakan opsi ambigu\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: opsi '-W %s' tidak memperbolehkan sebuah argumen\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expanding '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Evaluating '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"tidak dapat mengalokasikan %lu bytes untuk tabel hash; kehabisan memory" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Beban=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Tabrakan=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Mencari aturan implisit untuk '%s'.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Mencari aturan implisit untuk anggota-archive pada '%s'.\n" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Mencari aturan implisit untuk anggota-archive pada '%s'.\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Menghindari aturan implisit rekursi.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Mencoba aturan pola dengan stem '%.*s'.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stem too long: '%s%.*s'.\n" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Menolak persyaratan aturan yang tidak mungkin '%s'.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Menolak persyaratan implisit yang tidak mungkin '%s'.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Mencoba persyaratan dari aturan '%s'.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Mencoba persyaratan implisit '%s'.\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Berkas '%s' tidak ada.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" +"%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Persyaratan untuk '%s' untuk target '%s' tidak ada.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Menemukan persyaratan '%s' sebagai VPATH '%s'\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Mencari aturan dengan berkas sementara '%s'.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Mencari aturan dengan berkas sementara '%s'.\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Menolak persyaratan aturan yang tidak mungkin '%s'.\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Tidak terdapat aturan implisit untuk membuat '%s'.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Ditemukan sebuah aturan implisit untuk '%s'.\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Mencari aturan implisit untuk '%s'.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Tidak terdapat aturan implisit untuk membuat '%s'.\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "Tidak dapat membuat berkas sementara\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (core di-dump)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (diabaikan)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Error %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Menunggu pekerjaan yang belum selesai...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Proses anak yang masih berjalan %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (remote)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Reaping winning child %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Reaping anak hilang %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Membersihkan berkas batch sementara %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Membersihkan berkas batch sementara %s failed (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Menghilangkan proses anak %p PID %s%s dari rantai.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Melepaskan token dari proses anak %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() gagal untuk menjalankan proses (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Terhitung %d argumen gagal untuk dijalankan\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Meletakkan proses anak %p (%s) PID %s%s pada rantai proses.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Memperoleh token untuk proses anak %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "" +"%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: archive '%s' tidak ada" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "tidak dapat memaksa mencapai batas beban pada sistem operasi ini" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "tidak dapat memaksa mencapai batas beban: " + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdin\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdout\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "tidak ada lagi file handles: tidak dapat menggandakan stderr\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Tidak dapat mengembalikan stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Tidak dapat mengembalikan stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Tidak dapat mengembalikan stderr\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "make reaped child pid %s, tetap menunggu untuk pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: mungkin kehabisan ruang environment" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL berubah (sebelumnya '%s', sekarang '%s')\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Membuat berkas batch sementara %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Batch file contents:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Batch file contents:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, 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" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Failed to open global symbol table: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Loaded object %s is not declared to be GPL compatible" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Failed to load symbol %s from %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Empty symbol name for load: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Loading symbol %s from %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Parallel jobs '-j' tidak didukung dalam platform ini." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opsi:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Diabaikan untuk kompatibilitas.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" +" -B, --always-make Membuat semua target secara tidak " +"kondisional.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTORI, --directory=DIREKTORI\n" +" Pindah ke DIREKTORI sebelum melakukan apapun.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Menampilkan banyak informasi debug.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=FLAGS] Menampilkan berbagai tipe informasi debug.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Variabel lingkungan memaksa makefiles.\n" + +# +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile " +"statement.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f BERKAS, --file=BERKAS, --makefile=BERKAS\n" +" Baca BERKAS sebagai sebuah makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Tampilkan pesan ini dan keluar.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" +" -i, --ignore-errors Abaikan kesalahan dari perintah yang " +"dijalankan.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIREKTORI, --include-dir=DIREKTORI\n" +" Cari di DIREKTORI untuk makefile yang " +"disertakan.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Ijinkan N kerja secara bersamaan. Kerja tidak " +"terhingga jika tidak diberikan argumen.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +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" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Jangan menjalankan multiple pekerjaan kecuali " +"beban dibawah N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Gunakan waktu mtime terbaru diantara symlinks " +"dan target.\n" + +#: src/main.c:355 +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" +" Jangan menjalankan perintah apapun; tampilkan " +"saja apa yang akan dikerjakan.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o FILE, --old-file=BERKAS, --assume-old=BERKAS\n" +" Pertimbangkan BERKAS sudah sangat tua dan " +"jangan membuatnya lagi.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base Tampilkan basis data internal make.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Tidak menjalankan perintah. Mengeluarkan " +"status saja dan mengatakan up to date.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Aturan implisit bawaan tidak digunakan.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Non-aktifkan konfigurasi variabel bawaan.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Jangan menampilkan perintah.\n" + +# +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Menampilkan perintah (non-aktifkan --silent " +"mode).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Matikan opsi -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Sentuh target dari pada membuat kembali.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" +" --trace Menampilkan banyak informasi debug.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version Tampilkan versi dari make dan keluar.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Tampilkan directory saat ini.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Matikan opsi -w, walaupun opsi ini diaktifkan " +"secara implisit.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W FILE, --what-if=BERKAS, --new-file=BERKAS, --assume-new=BERKAS\n" +" Pertimbangkan BERKAS sebagai sebuah berkas " +"baru.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Peringatkan akan adanya variabel yang tidak " +"terdefinisi yang direferensikan.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "error menulis: stdout" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "`string' kosong tidak valid sebagai nama file" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "spesifikasi tingkat debug tidak diketahui '%s'" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "unknown output-sync type '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Penggunaan: %s [opsi] [target] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Program ini dibuat untuk %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Program ini dibuat untuk %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Laporkan bugs kepada \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Interupsi/Exception diterima (kode = 0x%lx, alamat = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Exception filter tidak dapat diatasi dari program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Akses dilanggar: operasi tulis pada alamat 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Akses dilanggar: operasi baca pada alamat 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() diset pada default_shell = %s\n" + +#: src/main.c:1098 +#, 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" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (berkas sementara): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"Peringatan: server pekerja tidak ada: menggunakan -j1. Tambahkan '+' pada " +"aturan make paling atas." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"peringatan: -j%d dipaksakan dalam submake: resetting mode server pekerja." + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile dari standard input dispesifikasikan dua kali." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (berkas sementara)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"peringatan: -j%d dipaksakan dalam submake: resetting mode server pekerja." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Parallel jobs (-j) tidak didukung dalam platform ini." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Mereset kembali ke mode satu job (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "unknown output-sync type '%s'" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Symbolic links tidak didukung: menonaktifkan opsi -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Memperbarui makefiles....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile '%s' mungkin berupa loop; tidak membuat lagi.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: failed to load" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Gagal membuat lagi makefile '%s'." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Makefile yang dimasukan '%s' tidak ditemukan." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile '%s' tidak ditemukan" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Tidak dapat kembali ke direktori asal." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Menjalankan kembali[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL berisi lebih dari satu target" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Tidak ada targets" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Target tidak dispesifikasikan dan tidak ditemukan makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Memperbarui tujuan target....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"Peringatan: Clock skew terdeteksi. Pembuatan anda mungkin tidak sempurna" + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "opsi '%s%s' membutuhkan sebuah argument string yang tidak kosong" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "opsi '-%c' membutuhkan sebuah argument `string' yang tidak kosong" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sAplikasi ini dibuat untuk %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sAplikasi ini dibuat untuk %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sLisensi GPLv3+: GNU GPL versi 3 atau sesudahnya \n" +"%sIni adalah aplikasi gratis: anda bebas untuk mengubah dan menyebarkannya.\n" +"%sTidak ada JAMINAN, sepanjang diperbolehkan oleh hukum.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Membuat basis data, ditampilkan %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Selesai membuat basis data %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Menggunakan perintah baku untuk '%s'.\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Membuat berkas batch sementara %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (berkas sementara): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (berkas sementara)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (berkas sementara)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Memasuki sebuah direktori yang tidak diketahui\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Meninggalkan sebuah direktori yang tidak diketahui\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Memasuki direktori '%s'\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Meninggalkan direktori '%s'\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Memasuki sebuah direktori yang tidak diketahui\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Meninggalkan sebuah direktori yang tidak diketahui\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Memasuki direktori '%s'\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Meninggalkan direktori '%s'\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Berhenti.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "unknown output-sync type '%s'" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "membuat pipa pekerjaan" + +# +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duping pipa pekerjaan" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inisiasi pipa server pekerja" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "internal error: tidak valid --jobserver-auth string '%s'" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "menulis jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "server pekerja dimatikan" + +# +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect pipa pekerjaan" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "membaca pipa pekerjaan" + +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "internal error: tidak valid --jobserver-auth string '%s'" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "unknown output-sync type '%s'" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Membaca makefiles...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Membaca makefile '%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (tidak terdapat tujuan baku)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (jalur pencarian)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (tidak peduli)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (tidak terdapat ekspansi tilde ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "Skipping UTF-8 BOM in makefile '%s'\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Skipping UTF-8 BOM in makefile buffer\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintak salah dalam kondisional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "perintah dijalankan sebelum target pertama" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "hilang aturan sebelum menjalankan perintah" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "pemisah hilang (apakah yang anda maksud TAB dari pada 8 buah spasi?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "pemisah hilang" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "pola target hilang" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "pola target banyak" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "pola target tidak memiliki '%%'" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "hilang 'endif'" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "nama variabel kosong" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "Kelebihan text sesudah 'endef' directive" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "hilang 'endef', tidak diselesaikan 'define'" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "kelebihan text sesudah 'endef' directive" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "kelebihan text sesudah '%s' directive" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "kelebihan '%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "hanya satu 'else' dalam setiap kondisi" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Definisi variable target-specific memiliki format yang salah" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "persyaratan tidak dapat didefinisikan dalam script perintah" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "grup target harus menyediakan sebuah perintah" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "aturan pola implisit dan static tercampur" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "aturan implisit dan aturan normal tercampur" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "target '%s' tidak cocok dengan pola target" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "target berkas '%s' keduanya memiliki masukan : dan ::" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "target '%s' memberikan lebih dari sekali dalam aturan sama." + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "peringatan: memaksa perintah untuk target '%s'" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "peringatan: menghiraukan perintah lama untuk target '%s'" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** aturan implisit dan aturan normal: deprecated syntax" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "peringatan: memaksa keanggotaan grup untuk target '%s'" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "peringatan: karakter NUL terlihat; baris selanjutnya dihiraukan" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "peringatan: memaksa perintah untuk target '%s'" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Tidak ada yang harus dilakukan untuk '%s'." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' sudah baru." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Pruning file '%s'.\n" + +#: src/remake.c:416 +#, 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" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sTidak terdapat aturan untuk membuat target '%s'%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Mempertimbangkan berkas target '%s'.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Baru saja dicoba dan gagal untuk memperbarui berkas '%s'.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Berkas '%s' baru saja dipertimbangkan.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Sedang memperbarui berkas '%s'.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Selesai memperbarui berkas '%s'.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Berkas '%s' tidak ada.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Peringatan: .LOW_RESOLUTION_TIME berkas '%s' memiliki sebuah penanda " +"waktu dengan resolusi tinggi" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Persyaratan untuk '%s' untuk target '%s' tidak ada.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Menggunakan perintah baku untuk '%s'.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Ketergantungan %s <- %s melingkar dijatuhkan." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Selesai melakukan semua persyaratan untuk berkas target '%s'.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Persyaratan untuk membuat '%s' sedang dibuat.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Menyerah untuk membuat target berkas '%s'.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Target '%s' tidak dibuat lagi karena ada errors." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Persyaratan untuk '%s' adalah order-only untuk target '%s'.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Persyaratan untuk '%s' untuk target '%s' tidak ada.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Persyaratan untuk '%s' lebih baru dari pada target '%s'.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Persyaratan untuk '%s' lebih tua dari pada target '%s'.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Target '%s' merupakan kolon-ganda dan tidak memiliki syarat.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "Tidak ada perintah untuk '%s' dan persyaratan tidak berubah.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Membuat '%s' karena adanya tanda always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Tidak perlu membuat lagi target '%s'" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; menggunakan nama VPATH '%s'" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Harus membuat lagi target '%s'.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Mengabaikan nama VPATH '%s'.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Perintah dari '%s' sedang dijalankan.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Gagal membuat lagi target berkas '%s'.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Sukses membuat kembali target berkas '%s'.\n" + +#: src/remake.c:919 +#, 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" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Menggunakan perintah baku untuk '%s'.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Peringatan: Berkas '%s' memiliki waktu modifikasi %s s kedepan" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS elemen '%s' bukan merupakan sebuah pattern" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Custom tidak akan men-export: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "peringatan: mengabaikan persyaratan di awalan aturan definisi" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Aturan implisit." + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Tidak ada aturan implisit." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u aturan implisit, %u (%.1f%%) terminal." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "BUG: num_pattern_rules salah! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "sinyal tidak diketahui" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Hangup" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interupsi" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Berhenti" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instruksi Tidak Legal" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Penangkap trace/breakpoint" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Dibatalkan" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Penangkap IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Penangkap EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Eksepsi titik pecahan" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Terbunuh" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Bus error" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Kesalahan segmentasi" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Panggilan sistem buruk" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Pipa rusak" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarm" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Dimatikan" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Sinyal definisi pengguna 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Sinyal definisi pengguna 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Proses anak berakhir" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Listrik bermasalah" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Dihentikkan" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Dihentikan (masukkan tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Dihentikan (keluaran tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Dihentikan (sinyal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Batas waktu CPU telah terlampaui" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Batas maksimal ukuran berkas terlampaui" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Pewaktu maya habis" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Pewaktu profiling habis" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Jendela berubah" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Dilanjutkan" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Kondisi I/O penting" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O mungkin" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resource hilang" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Sinyal bahaya" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Permintaan informasi" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "co-processor titik pecahan tidak tersedia" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s # dari buffer strcache: \n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s strcache free: %lu total = (%lu) / mak = %lu / min = %lu / rata-rata = " +"%lu\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "besar %s strcache: total = %lu / count = %lu / rata-rata = %lu\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s strcache free: total = %lu / mak = %lu / min = %lu / rata-rata = %hu\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# berkas statistik hash-table:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "otomatis" + +#: src/variable.c:1789 +msgid "default" +msgstr "baku" + +#: src/variable.c:1792 +msgid "environment" +msgstr "lingkungan" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "lingkungan dibawah opsi -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "baris perintah" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "'override' direktif" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (dari '%s', baris %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# statistik variable set hash-table:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabel\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Nilai Variabel Pola-Spesifik" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Tidak terdapat nilai variabel pola-spesifik" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u nilai variabel pola-spesifik" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "peringatan: variabel '%.*s' tidak terdefinisi" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() gagal dengan kode %d\n" + +#: src/vmsjobs.c:244 +#, 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" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BAWAAN CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Meneruskan output ke %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Append %.*s and cleanup\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Menjalankan perintah %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH Jalur Pencarian\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Tidak ada 'vpath' dalam jalur pencarian." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u 'vpath' jalur pencarian.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Tidak ada ('VPATH' variabel) umum dalam jalur pencarian." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Jalur pencarian umum untuk variabel 'VPATH':\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Jobserver slots limited to %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "creating jobserver semaphore: (Error %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobserver client (semaphore %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "release jobserver semaphore: (Error %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "semaphore or child process wait: (Error %ld: %s)" + +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "unknown output-sync type '%s'" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Invalid function name: %s" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: pengguna %lu (ril %lu), grup %lu (ril %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Akses terinisialisasi" + +#~ msgid "User access" +#~ msgstr "Akses pengguna" + +#~ msgid "Make access" +#~ msgstr "Buat akses" + +#~ msgid "Child access" +#~ msgstr "Akses anak" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Jobserver client (fds %d,%d)\n" + +# +#~ msgid "jobserver pipeline" +#~ msgstr "baris pipa server pekerja" + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: recipe for target '%s' failed" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Error 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "%s: Command not found" +#~ msgstr "%s: Perintah tidak ada" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Shell program tidak ditemukan" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "internal error: opsi --sync-mutex lebih dari satu" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s dihentikan selama 30 detik..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "selesai tidur(30). Melanjutkan.\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "internal error: opsi --jobserver-fds lebih dari satu" + +#~ msgid "dup jobserver" +#~ msgstr "dup server pekerja" + +#~ msgid "Unknown error %d" +#~ msgstr "Kesalahan tidak diketahui %d" + +#~ msgid "virtual memory exhausted" +#~ msgstr "Kehabisan memori maya" + +#~ msgid "write error" +#~ msgstr "error menulis" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Peringatan: Berkas '%s' memiliki waktu modifikasi dimasa depan" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Peringatan: redirection kosong\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "kesalahan internal: '%s' command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "BAWAAN [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "BAWAAN RM %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Perintah bawaan '%s' tidak diketahui\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Error, perintah kosong\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Meneruskan masukan dari %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Meneruskan error ke %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Meneruskan output ke %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Gagal spawning, %d\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" + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sIni adalah piranti lunak bebas; lihat kode program untuk syarat " +#~ "penyalinan.\n" +#~ "%sTIDAK TERDAPAT GARANSI; bahkan untuk PENJUALAN atau \n" +#~ "%sKESESUAIAN UNTUK TUJUAN TERTENTU.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "kelebihan `endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "directive `override' kosong" + +#~ msgid "invalid `override' directive" +#~ msgstr "directive `override' tidak valid" + +#~ msgid "" +#~ "\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" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Tidak terdapat files." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u files dalam %u hash buckets.\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "" +#~ "# rata - rata %.3f files per bucket, maksimal %u files dalam satu " +#~ "bucket.\n" + +#~ msgid "the `word' function takes a positive index argument" +#~ msgstr "fungsi `word' mengambil sebuah argumen index yang positif" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Sintak error, masih didalam '\"'\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "Mendapat sinyal SIGCHLD; %u unreaped childern.\n" + +#~ msgid "DIRECTORY" +#~ msgstr "DIREKTORI" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "Pindah ke DIRECTORY sebelum melakukan sesuatu." + +#~ msgid "FLAGS" +#~ msgstr "FLAGS" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Proses dihentikan untuk memberikan kesempatan debugger" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "Variabel environment digunakan dalam makefiles" + +#~ msgid "FILE" +#~ msgstr "FILE" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "Baca FILE sebagai sebuah makefile" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "Cari DIREKTORI untuk makefiles yang dibutuhkan" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "Tidak melakukan banyak jobs jika beban lebih dari N." + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "" +#~ "Jangan menjalankan perintah apapun. Hanya tampilkan saja apa yang akan " +#~ "dilakukan" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "" +#~ "Anggap FILE sudah sangat tua dan jangan dibuat kembali file tersebut" + +#~ msgid "Don't echo commands" +#~ msgstr "Jangan menampilkan perintah yang dijalankan" + +#~ msgid "Turns off -k" +#~ msgstr "Matikan opsi -k" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "Pertimbangkan FILE sebagai file yang baru." + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Jangan menspesifikasi -j atau --jobs jika sh.exe tidak ada." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Mereset kembali make pada mode job tunggal." + +#~ msgid "Entering" +#~ msgstr "Memasuki" + +#~ msgid "Leaving" +#~ msgstr "Meninggalkan" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "tidak terdapat nama file untuk `%s include'" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "target `%s' meninggalkan persyaratan pola kosong" + +#~ msgid "# No variables." +#~ msgstr "# Tidak ada variabel." + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "" +#~ "# rata - rata dari %.1f variabel per bucket, maksimal %u dalam satu " +#~ "bucket.\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "" +#~ "# rata - rata dari %d.%d variabel per bucket, maksimal %u dalam satu " +#~ "bucket.\n" diff --git a/local/recipes/dev/gnu-make/source/po/insert-header.sin b/local/recipes/dev/gnu-make/source/po/insert-header.sin new file mode 100644 index 0000000000..b26de01f6c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/local/recipes/dev/gnu-make/source/po/it.gmo b/local/recipes/dev/gnu-make/source/po/it.gmo new file mode 100644 index 0000000000..8e082aadd4 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/it.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/it.po b/local/recipes/dev/gnu-make/source/po/it.po new file mode 100644 index 0000000000..1e06f073f4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/it.po @@ -0,0 +1,2525 @@ +# 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 , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2020-02-04 19:18+0100\n" +"Last-Translator: Francesco Groccia \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Editor: Vim with po plugin\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "tentativo di usare una funzionalità non supportata: «%s»" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "touch del membro di archivio non disponibile su VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: l'archivio «%s» non esiste" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: «%s» non è un archivio valido" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: il membro «%s» non esiste in «%s»" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: codice di uscita errato da ar_member_touch su «%s»" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"lbr$set_module() non è riuscita a estrarre informazioni sul modulo, stato = " +"%d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() non riuscita con lo stato = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"impossibile aprire la libreria «%s» per cercare lo stato del membro «%d»" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Membro «%s»%s: %ld byte a %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (il nome potrebbe essere troncato)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Data %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, modo = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Il set di istruzioni ha troppe righe (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Interruzione.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "" +"*** [%s] Il membro di archivio «%s» potrebbe essere inesistente; non " +"eliminato" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "" +"*** Il membro di archivio «%s» potrebbe essere inesistente; non eliminato" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Eliminazione del file «%s»" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Eliminazione del file «%s»" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# set di istruzioni da eseguire" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (comando interno):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (da «%s» riga %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directory\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: impossibile eseguire stat.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (key %s, mtime %I64u) non può essere aperto.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (device %d, inode [%d,%d,%d]) non può essere aperto.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (device %ld, inode %ld) non può essere aperto.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (key %s, mtime %I64u): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (device %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (device %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "No" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " file, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "no" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " impossibilità" + +#: src/dir.c:1180 +msgid " so far." +msgstr " finora." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " impossibilità nelle directory %lu.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "La variabile ricorsiva «%s» si autoreferenzia (alla fine)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "riferimento alla variabile non terminato" + +#: src/file.c:272 +#, 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," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"È stato trovato un set di istruzioni per il file «%s» mediante una regola di " +"ricerca implicita," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "ma ora «%s» viene considerato lo stesso file di «%s»." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" +"Il set di istruzioni per «%s» verrà ignorato in favore di quello per «%s»." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"impossibile rinominare la regola \"due punti\" «%s» con la regola \"doppio " +"due punti\" «%s»" + +#: src/file.c:310 +#, c-format +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»" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Eliminazione del file intermedio «%s»" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Rimozione dei file intermedi...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Ora corrente" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: intervallo errato per la marcatura temporale; sostituzione di %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Non è un obiettivo:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# File \"precious\" (prerequisito di .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Obiettivo \"phony\" (prerequisito di .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Obiettivo a riga di comando." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Un makefile predefinito, da MAKEFILES, o da -include/sinclude." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Regola incorporata" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Regola di ricerca implicita completata." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Regola di ricerca implicita non completata." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Stem implicito/statico del modello: «%s»\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Il file è un prerequisito intermedio." + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# File \"precious\" (prerequisito di .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Obiettivo \"phony\" (prerequisito di .PHONY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Inoltre, genera:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Ora di modifica mai controllata." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Il file non esiste." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Il file è molto vecchio." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Ultima modifica %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Il file è stato aggiornato." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Il file non è stato aggiornato." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Set di istruzioni attualmente in esecuzione (QUESTO È UN BUG)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Dipendenze del set di istruzioni in esecuzione (QUESTO È UN BUG)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Aggiornato con successo." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Richiede di essere aggiornato (-q è impostato)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Aggiornamento non riuscito." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valore illecito nel membro \"command_state\"!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# File" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# statistiche tabella hash dei file:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Campo «%s» non memorizzato: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "primo argomento non numerico per la funzione \"word\"" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "il primo argomento per la funzione \"word\" deve essere maggiore di 0" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "primo argomento non numerico per la funzione \"wordlist\"" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "secondo argomento non numerico per la funzione \"wordlist\"" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "primo argomento non numerico per la funzione \"wordlist\"" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "secondo argomento non numerico per la funzione \"wordlist\"" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) non riuscita (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_open_pipe: DuplicateHandle(Err) non riuscita (e=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() non riuscita (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() non riuscita\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Pulitura del file batch temporaneo %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: file mancante" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "apertura: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "scrittura: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "chiusura: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: troppi argomenti" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "lettura: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: operazione sui file non valida: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "numero di argomenti non sufficienti (%d) per la funzione «%s»" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "non implementata su questa piattaforma: funzione «%s»" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "chiamata non terminata alla funzione «%s»: «%c» mancante" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Nome della funzione vuoto" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nome della funzione non valido: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Nome della funzione troppo lungo: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Numero di argomenti non sufficienti (%u) per la funzione %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Numero massimo di argomenti non sufficienti (%u) per la funzione %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: l'opzione «%s» è ambigua\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: l'opzione «--%s» non ammette argomenti\n" + +#: src/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" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: l'opzione «%s» richiede un argomento\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opzione «--%s» sconosciuta\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opzione «%c%s» sconosciuta\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opzione illecita -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opzione illecita -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'opzione richiede un argomento -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: l'opzione «-W %s» è ambigua\n" + +#: src/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" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Espansione di «%s»\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Valutazione di «%s»\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "impossibile allocare %lu byte per la tabella hash: memoria esaurita" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Carico=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Collisioni=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Ricerca di una regola implicita per «%s».\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Ricerca di una regola implicita per il membro di archivio per «%s».\n" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Ricerca di una regola implicita per il membro di archivio per «%s».\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Evitata la ricorsione della regola implicita.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Tentativo di usare la regola del modello con stem «%.*s».\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stem troppo lungo: «%s%.*s».\n" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Prerequisito impossibile «%s» della regola rifiutato.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Prerequisito implicito impossibile «%s» rifiutato.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Tentativo di usare il prerequisito della regola «%s».\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Tentativo di usare il prerequisito implicito «%s».\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Il file «%s» non esiste.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Il prerequisito «%s» dell'obiettivo «%s» non esiste.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Trovato il prerequisito «%s» come VPATH «%s»\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Ricerca di una regola con il file intermedio «%s».\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Ricerca di una regola con il file intermedio «%s».\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Prerequisito impossibile «%s» della regola rifiutato.\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Nessuna regola implicita trovata per «%s».\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Trovata una regola implicita per «%s».\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Ricerca di una regola implicita per «%s».\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nessuna regola implicita trovata per «%s».\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "Impossibile creare un file temporaneo\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (creato dump del core)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorato)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Errore %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Attesa per i processi non terminati...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Processo figlio vivo %p (%s) con PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (remoto)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Interruzione del processo figlio vincente %p con PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Interruzione del processo figlio perdente %p con PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Pulitura del file batch temporaneo %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Pulitura del file batch temporaneo %s non riuscita (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "" +"Rimozione del processo figlio %p con PID %s%s dalla catena di esecuzione.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Token rilasciato per il processo figlio %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() non riuscita all'avvio del processo (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Contati %d argomenti nell'avvio fallito\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "" +"Inserimento del processo figlio %p (%s) con PID %s%s nella catena di " +"esecuzione.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Token ottenuto per il processo figlio %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: l'obbiettivo «%s» non esiste" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "" +"impossibile far rispettare i limiti di carico su questo sistema operativo" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "impossibile far rispettare il limite di carico: " + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"nessun'altra gestione del file: impossibile duplicare lo standard input\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"nessun'altra gestione del file: impossibile duplicare lo standard output\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"nessun'altra gestione del file: impossibile duplicare lo standard error\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Impossibile ripristinare lo standard input\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Impossibile ripristinare lo standard output\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Impossibile ripristinare lo standard error\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" +"make ha interrotto il processo figlio con pid %s, è ancora in attesa del " +"processo con pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: lo spazio dell'ambiente potrebbe essere esaurito" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL cambiata (era «%s», adesso è «%s»)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Creazione del file batch temporaneo %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Contenuti del file batch:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Contenuti del file batch:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, 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" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Apertura della tabella dei simboli globale non riuscita: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, 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" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Caricamento del simbolo %s da %s non riuscito: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nome del simbolo vuoto per il caricamento: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Caricamento del simbolo %s da %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "L'operazione «load» non è supportata su questa piattaforma." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opzioni:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorato per compatibilità.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" +" -B, --always-make Genera tutti gli obiettivi " +"incondizionatamente.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Cambia DIRECTORY prima di fare qualunque " +"cosa.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Mostra molte informazioni di debug.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=FLAGS] Mostra diversi tipi di informazioni di debug.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Le variabili ambiente sovrascrivono i " +"makefile.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E STRINGA, --eval=TESTO Analizza STRINGA come estratta dal " +"makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Legge FILE come un makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Mostra questo messaggio ed esce.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" +" -i, --ignore-errors Ignora gli errori dai set di istruzioni.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Cerca nella DIRECTORY per i makefile inclusi.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Permette N processi alla volta; infiniti se " +"non viene specificato l'argomento.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Continua l'esecuzione quando non è possibile " +"creare alcuni obiettivi.\n" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Non avvia processi multipli a meno che il " +"carico di lavoro non sia sotto N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Usa il più recente mtime tra i collegamenti " +"simbolici e l'obiettivo.\n" + +#: src/main.c:355 +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 set di istruzioni; lo stampa " +"solamente.\n" + +#: src/main.c:358 +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 il FILE come molto vecchio e non " +"riesegue make.\n" + +#: src/main.c:361 +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" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base Stampa il database interno di make.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Non avvia alcun set di istruzioni; lo stato di " +"uscita indica se è aggiornato.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Disabilita le regole implicite interne.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Disabilita le impostazioni delle variabili " +"interne.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Non visualizza i set di istruzioni.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Visualizza il set di istruzioni (Disabilita la " +"modalità --silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Disattiva l'opzione -k.\n" + +# ## touch = in questo contesto è simile alla funzione del comando 'touch' +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Esegue il touch degli obiettivi invece di " +"ricrearli.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Stampa informazioni di tracciamento.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version Stampa il numero di versione di make ed esce.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Stampa la directory corrente.\n" + +#: src/main.c:390 +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 era stata " +"attivata implicitamente.\n" + +#: src/main.c:392 +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 il FILE come nuovo di zecca.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Avvisa quando viene referenziata una variabile " +"non definita.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "errore in scrittura: stdout" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "una stringa vuota non è valida come nome di file" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "livello di debug specificato sconosciuto «%s»" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opzioni] [obiettivo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Questo programma è stato compilato per %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Questo programma è stato compilato per %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Segnalare i bug a \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" +"%s: catturata una interruzione/eccezione (codice = 0x%lx, indirizzo = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Filtro eccezione non gestita chiamata dal programma %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Violazione accesso: operazione di scrittura all'indirizzo 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Violazione accesso: operazione di lettura all'indirizzo 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() impostazione default_shell = %s\n" + +#: src/main.c:1098 +#, 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" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (file temporaneo): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla " +"regola make superiore." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"attenzione: -j%d forzata nel submake: disattivazione della modalità " +"jobserver." + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Il Makefile dallo standard input è stato specificato due volte." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (file temporaneo)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"attenzione: -j%d forzata nel submake: disattivazione della modalità " +"jobserver." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "I processi paralleli (-j) non sono supportati su questa piattaforma." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Reimpostazione alla modalità a singolo processo (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Collegamenti simbolici non supportati: opzione -L disabilitata." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Aggiornamento dei makefile....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" +"Il makefile «%s» potrebbe entrare in un ciclo all'infinito; make non " +"rieseguito.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: caricamento non riuscito" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Riesecuzione del makefile «%s» non riuscita." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Il makefile «%s» incluso non è stato trovato." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Il makefile «%s» non è stato trovato" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Impossibile ritornare alla directory originale." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Riesecuzione[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL contiene più di un obiettivo" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Nessun obiettivo" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Nessun obiettivo specificato e nessun makefile trovato" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Aggiornamento degli obiettivi....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"attenzione: rilevato un tempo alterato. La creazione potrebbe essere " +"incompleta." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "l'opzione «%s%s» richiede un argomento stringa non vuoto" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "l'opzione «-%c» richiede un argomento intero positivo" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sCompilato per %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sCompilato per %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%s Licenza GPLv3+: GNU GPL versione 3 o successiva .\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" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Generazione del database delle informazioni, creato il %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Generazione del database completata il %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Uso del set di istruzioni predefinito per «%s».\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Creazione del file batch temporaneo %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (file temporaneo): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (file temporaneo)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (file temporaneo)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: ingresso in una directory sconosciuta\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: uscita dalla directory sconosciuta\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: ingresso nella directory «%s»\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: uscita dalla directory «%s»\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: ingresso in una directory sconosciuta\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: uscita dalla directory sconosciuta\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: ingresso nella directory «%s»\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: uscita dalla directory «%s»\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Arresto.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "creazione della pipe dei processi" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "beffa della pipe dei processi" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inizializzazione nella pipe della modalità jobserver" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "errore interno: stringa illecita per --jobserver-auth «%s»" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "scrittura del jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "job server spento" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect della pipe dei processi" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "lettura della pipe dei processi" + +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "errore interno: stringa illecita per --jobserver-auth «%s»" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Lettura dei makefile...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Lettura del makefile «%s»" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (nessun obiettivo predefinito)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (percorso di ricerca)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ignora)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (nessuna espansione per «~»)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "UTF-8 BOM nel makefile «%s» saltato\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "UTF-8 BOM nel makefile buffer saltato\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintassi illecita nel condizionale" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "il set di istruzioni inizia prima del primo obiettivo" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "regola mancante prima del set di istruzioni" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "separatore mancante (si intendeva TAB invece di 8 spazi?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "separatore mancante" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "modello mancante per l'obiettivo" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "modelli multipli per l'obiettivo" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "il modello dell'obiettivo non contiene alcun «%%»" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "«endif» mancante" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "nome vuoto della variabile" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "testo non pertinente dopo la direttiva «define»" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "«endef» mancante, «define» non terminato" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "testo non pertinente dopo la direttiva «endef»" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "testo non pertinente dopo la direttiva «%s»" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "«%s» non pertinente" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "un solo «else» per condizionale" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Definizione malformata della variabile specifica per l'obiettivo" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "i prerequisiti non possono essere definiti nei set di istruzioni" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "gli obbiettivi raggruppati devono fornire un set di istruzioni" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "regole del modello implicite e statiche miste" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "regole implicite e normali miste" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "" +"il «%s» dell'obiettivo non corrisponde al modello dell'obiettivo stesso" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "il file dell'obiettivo «%s» contiene sia : che ::" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "l'obiettivo «%s» è stato fornito più di una volta nella stessa regola" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "attenzione: sovrascrittura del set di istruzioni per l'obiettivo «%s»" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "" +"attenzione: ignorato il set di istruzioni obsoleto per l'obiettivo «%s»" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** regole implicite e normali miste: sintassi deprecata" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" +"attenzione: sovrascrittura dell'appartenente al gruppo per l'obiettivo «%s»" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "" +"attenzione: è stato rilevato il carattere NUL; il resto della riga viene " +"ignorato" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "attenzione: sovrascrittura del set di istruzioni per l'obiettivo «%s»" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Nessuna operazione da eseguire per «%s»." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "«%s» è aggiornato." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Pulizia del file «%s».\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%s Nessuna regola per generare l'obiettivo «%s», necessario per «%s»%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%s Nessuna regola per generare l'obiettivo «%s»%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Considerato il file obiettivo «%s».\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Tentativo recente di aggiornamento del file «%s» non riuscito.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Il file «%s» è già stato esaminato.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "L'aggiornamento del file «%s» è ancora in corso.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Aggiornamento del file «%s» terminato.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Il file «%s» non esiste.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Attenzione: il file .LOW_RESOLUTION_TIME «%s» ha una marcatura temporale " +"ad alta risoluzione" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Il prerequisito «%s» dell'obiettivo «%s» non esiste.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Uso del set di istruzioni predefinito per «%s».\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Dipendenza circolare %s <- %s scartata." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Prerequisiti del file obiettivo «%s» terminati.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Generazione dei prerequisiti di «%s» in corso.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Abbandono sul file obiettivo «%s».\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "L'obiettivo «%s» non è stato rigenerato a causa di errori." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Il prerequisito «%s» è solo per l'obiettivo «%s».\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Il prerequisito «%s» dell'obiettivo «%s» non esiste.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Il prerequisito «%s» è più nuovo di quello dell'obiettivo «%s».\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Il prerequisito «%s» è più vecchio di quello dell'obiettivo «%s».\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "L'obiettivo «%s» è \"doppio due punti\" e non ha alcun prerequisito.\n" + +#: src/remake.c:852 +#, 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" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Generazione di «%s» a causa del flag \"always-make\".\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Non è necessario rigenerare l'obiettivo «%s»" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; uso del nome VPATH «%s»" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "L'obiettivo «%s» deve essere rigenerato.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Nome VPATH «%s» ignorato.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Esecuzione del set di istruzioni per «%s» in corso.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Rigenerazione del file obiettivo «%s» non riuscita.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "File obiettivo «%s» rigenerato correttamente.\n" + +#: src/remake.c:919 +#, c-format +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" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Uso dei comandi predefiniti per «%s».\n" + +#: src/remake.c:1499 +#, 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" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "l'elemento .LIBPATTERNS «%s» non è un modello" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Le personalizzazioni non verranno esportate: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Regole implicite" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Regole non implicite." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u regole implicite, %u (%.1f%%) terminale." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "BUG: num_pattern_rules è errato! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "segnale sconosciuto" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Chiusura" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interruzione" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Uscita (con core dump)" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Istruzione illecita" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Rilevato trace/breakpoint" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Annullato" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Rilevato IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Rilevato EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Eccezione in virgola mobile" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Ucciso" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Errore di bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Errore di segmentazione" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Chiamata di sistema errata" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Pipe interrotta" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Sveglia" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminato" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Segnale 1 definito dall'utente" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Segnale 2 definito dall'utente" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Processo figlio uscito" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Mancanza di alimentazione elettrica" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Fermato (da terminale)" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Fermato (input tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Fermato (output tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Fermato" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Limite di tempo CPU superato" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Superato il limite di dimensione file" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Timer virtuale terminato" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Timer di profiling terminato" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Finestra modificata" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuato" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condizioni di I/O urgente" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O consentito" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Risorsa persa" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Segnale di pericolo" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Richiesta informazioni" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Co-processore a virgola mobile non disponibile" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s buffer strcache assenti\n" + +#: src/strcache.c:304 +#, 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" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s buffer corrente: dimensione = %hu B / usato = %hu B / numero = %hu / " +"media = %u B\n" + +#: src/strcache.c:319 +#, 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" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s altra libera: totale = %lu B / max = %lu B / min = %lu B / media = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s prestazioni strcache: lookups = %lu / hit rate = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statistiche della tabella hash:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatico" + +#: src/variable.c:1789 +msgid "default" +msgstr "predefinito" + +#: src/variable.c:1792 +msgid "environment" +msgstr "ambiente" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "ambiente con l'opzione -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "riga di comando" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "direttiva \"override\"" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (da «%s», riga %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# statistiche tabella di hash del set di variabili:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabili\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valori di variabile non specifici per il modello" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Nessun valore per la variabile \"pattern-specific\"." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valori di variabile specifici per il modello" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "attenzione: variabile «%.*s» non definita" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() non riuscita con %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-attenzione, potrebbe essere necessario riabilitare la gestione di CTRL+Y da " +"DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "CD INTERNO %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Accoda output a %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Accoda %.*s e pulisce\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Verrà invece eseguito %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Percorsi di ricerca VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Non ci sono percorsi di ricerca 'vpath'." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# percorsi di ricerca 'vpath' %u.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Percorso di ricerca non generale (variabile «VPATH»)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Percorso di ricerca generale (variabile «VPATH»):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Slot del jobserver limitati a %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "creazione del semaforo del jobserver: (Errore %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +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)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Client del jobserver (semaforo %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "rilascio del semaforo del jobserver: (Errore %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "attendere semaforo o processo figlio (Errore %ld: %s)" + +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nome della funzione non valido: %s" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: utente %lu (reale %lu), gruppo %lu (reale %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Accesso inizializzato" + +#~ msgid "User access" +#~ msgstr "Accesso utente" + +#~ msgid "Make access" +#~ msgstr "Accesso make" + +#~ msgid "Child access" +#~ msgstr "Accesso processo figlio" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TIPO] (--output-sync[=TIPO]) non è configurato per questa versione." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Client del jobserver (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "jobserver pipeline" diff --git a/local/recipes/dev/gnu-make/source/po/ja.gmo b/local/recipes/dev/gnu-make/source/po/ja.gmo new file mode 100644 index 0000000000..e90152fa4f Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/ja.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/ja.po b/local/recipes/dev/gnu-make/source/po/ja.po new file mode 100644 index 0000000000..a74826205c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/ja.po @@ -0,0 +1,2652 @@ +# Japanese message catalog for make +# Copyright (C) 2001 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Daisuke Yamashita , 2001. +# Thanks to NISHIJIMA Takanori +# GOTO Masanori , 2003-2004. +# Takeshi Hamasaki , 2011, 2014, 2016, 2019, 2020, 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-25 01:14+0900\n" +"Last-Translator: Takeshi Hamasaki \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 2.4.2\n" +"X-Poedit-Basepath: make-4.3.90\n" +"X-Poedit-SearchPath-0: .\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„機能を使ãŠã†ã¨ã—ã¦ã„ã¾ã™: '%s'" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "VMS ã§ã¯æ›¸åº«ã®ãƒ¡ãƒ³ãƒã‚’ touch ã™ã‚‹æ©Ÿèƒ½ãŒã‚りã¾ã›ã‚“" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: 書庫 '%s' ãŒã‚りã¾ã›ã‚“" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "'%s' ã¯æœ‰åŠ¹ãªæ›¸åº«ã§ã¯ã‚りã¾ã›ã‚“" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: メンム'%s' 㯠'%s' 内ã«å­˜åœ¨ã—ã¾ã›ã‚“" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: '%s' ã¸ã® ar_member_touch ã‹ã‚‰ç•°å¸¸ãªå€¤ãŒè¿”りã¾ã—ãŸ" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() ãŒãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«æƒ…å ±ã®æŠ½å‡ºã«å¤±æ•—ã—ã¾ã—ãŸ. 状態 = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() ãŒå¤±æ•—ã—ã¾ã—ãŸ. 状態 = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "ライブラリ '%s' ã‚’é–‹ã‘ãªã„ãŸã‚, メンãƒã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ %d ãŒæ¤œç´¢ã§ãã¾ã›ã‚“" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "%s ãŒç„¡åйã§ã™: 書庫 %s メンム%s" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "メンム'%s'%s: %ld ãƒã‚¤ãƒˆ at %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (åå‰ãŒåˆ‡ã‚Šè©°ã‚られãŸã‹ã‚‚)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " 日付 %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mode = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "レシピã®è¡Œæ•°ãŒå¤šã™ãŽã¾ã™ (ä¸Šé™ %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** 中断.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] 書庫ã®ãƒ¡ãƒ³ãƒ '%s' ã¯å¤šåˆ†å½ç‰©ã§ã™ ― 削除ã—ã¾ã›ã‚“ã§ã—ãŸ" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** 書庫ã®ãƒ¡ãƒ³ãƒ '%s' ã¯å¤šåˆ†å½ç‰©ã§ã™ ― 削除ã—ã¾ã›ã‚“ã§ã—ãŸ" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] ファイル '%s' を削除ã—ã¾ã™" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** ファイル '%s' を削除ã—ã¾ã™" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# 実行ã™ã‚‹ãƒ¬ã‚·ãƒ”" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (ビルトイン):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (ファイル '%s', %lu 行目):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# ディレクトリ\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: 状態を調ã¹ã‚‰ã‚Œã¾ã›ã‚“ã§ã—ãŸ.\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (key %s, mtime %s): é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (device %d, inode [%d,%d,%d]): é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (device %ld, inode %ld): é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (key %s, mtime %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (device %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (device %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "0" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " 個ã®ãƒ•ァイル, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "0" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " 個ã®é©ç”¨ä¸èƒ½ãƒ•ァイルå" + +#: src/dir.c:1180 +msgid " so far." +msgstr " (ã“ã“ã¾ã§ã«)." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " 個ã®é©ç”¨ä¸èƒ½ãƒ•ァイルå (%lu 個ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…).\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu: éžå†å¸°çš„ã« %s ã‚’æ‹¡å¼µã—シェル関数ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã—ã¾ã™\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "å†å¸°çš„変数 '%s' ãŒ(最終的ã«)ãれ自身をå‚ç…§ã—ã¦ã„ã¾ã™" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "終端ã®ãªã„変数å‚ç…§" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "ファイル '%s' ã®ãŸã‚ã®ã®ãƒ¬ã‚·ãƒ”㌠%s:%lu ã§æŒ‡å®šã•れã¾ã—ãŸ," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "ファイル '%s' ã®ãŸã‚ã®ãƒ¬ã‚·ãƒ”ãŒæš—é»™ãƒ«ãƒ¼ãƒ«ã®æŽ¢ç´¢ã§è¦‹ã¤ã‹ã‚Šã¾ã—ãŸ," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "ã—ã‹ã—今㯠'%s' 㨠'%s' ã¯åŒã˜ãƒ•ァイルã¨è¦‹ãªã•れã¾ã™." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "'%s' ã®ãŸã‚ã®ãƒ¬ã‚·ãƒ”ã¯, '%s' ã®ãŸã‚ã®ã‚‚ã®ã‚’優先ã™ã‚‹ãŸã‚無視ã•れã¾ã™." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "シングルコロン '%s' ã‹ã‚‰ãƒ€ãƒ–ルコロン '%s' ã«åå‰ã‚’変ãˆã‚‰ã‚Œã¾ã›ã‚“" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "ダブルコロン '%s' ã‹ã‚‰ã‚·ãƒ³ã‚°ãƒ«ã‚³ãƒ­ãƒ³ '%s' ã«åå‰ã‚’変ãˆã‚‰ã‚Œã¾ã›ã‚“" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** 中間ファイル '%s' を削除ã—ã¾ã™" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "中間ファイルを削除ã—ã¦ã„ã¾ã™...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s 㯠.NOTINTERMEDIATE 㨠.INTERMEDIATE ã®ä¸¡æ–¹ã«ã¯ãªã‚Œã¾ã›ã‚“" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s 㯠.NOTINTERMEDIATE 㨠.SECONDARY ã®ä¸¡æ–¹ã«ã¯ãªã‚Œã¾ã›ã‚“" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE 㨠.SECONDARY ã¯ç›¸äº’ã«æŽ’ä»–çš„ã§ã™" + +#: src/file.c:942 +msgid "Current time" +msgstr "ç¾åœ¨æ™‚刻" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: タイムスタンプãŒç¯„囲外ã§ã™ -- 代り㫠%s ã¨ã—ã¾ã™" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# ターゲットã§ã¯ã‚りã¾ã›ã‚“:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# 特別扱ã„ã®ãƒ•ァイル (.PRECIOUS ã®å¿…è¦æ¡ä»¶)" + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# 疑似ターゲット (.PHONY ã®å¿…è¦æ¡ä»¶)" + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# コマンドラインターゲット." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# デフォルトã¾ãŸã¯ MAKEFILES, -include/sinclude Makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# ビルトインルール" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# æš—é»™ãƒ«ãƒ¼ãƒ«ã®æŽ¢ç´¢ãŒè¡Œã‚れã¾ã—ãŸ." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# æš—é»™ãƒ«ãƒ¼ãƒ«ã®æŽ¢ç´¢ã¯è¡Œã‚れã¾ã›ã‚“ã§ã—ãŸ." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# æš—é»™/é™çš„パターン語幹: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# ファイルã¯ä¸­é–“å¿…è¦æ¡ä»¶ã§ã™." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# ファイル㯠.NOTINTERMEDIATE ã®å¿…è¦æ¡ä»¶ã§ã™ã€‚" + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# ファイルã¯ã‚»ã‚«ãƒ³ãƒ€ãƒªã§ã™ (.SECONDARYã®å¿…è¦æ¡ä»¶)" + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# ã•ら㫠make:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# 修正時刻ãŒãƒã‚§ãƒƒã‚¯ã•れるã“ã¨ã¯ã‚りã¾ã›ã‚“." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# ファイルãŒå­˜åœ¨ã—ã¾ã›ã‚“." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# ファイルãŒéžå¸¸ã«å¤ã„ã§ã™." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# 最終修正 %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ›´æ–°ã•れã¦ã„ã¾ã™." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ›´æ–°ã•れã¦ã„ã¾ã›ã‚“." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# レシピをç¾åœ¨å®Ÿè¡Œä¸­ã§ã™ (*ã“れã¯ãƒã‚°ã§ã™*)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# ä¾å­˜é–¢ä¿‚レシピを実行中ã§ã™ (*ã“れã¯ãƒã‚°ã§ã™*)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# æ›´æ–°ã«æˆåŠŸã—ã¾ã—ãŸ." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# æ›´æ–°ãŒå¿…è¦ã§ã™ (-q ãŒã‚»ãƒƒãƒˆã•れã¦ã„ã¾ã™)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# æ›´æ–°ã«å¤±æ•—ã—ã¾ã—ãŸ." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# 'command_state' メンãƒã«ç„¡åйãªå€¤ã§ã™!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# ファイル" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# ファイルãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルã®çŠ¶æ…‹:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: フィールド '%s' ã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã•れã¦ã„ã¾ã›ã‚“: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: 空ã®å€¤" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: '%s' ã¯ç¯„囲外ã§ã™" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "無効ãªç¬¬1引数㌠'word' 関数ã«ä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "'word' 関数ã¸ã®ç¬¬1引数㯠0 より大ãããªã‘れã°ãªã‚Šã¾ã›ã‚“" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "無効ãªç¬¬1引数㌠'wordlist' 関数ã«ä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "無効ãªç¬¬2引数㌠'wordlist' 関数ã«ä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "éžæ•°å€¤ã®ç¬¬1引数㌠'intcmp' 関数ã«ä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "éžæ•°å€¤ã®ç¬¬2引数㌠'intcmp' 関数ã«ä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) ãŒå¤±æ•— (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) ãŒå¤±æ•— (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() ãŒå¤±æ•— (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe (): process_init_fd() ãŒå¤±æ•—\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "一時的ãªãƒãƒƒãƒãƒ•ァイル %s を消去ã—ã¾ã™\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: ファイルåãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: 引数ãŒå¤šã™ãŽã¾ã™" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: 無効ãªãƒ•ァイルæ“作: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "å¼•æ•°ã®æ•°(%u)ãŒé–¢æ•° '%s' ã«ã¨ã£ã¦ä¸å分ã§ã™" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ã“ã®ãƒ—ラットフォームã§ã¯å®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“: 関数 '%s'" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "終端ãŒãªã„関数呼ã³å‡ºã— '%s': '%c' ãŒã‚りã¾ã›ã‚“" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "空ã®é–¢æ•°å" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "無効ãªé–¢æ•°å: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "関数åãŒé•·ã™ãŽã¾ã™: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "引数個数指定(最å°å€¤;%u)ãŒç„¡åйã§ã™: 関数 %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "引数個数指定(最大値;%u)ãŒç„¡åйã§ã™: 関数 %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: オプション '%s' ã¯çŸ­ã™ãŽã¦æ­£ã—ã判別ã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: オプション '--%s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: オプション '%c%s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: オプション '%s' ã«ã¯å¼•æ•°ãŒ1ã¤å¿…è¦ã§ã™\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: オプション '--%s' ã‚’èªè­˜ã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: オプション '%c%s' ã‚’èªè­˜ã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: 䏿­£ãªã‚ªãƒ—ション ― %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: 無効ãªã‚ªãƒ—ション ― %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: オプションã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™ ― %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: オプション '-W %s' ã¯çŸ­ã™ãŽã¦æ­£ã—ã判別ã§ãã¾ã›ã‚“\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: オプション '-W %s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: 展開中 '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: 評価中 '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ル用 %lu ãƒã‚¤ãƒˆã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸ: ãƒ¡ãƒ¢ãƒªã‚’ä½¿ã„æžœãŸã—ã¾ã—" +"ãŸ" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "è² è·=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "å†ãƒãƒƒã‚·ãƒ¥=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "è¡çª=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "'%s' ã®ãŸã‚ã®æš—黙ルールを探ã—ã¾ã™.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "'%s' ã®ãŸã‚ã®æ›¸åº«ãƒ¡ãƒ³ãƒæš—黙ルールを探ã—ã¾ã™.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "'%s' ã®ãŸã‚ã®æ›¸åº«ãƒ¡ãƒ³ãƒæš—黙ルールãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "ルール '%s' ã®æš—黙ルールã®å†å¸°ã‚’回é¿ã—ã¾ã™.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "剿æ¡ä»¶ã¨ã¨ã‚‚ã«ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ã„ã¾ã™.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "語幹 '%3$.*2$s' ã¨ã®ãƒ‘ターンルール '%1$s' を試ã—ã¾ã™.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "語幹ãŒé•·ã™ãŽã¾ã™: '%s%.*s'.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"ルール '%s' ã‚’å´ä¸‹ã—ã¾ã™.ä¸å¯èƒ½ãªå¿…è¦æ¡ä»¶ '%s' ãŒã‚ã‚‹ãŸã‚ã§ã™.\n" +"\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "ルール '%s' ã‚’å´ä¸‹ã—ã¾ã™.ä¸å¯èƒ½ãªæš—é»™ã®å¿…è¦æ¡ä»¶ '%s' ãŒã‚ã‚‹ãŸã‚ã§ã™.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "ルールã®å¿…è¦æ¡ä»¶ '%s' を試ã—ã¾ã™.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "æš—é»™ã®å¿…è¦æ¡ä»¶ '%s' を試ã—ã¾ã™.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "ファイル '%s' ãŒå­˜åœ¨ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "'%s' を見ã¤ã‘ã¾ã—ãŸ.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "äº’æ›æ€§ãƒ«ãƒ¼ãƒ« '%s' ã‚’ %s ã®ãŸã‚ã«ä½¿ç”¨ã—ã¾ã™.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "ルール '%2$s' ã®å¿…è¦æ¡ä»¶ '%1$s' ã¯ã€ã‚ã‚‹ã¹ãæ¡ä»¶ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "VPATH '%2$s' ã§å¿…è¦æ¡ä»¶ '%1$s' を見ã¤ã‘ã¾ã—ãŸ\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "明示的ãªãƒ•ァイル '%s' ã®ãƒ«ãƒ¼ãƒ«ã‚’探ã—ã¾ã™.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "中間ファイル '%s' ã®ãƒ«ãƒ¼ãƒ«ã‚’探ã—ã¾ã™.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" +"ルール '%s' ã‚’å´ä¸‹ã—ã¾ã™ã€‚ä¸å¯èƒ½ãªå¿…è¦æ¡ä»¶ '%s' ãŒã‚ã‚‹ãŸã‚ã§ã™.\n" +"\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "'%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "'%2$s' ã®ãŸã‚ã®æš—黙ルール '%1$s' を見ã¤ã‘ã¾ã—ãŸ.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "'%s' ã®ãŸã‚ã®äº’æ›ãƒ«ãƒ¼ãƒ«ã‚’探ã—ã¾ã™.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "'%s' ã®ãŸã‚ã®æš—黙ルールãŒã‚りã¾ã›ã‚“.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "一時ファイルを作æˆã§ãã¾ã›ã‚“" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (コアダンプã—ã¾ã—ãŸ)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (無視ã•れã¾ã—ãŸ)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<ビルトイン>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] エラー %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** 未完了ã®ã‚¸ãƒ§ãƒ–ã‚’å¾…ã£ã¦ã„ã¾ã™...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "生存å­ãƒ—ロセス %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (リモート)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "æˆåŠŸã—ãŸå­ãƒ—ロセス %p PID %s %s を回åŽã—ã¾ã™\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "失敗ã—ãŸå­ãƒ—ロセス %p PID %s %s を回åŽã—ã¾ã™\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "一時的ãªãƒãƒƒãƒãƒ•ァイル %s を消去ã—ã¾ã™\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "一時的ãªãƒãƒƒãƒãƒ•ァイル %s ã®æ¶ˆåŽ»ã«å¤±æ•—ã—ã¾ã—ãŸ(%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "ãƒã‚§ã‚¤ãƒ³ã‹ã‚‰å­ãƒ—ロセス %p PID %s%s を削除ã—ã¾ã™.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "å­ãƒ—ロセス %p (%s) ã®å°ã‚’解放ã—ã¾ã—ãŸ.\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() ãŒå¤±æ•—ã—プロセスãŒèµ·å‹•ã§ãã¾ã›ã‚“ã§ã—㟠(e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"èµ·å‹•ã®å¤±æ•—ã§ %d 個ã®å¼•æ•°ãŒã‚«ã‚¦ãƒ³ãƒˆã•れã¾ã—ãŸ\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "ãƒã‚§ã‚¤ãƒ³ã«å­ãƒ—ロセス %p (%s) PID %s%s ã‚’å–り込ã¿ã¾ã—ãŸ.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "å­ãƒ—ロセス %p (%s) ã«å°ã‚’ã¤ã‘ã¾ã—ãŸ.\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: ターゲット '%s' ã‚’ %s ã®ãŸã‚ã«æ›´æ–°ã—ã¾ã™" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "ターゲットãŒå­˜åœ¨ã—ã¾ã›ã‚“" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "ã“ã®ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã§ã¯ã‚·ã‚¹ãƒ†ãƒ è² è·åˆ¶é™ã‚’加ãˆã‚‰ã‚Œã¾ã›ã‚“" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "システム負è·åˆ¶é™ã‚’課ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "ファイルãƒãƒ³ãƒ‰ãƒ«ã‚’使ã„å°½ãã—ã¾ã—ãŸ: 標準入力を複製ã§ãã¾ã›ã‚“" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "ファイルãƒãƒ³ãƒ‰ãƒ«ã‚’使ã„å°½ãã—ã¾ã—ãŸ: 標準出力を複製ã§ãã¾ã›ã‚“" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "ファイルãƒãƒ³ãƒ‰ãƒ«ã‚’使ã„å°½ãã—ã¾ã—ãŸ: 標準エラー出力を複製ã§ãã¾ã›ã‚“" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "標準入力を復元ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "標準出力を復元ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "標準エラー出力を復元ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "make 㯠pid %s ã®å­ãƒ—ロセスを回åŽã—, pid %s ã‚’å¾…ã¡ç¶šã‘ã¾ã™\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe:環境設定ã®ãŸã‚ã®ãƒ¡ãƒ¢ãƒªã‚’使ã„å°½ãã™ã‹ã‚‚ã—れã¾ã›ã‚“" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL ãŒå¤‰æ›´ã•れã¾ã—㟠(å‰ã¯ '%s', 今㯠'%s')\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "一時的ãªãƒãƒƒãƒãƒ•ァイル %s を作æˆã—ã¾ã™\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"ãƒãƒƒãƒãƒ•ァイルã®å†…容:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"ãƒãƒƒãƒãƒ•ァイルã®å†…容 :%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (%d 行目) 䏿­£ãªã‚·ã‚§ãƒ«ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆ (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "グローãƒãƒ«ã‚·ãƒ³ãƒœãƒ«ãƒ†ãƒ¼ãƒ–ルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "共有オブジェクト %s を読ã¿è¾¼ã¿ã¾ã—ãŸ\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "読ã¿è¾¼ã‚“ã ã‚ªãƒ–ジェクト %s 㯠GPL互æ›ã®å®£è¨€ãŒãªã•れã¦ã„ã¾ã›ã‚“" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "シンボル %s ã‚’ %s ã‹ã‚‰èª­ã¿è¾¼ã‚€ã®ã«å¤±æ•—ã—ã¾ã—ãŸ: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "空ã®ã‚·ãƒ³ãƒœãƒ«åを読ã¿è¾¼ã‚‚ã†ã¨ã—ã¦ã„ã¾ã™: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "シンボル %s ã‚’ %s ã‹ã‚‰èª­ã¿è¾¼ã‚“ã§ã„ã¾ã™\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "共有オブジェクト %s を解放ã—ã¾ã—ãŸ\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "'load' 命令ã¯ã“ã®ãƒ—ラットフォームã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "オプション:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m äº’æ›æ€§ã®ãŸã‚ã®ã‚‚ã®ã§, 無視ã•れる.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make ç„¡æ¡ä»¶ã«å…¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’ make ã™ã‚‹.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" make é–‹å§‹å‰ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª DIRECTORY ã¸ç§»å‹•ã™" +"ã‚‹.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d デãƒãƒƒã‚°æƒ…報を大é‡ã«è¡¨ç¤ºã™ã‚‹.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr " --debug[=FLAGS] 様々ãªã‚¿ã‚¤ãƒ—ã®ãƒ‡ãƒãƒƒã‚°æƒ…報を表示ã™ã‚‹.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" 環境変数㌠makefile 中ã®è¨˜è¿°ã«å„ªå…ˆã™ã‚‹\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E STRING, --eval=STRING STRING ã‚’ makefile ã®æ–‡ã¨ã—ã¦è©•価ã™ã‚‹.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" FILE ã‚’ makefile ã¨ã—ã¦èª­ã¿è¾¼ã‚€\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦çµ‚了ã™ã‚‹.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors レシピã‹ã‚‰è¿”ã£ãŸã‚¨ãƒ©ãƒ¼ã‚’無視ã™ã‚‹.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +" インクルードã™ã‚‹ makefile を探索ã™ã‚‹ " +"DIRECTORY.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] 一度㫠N 個ã¾ã§ã®ã‚¸ãƒ§ãƒ–を許å¯; 無引数ã ã¨ã‚¸ãƒ§ãƒ–" +"数制é™ãªã—.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STYLE ジョブサーãƒãƒ¼ã‚’使ã†ã‚¹ã‚¿ã‚¤ãƒ«ã‚’é¸ã¶.\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going ã‚るターゲット㌠make ã§ããªãã¦ã‚‚実行を続ã‘" +"ã‚‹.\n" + +#: src/main.c:350 +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" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times シンボリックリンクã¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã®ä¸­ã§ä¸€ç•ªæ–°ã—ã„ " +"mtime を使ã†.\n" + +#: src/main.c:355 +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" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" FILE ã‚’ã¨ã¦ã‚‚å¤ã„ã‚‚ã®ã¨è¦‹ãªã—ã¦, å† make ã—ãª" +"ã„.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TYPE]\n" +" 並列ジョブã®å‡ºåŠ›ã‚’ TYPE ã§æƒãˆã‚‹.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base make ã®å†…部データベースを表示ã™ã‚‹.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question レシピを実行ã—ãªã„; 更新済ã§ã‚ã‚‹ã‹ã©ã†ã‹ã‚’終了" +"ステータスã§é€šçŸ¥.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules ãƒ“ãƒ«ãƒˆã‚¤ãƒ³ã®æš—黙ルールを無効ã«ã™ã‚‹.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables ビルトインã®å¤‰æ•°è¨­å®šã‚’無効ã«ã™ã‚‹.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" å¿…è¦æ¡ä»¶ã¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’シャッフルã™ã‚‹ã€‚\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet レシピを表示ã—ãªã„.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent レシピをエコーã™ã‚‹ ( --silent mode ã¯ç„¡åйã«ãª" +"ã‚‹).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" -k オプションをオフã«ã™ã‚‹.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’å† make ã™ã‚‹ä»£ã‚りã«ã‚¿ãƒƒãƒã™ã‚‹.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace トレース情報を表示ã™ã‚‹.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version make ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã—ã¦çµ‚了ã™ã‚‹.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory カレントディレクトリを表示ã™ã‚‹.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory -w をオフã«ã™ã‚‹. æš—é»™ã«æœ‰åйãªå ´åˆã§ã‚‚オフã«ã™" +"ã‚‹.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" FILE ã‚’ã„ã¤ã§ã‚‚最新ã¨ã—ã¦è¦‹ãªã™.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables 未定義ã®å¤‰æ•°ãŒå‚ç…§ã•れãŸã¨ãã«è­¦å‘Šã‚’発ã™ã‚‹.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼: 標準出力" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "ç©ºã®æ–‡å­—列ã¯ãƒ•ァイルåã¨ã—ã¦ã¯ç„¡åйã§ã™" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "䏿˜Žãªãƒ‡ãƒãƒƒã‚°ãƒ¬ãƒ™ãƒ«æŒ‡å®š '%s'" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "未知ã®å‡ºåŠ›åŒæœŸåž‹ '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "ä½¿ã„æ–¹: %s [オプション] [ターゲット] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"ã“ã®ãƒ—ログラム㯠%s 用ã«ãƒ“ルドã•れã¾ã—ãŸ\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"ã“ã®ãƒ—ログラム㯠%s (%s) 用ã«ãƒ“ルドã•れã¾ã—ãŸ\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆã¯ ã¾ã§.\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: 割り込ã¿/ä¾‹å¤–ã‚’æ•æ‰ã—ã¾ã—㟠(code = 0x%lx, addr = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"処ç†ã•れãªã„例外ã®ãŸã‚ã®ãƒ•ィルタãŒãƒ—ログラム %s ã‹ã‚‰å‘¼ã°ã‚Œã¾ã—ãŸ\n" +"例外コード = %lx\n" +"例外フラグ = %lx\n" +"例外アドレス = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "アクセスä¿è­·é•å: アドレス 0x%p ã§ã®æ›¸ãè¾¼ã¿æ“作\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "アクセスä¿è­·é•å: アドレス 0x%p ã§ã®èª­ã¿è¾¼ã¿æ“作\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() 㯠default_shell = %s ã«è¨­å®šã—ã¾ã™\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "find_and_set_shell() パス探索㧠default_shell = %s ã«ã‚»ãƒƒãƒˆã—ã¾ã—ãŸ\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (一時ファイル): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"警告: ジョブサーãƒãƒ¼ãŒåˆ©ç”¨ä¸å¯: 今回㯠-j1 を使ã„ã¾ã™. 親 make ルール㫠`+' " +"を追加ã—ã¾ã—ょã†." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"警告: 副次 make ã§ -j%d を強制指定ã—ã¾ã—ãŸ: ジョブサーãƒãƒ¼ãƒ¢ãƒ¼ãƒ‰ã‚’リセットã—" +"ã¾ã™." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "標準入力ã‹ã‚‰ã® makefile ãŒäºŒå›žæŒ‡å®šã•れã¾ã—ãŸ" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: 一時ファイル %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"警告: makefile ã§ -j%d を強制指定ã—ã¾ã—ãŸ: ジョブサーãƒãƒ¼ãƒ¢ãƒ¼ãƒ‰ã‚’リセットã—ã¾" +"ã™." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "並列ジョブ (-j) ã¯ã“ã®ãƒ—ラットフォームã§ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "å˜ä¸€ã‚¸ãƒ§ãƒ– (-j1) モードã«ãƒªã‚»ãƒƒãƒˆã—ã¾ã™." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "ジョブサーãƒãƒ¼ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ©ãƒ¼ %s を使ã„ã¾ã™\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "å‡ºåŠ›åŒæœŸ mutex %s を使ã„ã¾ã™\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "シンボリックリンクã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“: -L ã¯ç„¡åйã§ã™." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "シャッフルモード: %s を有効ã«ã—ã¾ã—ãŸ\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "makefile ã®æ›´æ–°ä¸­....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "makefile '%s' 自己å†å¸°ã®ãŠãれã‚り ― å†make ã—ã¾ã›ã‚“.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: 読ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "makefile '%s' ã®å†makeã«å¤±æ•—ã—ã¾ã—ãŸ." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "インクルードã•れる makefile '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "makefile '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "å…ƒã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æˆ»ã‚Œã¾ã›ã‚“ã§ã—ãŸ" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "å†å®Ÿè¡Œã—ã¾ã™[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL ãŒäºŒã¤ä»¥ä¸Šã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’å«ã‚“ã§ã„ã¾ã™" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "ターゲットãŒã‚りã¾ã›ã‚“" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãŒæŒ‡å®šã•れã¦ãŠã‚‰ãš, makefile も見ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "最終ターゲットを更新中....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "警告: 時刻ã®ãšã‚Œã‚’検出. ä¸å®Œå…¨ãªãƒ“ãƒ«ãƒ‰çµæžœã«ãªã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "'%s%s' オプションã¯ç©ºã§ãªã„æ–‡å­—åˆ—å¼•æ•°ã‚’è¦æ±‚ã—ã¾ã™" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "'-%c' ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¯æ­£ã®æ•´æ•°å¼•æ•°ã‚’è¦æ±‚ã—ã¾ã™" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sã“ã®ãƒ—ログラム㯠%s 用ã«ãƒ“ルドã•れã¾ã—ãŸ\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sã“ã®ãƒ—ログラム㯠%s (%s) 用ã«ãƒ“ルドã•れã¾ã—ãŸ\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sライセンス GPLv3+: GNU GPL ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 ä»¥é™ \n" +"%sã“れã¯ãƒ•リーソフトウェアã§ã™: 自由ã«å¤‰æ›´ãŠã‚ˆã³é…布ã§ãã¾ã™.\n" +"%s法律ã®è¨±ã™é™ã‚Šã€ã€€ç„¡ä¿è¨¼ã€€ã§ã™.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make データベース出力 %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Make データベース終了 %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s 値 %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s 値 %s: ディレクトリã§ã¯ã‚りã¾ã›ã‚“" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "デフォルト一時ディレクトリ '%s' を使用ã—ã¾ã™" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "ä¸€æ™‚ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä½œæˆ %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "一時ファイルを unlink %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: 一時ファイル %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: 一時ファイル %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: ディレクトリ(ディレクトリå䏿˜Ž)ã«å…¥ã‚Šã¾ã™\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: ディレクトリ(ディレクトリå䏿˜Ž)ã‹ã‚‰å‡ºã¾ã™\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: ディレクトリ '%s' ã«å…¥ã‚Šã¾ã™\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: ディレクトリ '%s' ã‹ã‚‰å‡ºã¾ã™\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: ディレクトリ(ディレクトリå䏿˜Ž)ã«å…¥ã‚Šã¾ã™\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: ディレクトリ(ディレクトリå䏿˜Ž)ã‹ã‚‰å‡ºã¾ã™\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: ディレクトリ '%s' ã«å…¥ã‚Šã¾ã™\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: ディレクトリ '%s' ã‹ã‚‰å‡ºã¾ã™\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "警告: 出力ロックをå–å¾—ã§ããªã„ã®ã§ã€å‡ºåŠ›åŒæœŸã‚’無効ã«ã—ã¾ã™ã€‚" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". 中止.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "ジョブサーãƒãƒ¼ã‚’é–‹ã‘ã¾ã›ã‚“ %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "未知ã®ã‚¸ãƒ§ãƒ–サーãƒãƒ¼èªè¨¼ã‚¹ã‚¿ã‚¤ãƒ« '%s'" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "ジョブパイプ作æˆä¸­" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "ジョブパイプ複製中" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "ジョブサーãƒãƒ¼ パイプã®åˆæœŸåŒ–" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "無効㪠--jobserver-auth 文字列 '%s'" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "ジョブサーãƒãƒ¼ã¸ã® write" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "ジョブサーãƒãƒ¼ãŒã‚·ãƒ£ãƒƒãƒˆãƒ€ã‚¦ãƒ³ã—ã¾ã—ãŸ" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "ジョブã®ãƒ‘イプ㮠pselect" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "ジョブã®ãƒ‘イプ㮠read" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "無効㪠--sync-mutex 文字列 '%s'" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "å‡ºåŠ›åŒæœŸ mutex ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“ %s: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "O_TMPFILE ã§ '%s' ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "makefile を読ã¿è¾¼ã¿ã¾ã™...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "makefile '%s' ã®èª­ã¿è¾¼ã¿ä¸­" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æœ€çµ‚ターゲットãŒã‚りã¾ã›ã‚“)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (探索パス)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (æ°—ã«ã—ãªãã¦ã‚ˆã„)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (~ ã®å±•é–‹ãªã—)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "makefile '%s' ã®ä¸­ã® UTF-8 BOM をスキップã—ã¾ã™\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "makefile ãƒãƒƒãƒ•ã‚¡ã®ä¸­ã® UTF-8 BOM をスキップã—ã¾ã™\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "æ¡ä»¶éƒ¨ã®æ–‡æ³•ãŒç„¡åйã§ã™" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "最åˆã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚ˆã‚Šå‰ã«ãƒ¬ã‚·ãƒ”ãŒã‚りã¾ã™" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "レシピã®å‰ã®ãƒ«ãƒ¼ãƒ«ãŒä¸è¶³ã—ã¦ã„ã¾ã™" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "分離記å·ã‚’欠ã„ã¦ã„ã¾ã™ (8 個ã®ç©ºç™½ã§ã—ãŸãŒ, TAB ã®ã¤ã‚‚りã§ã—ãŸã‹?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "分離記å·ã‚’欠ã„ã¦ã„ã¾ã™" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "ターゲットパターンを欠ã„ã¦ã„ã¾ã™" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "複数ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ‘ターンã§ã™" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "ターゲットパターン㌠'%%' ã‚’å«ã‚“ã§ã„ã¾ã›ã‚“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "'endif'ã€€ãŒæ¬ è½ã—ã¦ã„ã¾ã™" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "空ã®å¤‰æ•°å" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "'define' 疑似命令ã®å¾Œã‚ã«ç„¡é–¢ä¿‚ãªæ–‡å­—列ãŒã‚りã¾ã™" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "'endef' を欠ã„ã¦ãŠã‚Š, 'define' ãŒçµ‚了ã—ã¦ã„ã¾ã›ã‚“" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "'endef' 疑似命令ã®å¾Œã‚ã«ç„¡é–¢ä¿‚ãªæ–‡å­—列ãŒã‚りã¾ã™" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "'%s' 疑似命令ã®å¾Œã‚ã«ç„¡é–¢ä¿‚ãªæ–‡å­—列ãŒã‚りã¾ã™" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "無関係㪠'%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "一ã¤ã®æ¡ä»¶éƒ¨ã«ã¤ã一ã¤ã—ã‹ 'else' を使ãˆã¾ã›ã‚“" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "ターゲット特有ã®å¤‰æ•°å®šç¾©ãŒç•°å¸¸ã§ã™" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT ã¯å¿…è¦æ¡ä»¶ã‚’æŒã¡ã¾ã›ã‚“" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT ã¯ã‚³ãƒžãƒ³ãƒ‰ã‚’æŒã¡ã¾ã›ã‚“" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "å¿…è¦æ¡ä»¶ã‚’レシピ内ã§å®šç¾©ã§ãã¾ã›ã‚“" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "グループ化ã—ãŸã‚¿ãƒ¼ã‚²ãƒƒãƒˆã¯ãƒ¬ã‚·ãƒ”を供給ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "暗黙ルールã¨é™çš„ãƒ‘ã‚¿ãƒ¼ãƒ³ãƒ«ãƒ¼ãƒ«ãŒæ··ã–りã¾ã—ãŸ" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "暗黙ルールã¨é€šå¸¸ãƒ«ãƒ¼ãƒ«ãŒæ··ã–りã¾ã—ãŸ" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "ターゲット '%s' ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ‘ターンã¨ä¸€è‡´ã—ã¾ã›ã‚“" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "ターゲットファイル '%s' ㌠: 㨠:: é …ç›®ã®ä¸¡æ–¹ã‚’æŒã£ã¦ã„ã¾ã™" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "ターゲット '%s' ãŒåŒä¸€ãƒ«ãƒ¼ãƒ«å†…ã§è¤‡æ•°å›žä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "警告: ターゲット '%s' ã®ãŸã‚ã®ãƒ¬ã‚·ãƒ”ã‚’ç½®ãæ›ãˆã¾ã™" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "警告: ターゲット '%s' ã®ãŸã‚ã®å¤ã„レシピã¯ç„¡è¦–ã•れã¾ã™" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** 暗黙ルールã¨é€šå¸¸ãƒ«ãƒ¼ãƒ«ãŒæ··ã–りã¾ã—ãŸ: 推奨ã•れãªã„文法" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "警告: ターゲット '%s' ã®ã‚°ãƒ«ãƒ¼ãƒ—メンãƒãƒ¼ã‚·ãƒƒãƒ—を上書ãã—ã¾ã™" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "警告: NUL 文字ãŒã‚りã¾ã™; è¡Œã®æ®‹ã‚Šã¯ç„¡è¦–ã•れã¾ã™" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "警告: パターンレシピã¯ãƒ”アターゲット '%s' ã‚’æ›´æ–°ã—ã¾ã›ã‚“。" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "'%s' ã«å¯¾ã—ã¦è¡Œã†ã¹ã事ã¯ã‚りã¾ã›ã‚“." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' ã¯æ›´æ–°æ¸ˆã¿ã§ã™." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "ファイル '%s' ã®ä¾å­˜é–¢ä¿‚ã‚’æ•´ç†ã—ã¦ã„ã¾ã™.\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "" +"%1$s'%3$s' ã«å¿…è¦ãªã‚¿ãƒ¼ã‚²ãƒƒãƒˆ '%2$s' ã‚’ make ã™ã‚‹ãƒ«ãƒ¼ãƒ«ãŒã‚りã¾ã›ã‚“%4$s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sターゲット '%s' ã‚’ make ã™ã‚‹ãƒ«ãƒ¼ãƒ«ãŒã‚りã¾ã›ã‚“%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "ファイル '%s' を検討ã—ã¦ã„ã¾ã™.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "最近ファイル '%s' ã®æ›´æ–°ã‚’試ã—ã¦å¤±æ•—ã—ã¦ã„ã¾ã™.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "ファイル '%s' ã¯æ¤œè¨Žæ¸ˆã¿ã§ã™.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "ファイル '%s'ã€€ã®æ›´æ–°ã‚’ã—ã¦ã„ã¾ã™.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "ファイル '%s'ã€€ã®æ›´æ–°ãŒçµ‚了ã—ã¾ã—ãŸ.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "ファイル '%s' ãŒå­˜åœ¨ã—ã¾ã›ã‚“.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** 警告: .LOW_RESOLUTION_TIME ファイル '%s' ãŒé«˜è§£åƒåº¦ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã‚’æŒã£ã¦" +"ã„ã¾ã™" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "" +"ファイル '%2$s' ã®ã‚°ãƒ«ãƒ¼ãƒ—化ã•れãŸã‚¿ãƒ¼ã‚²ãƒƒãƒˆã®ãƒ”ã‚¢ '%1$s' ãŒå­˜åœ¨ã—ã¾ã›ã‚“.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "'%s' 用ã®ãƒ‡ãƒ•ォルトレシピを使用ã—ã¾ã™.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "循環 %s <- %s ä¾å­˜é–¢ä¿‚ãŒç ´æ£„ã•れã¾ã—ãŸ." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "ターゲットファイル '%s' ã®å¿…è¦æ¡ä»¶ã‚’満ãŸã—ã¾ã—ãŸ.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "'%s' ã®å¿…è¦æ¡ä»¶ã‚’ make ã—ã¾ã™.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "ターゲットファイル '%s' を諦ã‚ã¾ã™.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "ターゲット '%s' ã¯ã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Š å†make ã§ãã¾ã›ã‚“ã§ã—ãŸ." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "å¿…è¦æ¡ä»¶ '%s' ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ '%s' ã® order-only(é †åºæ±ºå®šæ¡ä»¶)ã§ã™.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "ターゲット '%2$s' ã®å¿…è¦æ¡ä»¶ '%1$s' ãŒå­˜åœ¨ã—ã¾ã›ã‚“.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "å¿…è¦æ¡ä»¶ '%s' ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ '%s' よりも新ã—ã„.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "å¿…è¦æ¡ä»¶ '%s' ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ '%s' よりもå¤ã„.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "ターゲット '%s' ã¯ãƒ€ãƒ–ルコロンã§, ã‹ã¤å¿…è¦æ¡ä»¶ã‚’æŒãŸãªã„.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "'%s' ã®ãŸã‚ã®ãƒ¬ã‚·ãƒ”ãŒç„¡ã, å¿…è¦æ¡ä»¶ã¯å®Ÿéš›ã«ã¯å¤‰æ›´ã•れã¾ã›ã‚“ã§ã—ãŸ.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "always-make フラグãŒç«‹ã£ã¦ã„ã‚‹ã®ã§ '%s' ã‚’ make ã—ã¾ã™.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "ターゲット '%s' ã‚’å†make ã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; VPATH å '%s' を使用ã—ã¾ã™" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "ターゲット '%s' ã‚’å†make ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " VPATH å '%s' を無視ã—ã¾ã™.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "'%s' ã®ãƒ¬ã‚·ãƒ”を実行中ã§ã™.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "ターゲットファイル '%s' ã®å†make ã«å¤±æ•—ã—ã¾ã—ãŸ.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "ターゲットファイル '%s' ã®å† make ã«æˆåŠŸã—ã¾ã—ãŸ.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "ターゲットファイル '%s' 㯠-q オプションを付ã‘ã¦ã®å†make ãŒå¿…è¦ã§ã™.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "'%s' ã®ãŸã‚ã®ãƒ‡ãƒ•ォルトã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使ã„ã¾ã™.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "警告: ファイル '%s' ã®ä¿®æ­£æ™‚刻 %s ã¯æœªæ¥ã®æ™‚刻ã§ã™" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS è¦ç´  '%s' ãŒãƒ‘ターンã§ã¯ã‚りã¾ã›ã‚“" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs ãŒã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã—ã¦ãれã¾ã›ã‚“: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "警告: æ‹¡å¼µå­ãƒ«ãƒ¼ãƒ«å®šç¾©ã®å¿…è¦æ¡ä»¶ã‚’無視ã—ã¦ã„ã¾ã™" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# 暗黙ルール" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# 暗黙ルールãªã—." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u å€‹ã®æš—黙ルール, %u (%.1f%%) 端末。" + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "ãƒã‚°: num_pattern_rules ãŒé–“é•ã£ã¦ã„ã‚‹! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "無効ãªã‚·ãƒ£ãƒƒãƒ•ルモード: %s: '%s'" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "未知ã®ã‚·ã‚°ãƒŠãƒ«" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "ãƒãƒ³ã‚°ã‚¢ãƒƒãƒ—" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "割り込ã¿" + +#: src/signame.c:98 +msgid "Quit" +msgstr "終了" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "䏿­£ãªãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢å‘½ä»¤" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "トレース/ブレイクãƒã‚¤ãƒ³ãƒˆãƒˆãƒ©ãƒƒãƒ—" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abort ã—ã¾ã—ãŸ" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT トラップ" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT トラップ" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "æµ®å‹•å°æ•°ç‚¹ä¾‹å¤–" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Kill ã•れã¾ã—ãŸ" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "ãƒã‚¹ã‚¨ãƒ©ãƒ¼" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "メモリé•å" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "䏿­£ãªã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "èª­ã¿æ‰‹ã®ãªã„パイプã¸ã®æ›¸ãè¾¼ã¿" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "アラームクロック" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "強制終了" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "ユーザ定義シグナル 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "ユーザ定義シグナル 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "å­ãƒ—ロセス終了" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "é›»æºéšœå®³" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "ä¸€æ™‚åœæ­¢" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "ä¸€æ™‚åœæ­¢ (tty 入力)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "ä¸€æ™‚åœæ­¢ (tty 出力)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "ä¸€æ™‚åœæ­¢ (シグナル)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU 時間ãŒåˆ¶é™ã‚’è¶Šãˆã¾ã—ãŸ" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "ファイルサイズ制é™ã‚’è¶Šãˆã¾ã—ãŸ" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "仮想タイマ満了" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "プロファイルタイマ満了" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "ウィンドウサイズ変更" + +#: src/signame.c:189 +msgid "Continued" +msgstr "å†é–‹ã•れã¾ã—ãŸ" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "緊急 I/O æ¡ä»¶" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "入出力å¯èƒ½" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "リソースãŒå¤±ã‚れã¾ã—ãŸ" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "å±é™ºã‚·ã‚°ãƒŠãƒ«" + +#: src/signame.c:217 +msgid "Information request" +msgstr "æƒ…å ±è¦æ±‚" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "æµ®å‹•å°æ•°ç‚¹ã‚³ãƒ—ロセッサãŒåˆ©ç”¨ä¸èƒ½" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s strcache ãƒãƒƒãƒ•ã‚¡ã¯ã‚りã¾ã›ã‚“\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s strcache ãƒãƒƒãƒ•ã‚¡: %lu (%lu) / 文字列 = %lu / æ ¼ç´ = %lu B / å¹³å‡ = %lu " +"B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s ç¾åœ¨ã®ãƒãƒƒãƒ•ã‚¡: サイズ = %hu B / 使用中 = %hu B / 個数 = %hu / å¹³å‡ = %u " +"B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s ãã®ä»– 使用中: åˆè¨ˆ = %lu B / 個数 = %lu / å¹³å‡ = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s ãã®ä»– 未使用: åˆè¨ˆ = %lu B / 最大 = %lu B / æœ€å° = %lu B / å¹³å‡ = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache ã®ç¨¼åƒ: 探索 = %lu / ヒット率 = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルã®çŠ¶æ…‹:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "自動変数" + +#: src/variable.c:1789 +msgid "default" +msgstr "デフォルト" + +#: src/variable.c:1792 +msgid "environment" +msgstr "環境変数" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile 変数" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "-e ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã§æŒ‡å®šã—ãŸç’°å¢ƒå¤‰æ•°" + +#: src/variable.c:1801 +msgid "command line" +msgstr "コマンドライン変数" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "'override' 疑似命令" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (ファイル '%s', %lu 行目)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# 変数セットã®ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルã®çŠ¶æ…‹:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# 変数\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# パターン指定 変数 値" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# パターン指定変数ã®å€¤ãªã—." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u 個ã®ãƒ‘ターン指定変数ã®å€¤" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "警告: 未定義ã®å¤‰æ•° '%.*s'" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() ㌠%d ã§å¤±æ•—ã—ã¾ã—ãŸ\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-警告, DCL ã‹ã‚‰ã® CTRL-Y æ“作をå†ã³æœ‰åйã«ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚知れã¾ã›ã‚“.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "ビルトイン CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "出力を %s ã¸è¿½åŠ \n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "追加 %.*s ã¨å¾Œç‰‡ä»˜ã‘\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "代ã‚り㫠%s を実行ã—ã¾ã™\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH 探索パス\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# 'vpath' 探索パスã¯ã‚りã¾ã›ã‚“." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u ã¤ã® 'vpath' 探索パス.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# 一般㮠('VPATH' 変数) 探索パスãªã—." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# 一般㮠('VPATH' 変数) 探索パス:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "ジョブサーãƒãƒ¼ã®ã‚¹ãƒ­ãƒƒãƒˆã¯ %d ã¾ã§ã§ã™\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "ジョブサーãƒãƒ¼ セマフォを作æˆã—ã¦ã„ã¾ã™: (エラー %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "内部エラー: ジョブサーãƒãƒ¼ セマフォを開ã‘ã¾ã›ã‚“ '%s': (エラー %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "ジョブサーãƒãƒ¼ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ (セマフォ %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "ジョブサーãƒãƒ¼ã®ã‚»ãƒžãƒ•ォを解放ã—ã¾ã™: (エラー %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "セマフォ ã¾ãŸã¯ å­ãƒ—ロセスを待ã£ã¦ã„ã¾ã™: (エラー %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "å‡ºåŠ›åŒæœŸ mutex ã‚’è§£æžã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "無効ãªå‡ºåŠ›åŒæœŸ mutex: %s" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "ジョブサーãƒãƒ¼ 設定 (fifo %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "ジョブサーãƒãƒ¼ 設定 (fds %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "ジョブサーãƒãƒ¼ クライアント (fds %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (一時ファイル)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: ユーザ %lu (実効 %lu), グループ %lu (実効 %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "アクセス権é™ã‚’åˆæœŸåŒ–" + +#~ msgid "User access" +#~ msgstr "ユーザアクセス" + +#~ msgid "Make access" +#~ msgstr "make アクセス" + +#~ msgid "Child access" +#~ msgstr "å­ãƒ—ロセスアクセス" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "ã“ã®ãƒ“ルドã§ã¯ -O[TYPE] (--output-sync[=TYPE]) ãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“." + +#~ msgid "jobserver pipeline" +#~ msgstr "jobserver パイプライン" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: シェルプログラムãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s 㯠30 ç§’é–“åœæ­¢ã—ã¾ã™..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) ãŒçµ‚ã‚りã¾ã—ãŸ. ç¶šã‘ã¾ã™.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "未知ã®ã‚¨ãƒ©ãƒ¼ %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "警告: ファイル '%s' ã®ä¿®æ­£æ™‚åˆ»ã¯æœªæ¥ã®ã‚‚ã®ã§ã™" + +#~ msgid " terminal." +#~ msgstr " 以上." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: ターゲット '%s' ã®ãƒ¬ã‚·ãƒ”ã§å¤±æ•—ã—ã¾ã—ãŸ" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] エラー 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "警告: 空ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "内部エラー: '%s' command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "ビルトイン [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "ビルトイン ECHO %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "䏿˜Žãªãƒ“ルトインコマンド '%s'\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ ".ONESHELL ã®ä¸­ã§æœªçŸ¥ã€ã¾ãŸã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ビルトインコマンド: '%s'\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "エラー, 空ã®ã‚³ãƒžãƒ³ãƒ‰\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "%s ã‹ã‚‰å…¥åŠ›ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れã¾ã—ãŸ\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "%s ã¸ã‚¨ãƒ©ãƒ¼ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れã¾ã—ãŸ\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "%s ã¸å‡ºåŠ›ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•れã¾ã—ãŸ\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "spawn ã®ã‚¨ãƒ©ãƒ¼, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "内部エラー: 複数㮠--sync-mutex オプション" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "内部エラー: 複数㮠--jobserver-fds オプション" + +#~ msgid "virtual memory exhausted" +#~ msgstr "ä»®æƒ³ãƒ¡ãƒ¢ãƒªã‚’ä½¿ã„æžœãŸã—ã¾ã—ãŸ" + +#~ msgid "write error" +#~ msgstr "書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "ビルトイン RM %s\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" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "SIGCHLD ãŒç™ºç”Ÿ; %u å€‹ã®æœªå›žåŽå­ãƒ—ロセス.\n" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-警告, CTRL-Y ã¯å­ãƒ—ロセスを散らã‹ã—ãŸã¾ã¾ã«ã™ã‚‹ã§ã—ょã†.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "sh.exe ãŒä½¿ãˆãªã„状態㧠-j ã‚„ --jobs を指定ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "å˜ä¸€ã‚¸ãƒ§ãƒ–モード㮠make ã«ãƒªã‚»ãƒƒãƒˆã—ã¾ã™." + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sã“れã¯ãƒ•リーソフトウェアã§ã™. 利用許諾ã«ã¤ã„ã¦ã¯ã‚½ãƒ¼ã‚¹ã‚’\n" +#~ "%sã”覧ãã ã•ã„.\n" +#~ "%s商業性や特定ã®ç›®çš„ã¸ã®é©åˆæ€§ã®å¦‚何ã«é–¢ã‚らãš, ç„¡ä¿è¨¼ã§ã™.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "関係ã®ãªã„ `endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "空㮠`override' 疑似命令" + +#~ msgid "invalid `override' directive" +#~ msgstr "無効㪠`override' 疑似命令" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "`%sinclude' ã«ãƒ•ァイルåãŒã‚りã¾ã›ã‚“" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "ターゲット `%s' ã®å¿…è¦æ¡ä»¶ãƒ‘ターンãŒç©ºã®ã¾ã¾ã§ã™" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "" +#~ "# ãƒãƒƒã‚·ãƒ¥è¦ç´ ã‚ãŸã‚Šã€å¹³å‡ %.3f å€‹ã€æœ€å¤§ %u 個ã®ãƒ•ァイルãŒã‚りã¾ã™ã€‚\n" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "デãƒãƒƒã‚¬ã« attach ã™ã‚‹ãŸã‚プロセスã®ä¸€æ™‚åœæ­¢ã‚’許å¯ã™ã‚‹" + +#~ 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" + +#~ msgid "the `word' function takes a positive index argument" +#~ msgstr "`word' 関数ã¯éžè² ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹å¼•æ•°ã‚’ã¨ã‚Šã¾ã™" diff --git a/local/recipes/dev/gnu-make/source/po/ko.gmo b/local/recipes/dev/gnu-make/source/po/ko.gmo new file mode 100644 index 0000000000..c2af28d3f1 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/ko.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/ko.po b/local/recipes/dev/gnu-make/source/po/ko.po new file mode 100644 index 0000000000..37b2faf072 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/ko.po @@ -0,0 +1,2458 @@ +# Korean messages for GNU make. +# Copyright (C) 1996, 2001, 2013 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Bang Jun-Young , 1996. +# Changwoo Ryu , 2001, 2006, 2013-2014, 2016, 2019-2020, 2022. +# +# 용어 +# - recipe - 명령 (makeì˜ action으로 실행할 명령어를 ë§í•¨) +# - prerequisite - ì„ í–‰ ì¡°ê±´ +# +# 참고 +# - order-only란 ì˜ì¡´í•˜ëŠ” 타겟 중ì—서 명령어 순서만 지정하고 íŒŒì¼ ìˆ˜ì • +# 시ê°ì€ 무시하는 종류를 ë§í•œë‹¤. "Types of Prerequisites" 참고. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-25 23:09+0900\n" +"Last-Translator: Changwoo Ryu \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "ì§€ì›ë˜ì§€ 않는 ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë ¤ê³  함: '%s'" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "ì•„ì¹´ì´ë¸Œ 멤버 touch는 VMSì—서 사용할 수 없습니다" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: '%s' ì•„ì¹´ì´ë¸Œê°€ 없습니다" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: '%s'ì€(는) 올바른 ì•„ì¹´ì´ë¸Œê°€ 아닙니다" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: '%s' 멤버가 '%s' ì•ˆì— ì—†ìŠµë‹ˆë‹¤" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: '%s'ì— ëŒ€í•˜ì—¬ ar_member_touchì—서 실패 리턴 코드" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module()ì´ ëª¨ë“ˆì •ë³´ë¥¼ 추출하는 ë° ì‹¤íŒ¨, ìƒíƒœ = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control()ì´ ì‹¤íŒ¨, ìƒíƒœ = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "멤버 ìƒíƒœ %2$dë²ˆì„ ì°¸ì¡°í•˜ë ¤ê³  '%1$s' ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì—´ 수 없습니다" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "ì•„ì¹´ì´ë¸Œ %2$s 멤버 %3$sì— ëŒ€í•´ ìž˜ëª»ëœ %1$s" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "멤버 '%s'%s: %ldë°”ì´íЏ, 위치 %ld (%ld).\n" + +# ì´ë¯¸ 잘려진 ì´ë¦„ì„ í‘œì‹œí•˜ë©´ì„œ ì´ë¦„ì´ ìž˜ë ¤ì¡Œì„ ìˆ˜ë„ ìžˆìœ¼ë‹ˆ 유ì˜í•˜ë¼ëŠ” 뜻 +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (ì´ë¦„ì´ ìž˜ë ¤ë‚˜ê°”ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " ë‚ ì§œ %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, 모드 = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "ëª…ë ¹ì–´ì— ì¤„ì´ ë„ˆë¬´ 많습니다 (최대 %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** 중지.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] ì•„ì¹´ì´ë¸Œ '%s' 멤버는 ê°€ì§œì¼ ìˆ˜ 있으므로 삭제하지 않습니다" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** ì•„ì¹´ì´ë¸Œ '%s' 멤버는 ê°€ì§œì¼ ìˆ˜ 있으므로 삭제하지 않습니다" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] '%s' 파ì¼ì„ 삭제합니다" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** '%s' 파ì¼ì„ 삭제합니다" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# 실행할 명령어" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (내장):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " ('%s'ì—서, %lu번째 줄):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# 디렉터리\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: statì„ í•  수 없었습니다.\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (키 %s, ë³€ê²½ì‹œê° %s): ì—´ 수 없습니다.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (장치 %d, ì•„ì´ë…¸ë“œ [%d,%d,%d]): ì—´ 수 없습니다.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (장치 %ld, ì•„ì´ë…¸ë“œ %ld): ì—´ 수 없습니다.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (키 %s, ë³€ê²½ì‹œê° %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (장치 %d, ì•„ì´ë…¸ë“œ [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (장치 %ld, ì•„ì´ë…¸ë“œ %ld): " + +# 여기서 No는 "No files"ë¼ê³  ì“°ì¸ë‹¤. ê¶ê·¹ì ìœ¼ë¡œ msgidê°€ ê³ ì³ì ¸ì•¼ 함 +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "0ê°œ" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " 파ì¼, " + +# 여기서 no는 "no impossibilities"ë¼ê³  ì“°ì¸ë‹¤. ê¶ê·¹ì ìœ¼ë¡œ msgidê°€ ê³ ì³ì ¸ì•¼ 함 +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "0ê°œ" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " 불가능" + +#: src/dir.c:1180 +msgid " so far." +msgstr " 지금까지." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " 디렉토리 %luê°œì—서 불가능.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu: ì…¸ 함수 ë‚´ë³´ë‚´ê¸°ì— %sì„(를) 재귀ì ìœ¼ë¡œ 확장하지 않습니다\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "재귀하는 '%s' 변수는 (ê²°êµ­) ìžê¸° ìžì‹ ì„ 참조하고 있습니다" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "변수 ì°¸ì¡°ì— ëë§ˆì¹¨ì´ ì—†ìŠµë‹ˆë‹¤" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "íŒŒì¼ '%s'ì˜ %s:%luì—서 ëª…ë ¹ì„ ì§€ì •í–ˆìŠµë‹ˆë‹¤." + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "íŒŒì¼ '%s'ì— ëŒ€í•œ ëª…ë ¹ì„ ë¬µì‹œì  ê·œì¹™ íƒìƒ‰ìœ¼ë¡œ 찾았습니다." + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "하지만 '%s' 파ì¼ì€ ì´ì œ '%s'ê³¼(와) ê°™ì€ íŒŒì¼ë¡œ 간주합니다." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "'%s'ì— ëŒ€í•œ ëª…ë ¹ì€ '%s'ì— ëŒ€í•œ ëª…ë ¹ì´ ìš°ì„ í•˜ë¯€ë¡œ 무시합니다." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "ë‹¨ì¼ ì½œë¡  '%s'ì„(를) ì´ì¤‘ 콜론 '%s'(으)로 ì´ë¦„ì„ ë°”ê¿€ 수 없습니다" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "ì´ì¤‘ 콜론 '%s'ì„(를) ë‹¨ì¼ ì½œë¡  '%s'(으)로 ì´ë¦„ì„ ë°”ê¿€ 수 없습니다" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** 중간 íŒŒì¼ '%s'ì„(를) 삭제합니다" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "중간 파ì¼ì„ 제거합니다...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%sì€(는) ë™ì‹œì— .NOTINTERMEDIATE ë° .INTERMEDIATEì´ ë  ìˆ˜ 없습니다" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%sì€(는) ë™ì‹œì— .NOTINTERMEDIATE ë° .SECONDARYê°€ ë  ìˆ˜ 없습니다." + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE ë° .SECONDARY는 ê°™ì´ ì“¸ 수 없습니다." + +#: src/file.c:942 +msgid "Current time" +msgstr "현재 시ê°" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: 타임스탬프가 범위를 벗어나므로, %sì„(를) 대체합니다" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# íƒ€ê²Ÿì´ ì•„ë‹˜:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# 프레시어스 íŒŒì¼ (.PRECIOUSì˜ ì„ í–‰ì¡°ê±´)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# í¬ë‹ˆ 타겟 (.PHONYì˜ ì„ í–‰ì¡°ê±´)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# 명령행 타겟." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" +"# 기본 ë©”ì´í¬íŒŒì¼, MAKEFILES ë©”ì´í¬íŒŒì¼, ë˜ëŠ” -include/sinclude ë©”ì´í¬íŒŒì¼." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# 내장 규칙" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# ë¬µì‹œì  ê·œì¹™ íƒìƒ‰ì´ 완료ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# ë¬µì‹œì  ê·œì¹™ íƒìƒ‰ì´ 완료ë˜ì§€ 않았습니다." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# 묵시ì /ê³ ì • 패턴 스템: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# 파ì¼ì´ ì¤‘ê°„ë‹¨ê³„ì˜ ì„ í–‰ì¡°ê±´ìž…ë‹ˆë‹¤." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# 파ì¼ì´ .NOTINTERMEDIATEì˜ ì„ í–‰ì¡°ê±´ìž…ë‹ˆë‹¤." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# 파ì¼ì´ 부수ì ìž…니다 (.SECONDARYì˜ ì„ í–‰ì¡°ê±´)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# 다ìŒë„ 만듭니다:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# 변경 시ê°ì´ ê²°ì½” 검사ë˜ì§€ 않았ìŒ." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# 파ì¼ì´ 없습니다." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# 파ì¼ì´ 매우 오래ë˜ì—ˆìŠµë‹ˆë‹¤." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# 마지막 변경 %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# 파ì¼ì„ ì—…ë°ì´íŠ¸í–ˆìŠµë‹ˆë‹¤." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# 파ì¼ì„ ì—…ë°ì´íŠ¸í•˜ì§€ 않았습니다." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# 현재 ì‹¤í–‰ì¤‘ì¸ ëª…ë ¹(ì´ê²ƒì€ 버그입니다)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# 현재 ì‹¤í–‰ì¤‘ì¸ ì˜ì¡´ì„±(ì´ê²ƒì€ 버그입니다)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# 성공ì ìœ¼ë¡œ ì—…ë°ì´íЏ." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# ì—…ë°ì´íЏ í•„ìš”(-q 설정ë¨)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# ì—…ë°ì´íЏ 실패." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# 'command_status' ë©¤ë²„ì— ê°’ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# 파ì¼" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# íŒŒì¼ í•´ì‹œ í…Œì´ë¸” 통계:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: '%s' 필드가 ìºì‹œì— ì—†ìŒ: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: 비어 있는 ê°’" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: '%s' 범위가 벗어났습니다" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "'word' í•¨ìˆ˜ì˜ ì²«ë²ˆì§¸ ì¸ìžê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "'word' í•¨ìˆ˜ì˜ ì²«ë²ˆì§¸ ì¸ìžëŠ” 0보다 커야 합니다" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "'wordlist' í•¨ìˆ˜ì˜ ì²«ë²ˆì§¸ ì¸ìžê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "'wordlist' í•¨ìˆ˜ì˜ ë‘번째 ì¸ìžê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "'intcmp' í•¨ìˆ˜ì˜ ì²«ë²ˆì§¸ ì¸ìžê°€ 숫ìžê°€ 아닙니다" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "'intcmp' í•¨ìˆ˜ì˜ ë‘번째 ì¸ìžê°€ 숫ìžê°€ 아닙니다" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) 실패 (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) 실패 (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() 실패 (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() 실패\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "임시 배치 íŒŒì¼ %sì„(를) ì§€ì›ë‹ˆë‹¤\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: íŒŒì¼ ì´ë¦„ì´ ì—†ìŠµë‹ˆë‹¤" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: ì¸ìžê°€ 너무 많습니다" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: 올바르지 ì•Šì€ íŒŒì¼ ë™ìž‘: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "함수 '%2$s'ì— ì¸ìž 갯수(%1$u)ê°€ 부족합니다" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ì´ í”Œëž«í¼ì—서는 구현ë˜ì§€ 않았습니다: '%s' 함수" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "함수 '%s'ì— ëŒ€í•´ 종료ë˜ì§€ ì•Šì€ í˜¸ì¶œ: '%c' 문ìžê°€ 빠졌ìŒ" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "빈 함수 ì´ë¦„" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "ìž˜ëª»ëœ í•¨ìˆ˜ ì´ë¦„: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "함수 ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "함수 `%2$s'ì— ìµœì†Œ ì¸ìž 갯수(%1$u)ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "함수 `%2$s'ì— ìµœëŒ€ ì¸ìž 갯수(%1$u)ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: '%s' ì˜µì…˜ì€ ì• ë§¤í•œ 옵션입니다\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: '--%s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: '%c%s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: '%s' ì˜µì…˜ì€ ì¸ìˆ˜ê°€ 필요합니다\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: ì¸ì‹í•  수 없는 옵션 '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: ì¸ì‹í•  수 없는 옵션 '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ìž˜ëª»ëœ ì˜µì…˜ -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ë¶€ì ì ˆí•œ 옵션 -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: ì´ ì˜µì…˜ì€ ì¸ìˆ˜ê°€ 필요합니다 -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: '-W %s' ì˜µì…˜ì€ ì• ë§¤í•œ 옵션입니다\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: '-W %s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: '%s' 확장\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: '%s' í•´ì„\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "해시 í…Œì´ë¸”ì— %lu ë°”ì´íŠ¸ë¥¼ 할당할 수 없습니다: 메모리 바닥남" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "로드=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "다시 해시=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "ì¶©ëŒ=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "'%s'ì— ëŒ€í•œ ë¬µì‹œì  ê·œì¹™ì„ ì°¾ê³  있습니다.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "'%s'ì— ëŒ€í•œ ì•„ì¹´ì´ë¸Œë©¤ë²„ ë¬µì‹œì  ê·œì¹™ì„ ì°¾ê³  있습니다.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "'%s'ì— ëŒ€í•œ ì•„ì¹´ì´ë¸Œë©¤ë²„ ë¬µì‹œì  ê·œì¹™ì´ ì—†ìŠµë‹ˆë‹¤.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "'%s' ê·œì¹™ì— ëŒ€í•œ ë¬µì‹œì  ê·œì¹™ì˜ ìž¬ê·€ë¥¼ 피함.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "ë” ì‹œë„하는 중.\n" + +# 스템(stem)ì´ëž€ 패턴 룰ì—서 prefix/suffix를 제외한 나머지를 ë§í•œë‹¤. +# 예를 들어 `%.c'ë¼ëŠ” íŒ¨í„´ì— `hello.c'ê°€ 들어 ë§žì•˜ì„ ê²½ìš° stemì€ `hello'ì´ë‹¤. +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "'%s' 패턴 규칙 ì‹œë„ ('%.*s' 스템).\n" + +# 스템(stem)ì´ëž€ 패턴 룰ì—서 prefix/suffix를 제외한 나머지를 ë§í•œë‹¤. +# 예를 들어 `%.c'ë¼ëŠ” íŒ¨í„´ì— `hello.c'ê°€ 들어 ë§žì•˜ì„ ê²½ìš° stemì€ `hello'ì´ë‹¤. +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "ìŠ¤í…œì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤: '%s%.*s'.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "불가능한 규칙 선행조건 '%2$s' ë•Œë¬¸ì— '%1$s' ê·œì¹™ì€ ê±°ë¶€ë©ë‹ˆë‹¤.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "불가능한 ë¬µì‹œì  ì„ í–‰ì¡°ê±´ '%2$s' ë•Œë¬¸ì— '%1$s' ê·œì¹™ì€ ê±°ë¶€ë©ë‹ˆë‹¤.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "규칙 선행조건 '%s'ì„(를) 시ë„합니다.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "ë¬µì‹œì  ì„ í–‰ì¡°ê±´ '%s'ì„(를) 시ë„합니다.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "'%s'ì´(ê°€) 있어야 합니다.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "'%s' 발견.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "'%2$s' ë•Œë¬¸ì— í˜¸í™˜ì„± 규칙 '%1$s' 사용.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "규칙 '%2$s'ì˜ ì„ í–‰ì¡°ê±´ %1$sì´(ê°€) 있어야 한다고 ê²€ì¦ë˜ì§€ 않았습니다.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "VPATH '%2$s'ì—서 선행조건 '%1$s'ì„(를) 찾았습니다.\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "ëª…ì‹œì  íŒŒì¼ '%s'ì— ëŒ€í•œ ê·œì¹™ì„ ì°¾ê³  있습니다.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "중간 íŒŒì¼ '%s'ì— ëŒ€í•œ ê·œì¹™ì„ ì°¾ê³  있습니다.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "불가능한 선행조건 '%2$s' ë•Œë¬¸ì— '%1$s' ê·œì¹™ì€ ê±°ë¶€ë©ë‹ˆë‹¤.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "'%s' ì°¾ì„ ìˆ˜ 없습니다.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "'%2$s'ì— ëŒ€í•œ ë¬µì‹œì  ê·œì¹™ '%1$s' 찾았습니다.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "'%s'ì— ëŒ€í•œ 호환 ê·œì¹™ì„ ì°¾ê³  있습니다.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "'%s'ì— ëŒ€í•œ ë¬µì‹œì  ê·œì¹™ì´ ì—†ìŠµë‹ˆë‹¤.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "임시 파ì¼ì„ 만들 수 없습니다" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (메모리 ë¤í”„ë¨)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (무시ë¨)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<내장>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] 오류 %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** ë나지 ì•Šì€ ìž‘ì—…ì„ ê¸°ë‹¤ë¦¬ê³  있습니다...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "살아있는 하위 프로세스 %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (ì›ê²©)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "성공한 하위 프로세스 %p PID %s %sì„(를) 거둬들입니다\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "실패한 하위 프로세스 %p PID %s %sì„(를) 거둬들입니다\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "임시 배치 íŒŒì¼ %sì„(를) ì§€ì›ë‹ˆë‹¤\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "임시 배치 íŒŒì¼ %s 지우기가 실패했습니다(%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "하위 프로세스 %p PID %s%sì„(를) ì²´ì¸ì—서 ì§€ì›ë‹ˆë‹¤.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "하위 프로세스 %p(%s)ì— í† í°ì„ ë‚´ì–´ ì¤ë‹ˆë‹¤.\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy()ê°€ 프로세스를 시작하는 ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤(e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"실행 실패ì—서 ì¸ìˆ˜ %dê°œ\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "하위 프로세스 %p(%s) PID %s%sì„(를) ì²´ì¸ì— 넣습니다.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "하위 프로세스 %p(%s)ì—서 토í°ì„ 받았습니다.\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: '%s' 타겟 ì—…ë°ì´íЏ, ì´ìœ : %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "íƒ€ê²Ÿì´ ì—†ìŠµë‹ˆë‹¤" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "ì´ ìš´ì˜ ì²´ì œì—서는 부하 ì œí•œì„ ê°•ì œí•  수 없습니다" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "부하 ì œí•œì„ ê°•ì œí•  수 없습니다: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "íŒŒì¼ í•¸ë“¤ì´ ì—†ìŒ: 표준 ìž…ë ¥ì„ ë³µì‚¬í•  수 없습니다" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "íŒŒì¼ í•¸ë“¤ì´ ì—†ìŒ: 표준 ì¶œë ¥ì„ ë³µì‚¬í•  수 없습니다" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "íŒŒì¼ í•¸ë“¤ì´ ì—†ìŒ: 표준 오류를 복사할 수 없습니다" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "표준 ìž…ë ¥ì„ ë³µêµ¬í•  수 없습니다" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "표준 ì¶œë ¥ì„ ë³µêµ¬í•  수 없습니다" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "표준 오류를 복구할 수 없습니다" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" +"하위 프로세스 PID %sì„(를) 거둬들ì´ê³ , ì•„ì§ PID %sì„(를) 기다리고 있습니다\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: 환경 변수 ê³µê°„ì´ ë°”ë‹¥ë‚¬ì„ ìˆ˜ 있습니다" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELLì´ ë°”ë€Œì—ˆìŠµë‹ˆë‹¤(과거 '%s', 현재 '%s')\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "임시 배치 íŒŒì¼ %sì„(를) 만듭니다\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"배치 íŒŒì¼ ë‚´ìš©:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"배치 íŒŒì¼ ë‚´ìš©:%s\n" +"\t%s\n" + +# ??? 디버깅 메세지 +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (%d번째 줄) ìž˜ëª»ëœ ì‰˜ 컨í…스트 (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "ì „ì—­ 심볼 í…Œì´ë¸”ì„ ì—¬ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "공유 오브ì íЏ %s ì½ì–´ë“¤ìž„\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "ì½ì–´ë“¤ì¸ %s 오브ì íŠ¸ëŠ” GPL 호환ì´ë¼ê³  선언하지 않았습니다" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "%s ì‹¬ë³¼ì„ %sì—서 ì½ì–´ë“¤ì´ëŠ”ë° ì‹¤íŒ¨: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "ì½ì–´ë“¤ì¼ 심볼 ì´ë¦„ì´ ë¹„ì—ˆìŒ: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "%s ì‹¬ë³¼ì„ %sì—서 ì½ì–´ë“¤ìž„\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "공유 오브ì íЏ %s ì½ì–´ë“¤ìž„ í•´ì œ\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "'load' ìž‘ì—…ì€ ì´ í”Œëž«í¼ì—서 ì§€ì›ë˜ì§€ 않습니다" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "옵션:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m 무시ë©ë‹ˆë‹¤, í˜¸í™˜ì„ ìœ„í•´ 유지.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make ì¡°ê±´ì— ê´€ê³„ ì—†ì´ ëª¨ë“  íƒ€ê²Ÿì„ ë§Œë“­ë‹ˆë‹¤.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C <디렉터리>, --directory=<디렉터리>\n" +" 뭔가 하기 ì „ì— <디렉터리>로 ì´ë™í•©ë‹ˆë‹¤.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d 여러 가지 디버깅 정보를 출력합니다.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=플래그] 여러 가지 ì¢…ë¥˜ì˜ ë””ë²„ê¹… 정보를 출력합니다.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" 환경변수가 ë©”ì´í¬íŒŒì¼ ë‚´ìš©ì— ìš°ì„ í•©ë‹ˆë‹¤.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E <문ìžì—´>, --eval=<문ìžì—´>\n" +" <문ìžì—´>ì„ ë©”ì´í¬íŒŒì¼ 내용으로 í•´ì„합니다.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f <파ì¼>, --file=<파ì¼>, --makefile=<파ì¼>\n" +" <파ì¼>ì„ ë©”ì´í¬íŒŒì¼ë¡œ ì½ìŠµë‹ˆë‹¤.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help ì´ ë©”ì‹œì§€ë¥¼ 출력하고 ë냅니다.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors 명령ì—서 ë°œìƒí•˜ëŠ” 오류를 무시합니다.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I <디렉터리>, --include-dir=<디렉터리>\n" +" í¬í•¨í•  ë©”ì´í¬íŒŒì¼ì„ <디렉터리>ì—서 찾습니다.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] ë™ì‹œì— Nê°œì˜ ìž‘ì—… 허용, ì¸ìž 없으면 무한대로 í—ˆ" +"ìš©.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=<스타ì¼> 작업서버가 사용할 스타ì¼ì„ ì„ íƒí•©ë‹ˆë‹¤.\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going ì¼ë¶€ íƒ€ê²Ÿì„ ë§Œë“¤ 수 ì—†ë”ë¼ë„ ê³„ì† ì§„í–‰í•©ë‹ˆë‹¤.\n" + +#: src/main.c:350 +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" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times 심볼릭 ë§í¬ì™€ 실제 중 ë” ìµœê·¼ 수정 시ê°ì„\n" +" 사용합니다.\n" + +#: src/main.c:355 +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" + +#: src/main.c:358 +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" +" 않습니다.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[ë°©ì‹], --output-sync[=ë°©ì‹]\n" +" 병렬 ìž‘ì—…ì˜ ì¶œë ¥ì„ <ë°©ì‹>ì— ë”°ë¼ ë§žì¶¥ë‹ˆë‹¤.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base makeì˜ ë‚´ë¶€ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 출력합니다.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question ëª…ë ¹ì„ ì‹¤í–‰í•˜ì§€ 않ìŒ. 종료 ìƒíƒœë¡œ ì—…ë°ì´íЏ\n" +" 여부를 알 수 있습니다.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules 내장 ë¬µì‹œì  ê·œì¹™ì„ ì‚¬ìš©í•˜ì§€ 않습니다.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables 내장 변수를 지정하지 못하게 합니다.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={<시드>|random|reverse|none}]\n" +" 선행조건과 íƒ€ê²Ÿì„ ë¬´ìž‘ìœ„ë¡œ 뒤섞습니다.\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet 명령어를 출력하지 않습니다.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent 명령어를 출력합니다. (--silent 모드 ë„기)\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" -k ì˜µì…˜ì„ ë•니다.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들지 않고 touchë§Œ 합니다.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace ì¶”ì  ì •ë³´ë¥¼ 표시합니다.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version makeì˜ ë²„ì „ 번호를 출력하고 ë냅니다.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory 현재 디렉터리를 출력합니다.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr " --no-print-directory 묵시ì ìœ¼ë¡œ 켜져 있ë”ë¼ë„ -w를 ë•니다.\n" + +#: src/main.c:392 +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" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables ì •ì˜ë˜ì§€ ì•Šì€ ë³€ìˆ˜ë¥¼ 참조할 때 경고를 냅니다.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "쓰기 오류: 표준 출력" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "빈 문ìžì—´ì€ íŒŒì¼ ì´ë¦„으로 ë¶€ì ì ˆí•©ë‹ˆë‹¤" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "디버깅 단계 지정 '%s'ì´(ê°€) 잘못ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "알 수 없는 output-sync ë°©ì‹ '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "사용법: %s [옵션] [타겟] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"ì´ í”„ë¡œê·¸ëž¨ì€ %sì—서 사용하ë„ë¡ ë¹Œë“œë˜ì—ˆìŠµë‹ˆë‹¤\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"ì´ í”„ë¡œê·¸ëž¨ì€ %s(%s)ì—서 사용하ë„ë¡ ë¹Œë“œë˜ì—ˆìŠµë‹ˆë‹¤\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "문제ì ì„ 로 알려 주십시오.\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: ì¸í„°ëŸ½íЏ/예외가 발견ë˜ì—ˆìŠµë‹ˆë‹¤(코드 = 0x%lx, 주소 = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"프로그램 %sì—서 처리ë˜ì§€ ì•Šì€ ì˜ˆì™¸ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤\n" +"예외코드 = %lx\n" +"예외플래그 = %lx\n" +"예외주소 = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "ì ‘ê·¼ 권한 위반: 주소 0x%pì— ì“°ê¸°\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "ì ‘ê·¼ 권한 위반: 주소 0x%pì—서 ì½ê¸°\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() 설정 default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "find_and_set_shell() 경로 íƒìƒ‰ 설정 default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (임시 파ì¼): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"경고: 작업서버를 사용할 수 없습니다: -j1ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ìƒìœ„ ë©”ì´í¬ ê·œì¹™ì— " +"'+'를 추가합니다." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"경고: 파ìƒëœ ë©”ì´í¬ì—서 -j%d ì˜µì…˜ì´ ê°•ì œë˜ì—ˆìŠµë‹ˆë‹¤: 작업서버 모드를 초기화합" +"니다." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "표준입력ì—서 받아들ì´ëŠ” ë©”ì´í¬íŒŒì¼ì´ ë‘ ë²ˆ ì´ìƒ 지정ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: 임시 íŒŒì¼ %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"경고: ë©”ì´í¬íŒŒì¼ì—서 -j%d ì˜µì…˜ì´ ê°•ì œë˜ì—ˆìŠµë‹ˆë‹¤: 작업서버 모드를 초기화합니" +"다." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "병렬 작업(-j)ì€ ì´ í”Œëž«í¼ì—서 ì§€ì›í•˜ì§€ 않습니다." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "ë‹¨ì¼ ìž‘ì—… (-j1) 모드로 ëŒì•„갑니다." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "작업 서버 컨트롤러 %s 사용합니다\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "출력 ë™ê¸°í™” 뮤í…스 %s 사용\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "심볼릭 ë§í¬ë¥¼ ì§€ì›í•˜ì§€ 않습니다: -L ì˜µì…˜ì„ ë•니다." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "뒤섞기 모드 사용: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "ë©”ì´í¬íŒŒì¼ì„ ì—…ë°ì´íŠ¸í•˜ê³  있습니다....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "ë©”ì´í¬íŒŒì¼ '%s'ì€(는) 반복할 수 있으므로, 다시 만들지 않습니다.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: ì½ì–´ë“¤ì´ëŠ”ë° ì‹¤íŒ¨" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "'%s' ë©”ì´í¬íŒŒì¼ì„ 다시 ë§Œë“œëŠ”ë° ì‹¤íŒ¨." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "í¬í•¨ëœ ë©”ì´í¬íŒŒì¼ '%s'ì„(를) 찾지 못했습니다." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "ë©”ì´í¬íŒŒì¼ '%s'ì„(를) 찾지 못했습니다" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "ì›ëž˜ 디렉터리로 ëŒì•„ê°ˆ 수 없습니다" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "재실행[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL ì•ˆì— íƒ€ê²Ÿì´ ì—¬ëŸ¬ ê°œ 들어 있습니다" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "타겟 ì—†ìŒ" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "íƒ€ê²Ÿì´ ì§€ì •ë˜ì§€ 않았고 ë©”ì´í¬íŒŒì¼ì´ 없습니다" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "최종 íƒ€ê²Ÿì„ ê°±ì‹ í•©ë‹ˆë‹¤....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"경고: 시계가 잘못ë˜ì—ˆìŒì´ 발견ë˜ì—ˆìŠµë‹ˆë‹¤. 빌드가 불완전할 수 있습니다." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "'%s%s' ì˜µì…˜ì€ ë¹„ì–´ 있지 ì•Šì€ ë¬¸ìžì—´ ì¸ìˆ˜ê°€ 필요합니다" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "'-%c' ì˜µì…˜ì€ 0보다 í° ì •ìˆ˜ ì¸ìˆ˜ê°€ 필요합니다" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%s%s 빌드\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%s%s(%s) 빌드\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%së¼ì´ì„ ìФ GPLv3+: GNU GPL 버전 3 ë˜ëŠ” ì´í›„ \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" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# ë©”ì´í¬ ë°ì´í„°ë² ì´ìФ, %sì— í‘œì‹œ" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# ë©”ì´í¬ ë°ì´í„°ë² ì´ìФ 마침, %sì—서\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s ê°’ %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s ê°’ %s: 디렉터리가 아닙니다" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "기본 임시 디렉터리 '%s' 사용" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "%s 임시 íŒŒì¼ ë§Œë“¤ê¸°: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "임시 íŒŒì¼ %s ì‚­ì œ: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: 임시 íŒŒì¼ %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: 임시 íŒŒì¼ %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: 알 수 없는 디렉터리 들어ê°\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: 알 수 없는 디렉터리 나ê°\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: 디렉터리 '%s' 들어ê°\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: 디렉터리 '%s' 나ê°\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: 알 수 없는 디렉터리 들어ê°\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: 알 수 없는 디렉터리 나ê°\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: 디렉터리 '%s' 들어ê°\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: 디렉터리 '%s' 나ê°\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "경고: 출력 ìž ê¸ˆì„ ì–»ì„ ìˆ˜ 없으므로, 출력 ë™ê¸°í™”를 사용하지 않습니다." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". 멈춤.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "%s 작업서버를 ì—´ 수 없습니다: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "알 수 없는 작업서버 ì¸ì¦ ìŠ¤íƒ€ì¼ '%s'" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "작업 파ì´í”„ ìƒì„±" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "작업 파ì´í”„ dup() 수행" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "작업서버 파ì´í”„ 초기화" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "ìž˜ëª»ëœ --jobserver-auth 문ìžì—´ '%s'" + +# ??? 디버깅 메세지 +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "작업서버 쓰기" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "작업 서버가 꺼졌습니다" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect 작업 파ì´í”„" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "작업 파ì´í”„ ì½ê¸°" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "ìž˜ëª»ëœ --sync-mutex 문ìžì—´ '%s'" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "%s 출력 ë™ê¸°í™” 뮤í…스를 ì—´ 수 없습니다: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "'%s' 파ì¼ì„ O_TMPFILEì„ ì‚¬ìš©í•´ ì—´ 수 없습니다: %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "ë©”ì´í¬íŒŒì¼ì„ ì½ê³  있습니다...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "'%s' ë©”ì´í¬íŒŒì¼ì„ ì½ê³  있습니다" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (최종 íƒ€ê²Ÿì´ ì—†ìŒ)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (íƒìƒ‰ 경로)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ìƒê´€ 안함)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (~ 확장 ì—†ìŒ)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "ë©”ì´í¬íŒŒì¼ '%s'ì—서 UTF-8 BOM 무시\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "ë©”ì´í¬íŒŒì¼ 버í¼ì—서 UTF-8 BOM 무시\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "ì¡°ê±´ë¬¸ì— ë¶€ì ì ˆí•œ ë¬¸ë²•ì´ ì“°ìž„" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "첫번째 타겟보다 앞ì—서 명령어가 시작ë˜ì—ˆìŠµë‹ˆë‹¤" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "명령 ì•žì— ê·œì¹™ì´ ë¹ ì¡ŒìŒ" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "" +"분리 기호가 없습니다 (빈 칸 8개가 ì•„ë‹ˆë¼ íƒ­ì„ ì“°ë ¤ê³  한 것 아니었습니까?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "분리 기호가 빠졌ìŒ" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "타겟 íŒ¨í„´ì´ ë¹ ì¡ŒìŒ" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "다중 타겟 패턴" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "타겟 íŒ¨í„´ì— '%%'ê°€ 없습니다." + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "'endif'ê°€ 빠졌ìŒ" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "빈 변수 ì´ë¦„" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "'define' ì§€ì‹œìž ë’¤ì— í•„ìš” 없는 í…스트 있ìŒ" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "'endef'ê°€ 빠졌ìŒ. 'define'ì„ ë§ˆì¹˜ì§€ 않았습니다" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "'endef' ì§€ì‹œìž ë’¤ì— í•„ìš” 없는 í…스트가 있ìŒ" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "'%s' ì§€ì‹œìž ë’¤ì— í•„ìš” 없는 í…스트가 있ìŒ" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "í•„ìš” 없는 '%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "한 ê°œì˜ ì¡°ê±´ì—는 한 ê°œì˜ 'else'ë§Œ 있어야 합니다" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "타겟별 변수 ì •ì˜ í˜•ì‹ì´ 틀렸습니다" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAITì—는 ì„ í–‰ ì¡°ê±´ì´ ìžˆìœ¼ë©´ 안 ë©ë‹ˆë‹¤" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAITì—는 명령어가 있으면 안 ë©ë‹ˆë‹¤" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "명령어ì—서 ì„ í–‰ì¡°ê±´ì„ ì •ì˜í•  수 없습니다" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "그룹 íƒ€ê²Ÿì€ ëª…ë ¹ì–´ë¥¼ 제공해야 합니다" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "ë¬µì‹œì  íŒ¨í„´ 룰과 ê³ ì •ëœ íŒ¨í„´ë£°ì´ ì„žì˜€ìŠµë‹ˆë‹¤" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "í˜¼í•©ëœ ë¬µì‹œì  ê·œì¹™ê³¼ ì¼ë°˜ì  규칙" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "타겟 '%s'ì€(는) 타겟 íŒ¨í„´ì— ë§žì§€ 않습니다" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "타겟 íŒŒì¼ '%s'ì€(는) :와 :: í•­ëª©ì„ ë™ì‹œì— ê°–ê³  있습니다" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "타겟 '%s'ì´(ê°€) ê°™ì€ ê·œì¹™ì—서 여러 번 주어졌습니다" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "경고: 타겟 '%s'ì— ëŒ€í•œ 명령보다 우선합니다" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "경고: 타겟 '%s'ì— ëŒ€í•œ 과거 ëª…ë ¹ì„ ë¬´ì‹œí•©ë‹ˆë‹¤" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** í˜¼í•©ëœ ë¬µì‹œì  ê·œì¹™ê³¼ ì¼ë°˜ì  규칙: 추천하지 않는 문법입니다" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "경고: 타겟 '%s'ì˜ ê·¸ë£¹ 소ì†ë³´ë‹¤ 우선합니다" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "경고: NUL 문ìžê°€ 발견ë˜ì—ˆìŠµë‹ˆë‹¤. ì¤„ì˜ ë‚˜ë¨¸ì§€ëŠ” 무시ë©ë‹ˆë‹¤" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "경고: 패턴 명령어가 ìƒëŒ€ '%s' íƒ€ê²Ÿì„ ì—…ë°ì´íŠ¸í•˜ì§€ 않았습니다." + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "'%s'ì„(를) 위해 í•  ì¼ì´ 없습니다." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s'ì€(는) ì´ë¯¸ ì—…ë°ì´íЏë˜ì—ˆìŠµë‹ˆë‹¤." + +# pruneì´ truncateì˜ ì˜ë¯¸ì¸ê°€ 지운다는 ì˜ë¯¸ì¸ê°€?? +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "'%s' 파ì¼ì„ 잘ë¼ëƒ…니다.\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%1$s'%3$s'ì—서 필요한 '%2$s' íƒ€ê²Ÿì„ ë§Œë“¤ ê·œì¹™ì´ ì—†ìŠµë‹ˆë‹¤%4$s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%s타겟 '%s'ì„(를) 만들 ê·œì¹™ì´ ì—†ìŠµë‹ˆë‹¤%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "'%s' 타겟 파ì¼ì„ 고려합니다.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "ìµœê·¼ì— '%s' íŒŒì¼ ì—…ë°ì´íŠ¸ë¥¼ 시ë„í•´ 실패했습니다.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "'%s' 파ì¼ì€ ì´ë¯¸ 검토했습니다.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "ì•„ì§ '%s' 파ì¼ì„ ì—…ë°ì´íŠ¸í•˜ê³  있습니다.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "'%s' 파ì¼ì˜ ì—…ë°ì´íŠ¸ë¥¼ 마쳤습니다.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "'%s' 파ì¼ì´ 없습니다.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Warning: .LOW_RESOLUTION_TIME íŒŒì¼ '%s'ì— ê³ í•´ìƒë„ 타임 스탬프가 들어 있" +"습니다" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "'%2$s' 파ì¼ì˜ 그룹 타겟 ìƒëŒ€ '%1$s'ì´(ê°€) 없습니다.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "'%s'ì— ëŒ€í•´ 기본 명령 사용.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "%s <- %s ìƒí˜¸ ì˜ì¡´ì„±ì€ 무시ë©ë‹ˆë‹¤." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "타겟 íŒŒì¼ '%s'ì˜ ì„ í–‰ì¡°ê±´ì„ ë§ˆì³¤ìŠµë‹ˆë‹¤.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "'%s'ì˜ ì„ í–‰ì¡°ê±´ì´ ë§Œë“¤ì–´ì§€ê³  있습니다.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "타겟 íŒŒì¼ '%s'ì„(를) í¬ê¸°í•©ë‹ˆë‹¤.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "오류로 '%s' íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들지 못했습니다." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "'%s' ì„ í–‰ ì¡°ê±´ì€ '%s' íƒ€ê²Ÿì— ëŒ€í•´ 순서만 ì„ í–‰ 조건입니다.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "타겟 '%2$s'ì˜ ì„ í–‰ì¡°ê±´ %1$sì´(ê°€) 없습니다.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "'%s' ì„ í–‰ ì¡°ê±´ì´ '%s' 타겟보다 ë‚˜ì¤‘ì— ë§Œë“¤ì–´ì¡ŒìŠµë‹ˆë‹¤.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "'%s' ì„ í–‰ ì¡°ê±´ì´ '%s' 타겟보다 먼저 만들어졌습니다.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "'%s' íƒ€ê²Ÿì€ ì½œë¡  ë‘ ê°œê°€ 붙었고 ì„ í–‰ì¡°ê±´ì´ ì—†ìŠµë‹ˆë‹¤.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "'%s'ì— ëŒ€í•œ 명령어가 없고 ì–´ë–¤ ì„ í–‰ì¡°ê±´ë„ ì‹¤ì œë¡œ 바뀌지 않았습니다.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "always-make 옵션 ë•Œë¬¸ì— '%s' íƒ€ê²Ÿì„ ë§Œë“­ë‹ˆë‹¤.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "'%s' íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들 필요가 없습니다" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; VPATH ì´ë¦„ '%s'ì„(를) 사용합니다" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "'%s' íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들어야 합니다.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " VPATH ì´ë¦„ '%s'ì„(를) 무시합니다.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "'%s'ì˜ ëª…ë ¹ì´ ì‹¤í–‰ 중입니다.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "'%s' 타겟 파ì¼ì„ 다시 ë§Œë“œëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "'%s' 타겟 파ì¼ì„ 성공ì ìœ¼ë¡œ 다시 만들었습니다.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "'%s' 타겟 파ì¼ì„ -q 옵션으로 다시 만들어야 합니다.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "'%s'ì— ëŒ€í•´ 기본 ëª…ë ¹ì„ ì‚¬ìš©.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "경고: '%s' 파ì¼ì˜ 변경 시ê°(%s)ì´ ë¯¸ëž˜ìž…ë‹ˆë‹¤" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNSì˜ ì›ì†Œ '%s'ì´(ê°€) íŒ¨í„´ì´ ì•„ë‹™ë‹ˆë‹¤" + +# ??? 디버깅 메세지 -- 뭔지 알기 어려움 +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customsì€ exportë˜ì§€ 않습니다: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "경고: 접미어 규칙 ì •ì˜ì—서 ì„ í–‰ì¡°ê±´ì„ ë¬´ì‹œí•©ë‹ˆë‹¤" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# ë¬µì‹œì  ê·œì¹™" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# ë¬µì‹œì  ê·œì¹™ ì—†ìŒ." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# ë¬µì‹œì  ê·œì¹™ %uê°œ, %u (%.1f%%) 터미ë„." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "버그: num_pattern_rules 틀렸습니다! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "뒤섞기 모드 잘못ë¨: %s: '%s'" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "알 수 없는 신호" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "ëŠì–´ì§" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "ì¸í„°ëŸ½íЏ" + +#: src/signame.c:98 +msgid "Quit" +msgstr "ë내기" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "ìž˜ëª»ëœ ëª…ë ¹" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "ì¶”ì /ì¤‘ë‹¨ì  íŠ¸ëž©" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "중단ë¨" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT 트랩" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT 트랩" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "ë¶€ë™ ì†Œìˆ˜ì  ì˜ˆì™¸" + +#: src/signame.c:121 +msgid "Killed" +msgstr "죽었ìŒ" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "버스 오류" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "세그멘테ì´ì…˜ 오류" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "ìž˜ëª»ëœ ì‹œìŠ¤í…œ 호출" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "깨어진 파ì´í”„" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "ìžëª…종 시계" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "종료ë¨" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "ì‚¬ìš©ìž ì •ì˜ ì‹ í˜¸ 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "ì‚¬ìš©ìž ì •ì˜ ì‹ í˜¸ 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "하위 프로세스 ë남" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "ì „ë ¥ 중단" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "중지ë¨" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "중지ë¨(tty ìž…ë ¥)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "중지ë¨(tty 출력)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "중지ë¨(시그ë„)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU 시간 제한 초과ë¨" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "íŒŒì¼ í¬ê¸° 제한 초과ë¨" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "ê°€ìƒ íƒ€ì´ë¨¸ 시간 초과ë¨" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "프로파ì¼ë§ 타ì´ë¨¸ 시간 초과ë¨" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "ì°½ì´ ë°”ë€Œì—ˆìŒ" + +#: src/signame.c:189 +msgid "Continued" +msgstr "계ì†ë¨" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "긴급한 입출력 ìƒí™©" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "입출력 가능" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "ìžì› ì†ì‹¤" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "위험 신호" + +#: src/signame.c:217 +msgid "Information request" +msgstr "ì •ë³´ 요청" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "ë¶€ë™ì†Œìˆ˜ì  ì—°ì‚° 보조프로세서가 없습니다" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s strcache ë²„í¼ ì—†ìŒ\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s strcache 버í¼: %lu (%lu) / 문ìžì—´ = %lu / 저장 공간 = %lu B / í‰ê·  = %lu " +"B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "%s 현재 버í¼: í¬ê¸° = %hu B / 사용 = %hu B / 개수 = %hu / í‰ê·  = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s 기타 사용: ì „ì²´ = %lu B / 개수 = %lu / í‰ê·  = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s 기타 빈 공간: ì „ì²´ = %lu B / 최대 = %lu B / 최소 = %lu B / í‰ê·  = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache 효율: 검색 = %lu / 히트 비율 = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# 해시 í…Œì´ë¸” 통계:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "ìžë™" + +#: src/variable.c:1789 +msgid "default" +msgstr "기본값" + +#: src/variable.c:1792 +msgid "environment" +msgstr "환경" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "ë©”ì´í¬íŒŒì¼" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "-e í•˜ì˜ í™˜ê²½" + +#: src/variable.c:1801 +msgid "command line" +msgstr "명령행" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "'override' 지시ìž" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " ('%s'ì—서, %lu번째 줄)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# 변수 ëª¨ìŒ í•´ì‹œ í…Œì´ë¸” 통계:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# 변수\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# íŒ¨í„´ì„ ìœ„í•œ 변수 ê°’" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# íŒ¨í„´ì„ ìœ„í•œ 변수 ê°’ì´ ì—†ìŠµë‹ˆë‹¤." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# 특정 íŒ¨í„´ì„ ìœ„í•œ 변수 ê°’ %uê°œ" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "경고: ì •ì˜ë˜ì§€ ì•Šì€ ë³€ìˆ˜ '%.*s'" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search()ê°€ %dë²ˆì„ ë¦¬í„´í•˜ë©° 실패했습니다\n" + +# DCL - Digital Command Language, VMSì—서만 존재하는 shell languageì˜ ì¼ì¢… +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-경고, DCLì—서 CTRL-Y를 다시 사용가능하ë„ë¡ í•´ì•¼ í•  것입니다.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "내장 CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "ì¶œë ¥ì„ %sì— ë¶™ìž…ë‹ˆë‹¤\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "%.*sì„(를) ë¶™ì´ê³  ì§€ì›ë‹ˆë‹¤\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "대신 %sì„(를) 실행\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH íƒìƒ‰ 경로\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# 'vpath' íƒìƒ‰ 경로가 ì—†ìŒ." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# 'vpath' íƒìƒ‰ 경로 %uê°œ.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# ì¼ë°˜ì ì¸ ('VPATH' 변수) íƒìƒ‰ 경로가 ì—†ìŒ." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# ì¼ë°˜ì ì¸ ('VPATH' 변수) íƒìƒ‰ 경로:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "작업서버 ìŠ¬ë¡¯ì€ %d개로 제한ë©ë‹ˆë‹¤\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "작업서버 세마í¬ì–´ 만들기: (오류 %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "ë‚´ë¶€ 오류: 작업 서버 세마í¬ì–´('%s')를 ì—´ 수 없습니다: (오류 %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "작업 서버 í´ë¼ì´ì–¸íЏ(세마í¬ì–´ %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "작업 서버 세마í¬ì–´ í•´ì œ: (오류 %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "세마í¬ì–´ ë˜ëŠ” 하위 프로세스 대기: (오류 %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "출력 ë™ê¸°í™” 뮤í…스를 (%s) 파싱할 수 없습니다: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "ìž˜ëª»ëœ ì¶œë ¥ ë™ê¸°í™” 뮤í…스: %s" diff --git a/local/recipes/dev/gnu-make/source/po/lt.gmo b/local/recipes/dev/gnu-make/source/po/lt.gmo new file mode 100644 index 0000000000..c6ac4e684e Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/lt.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/lt.po b/local/recipes/dev/gnu-make/source/po/lt.po new file mode 100644 index 0000000000..86d078a95c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/lt.po @@ -0,0 +1,2406 @@ +# translation of make-3.81 to Lithuanian +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Gintautas Miliauskas , 2008. +msgid "" +msgstr "" +"Project-Id-Version: make-3.81\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2008-05-17 21:42+0300\n" +"Last-Translator: Gintautas Miliauskas \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\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" + +#: src/ar.c:47 +#, fuzzy, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "bandymas naudoti nepalaikomÄ… funkcionalumÄ…: „%s“" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "" + +#: src/ar.c:151 +#, fuzzy, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Archyvas „%s“ neegzistuoja" + +#: src/ar.c:154 +#, fuzzy, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: „%s“ nÄ—ra taisyklingas archyvas" + +#: src/ar.c:161 +#, fuzzy, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Archyvas „%s“ neegzistuoja" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "" + +#: src/arscan.c:261 +#, fuzzy, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "nepavyko atverti bibliotekos „%s“ bandant surasti narį „%s“" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, fuzzy, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Narys „%s“%s: %ld baitų pozicijoje %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (pavadinimas gali bÅ«ti sutrumpintas)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Data %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mode = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:647 +#, fuzzy, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Trinamas failas „%s“" + +#: src/commands.c:649 +#, fuzzy, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Trinamas failas „%s“" + +#: src/commands.c:685 +#, fuzzy +msgid "# recipe to execute" +msgstr "# vykdytinos komandos" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (integruota)" + +#: src/commands.c:690 +#, fuzzy, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (nuo „%s“, %lu eilutÄ—):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Aplankai\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: negalÄ—jo bÅ«ti stat'intas.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (key %s, mtime %d): nepavyko atverti.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (key %s, mtime %d): nepavyko atverti.\n" + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "" + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ne" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " failai, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ne" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " negalimybÄ—s" + +#: src/dir.c:1180 +msgid " so far." +msgstr " kol kas." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " negalimybÄ—s %lu aplankuose.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, fuzzy, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Rekursyvus kintamasis „%s“ nukreipia į save (anksÄiau ar vÄ—liau)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "neterminuota nuoroda į kintamÄ…jį" + +#: src/file.c:272 +#, fuzzy, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Komandos nurodytos failui „%s“ %s:%lu," + +#: src/file.c:277 +#, fuzzy, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "Komandos failui „%s“ rastos pagal neiÅ¡reikÅ¡tinÄ™ taisyklių paieÅ¡kÄ…" + +#: src/file.c:281 +#, 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“." + +#: src/file.c:284 +#, fuzzy, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "Komandos „%s“ bus ignoruojamos „%s“ komandų naudai." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" + +#: src/file.c:407 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Trinamas tarpinis failas „%s“" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Å alinami tarpiniai failai...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Dabartinis laikas" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Laiko žymÄ— už rėžių; keiÄiama į %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ne tikslas:" + +#: src/file.c:1094 +#, fuzzy +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Brangus failas (reikalingas .PRECIOUS)" + +#: src/file.c:1096 +#, fuzzy +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Keistas tikslas (reikalingas .PHONY)." + +#: src/file.c:1098 +#, fuzzy +msgid "# Command line target." +msgstr "# KomandinÄ—s eilutÄ—s tikslas" + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Numatytoji reikÅ¡mÄ—, MAKEFILES, arba -include/sinclude „make“ failas" + +#: src/file.c:1102 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# NÄ—ra neiÅ¡reikÅ¡tinių taisyklių." + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# NeiÅ¡reikÅ¡tinių taisyklių paieÅ¡ka atlikta." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# NeiÅ¡reikÅ¡tinių taisyklių paieÅ¡ka neatlikta." + +#: src/file.c:1107 +#, fuzzy, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# IÅ¡reikÅ¡tinis/statinis Å¡ablono kamienas: „%s“\n" + +#: src/file.c:1109 +#, fuzzy +msgid "# File is an intermediate prerequisite." +msgstr "# Failas yra tarpinÄ— sÄ…lyga" + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Brangus failas (reikalingas .PRECIOUS)" + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Keistas tikslas (reikalingas .PHONY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Taip pat sukuria:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Modifikacijos laikas niekada netikrintas." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Failas neegzistuoja." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Failas labai senas." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Paskutinį kartÄ… pakeista %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Failas atnaujintas." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Failas nebuvo atnaujintas." + +#: src/file.c:1139 +#, fuzzy +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Dabar vykdomos komandos (TAI KLAIDA)." + +#: src/file.c:1142 +#, fuzzy +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Vykdomos priklausomybių komandos (TAI KLAIDA)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# SÄ—kmingai atnaujinta." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Turi bÅ«ti atnaujinta (-q nustatyta)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Nepavyko atnaujinti." + +#: src/file.c:1163 +#, fuzzy +msgid "# Invalid value in 'command_state' member!" +msgstr "# Netaisyklinga reikÅ¡mÄ— „command_state“ naryje!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Failai" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# failų maiÅ¡os lentelÄ—s statistika:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, fuzzy, c-format +msgid "open: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2360 +#, fuzzy, c-format +msgid "write: %s: %s" +msgstr "raÅ¡ymo klaida: %s" + +#: src/function.c:2363 src/function.c:2402 +#, fuzzy, c-format +msgid "close: %s: %s" +msgstr "%s%s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, fuzzy, c-format +msgid "read: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2409 +#, fuzzy, c-format +msgid "file: invalid file operation: %s" +msgstr "%s: netaisyklingas argumentas -- %c\n" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "" + +#: src/getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: parametras `%s' dviprasmis\n" + +#: src/getopt.c:683 +#, fuzzy, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: argumentas „--%s“ neleidžia parametro\n" + +#: src/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" + +#: src/getopt.c:705 src/getopt.c:878 +#, fuzzy, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: parametrui „%s“ reikia argumento\n" + +#: src/getopt.c:734 +#, fuzzy, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: neatpažintas argumentas „--%s“\n" + +#: src/getopt.c:738 +#, fuzzy, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: neatpažintas argumentas „%c%s“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: neleistinas parametras -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: netaisyklingas argumentas -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: parametrui reikia argumento -- %c\n" + +#: src/getopt.c:844 +#, fuzzy, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: parametras „-W %s“ dviprasmis\n" + +#: src/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" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "" + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "" + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "" + +#: src/implicit.c:41 +#, fuzzy, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Rasta neiÅ¡reikÅ¡tinÄ— taisyklÄ— tikslui „%s“.\n" + +#: src/implicit.c:57 +#, fuzzy, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Rasta neiÅ¡reikÅ¡tinÄ— taisyklÄ— tikslui „%s“.\n" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Nerasta neiÅ¡reikÅ¡tinių taisyklių tikslui „%s“.\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Nerasta neiÅ¡reikÅ¡tinių taisyklių tikslui „%s“.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Failas „%s“ neegzistuoja.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "" + +#: src/implicit.c:886 +#, fuzzy, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Å alinami tarpiniai failai...\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Nerasta neiÅ¡reikÅ¡tinių taisyklių tikslui „%s“.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Rasta neiÅ¡reikÅ¡tinÄ— taisyklÄ— tikslui „%s“.\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Rasta neiÅ¡reikÅ¡tinÄ— taisyklÄ— tikslui „%s“.\n" + +#: src/implicit.c:1157 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nerasta neiÅ¡reikÅ¡tinių taisyklių tikslui „%s“.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr "" + +#: src/job.c:557 +msgid " (ignored)" +msgstr "" + +#: src/job.c:561 src/job.c:1900 +#, fuzzy +msgid "" +msgstr " (integruota)" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "" + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr "" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "" + +#: src/job.c:966 +#, fuzzy, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "%s: nepavyko atverti laikinojo failo: %s" + +#: src/job.c:972 +#, fuzzy, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "%s: nepavyko atverti laikinojo failo: %s" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1909 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%sNÄ—ra taisyklÄ—s pasiekti tikslui „%s“, kurio reikia „%s“%s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "# Failas neegzistuoja." + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "" + +#: src/job.c:2106 +#, fuzzy +msgid "cannot enforce load limit: " +msgstr "%s: nepayko pakeisti limito: %s" + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "" + +#: src/job.c:2869 +#, fuzzy, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL pakeistas (buvo „%s“, dabar „%s“)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr "" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" + +#: src/main.c:355 +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr "" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr "" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" + +#: src/main.c:728 src/main.c:730 +#, fuzzy, c-format +msgid "write error: stdout" +msgstr "raÅ¡ymo klaida: %s" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "negalimas tuÅ¡Äias failo pavadinimas" + +#: src/main.c:834 +#, fuzzy, c-format +msgid "unknown debug level specification '%s'" +msgstr "nežinomas debug lygio specifikacija „%s“" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Naudojimas: %s [argumentai] [tikslas] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Å i programa sukompiliuota %s sistemai\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Å i programa sukompiliuota %s (%s) sistemai\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "PraneÅ¡kite apie klaidas adresu \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "" + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "" + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "" + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "" + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Atnaujinami „make“ failai....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2528 +#, fuzzy, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Nereikia atnaujinti taikinio „%s“" + +#: src/main.c:2548 +#, fuzzy, c-format +msgid "Included makefile '%s' was not found." +msgstr "„Make“ failas „%s“ nerastas" + +#: src/main.c:2552 +#, fuzzy, c-format +msgid "Makefile '%s' was not found" +msgstr "„Make“ failas „%s“ nerastas" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Nepavyko grįžti į pirminį aplankÄ…." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "NÄ—ra tikslų" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Nenurodyta tikslų ir nerasta „make“ failų" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Atnaujinami tikslai...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" + +#: src/main.c:3186 +#, fuzzy, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "parametrui „-%c“ reikia netuÅ¡Äio argumento" + +#: src/main.c:3267 +#, fuzzy, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "parametrui „-%c“ reikia teigiamo sveiko argumento" + +#: src/main.c:3652 +#, fuzzy, c-format +msgid "%sBuilt for %s\n" +msgstr "" +"\n" +"%sÅ i programa sukompiliuota %s sistemai\n" + +#: src/main.c:3654 +#, fuzzy, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "" +"\n" +"%sÅ i programa sukompiliuota %s (%s) sistemai\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Ä®einama į nežinomÄ… aplankÄ…\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: IÅ¡einama iÅ¡ nežinomo aplanko\n" + +#: src/output.c:100 +#, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Ä®einama į aplankÄ… „%s“\n" + +#: src/output.c:102 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: IÅ¡einama iÅ¡ aplanko „%s“\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Ä®einama į nežinomÄ… aplankÄ…\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: IÅ¡einama iÅ¡ nežinomo aplanko\n" + +#: src/output.c:111 +#, fuzzy, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Ä®einama į aplankÄ… „%s“\n" + +#: src/output.c:113 +#, fuzzy, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: IÅ¡einama iÅ¡ aplanko „%s“\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Pabaiga.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "" + +#: src/posixos.c:363 +#, fuzzy +msgid "write jobserver" +msgstr "raÅ¡ymo klaida: %s" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Skaitomi „make“ failai...\n" + +#: src/read.c:330 +#, fuzzy, c-format +msgid "Reading makefile '%s'" +msgstr "Skaitomas „make“ failas „%s“" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (nÄ—ra numatytojo tikslo)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (paieÅ¡kos kelias)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (nesvarbu)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (nÄ—ra ~ iÅ¡plÄ—timo)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "netaisyklinga sÄ…lygos sintaksÄ—" + +#: src/read.c:1002 +#, fuzzy, c-format +msgid "recipe commences before first target" +msgstr "komandos prasideda prieÅ¡ pirmÄ…jį tikslÄ…" + +#: src/read.c:1053 +#, fuzzy, c-format +msgid "missing rule before recipe" +msgstr "trÅ«ksta taisyklÄ—s prieÅ¡ komandas" + +#: src/read.c:1154 +#, fuzzy, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr " (ar norÄ—jote padÄ—ti TAB simbolį vietoje 8 tarpų?)" + +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator" +msgstr "trÅ«ksta skirtuko%s" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "trÅ«ksta tikslo Å¡ablono" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "keli tikslo Å¡ablonai" + +#: src/read.c:1306 +#, fuzzy, c-format +msgid "target pattern contains no '%%'" +msgstr "tikslo Å¡ablone nÄ—ra „%%“" + +#: src/read.c:1349 +#, fuzzy, c-format +msgid "missing 'endif'" +msgstr "trÅ«ksta „endif“" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "tuÅ¡Äias kintamojo pavadinimas" + +#: src/read.c:1423 +#, fuzzy, c-format +msgid "extraneous text after 'define' directive" +msgstr "Perteklinis tekstas po „endef“ direktyvos" + +#: src/read.c:1448 +#, fuzzy, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "trÅ«ksta „endef“, nebaigtas „define“" + +#: src/read.c:1476 +#, fuzzy, c-format +msgid "extraneous text after 'endef' directive" +msgstr "Perteklinis tekstas po „endef“ direktyvos" + +#: src/read.c:1548 +#, fuzzy, c-format +msgid "extraneous text after '%s' directive" +msgstr "Perteklinis tekstas po „%s“ direktyvos" + +#: src/read.c:1549 +#, fuzzy, c-format +msgid "extraneous '%s'" +msgstr "perteklinis „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "" + +#: src/remake.c:254 +#, fuzzy, c-format +msgid "Nothing to be done for '%s'." +msgstr "NÄ—ra kÄ… daryti su „%s“." + +#: src/remake.c:255 +#, fuzzy, c-format +msgid "'%s' is up to date." +msgstr "„%s“ atnaujinti nereikia." + +#: src/remake.c:350 +#, fuzzy, c-format +msgid "Pruning file '%s'.\n" +msgstr "Vis dar atnaujinamas failas „%s“.\n" + +#: src/remake.c:416 +#, 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" + +#: src/remake.c:426 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sNÄ—ra taisyklÄ—s pasiekti tikslui „%s“%s" + +#: src/remake.c:452 +#, fuzzy, c-format +msgid "Considering target file '%s'.\n" +msgstr "Svarstomas tikslo failas „%s“.\n" + +#: src/remake.c:459 +#, fuzzy, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Neseniai bandyta ir nepavyko atnaujinti failo „%s“.\n" + +#: src/remake.c:471 +#, fuzzy, c-format +msgid "File '%s' was considered already.\n" +msgstr "Failas „%s“ jau apsvarstytas.\n" + +#: src/remake.c:481 +#, fuzzy, c-format +msgid "Still updating file '%s'.\n" +msgstr "Vis dar atnaujinamas failas „%s“.\n" + +#: src/remake.c:484 +#, fuzzy, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Baigtas atnaujinti failas „%s“.\n" + +#: src/remake.c:513 +#, fuzzy, c-format +msgid "File '%s' does not exist.\n" +msgstr "Failas „%s“ neegzistuoja.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Failas „%s“ neegzistuoja.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "" + +#: src/remake.c:737 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Svarstomas tikslo failas „%s“.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "" + +#: src/remake.c:757 +#, fuzzy, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Svarstomas tikslo failas „%s“.\n" + +#: src/remake.c:762 +#, fuzzy, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Tikslas „%s“ neatnaujintas dÄ—l klaidų." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "" + +#: src/remake.c:819 +#, fuzzy, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Failas „%s“ neegzistuoja.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "" + +#: src/remake.c:865 +#, fuzzy, c-format +msgid "No need to remake target '%s'" +msgstr "Nereikia atnaujinti taikinio „%s“" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "" + +#: src/remake.c:891 +#, fuzzy, c-format +msgid "Must remake target '%s'.\n" +msgstr "BÅ«tina atnaujinti taikinį „%s“.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr "" + +#: src/remake.c:906 +#, fuzzy, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Vykdomos „%s“ komandos.\n" + +#: src/remake.c:913 +#, fuzzy, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Nereikia atnaujinti taikinio „%s“" + +#: src/remake.c:916 +#, fuzzy, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "BÅ«tina atnaujinti taikinį „%s“.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "" + +#: src/remake.c:1118 +#, fuzzy, c-format +msgid "Using default commands for '%s'.\n" +msgstr "paskutinÄ— komanda: %s\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# NeiÅ¡reikÅ¡tinÄ—s taisyklÄ—s" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# NÄ—ra neiÅ¡reikÅ¡tinių taisyklių." + +#: src/rule.c:610 +#, fuzzy, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u neiÅ¡reikÅ¡tinių taisyklių, %u" + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "nežinomas signalas" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Pertraukimas" + +#: src/signame.c:98 +msgid "Quit" +msgstr "IÅ¡eita" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Neleistina instrukcija" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "" + +#: src/signame.c:112 +#, fuzzy +msgid "IOT trap" +msgstr "EMT gaudyklÄ—" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT gaudyklÄ—" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Slankaus kablelio klaida" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Nutraukta" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "MagistralÄ—s klaida" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Segmentacijos klaida" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Blogas sisteminis kvietimas" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Žadintuvas" + +#: src/signame.c:139 +#, fuzzy +msgid "Terminated" +msgstr "apribota" + +#: src/signame.c:142 +#, fuzzy +msgid "User defined signal 1" +msgstr "%s: nutrauktas signalo %d" + +#: src/signame.c:145 +#, fuzzy +msgid "User defined signal 2" +msgstr "%s: nutrauktas signalo %d" + +#: src/signame.c:150 src/signame.c:153 +#, fuzzy +msgid "Child exited" +msgstr "Failas jau egzistuoja" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Elektros maitinimo sutrikimas" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Sustabdyta" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Sustabdyta (tty įvedimas)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Sustabdyta (tty iÅ¡vedimas)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Sustabdyta (signalas)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "VirÅ¡ytas CPU laiko limitas" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "VirÅ¡ytas failo dydžio limitas" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Langas pakeistas" + +#: src/signame.c:189 +msgid "Continued" +msgstr "PratÄ™sta" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Galimas įvedimas/iÅ¡vedimas" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "IÅ¡teklius prarastas" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Pavojaus signalas" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Informacijos užklausa" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Slankaus kablelio koprocesorius neprieinamas" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +#, fuzzy +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"\n" +"# failų maiÅ¡os lentelÄ—s statistika:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "" + +#: src/variable.c:1789 +msgid "default" +msgstr "" + +#: src/variable.c:1792 +msgid "environment" +msgstr "" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "" + +#: src/variable.c:1801 +#, fuzzy +msgid "command line" +msgstr "%s: komanda nerasta" + +#: src/variable.c:1804 +#, fuzzy +msgid "'override' directive" +msgstr "tuÅ¡Äia „override“ direktyva" + +#: src/variable.c:1814 +#, fuzzy, c-format +msgid " (from '%s', line %lu)" +msgstr " (nuo „%s“, %lu eilutÄ—):\n" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" + +#: src/variable.h:237 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "%s: neatpažintas argumentas „%c%s“\n" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" + +#: src/vpath.c:617 +#, fuzzy +msgid "# No 'vpath' search paths." +msgstr " (paieÅ¡kos kelias)" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Netaisyklinga reikÅ¡mÄ— „update_status“ naryje!" + +#~ msgid "%s: Command not found" +#~ msgstr "%s: Komanda nerasta" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Kevalo programa nerasta" + +#~ msgid "Unknown error %d" +#~ msgstr "Nežinoma klaida %d" + +#~ msgid "virtual memory exhausted" +#~ msgstr "baigÄ—si virtuali atmintis" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: user %lu (real %lu), group %lu (real %lu)\n" + +#~ msgid "write error" +#~ msgstr "raÅ¡ymo klaida" + +#~ msgid "extraneous `endef'" +#~ msgstr "perteklinis „endef“" + +#, fuzzy +#~ msgid "invalid `override' directive" +#~ msgstr "netaisyklinga „override“ direktyva" + +#, fuzzy +#~ msgid "Redirected error to %s\n" +#~ msgstr "skaitymo klaida: %d: %s" diff --git a/local/recipes/dev/gnu-make/source/po/make.pot b/local/recipes/dev/gnu-make/source/po/make.pot new file mode 100644 index 0000000000..bfdd5b30b4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/make.pot @@ -0,0 +1,2321 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the GNU make package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.4\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr "" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr "" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr "" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr "" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr "" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "" + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "" + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr "" + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr "" + +#: src/dir.c:1180 +msgid " so far." +msgstr "" + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr "" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "" + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "" + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "" + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "" + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "" + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "" + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "" + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "" + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "" + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "" + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "" + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "" + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "" + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "" + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "" + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "" + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "" + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "" + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "" + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "" + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "" + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr "" + +#: src/job.c:557 +msgid " (ignored)" +msgstr "" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "" + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr "" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "" + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr "" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" + +#: src/main.c:355 +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr "" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr "" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "" + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "" + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "" + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "" + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "" + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "" + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr "" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr "" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr "" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr "" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr "" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "" + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "" + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "" + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "" + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr "" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "" + +#: src/signame.c:98 +msgid "Quit" +msgstr "" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "" + +#: src/signame.c:121 +msgid "Killed" +msgstr "" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "" + +#: src/signame.c:189 +msgid "Continued" +msgstr "" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "" + +#: src/signame.c:217 +msgid "Information request" +msgstr "" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" + +#: src/variable.c:1786 +msgid "automatic" +msgstr "" + +#: src/variable.c:1789 +msgid "default" +msgstr "" + +#: src/variable.c:1792 +msgid "environment" +msgstr "" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "" + +#: src/variable.c:1801 +msgid "command line" +msgstr "" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr "" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" diff --git a/local/recipes/dev/gnu-make/source/po/nl.gmo b/local/recipes/dev/gnu-make/source/po/nl.gmo new file mode 100644 index 0000000000..163d4ac78f Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/nl.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/nl.po b/local/recipes/dev/gnu-make/source/po/nl.po new file mode 100644 index 0000000000..779ab4b050 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/nl.po @@ -0,0 +1,2600 @@ +# Dutch translations for GNU make. +# Copyright (C) 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# "On the plus side, Miss Vernon was outstandingly good-looking." +# +# Taco Witte , 2004. +# Benno Schulenberg , 2005, 2006, 2007, 2010. +# Benno Schulenberg , 2013, 2014, 2016, 2019, 2020, 2022. +msgid "" +msgstr "" +"Project-Id-Version: make-4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-24 10:45+0200\n" +"Last-Translator: Benno Schulenberg \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "poging tot gebruik van niet-ondersteunde functie: '%s'" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "het 'touchen' van een archiefonderdeel is niet mogelijk op VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: archief '%s' bestaat niet" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: '%s' is geen geldig archief" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: onderdeel '%s' bestaat niet in '%s'" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: ar_member_touch() van '%s' is mislukt" + +#: src/arscan.c:130 +#, 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" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() is mislukt, afsluitwaarde = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"kan bibliotheek '%s' niet openen om status van onderdeel %d op te zoeken" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Ongeldige %s voor archief %s, onderdeel %s" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Onderdeel '%s'%s: %ld bytes bij %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (naam kan afgekapt zijn)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Datum %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, modus = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Recept bevat te veel regels (max %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Afgebroken.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Archiefonderdeel '%s' kan onecht zijn; niet verwijderd" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Archiefonderdeel '%s' kan onecht zijn; niet verwijderd" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Verwijderen van bestand '%s'" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Verwijderen van bestand '%s'" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# uit te voeren recept" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (ingebouwd):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (uit '%s', regel %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Mappen\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: kan diens status niet opvragen.\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (sleutel %s, wijzigingstijd %s): kan niet worden geopend.\n" + +#: src/dir.c:1126 +#, 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" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (apparaat %ld, inode %ld): kan niet worden geopend.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (sleutel %s, wijzigingstijd %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (apparaat %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (apparaat %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Geen" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " bestanden, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "geen" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " onmogelijkheden" + +#: src/dir.c:1180 +msgid " so far." +msgstr " tot nu toe." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " onmogelijkheden in %lu mappen.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: geen recursieve expansie van %s voor export naar shellfunctie\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Recursieve variabele '%s' verwijst naar zichzelf (uiteindelijk)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "onafgemaakte verwijzing naar variabele" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Recept voor bestand '%s' is opgegeven in %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "Recept voor bestand '%s' werd gevonden via impliciet zoeken," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "maar '%s' wordt nu als hetzelfde bestand beschouwd als '%s'." + +#: src/file.c:284 +#, c-format +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'." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "kan enkeldubbelpunts '%s' niet hernoemen tot dubbeldubbelpunts '%s'" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "kan dubbeldubbelpunts '%s' niet hernoemen tot enkeldubbelpunts '%s'" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Verwijderen van tussentijds bestand '%s'" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Verwijderen van tussentijdse bestanden...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kan niet zowel .NOTINTERMEDIATE als .INTERMEDIATE zijn" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kan niet zowel .NOTINTERMEDIATE als .SECONDARY zijn" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE en .SECONDARY gaan niet samen" + +#: src/file.c:942 +msgid "Current time" +msgstr "Huidige tijd" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Tijdsstempel ligt buiten bereik; wordt vervangen door %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Is geen doel:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Waardevol bestand (vereiste van .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Nepdoel (vereiste van .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Doel afkomstig van opdrachtregel." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" +"# Een standaard Makefile, of eentje via MAKEFILES of '-include/sinclude'." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Ingebouwde regel" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Impliciete regel-zoekopdracht is uitgevoerd." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Impliciete regel-zoekopdracht is niet uitgevoerd." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Impliciete/statische patroonstam: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Bestand is een tussentijds vereiste." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Bestand is een vereiste van .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Bestand is secundair (vereiste van .SECONDARY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Maakt ook:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Wijzigingstijd is nooit gecontroleerd." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Bestand bestaat niet." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Bestand is erg oud." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Laatst gewijzigd %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Bestand is bijgewerkt." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Bestand is niet bijgewerkt." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Nog lopend recept (DIT IS EEN PROGRAMMAFOUT)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Nog lopende receptafhankelijkheden (DIT IS EEN PROGRAMMAFOUT)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Met succes bijgewerkt." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Moet worden bijgewerkt ('-q' is ingesteld)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Bijwerken is mislukt." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ongeldige waarde in 'command_state'-onderdeel!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Bestanden" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# hashtabel-statistieken van bestanden:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Veld '%s' is niet gecached: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: lege waarde" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: '%s' valt buiten bereik" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "ongeldig eerste argument van 'word'-functie" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "eerste argument van 'word'-functie moet groter zijn dan 0" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "ongeldig eerste argument van 'wordlist'-functie" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "ongeldig tweede argument van 'wordlist'-functie" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "niet-numeriek eerste argument van 'intcmp'-functie" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "niet-numeriek tweede argument van 'intcmp'-functie" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe(): DuplicateHandle(In) is mislukt (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe(): DuplicateHandle(Err) is mislukt (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() is mislukt (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() is mislukt\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Opschonen van tijdelijk batch-bestand %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: ontbrekende bestandsnaam" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open(): %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write(): %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close(): %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: te veel argumenten" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read(): %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: ongeldige bestandsbewerking: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "onvoldoende aantal argumenten (%u) voor functie '%s'" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "niet-geïmplementeerd op dit platform: functie '%s'" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "onafgemaakte aanroep van functie '%s': '%c' ontbreekt" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Lege functienaam" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Ongeldige functienaam: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Functienaam is te lang: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Ongeldig minimumaantal argumenten (%u) voor functie %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Ongeldig maximumaantal argumenten (%u) voor functie %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: optie '%s' is niet eenduidig\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: optie '--%s' staat geen argument toe\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: optie '%c%s' staat geen argument toe\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: optie '%s' vereist een argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: onbekende optie '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: onbekende optie '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ongeldige optie -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ongeldige optie -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: optie vereist een argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: optie '-W %s' is niet eenduidig\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: optie '-W %s' staat geen argument toe\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expanderen van '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Evalueren van '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"kan %lu bytes voor hashtabel niet reserveren: onvoldoende geheugen " +"beschikbaar" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Belasting=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Herhash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Botsingen=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Zoeken naar impliciete regel voor '%s'.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Zoeken naar archiefonderdeel-impliciete regel voor '%s'.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Geen archiefonderdeel-impliciete regel gevonden voor '%s'.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Impliciete regelrecursie wordt vermeden voor regel '%s'.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Verwoedere poging.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Patroonregel '%s' wordt geprobeerd met stam '%.*s'.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stam is te lang: '%s%.*s'.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Regel '%s' met onmogelijke regelvereiste '%s' wordt verworpen.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Regel '%s' met onmogelijke impliciete vereiste '%s' wordt verworpen.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Proberen van regelvereiste '%s'.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Proberen van impliciete vereiste '%s'.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "'%s' zou moeten bestaan.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "'%s' werd gevonden.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Compatibiliteitsregel '%s' wordt gebruikt vanwege '%s'.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Vereiste '%s' van regel '%s' voldoet niet als zou-moeten-bestaan.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Vereiste '%s' gevonden als VPATH '%s'.\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Zoeken naar een regel met expliciet bestand '%s'.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Zoeken naar een regel met tussentijds bestand '%s'.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Regel '%s' met onmogelijke vereiste '%s' wordt verworpen.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "'%s' werd niet gevonden.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Impliciete regel '%s' voor '%s' gevonden.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Zoeken naar compatibiliteitsregel voor '%s'.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Geen impliciete regel voor '%s' gevonden.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Kan geen tijdelijk bestand aanmaken" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (geheugendump gemaakt)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (genegeerd)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fout %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Wachten op onvoltooide taken..." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Levend dochterproces %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (ginds)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Beëindigen van winnend dochterproces %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Beëindigen van verliezend dochterproces %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Opschonen van tijdelijk batch-bestand %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Opschonen van tijdelijk batch-bestand %s is mislukt (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Verwijderen van dochterproces %p PID %s%s uit de ketting.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Token vrijgegeven voor dochterproces %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() kan geen proces starten (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"%d argumenten geteld bij mislukte start\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Opname van dochterproces %p (%s) PID %s%s in de ketting.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Token verkregen voor dochterproces %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: bijwerken van doel '%s' vanwege: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "doel bestaat niet" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "kan belastingsgrenzen niet afdwingen op dit besturingssysteem" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "kan belastingsgrens niet afdwingen: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"geen bestandshandvatten meer beschikbaar: kan standaardinvoer niet dupliceren" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"geen bestandshandvatten meer beschikbaar: kan standaarduitvoer niet " +"dupliceren" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"geen bestandshandvatten meer beschikbaar: kan standaardfoutuitvoer niet " +"dupliceren" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Kan standaardinvoer niet herstellen" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Kan standaarduitvoer niet herstellen" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Kan standaardfoutuitvoer niet herstellen" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" +"'make' heeft dochterproces met PID %s verwerkt, maar wacht nog op PID %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: mogelijk geen omgevingsruimte meer beschikbaar" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL is gewijzigd (was '%s', is nu '%s')\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Maken van tijdelijk batch-bestand %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Inhoud van batch-bestand:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Inhoud van batch-bestand:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, 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" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Openen van globale symbolentabel is mislukt: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Laden van gedeeld object %s\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Geladen object %s is niet gedeclareerd als GPL-compatibel" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Laden van symbool %s uit %s is mislukt: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Lege symboolnaam om te laden: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Laden van symbool %s uit %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Lossen van gedeeld object %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "De 'load'-operatie wordt op dit platform niet ondersteund." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opties:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr "" +" -b, -m (genegeerd, maar herkend wegens " +"compatibiliteit)\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make onvoorwaardelijk alle doelen maken\n" + +#: src/main.c:322 +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" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d veel informatie weergeven voor het debuggen\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=VLAGGEN] verschillende soorten debuginformatie " +"weergeven\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides omgevingsvariabelen gaan boven Makefiles\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E TEKST, --eval=TEKST deze TEKST als Makefile-statement evalueren\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f BESTAND, --file=BESTAND, --makefile=BESTAND\n" +" het gegeven bestand als Makefile gebruiken\n" +"\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help deze hulptekst tonen en stoppen\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors alle fouten in recepten negeren\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I MAP, --include-dir=MAP deze map doorzoeken naar ingesloten " +"Makefiles\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] het uitvoeren van N taken tegelijk toestaan;\n" +" zonder N is het aantal onbeperkt\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=SOORT te gebruiken soort taakserver\n" + +#: src/main.c:348 +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" + +#: src/main.c:350 +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" +" alleen extra taken starten als de\n" +" systeembelasting lager is dan N\n" + +#: src/main.c:353 +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\n" +" de laatste wijzigingstijd gebruiken\n" +"\n" + +#: src/main.c:355 +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" +" recepten niet uitvoeren, alleen weergeven\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o BESTAND, --old-file=BESTAND, --assume-old=BESTAND\n" +" BESTAND als oud beschouwen, niet opnieuw " +"maken\n" + +#: src/main.c:361 +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" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base interne gegevensbank van 'make' weergeven\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question geen recepten uitvoeren; de afsluitwaarde\n" +" geeft aan of alles bijgewerkt is\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules ingebouwde impliciete regels uitzetten\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables ingebouwde instellingen van variabelen " +"uitzetten\n" +"\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}] vereisten en doelen husselen\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet recepten niet weergeven\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent recepten weergeven (--silent-modus " +"uitschakelen)\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr " -S, --no-keep-going, --stop optie '-k' uitzetten\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch doelen aanraken in plaats van opnieuw maken\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace tracing-informatie weergeven\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version programmaversie tonen en stoppen\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory de huidige map weergeven\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory optie '-w' uitzetten, ook als deze impliciet\n" +" was aangezet\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W BESTAND, --what-if=BESTAND, --new-file=BESTAND, --assume-new=BESTAND\n" +" BESTAND als oneindig nieuw beschouwen\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables waarschuwen als naar een ongedefinieerde\n" +" variabele wordt verwezen\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "schrijffout: standaarduitvoer" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "lege tekenreeks is ongeldig als bestandsnaam" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "onbekende aanduiding '%s' voor debug-niveau" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "onbekend uitvoersynchronisatie-type: '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Gebruik: %s [OPTIES] [DOEL]...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Dit programma is gecompileerd voor %s.\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Dit programma is gecompileerd voor %s (%s).\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Rapporteer programmafouten aan ;\n" +"meld gebreken in de vertaling aan .\n" + +#: src/main.c:940 +#, 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" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Filter voor onbehandelde uitzondering is aangeroepen vanuit programma %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Toegangsrechtenovertreding: schrijfopdracht op adres 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Toegangsrechtenovertreding: leesopdracht op adres 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() stelt default_shell = %s in\n" + +#: src/main.c:1098 +#, 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" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "verwijderen (van tijdelijk bestand): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"Waarschuwing: taakserver is onbeschikbaar: '-j1' wordt gebruikt. Voeg '+' " +"toe aan de ouderregel." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"Waarschuwing: '-j%d' is afgedwongen in een deelproces: taakserver-modus " +"uitgezet." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile op standaardinvoer is dubbel opgegeven" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: tijdelijk bestand %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"Waarschuwing: '-j%d' is afgedwongen in makefile: taakserver-modus uitgezet." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Parallelle taken (-j) worden op dit platform niet ondersteund." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Opnieuw instellen op enkele-taakmodus (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Taakservercontroller %s wordt gebruikt\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Uitvoersynchronisatievergrendeling %s wordt gebruikt\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "" +"Symbolische koppelingen worden niet ondersteund: '-L' wordt uitgeschakeld." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Husselmodus is ingeschakeld: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Bijwerken van Makefiles...\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile '%s' bevat mogelijk een lus; wordt niet opnieuw gemaakt.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: laden is mislukt" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Opnieuw maken van Makefile '%s' is mislukt." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Ingesloten Makefile '%s' is niet gevonden." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile '%s' is niet gevonden." + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Kan niet terugkeren naar oorspronkelijke map" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Opnieuw uitvoeren[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL bevat meer dan één doel" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Geen doelen" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Geen doelen opgegeven en geen Makefile gevonden" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Bijwerken van doelen...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"Waarschuwing: Klokafwijking geconstateerd. Het maken is mogelijk " +"onvolledig gebeurd." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "de optie '%s%sc' vereist een niet-lege tekenreeks als argument" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "de optie '-%c' vereist een positief geheel getal als argument" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sDit programma is gecompileerd voor %s.\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sDit programma is gecompileerd voor %s (%s).\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sLicentie GPLv3+: GNU GPL versie 3 of nieuwer \n" +"%sDit is vrije software: u mag het vrijelijk wijzigen en verder " +"verspreiden.\n" +"%sEr is GEEN GARANTIE, voor zover de wet dit toestaat.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make-gegevensbank, weergegeven op %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Make-gegevensbank voltooid op %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s waarde %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s waarde %s: is geen map" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "standaard tijdelijke map '%s' wordt gebruikt" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "aanmaken van tijdelijk bestand %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "verwijderen van tijdelijk bestand %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: tijdelijk bestand %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: tijdelijk bestand %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Een onbekende map wordt binnengegaan\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Een onbekende map wordt verlaten\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Map '%s' wordt binnengegaan\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Map '%s' wordt verlaten\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Een onbekende map wordt binnengegaan\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Een onbekende map wordt verlaten\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Map '%s' wordt binnengegaan\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Map '%s' wordt verlaten\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"Waarschuwing: kan geen uitvoervergrendeling verkrijgen: " +"uitvoersynchronisatie wordt uitgeschakeld." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Gestopt.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Kan taakserver %s niet openen: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Onbekende authenticatiestijl '%s' voor taakserver" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "aanmaken van takenpijp" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "dupliceren van takenpijp" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "initialiseren van taakserverpijp" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "ongeldige tekenreeks '%s' voor '--jobserver-auth'" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "schrijven naar taakserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "taakserver is gestopt" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect() van takenpijp" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "lezen van takenpijp" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "ongeldige tekenreeks '%s' voor '--sync-mutex'" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "kan vergrendeling %s voor uitvoersynchronisatie niet openen: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Kan '%s' niet openen met 'O_TMPFILE': %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Lezen van Makefiles...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Lezen van Makefile '%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (geen standaarddoel)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (zoekpad)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (maakt niet uit)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (geen expansie van ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "UTF-8 BOM in Makefile '%s' wordt overgeslagen\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "UTF-8 BOM in Makefile-buffer wordt overgeslagen\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "ongeldige syntax in voorwaardelijk deel" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "recept begint voor eerste doel" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "ontbrekende regel vóór recept" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "" +"ontbrekend scheidingsteken (bedoelde u een TAB in plaats van 8 spaties?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "ontbrekend scheidingsteken" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "ontbrekend doelpatroon" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "meerdere doelpatronen" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "doelpatroon bevat geen '%%'" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "ontbrekende 'endif'" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "lege naam van variabele" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "extra tekst na 'define'-opdracht" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "ontbrekende 'endef', onafgemaakte 'define'" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "extra tekst na 'endef'-opdracht" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "extra tekst na '%s'-opdracht" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "extra '%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "slechts één 'else' per voorwaardelijk deel" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Onjuiste doelspecifieke variabele-definitie" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT hoort geen vereisten te hebben" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT hoort geen opdrachten te hebben" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "vereisten kunnen niet in recepten gedefinieerd worden" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "gegroepeerde doelen moeten een recept geven" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "gemengde impliciete en statische patroonregels" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "gemengde impliciete en normale regels" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "doel '%s' komt niet overeen met doelpatroon" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "doelbestand '%s' heeft zowel ':'- als '::'-items" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "doel '%s' is meerdere keren gegeven in dezelfde regel" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "Waarschuwing: er wordt voorbijgegaan aan recept voor doel '%s'" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "Waarschuwing: oud recept voor doel '%s' wordt genegeerd" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** gemengde impliciete en normale regels: verouderde syntax" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "" +"Waarschuwing: er wordt voorbijgegaan aan groepslidmaatschap voor doel '%s'" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "Waarschuwing: NUL-teken gezien; de rest van de regel wordt genegeerd" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "Waarschuwing: patroonrecept heeft partnerdoel '%s' niet bijgewerkt." + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Er hoeft niets gedaan te worden voor '%s'." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' is up-to-date." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Snoeien van bestand '%s'.\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sEr is geen regel om doel '%s' te maken, nodig voor '%s'%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sEr is geen regel om doel '%s' te maken%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Doelbestand '%s' wordt overwogen.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Bijwerken van bestand '%s' is recent geprobeerd en mislukt.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Bestand '%s' was al overwogen.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Bestand '%s' wordt nog bijgewerkt.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Bijwerken van bestand '%s' is voltooid.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Bestand '%s' bestaat niet.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Waarschuwing: .LOW_RESOLUTION_TIME-bestand '%s' heeft een hoge-resolutie " +"tijdsstempel" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Gegroepeerde doelpartner '%s' van bestand '%s' bestaat niet.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Standaardrecept wordt gebruikt voor '%s'.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Circulaire afhankelijkheid %s <- %s is weggelaten." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Vereisten van doelbestand '%s' zijn voltooid.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "De vereisten van '%s' worden nu gemaakt.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Pogingen voor doelbestand '%s' worden gestaakt.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Doel '%s' is niet opnieuw gemaakt vanwege fouten." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Vereiste '%s' is alleen-ordenen voor doel '%s'.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Vereiste '%s' van doel '%s' bestaat niet.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Vereiste '%s' is nieuwer dan doel '%s'.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Vereiste '%s' is ouder dan doel '%s'.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Doel '%s' is dubbeldubbelpunts en heeft geen vereisten.\n" + +#: src/remake.c:852 +#, 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 is veranderd.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Maken van '%s' vanwege 'always-make'-vlag.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Doel '%s' hoeft niet opnieuw gemaakt te worden" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; VPATH-naam '%s' wordt gebruikt" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Doel '%s' moet opnieuw gemaakt worden.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " VPATH-naam '%s' wordt genegeerd.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Recept van '%s' wordt nu uitgevoerd.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Opnieuw maken van doelbestand '%s' is mislukt.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Doelbestand '%s' is met succes opnieuw gemaakt.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Doelbestand '%s' moet opnieuw worden gemaakt onder '-q'.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Standaardopdrachten worden gebruikt voor '%s'.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "" +"Waarschuwing: bestand '%s' heeft een wijzigingstijd %s seconden in de " +"toekomst" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS-element '%s' is geen patroon" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs kan niet exporteren: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "Waarschuwing: vereisten voor suffixregeldefinitie worden genegeerd" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Impliciete regels" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Geen impliciete regels." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u impliciete regels, %u (%.1f%%) eindpunten." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "PROGRAMMAFOUT: num_pattern_rules() is verkeerd! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "ongeldige husselmodus: %s: '%s'" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "onbekend signaal" + +# Vroeger ging dit over het afsluiten van een modemverbinding, +# tegenwoordig over het afsluiten van een pseudoterminal. +#: src/signame.c:92 +msgid "Hangup" +msgstr "Opgehangen" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Onderbroken" + +# Verleden tijd, "Afgesloten", net als de andere actiesignaalnamen. +#: src/signame.c:98 +msgid "Quit" +msgstr "Afgesloten" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Ongeldige instructie" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Traceer/breekpunt-instructie" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Afgebroken" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT-instructie" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT-instructie" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Drijvendekomma-berekeningsfout" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Geëlimineerd" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Busfout" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Segmentatiefout" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Onjuiste systeemaanroep" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Gebroken pijp" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Wekker" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Beëindigd" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Gebruikergedefinieerd signaal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Gebruikergedefinieerd signaal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Dochterproces is afgesloten" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Stroomstoring" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Gepauzeerd" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Gepauzeerd (terminalinvoer)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Gepauzeerd (terminaluitvoer)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Gepauzeerd (signaal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Limiet op processortijd is overschreden" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Limiet op bestandsgrootte is overschreden" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtuele timer is afgelopen" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Timer voor profilering is afgelopen" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Venster is veranderd" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Doorgegaan" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Urgente in-/uitvoertoestand" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "In-/uitvoer is mogelijk" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Hulpbron verloren" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Gevaarsignaal" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Verzoek om informatie" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Drijvendekomma-coprocessor is niet beschikbaar" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Geen 'strcache'-buffers\n" + +#: src/strcache.c:304 +#, c-format +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" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s huidig buffer: grootte = %hu B / gebruikt = %hu B / aantal = %hu / " +"gemiddeld = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" +"%s andere gebruikte: totaal = %lu B / aantal = %lu / gemiddeld = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s andere vrij: totaal = %lu B / max = %lu B / min = %lu B / gemiddeld = %hu " +"B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s 'strcache'-prestatie: lookups = %lu / treffersverhouding = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# hashtabel-statistieken van bestanden:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatisch" + +#: src/variable.c:1789 +msgid "default" +msgstr "standaard" + +#: src/variable.c:1792 +msgid "environment" +msgstr "omgeving" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "Makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "omgeving onder -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "opdrachtregel" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "'override'-opdracht" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (uit '%s', regel %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# Statistieken van hashtabel van variabelenverzameling:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabelen\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Patroonspecifieke variabelewaarden" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Geen patroonspecifieke variabelewaarden" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u patroonspecifieke variabelewaarden" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "Waarschuwing: ongedefinieerde variabele '%.*s'" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() is mislukt met afsluitwaarde %d\n" + +#: src/vmsjobs.c:244 +#, 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" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "INGEBOUWDE CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Uitvoer wordt toegevoegd aan %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Toevoegen van %.*s en opschoning\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "In plaats daarvan wordt %s uitgevoerd\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH-zoekpaden\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Geen 'vpath'-zoekpaden." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u 'vpath'-zoekpaden.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Geen algemeen zoekpad ('VPATH'-variabele)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Algemeen zoekpad ('VPATH'-variabele):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Taakserver-plaatsen zijn beperkt tot %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "aanmaken van taakserver-semafoor: (Fout %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"*interne fout*: kan taakserver-semafoor '%s' niet openen: (Fout %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Taakservercliënt (semafoor %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "vrijgeven van taakserver-semafoor: (Fout %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "wachten op semafoor of dochterproces: (Fout %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "kan uitvoersynchronisatievergrendeling %s niet ontleden: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "ongeldige uitvoersynchronisatievergrendeling: %s" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "Instelling van taakserver (fifo %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "Instelling van taakserver (bestandsdescriptors %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Taakservercliënt (bestandsdescriptor %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (tijdelijk bestand)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: gebruiker %lu (echt %lu), groep %lu (echt %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Toegang geïnitialiseerd" + +#~ msgid "User access" +#~ msgstr "Gebruikerstoegang" + +#~ msgid "Make access" +#~ msgstr "Make-toegang" + +#~ msgid "Child access" +#~ msgstr "Dochterprocestoegang" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "Optie '-O[TYPE]' (--output-sync[=TYPE]) is niet meegecompileerd in dit " +#~ "programma." + +#~ msgid "jobserver pipeline" +#~ msgstr "taakserverpijplijn" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: Opdracht niet gevonden\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Shell-programma niet gevonden" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s slaapt gedurende 30 seconden..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "klaar met 30 seconden slapen. Make gaat verder.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Onbekende fout %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Waarschuwing: bestand '%s' heeft een wijzigingstijd in de toekomst" + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: recept voor doel '%s' is mislukt" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Waarschuwing: lege omleiding\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Onbekende ingebouwde opdracht '%s'\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "Ingebouwde opdracht is onbekend of wordt niet ondersteund in .ONESHELL: " +#~ "'%s'\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Fout: lege opdracht\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Invoer wordt omgeleid van %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Foutuitvoer wordt omgeleid naar %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Uitvoer wordt omgeleid naar %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Fout bij processtart, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "*interne fout*: meerdere opties '--sync-mutex'" + +#~ msgid "virtual memory exhausted" +#~ msgstr "onvoldoende geheugen beschikbaar" + +#~ msgid "write error" +#~ msgstr "schrijffout" + +#~ 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 "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "process_easy() kan geen proces starten (e=%ld)\n" + +#~ msgid "empty `override' directive" +#~ msgstr "lege 'override'-opdracht" + +#~ msgid "invalid `override' directive" +#~ msgstr "ongeldige 'override'-opdracht" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-waarschuwing: CTRL-Y zal subproces(sen) achterlaten.\n" diff --git a/local/recipes/dev/gnu-make/source/po/pl.gmo b/local/recipes/dev/gnu-make/source/po/pl.gmo new file mode 100644 index 0000000000..996bc68bd5 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/pl.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/pl.po b/local/recipes/dev/gnu-make/source/po/pl.po new file mode 100644 index 0000000000..67ccce50b5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/pl.po @@ -0,0 +1,2455 @@ +# Polish translation for GNU make. +# Copyright (C) 1996, 2002, 2005, 2006, 2010, 2013, 2014, 2016, 2019, 2020, 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# PaweÅ‚ Krawczyk , 1996. +# Jakub Bogusz , 2002-2022. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-24 20:41+0200\n" +"Last-Translator: Jakub Bogusz \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "próba użycia nieistniejÄ…cej funkcji: '%s'" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "element biblioteki `touch' jest niedostÄ™pny pod VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Archiwum '%s' nie istnieje" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: '%s' nie jest poprawnym archiwum" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Brak elementu '%s' w '%s'" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: Błędny kod powrotu z ar_member_touch w '%s'" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"Uzyskanie informacji o module przez lnr$set_module() nie udaÅ‚o siÄ™, status = " +"%d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() nie powiodÅ‚o siÄ™, status = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "błąd otwarcia biblioteki '%s' podczas szukania stanu elementu %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Błędny atrybut %1$s dla czÅ‚onka %3$s archiwum %2$s" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Element '%s'%s: %ld bajtów pod %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (nazwa może zostać okrojona)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Data %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mode = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Polecenia majÄ… za dużo linii (limit to %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Przerwano.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Element archiwum '%s' może być faÅ‚szywy; nie usuniÄ™ty" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Element archiwum '%s' może być faÅ‚szywy; nie usuniÄ™ty" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] KasujÄ™ plik '%s'" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** KasujÄ™ plik '%s'" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# polecenia do wykonania" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (wbudowane):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (z '%s', linia %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Katalogi\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: stat() zwraca błąd.\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (klucz %s, czas modyfikacji %s): otwarcie byÅ‚o niemożliwe.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (urzÄ…dzenie %d, i-wÄ™zeÅ‚ [%d,%d,%d]): otwarcie byÅ‚o niemożliwe.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (urzÄ…dzenie %ld, i-wÄ™zeÅ‚ %ld): otwarcie byÅ‚o niemożliwe.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (klucz %s, czas modyfikacji %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (urzÄ…dzenie %d, i-wÄ™zeÅ‚ [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (urzÄ…dzenie %ld, i-wÄ™zeÅ‚ %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Nie" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " pliki, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "nie" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " niemożliwoÅ›ci" + +#: src/dir.c:1180 +msgid " so far." +msgstr " jak dotÄ…d." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " niemożliwoÅ›ci w %lu katalogach.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: rozwijanie bez rekurencji %s na wyeksportowanÄ… funkcjÄ™ powÅ‚oki\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Rekurencyjna zmienna '%s' wskazuje na samÄ… siebie" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "niezakoÅ„czone odwoÅ‚anie do zmiennej" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Polecenia dla pliku '%s' podano w %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"Polecenia dla pliku '%s' zostaÅ‚y wyznaczone na podstawie reguÅ‚ standardowych," + +#: src/file.c:281 +#, 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'." + +#: src/file.c:284 +#, c-format +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'." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"nie można przemianować '%s' z pojedynczym dwukropkiem na '%s' z podwójnym" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"nie można przemianować '%s' z podwójnym dwukropkiem na '%s' z pojedynczym" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Kasowanie pliku poÅ›redniego '%s'" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Kasowanie plików poÅ›rednich...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s nie może być jednoczeÅ›nie .NOTINTERMEDIATE i .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s nie może być jednoczeÅ›nie .NOTINTERMEDIATE i .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE i .SECONDARY wykluczajÄ… siÄ™ wzajemnie" + +#: src/file.c:942 +msgid "Current time" +msgstr "Aktualny czas" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Oznaczenie czasu spoza zakresu; zastÄ…piono %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# To nie jest obiekt:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Cenny plik (zależność .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Obiekt niejawny (zależność .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Obiekt podany w linii poleceÅ„." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Makefile domyÅ›lny, wymieniony w MAKEFILES lub -include/sinclude." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# ReguÅ‚a wbudowana" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Szukanie reguÅ‚ domyÅ›lnych zostaÅ‚o wykonane." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Szukanie reguÅ‚ domyÅ›lnych nie zostaÅ‚o wykonane." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Gałąź wzorców domyÅ›lnych/statycznych: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Plik jest zależnoÅ›ciÄ… przejÅ›ciowÄ…." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Plik jest zależnoÅ›ciÄ… .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Plik jest drugorzÄ™dny (zależność .SECONDARY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Robi również:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Czas modyfikacji nie byÅ‚ sprawdzany." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Plik nie istnieje." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Plik jest bardzo stary." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Ostatnio modyfikowany %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Plik zostaÅ‚ uaktualniony." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Plik nie zostaÅ‚ uaktualniony." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Aktualnie uruchamiane polecenia (TO JEST BÅÄ„D)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Aktualnie uruchamiane polecenia zależnoÅ›ci (TO JEST BÅÄ„D)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Uaktualnienie powiodÅ‚o siÄ™." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Powinien być uaktualniony (-q jest włączone)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Uaktualnianie nie powiodÅ‚o siÄ™." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Błędna wartość w elemencie 'command_state'!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Pliki" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# statystyki tablic haszujÄ…cych plików:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Pole '%s' nie zapamiÄ™tane w pamiÄ™ci podrÄ™cznej: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: pusta wartość" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: '%s' spoza zakresu" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "błędny pierwszy argument funkcji 'word'" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "pierwszy argument funkcji 'word' musi być wiÄ™kszy od 0" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "błędny pierwszy argument funkcji 'wordlist'" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "błędny drugi argument funkcji 'wordlist'" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "pierwszy argument funkcji 'intcmp' nie jest liczbowy" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "drugi argument funkcji 'intcmp' nie jest liczbowy" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) nie powiodÅ‚o siÄ™ (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) nie powiodÅ‚o siÄ™ (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() nie powiodÅ‚o siÄ™ (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() nie powiodÅ‚o siÄ™\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "CzyszczÄ™ tymczasowy plik wsadowy %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "plik: brak nazwy" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "otwarcie: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "zapis: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "zamkniÄ™cie: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "plik: zbyt dużo argumentów" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "odczyt: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "plik: błędna operacja na pliku: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "niewystarczajÄ…ca liczba argumentów (%u) dla funkcji '%s'" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "funkcja '%s' nie jest zaimplementowana na tej platformie" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "nie dokoÅ„czone wywoÅ‚anie funkcji '%s': brak '%c'" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Pusta nazwa funkcji" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Błędna nazwa funkcji: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Zbyt dÅ‚uga nazwa funkcji: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Błędna minimalna liczba argumentów (%u) dla funkcji %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Błędna maksymalna liczba argumentów (%u) dla funkcji %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: opcja '%s' jest niejednoznaczna\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: opcja '--%s' nie przyjmuje argumentów\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: opcja '%c%s' nie może mieć argumentów\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: opcja '%s' musi mieć argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: nieznana opcja '--%s'\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: nieznana opcja '%c%s'\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: niedozwolona opcja -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: błędna opcja -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opcja musi mieć argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: opcja '-W %s' jest niejednoznaczna\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: opcja '-W %s' nie może mieć argumentów\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Rozwijanie '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Wyliczanie '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"nie można przydzielić %lu bajtów na tablicÄ™ haszujÄ…cÄ…: pamięć wyczerpana" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "WypeÅ‚nienie=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Przehaszowania=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Kolizje=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Szukanie standardowej reguÅ‚y dla '%s'.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Szukanie standardowej reguÅ‚y typu archive-member dla '%s'.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Znaleziono standardowÄ… regułę typu archive-member dla '%s'.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "" +"Pomijanie rekurencyjnego wywoÅ‚ania reguÅ‚y standardowej dla reguÅ‚y '%s'.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Dalsza próba.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Próbowanie reguÅ‚y wzorcowej '%s' z gałęziÄ… '%.*s'.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Gałąź zbyt dÅ‚uga: '%s%.*s'.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Odrzucenie reguÅ‚y '%s' z powodu niemożliwej zależnoÅ›ci '%s' reguÅ‚y.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Odrzucenie reguÅ‚y '%s' z powodu niemożliwej zależnoÅ›ci domyÅ›lnej '%s'.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Próbowanie zależnoÅ›ci reguÅ‚y '%s'.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Próbowanie zależnoÅ›ci domyÅ›lnej '%s'.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "'%s' powinien istnieć.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Znaleziono '%s'.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Użycie reguÅ‚y zgodnoÅ›ci '%s' z powodu '%s'.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Zależność '%s' reguÅ‚y '%s' nie okreÅ›la, że powinna istnieć.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Znaleziono zależność '%s' jako VPATH '%s'\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Szukanie reguÅ‚y zawierajÄ…cej plik jawny '%s'.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Szukanie reguÅ‚y zawierajÄ…cej plik przejÅ›ciowy '%s'.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Odrzucenie reguÅ‚y '%s' z powodu niemożliwej zależnoÅ›ci '%s'.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Nie znaleziono '%s'.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Znaleziono standardowÄ… regułę '%s' dla '%s'.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Szukanie reguÅ‚y zgodnoÅ›ci dla '%s'.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Brak standardowych reguÅ‚ dla '%s'.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Nie można utworzyć pliku tymczasowego" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (zrzut pamiÄ™ci)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (zignorowano)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Błąd %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Oczekiwanie na niezakoÅ„czone zadania...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Å»yjÄ…cy potomek %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (zdalne)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Zbieranie wygrywajÄ…cego potomka %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Zbieranie przegrywajÄ…cego potomka %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Czyszczenie tymczasowego pliku wsadowego %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Czyszczenie tymczasowego pliku wsadowego %s nie powiodÅ‚o siÄ™ (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Usuwanie potomka %p PID %s%s z kolejki.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Zwolniony token dla potomka %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() nie mógÅ‚ uruchomić procesu (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Naliczono %d parametrów nieudanego uruchomienia\n" + +#: src/job.c:1650 +#, 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" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Otrzymano token dla potomka %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: uaktualnianie obiektu '%s' z powodu: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "obiekt nie istnieje" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "niemożliwe wymuszenie limitów obciążenia w tym systemie" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "niemożliwe wymuszenie limitu obciążenia: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "nie ma wiÄ™cej uchwytów plików: nie można powielić stdin" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "nie ma wiÄ™cej uchwytów plików: nie można powielić stdout" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "nie ma wiÄ™cej uchwytów plików: nie można powielić stderr" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Nie można odtworzyć stdin" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Nie można odtworzyć stdout" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Nie można odtworzyć stderr" + +#: src/job.c:2530 +#, 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" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: mogÅ‚o zabraknąć miejsca na Å›rodowisko" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL siÄ™ zmieniÅ‚ (byÅ‚ '%s', jest '%s')\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Tworzenie tymczasowego pliku wsadowego %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Zawartość pliku wsadowego:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Zawartość pliku wsadowego:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (linia %d) ZÅ‚y kontekst powÅ‚oki (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Nie udaÅ‚o siÄ™ otworzyć tablicy symboli globalnych: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "ZaÅ‚adowano obiekt współdzielony %s\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Wczytany obiekt %s nie jest zadeklarowany jako kompatybilny z GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Nie udaÅ‚o siÄ™ wczytać symbolu %s z %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Pusta nazwa symbolu do wczytania: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Wczytywanie symbolu %s z %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "WyÅ‚adowywanie obiektu współdzielonego %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Operacja 'load' nie jest obsÅ‚ugiwana na tej platformie" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opcje:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorowane dla kompatybilnoÅ›ci.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" +" -B, --always-make Bezwarunkowe utworzenie wszystkich obiektów.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C KATALOG, --directory=KATALOG\n" +" PrzejÅ›cie do KATALOGu przed robieniem\n" +" czegokolwiek.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d WyÅ›wietla dużo informacji diagnostycznych.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=FLAGI] WyÅ›wietla różne rodzaje informacji\n" +" diagnostycznych.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Zmienne Å›rodowiska przykrywajÄ… makefile.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E ÅAŃCUCH, --eval=ÅAŃCUCH Wyznacza ÅAŃCUCH jako instrukcjÄ™ pliku " +"makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f PLIK, --file=PLIK, --makefile=PLIK\n" +" Czyta PLIK jako makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr "" +" -h, --help WyÅ›wietla ten komunikat i koÅ„czy dziaÅ‚anie.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignoruje błędy poleceÅ„.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I KATALOG, --include-dir=KATALOG\n" +" Szuka dołączanych makefile w KATALOGu.\n" + +#: src/main.c:344 +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" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STYL Wybór stylu używanego srewera zadaÅ„.\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Kontynuuj jeÅ›li nie da siÄ™ zrobić jakichÅ›\n" +" obiektów.\n" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Nie uruchamiaj wielu zadaÅ„ jeÅ›li load nie " +"jest\n" +" poniżej N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Używanie ostatniego mtime miÄ™dzy dowiÄ…zaniem a " +"celem.\n" + +#: src/main.c:355 +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" +" -n, --just-print, --dry-run, --recon\n" +" Nie wykonuje poleceÅ„; jedynie je wyÅ›wietla.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o PLIK, --old-file=PLIK, --assume-old=PLIK\n" +" Uznanie PLIKu za bardzo stary i nie tworzenie " +"go\n" +" ponownie.\n" + +#: src/main.c:361 +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" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base WyÅ›wietla wewnÄ™trznÄ… bazÄ™ danych make.\n" + +#: src/main.c:366 +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" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules Wyłącza wbudowane reguÅ‚y standardowe.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Wyłącza ustawianie wbudowanych zmiennych.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={ZARODEK|random|reverse|none}]\n" +" Przetasowanie zależnoÅ›ci i celów.\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Nie wypisuje poleceÅ„.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Wypisuje polecenia (wyłącza tryb --silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Wyłącza -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr " -t, --touch Uaktualnia obiekty zamiast je robić.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Wypisywanie informacji ze Å›ledzenia.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version WyÅ›wietla wersjÄ™ make i koÅ„czy dziaÅ‚anie.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory WyÅ›wietla aktualny katalog.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Wyłącza -w, nawet jeÅ›li byÅ‚o ono włączone\n" +" domyÅ›lnie.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W PLIK, --what-if=PLIK, --new-file=PLIK, --assume-new=PLIK\n" +" Uznaje PLIK za nieskoÅ„czenie nowy.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Ostrzega przy odwoÅ‚aniach do " +"niezdefiniowanych\n" +" zmiennych.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "błąd zapisu: standardowe wyjÅ›cie" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "pusty Å‚aÅ„cuch nie może być nazwÄ… pliku" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "nieznany poziom diagnostyki '%s'" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "nieznany sposób synchronizacji wyjÅ›cia '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "SkÅ‚adnia: %s [opcje] [obiekt] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Ten program zostaÅ‚ zbudowany dla %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Ten program zostaÅ‚ zbudowany dla %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Błędy proszÄ™ zgÅ‚aszać na adres \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: zÅ‚apano przerwanie/wyjÄ…tek (kod = 0x%lx, adres = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"NieobsÅ‚ugiwany filtr wyjÄ…tku wywoÅ‚any z programu %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Naruszenie praw dostÄ™pu: zapis pod adresem 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Naruszenie praw dostÄ™pu: odczyt spod adresu 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() ustawia default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "find_and_set_shell() ustawia Å›cieżkÄ™ wyszukiwania default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (plik tymczasowy): " + +#: src/main.c:1833 +#, c-format +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." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "uwaga: -j%d wymuszone w podzadaniu: wyłączanie trybu serwera zadaÅ„." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile ze standardowego wejÅ›cia podano dwukrotnie" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: plik tymczasowy %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "uwaga: -j%d wymuszone w podzadaniu: wyłączanie trybu serwera zadaÅ„." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "RównolegÅ‚e zadania (-j) nie sÄ… obsÅ‚ugiwane na tej platformie" + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Przełączanie w tryb jednozadaniowy (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Użycie kontrolera serwera zadaÅ„ %s\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Użycie muteksu synchronizacji wyjÅ›cia %s\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "DowiÄ…zania symboliczne nie sÄ… obsÅ‚ugiwane: wyłączono -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Włączony tryb przetasowania: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Uaktualnianie plików makefile....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Plik makefile '%s' może siÄ™ zapÄ™tlić; bez ponownego przetwarzania.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: nie udaÅ‚o siÄ™ zaÅ‚adować" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Nie udaÅ‚o siÄ™ ponownie przetworzyć pliku makefile '%s'." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Nie znaleziono włączanego pliku makefile '%s'." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Nie znaleziono pliku makefile '%s'" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Niemożliwy powrót do katalogu startowego" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Ponowne uruchamianie[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL zawiera wiÄ™cej niż jeden cel" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Brak obiektów" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Nie podano obiektów i nie znaleziono makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Uaktualnianie obiektów docelowych....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "uwaga: Wykryto przestawienie zegara. Budowanie może być niekompletne." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "opcja '%s%s' wymaga niepustego Å‚aÅ„cucha jako argumentu" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "opcja '-%c' wymaga argumentu bÄ™dÄ…cego liczbÄ… caÅ‚kowitÄ… dodatniÄ…" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sTen program zostaÅ‚ zbudowany dla systemu %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sTen program zostaÅ‚ zbudowany dla systemu %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sLicencja GPLv3+: GNU GPL wersja 3 lub nowsza \n" +"%sTo oprogramowanie jest wolnodostÄ™pne: można je swobodnie zmieniać i " +"rozpowszechniać.\n" +"%sNie ma Å»ADNEJ GWARANCJI w zakresie dopuszczalnym przez prawo.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Baza danych Make, wyÅ›wietlana na %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# ZakoÅ„czono tworzenie bazy danych Make na %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "wartość %s %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "wartość %s %s: to nie katalog" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "użycie domyÅ›lnego katalogu tymczasowego '%s'" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "tworzenie pliku tymczasowego %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "usuwanie pliku tymczasowego %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: plik tymczasowy %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: plik tymczasowy %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: WejÅ›cie do nieznanego katalogu\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Opuszczenie nieznanego katalogu\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: WejÅ›cie do katalogu '%s'\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Opuszczenie katalogu '%s'\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: WejÅ›cie do nieznanego katalogu\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Opuszczenie nieznanego katalogu\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: WejÅ›cie do katalogu '%s'\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Opuszczenie katalogu '%s'\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"uwaga: nie można uzyskać blokady wyjÅ›cia, wyłączanie synchronizacji wyjÅ›cia." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Stop.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Nie mozna otworzyć serwera zadaÅ„ %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Nieznany styl '%s' uwierzytelnienia serwera zadaÅ„" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "tworzenie potoku zadaÅ„" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplikowanie potoku zadaÅ„" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inicjowanie potoku serwera zadaÅ„" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "błędny Å‚aÅ„cuch --jobserver-auth '%s'" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "zapis do serwera zadaÅ„" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "serwer zadaÅ„ zamkniÄ™ty" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect potoku zadaÅ„" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "odczyt potoku zadaÅ„" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "błędny Å‚aÅ„cuch --sync-mutex '%s'" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "nie można otworzyć muteksu synchronizacji %s: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Nie można otworzyć '%s' z O_TMPFILE: %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Czytanie makefile...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Czytanie pliku makefile '%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (brak celu domyÅ›lnego)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (przeszukiwana Å›cieżka)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (nieważne)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (brak rozszerzenia ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "PominiÄ™to BOM UTF-8 w pliku makefile '%s'\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "PominiÄ™to BOM UTF-8 w buforze pliku makefile\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "błędna skÅ‚adnia wyrażenia warunkowego" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "polecenia zaczynajÄ… siÄ™ przed pierwszym obiektem" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "brakuje reguÅ‚y przed poleceniami" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "brakujÄ…cy separator (czyżby miaÅ‚ być TAB zamiast 8 spacji?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "brakujÄ…cy separator" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "brakujÄ…cy wzorzec obiektu" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "wielokrotne wzorce obiektu" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "wzorzec obiektu nie zawiera '%%'" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "brakujÄ…cy 'endif'" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "pusta nazwa zmiennej" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "nadmiarowy tekst po dyrektywie 'define'" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "brakujÄ…cy 'endef', niezakoÅ„czone 'define'" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "nadmiarowy tekst po dyrektywie 'endef'" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "niezwiÄ…zany tekst po dyrektywie '%s'" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "nadmiarowy '%s'" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "tylko jedno 'else' w wyrażeniu warunkowym" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Źle sformuÅ‚owana definicja zmiennej dla celu" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT nie powinno mieć zależnoÅ›ci" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT nie powinno mieć poleceÅ„" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "wymagania nie mogÄ… być definiowane w opisach poleceÅ„" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "pogrupowane obiekty muszÄ… dostarczać opis polecenia" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "pomieszane standardowe i statyczne reguÅ‚y wzorców" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "pomieszane standardowe i normalne reguÅ‚y" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "obiekt '%s' nie pasuje do wzorca obiektu" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "plik obiektu '%s' ma pozycje i : i ::" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "obiekt '%s' podany wielokrotnie w tej samej regule" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "uwaga: polecenia zakrywajÄ…ce dla obiektu '%s'" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "uwaga: ignorujÄ™ stare polecenia dla obiektu '%s'" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** pomieszane reguÅ‚y standardowe i normalne: przestarzaÅ‚a skÅ‚adnia" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "uwaga: zakrycie czÅ‚onkowstwa w grupie dla obiektu '%s'" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "uwaga: napotkaÅ‚em na znak NUL; reszta linii zignorowana" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "uwaga: polecenia dla wzorca nie uaktualniÅ‚y partnera celu '%s'." + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Nie ma nic do zrobienia w '%s'." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' jest aktualne." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Czyszczenie pliku '%s'.\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sBrak reguÅ‚ do zrobienia obiektu '%s', wymaganego przez '%s'%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sBrak reguÅ‚ do wykonania obiektu '%s'%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Przetwarzanie pliku obiektowego '%s'.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Już bez powodzenia próbowaÅ‚em uaktualnić plik '%s'.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Plik '%s' byÅ‚ już przetwarzany.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Wciąż uaktualniam plik '%s'.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "SkoÅ„czyÅ‚em uaktualniać plik '%s'.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Plik '%s' nie istnieje.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Uwaga: plik .LOW_RESOLUTION_TIME '%s' ma dużą rozdzielczość znacznika " +"czasu" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Zgrupowany partner obiektu '%s' pliku '%s' nie istnieje.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Stosowanie standardowych poleceÅ„ dla '%s'.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Okrężna dyrektywa %s <- %s porzucona." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "ZakoÅ„czono zależnoÅ›ci pliku obiektu '%s'.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "ZależnoÅ›ci '%s' sÄ… wykonywane.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Zaniechany plik obiektowy '%s'.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Obiekt '%s' nie zostaÅ‚ ponownie wykonany z powodu błędów." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Zależność '%s' dotyczy tylko kolejnoÅ›ci dla obiektu '%s'.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Zależność '%s' obiektu '%s' nie istnieje.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Zależność '%s' jest nowsza od obiektu '%s'.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Zależność '%s' jest starsza od obiektu '%s'.\n" + +#: src/remake.c:845 +#, c-format +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" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "Brak poleceÅ„ dla '%s' i brak zmienionych zależnoÅ›ci.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Tworzenie '%s' z powodu flagi always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Nie ma potrzeby ponownego robienia obiektu '%s'" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; użyto nazwy VPATH '%s'" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Konieczne ponowne wykonanie obiektu '%s'.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Zignorowano nazwÄ™ VPATH '%s'.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Uruchomiono polecenia dla '%s'.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Ponowne tworzenie pliku obiektu '%s' nie powiodÅ‚o siÄ™.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Ponowne tworzenie pliku obiektu '%s' powiodÅ‚o siÄ™.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Plik obiektu '%s' powinien być ponownie tworzony z opcjÄ… -q.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Stosowanie standardowych poleceÅ„ dla '%s'.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Uwaga: Plik '%s' ma czas modyfikacji %s s w przyszÅ‚oÅ›ci" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Element .LIBPATTERNS '%s' nie jest wzorcem" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Zasady nie eksportowane: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "uwaga: ignorowanie zależnoÅ›ci przy definicji reguÅ‚y przyrostkowej" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# ReguÅ‚y stadardowe" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Brak standardowych reguÅ‚." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u standardowych reguÅ‚, %u (%.1f%%) koÅ„cowych." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "BÅÄ„D: zÅ‚e num_pattern_rules! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "błędny tryb przetasowania: %s: '%s'" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "nieznany sygnaÅ‚" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Rozłączenie" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Przerwanie" + +#: src/signame.c:98 +msgid "Quit" +msgstr "WyjÅ›cie" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Błędna instrukcja" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "PuÅ‚apka Å›ledzenia" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Przerwany" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "PuÅ‚apka IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "PuÅ‚apka EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "WyjÄ…tek zmiennoprzecinkowy" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Zabity" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Błąd szyny" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Naruszenie ochrony pamiÄ™ci" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Błędne wywoÅ‚anie systemowe" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Przerwany potok" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Budzik" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "ZakoÅ„czony" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "SygnaÅ‚ użytkownika 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "SygnaÅ‚ użytkownika 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Potomek powróciÅ‚" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Przerwa w zasilaniu" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Zatrzymany" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Zatrzymany (wejÅ›cie z tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Zatrzymany (wyjÅ›cie na tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Zatrzymany (sygnaÅ‚)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Przekroczony czas CPU" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Przekroczony limit wielkoÅ›ci pliku" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Wyczerpany stoper wirtualny" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Wyczerpany stoper profilujÄ…cy" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Zmienione okno" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Kontynuowany" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "NagÅ‚a sytuacja I/O" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O możliwe" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Zaginione zasoby" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "SygnaÅ‚ niebezpieczeÅ„stwa" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Żądanie informacji" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Koprocesor obliczeÅ„ zmiennoprzecinkowych niedostÄ™pny" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Brak buforów strcache\n" + +#: src/strcache.c:304 +#, c-format +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" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s bieżący buf: rozmiar = %hu B / użyty = %hu B / liczba = %hu / Å›r = %u B\n" + +#: src/strcache.c:319 +#, 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" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s pozostaÅ‚e wolne: razem = %lu B / maks = %lu B / min = %lu B / Å›r = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s wydajność strcache: wyszukiwaÅ„ = %lu / wsp. trafieÅ„ = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statystyki tablic haszujÄ…cych:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatyczna" + +#: src/variable.c:1789 +msgid "default" +msgstr "domyÅ›lna" + +#: src/variable.c:1792 +msgid "environment" +msgstr "Å›rodowiskowa" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "Å›rodowisko pod -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "z linii poleceÅ„" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "dyrektywa 'override'" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (z '%s', linia %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# statystyki tablic haszujÄ…cych ustawionych zmiennych:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Zmienne\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# WartoÅ›ci zmiennych dla wzorca" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Brak wartoÅ›ci zmiennych dla wzorca." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u wartoÅ›ci zmiennych dla wzorca" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "uwaga: niezdefiniowana zmienna '%.*s'" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() nie powiodÅ‚o siÄ™ - %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-uwaga, bÄ™dzie trzeba ponownie umożliwić obsÅ‚ugÄ™ CTRL-Y z DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "WBUDOWANE CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Dołączanie wyjÅ›cia do %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Dołączanie %.*s i czyszczenie\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Zamiast tego wykonywanie %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Åšcieżki przeszukiwania VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Brak Å›cieżek przeszukiwania 'vpath'" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u Å›cieżek przeszukiwania 'vpath'.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Brak ogólnej (zmienna 'VPATH') Å›cieżki przeszukiwania." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Ogólna (zmienna 'VPATH') Å›cieżka przeszukiwania:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Pojemność serwera zadaÅ„ ograniczona do %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "tworzenie semafora serwera zadaÅ„: (Błąd %ld: %s)" + +#: src/w32/w32os.c:259 +#, 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)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Klient serwera zadaÅ„ (semafor %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "zwalnianie semafora serwera zadaÅ„: (Błąd %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "oczekiwanie na semafor lub proces potomny: (Błąd %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "niezrozumiaÅ‚y mutex synchronizacji wyjÅ›cia %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "błędny mutex synchronizacji wyjÅ›cia: %s" diff --git a/local/recipes/dev/gnu-make/source/po/pt.gmo b/local/recipes/dev/gnu-make/source/po/pt.gmo new file mode 100644 index 0000000000..02a5674868 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/pt.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/pt.po b/local/recipes/dev/gnu-make/source/po/pt.po new file mode 100644 index 0000000000..f494daf9a0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/pt.po @@ -0,0 +1,2498 @@ +# Portuguese (Portugal) translation for the "make" package. +# Copyright (C) 2018 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Pedro Albuquerque , 2018, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2020-01-04 07:21+0000\n" +"Last-Translator: Pedro Albuquerque \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "tentativa de usar funcionalidade não suportada: \"%s\"" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "membro de touch arquivo indisponível em VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: arquivo \"%s\" não existe" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: \"%s\" não é um arquivo válido" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: membro \"%s\" não existe em \"%s\"" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: mau código de retorno de ar_member_touch em \"%s\"" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() falhou ao extrair informação do módulo, estado = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() falhou com estado = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"impossível abrir biblioteca \"%s\" para procurar estado do membro \"%d\"" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Membro \"%s\"%s: %ld bytes em %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (nome pode estar truncado)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Data %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, modo = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Receita com demasiadas linhas (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Break.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] membro do arquivo \"%s\" pode ser fictício; não eliminado" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** membro do arquivo \"%s\" pode ser fictício; não eliminado" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] a eliminar ficheiro \"%s\"" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** a eliminar ficheiro \"%s\"" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# receita a executar" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (interno):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (de \"%s\", linha %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Pastas\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: impossível obter estatísticas.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (chave %s, mtime %I64u): impossível abrir.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): impossível abrir.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (dispositivo %ld, inode %ld): impossível abrir.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (chave %s, mtime %I64u): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispositivo %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Não" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " ficheiros, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "não" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " impossibilidades" + +#: src/dir.c:1180 +msgid " so far." +msgstr " até agora." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " impossibilidades em %lu pastas.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Variável recursiva \"%s\" referencia-se a si própria (eventualmente)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "referencia de variável não terminada" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Receita especificada para ficheiro \"%s\" em %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"Receita para ficheiro \"%s\" foi encontrada por procura com regra implícita," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "mas \"%s\" é agora considerado o mesmo ficheiro que \"%s\"." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "Receita para \"%s\" será ignorada em favor da receita para \"%s\"." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "impossível renomear dois-pontos \"%s\" para dois-pontos duplos \"%s\"" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "impossível renomear dois-pontos duplos \"%s\" para dois-pontos \"%s\"" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** A eliminar ficheiro intermédio \"%s\"" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "A remover ficheiros intermédios...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Hora actual" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: datação fora do intervalo; a substituir %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Não é um alvo:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Ficheiro precioso (pré-requisito de .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Alvo falso (pré-requisito de .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Alvo da linha de comandos." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# A predefinição, MAKEFILES, ou -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Regra interna" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Foi feita uma procura com regra implícita." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Não foi feita uma procura com regra implícita." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Haste de padrão implícito/estático: \"%s\"\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# O ficheiro é um pré-requisito imediato." + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Ficheiro precioso (pré-requisito de .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Alvo falso (pré-requisito de .PHONY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Também faz:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Hora de modificação nunca verificada." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# O ficheiro não existe." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# O ficheiro é muito antigo." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Última modificação %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# O ficheiro foi actualizado." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# O ficheiro não foi actualizado." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Receita actualmente em execução (ISTO É UM ERRO)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Receita de dependências em execução (ISTO É UM ERRO)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Actualizado com sucesso." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Precisa de actualização (-q está definido)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Falha ao actualizar." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valor inválido no membro \"command_state\"!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Ficheiros" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# estatísticas da hash-table dos ficheiros:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: campo \"%s\" não armazenado em cache: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "primeiro argumento de função \"word\" não-numérico" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "o primeiro argumento de função \"word\" tem de ser maior que 0" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "primeiro argumento de função \"wordlist\" não-numérico" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "segundo argumento de função \"wordlist\" não-numérico" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "primeiro argumento de função \"wordlist\" não-numérico" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "segundo argumento de função \"wordlist\" não-numérico" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) falhou (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) falhou (e=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() falhou (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() falhou\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "A limpar ficheiro batch temporário %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "ficheiro: nome em falta" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "abrir: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "escrever: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "fechar: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "ficheiro: demasiados argumentos" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "ler: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "ficheiro: operação inválida: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "número insuficiente de argumentos (%d) para a função \"%s\"" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "não implementada nesta plataforma: função \"%s\"" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "chamada não terminada à função \"%s\": \"%c\" em falta" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Nome de função vazio" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nome de função inválido: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Nome de função muito longo: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Número mínimo de argumentos (%u) inválido para a função %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Número máximo de argumentos (%u) inválido para a função %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: a opção \"%s\" é ambígua\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: a opção \"--%s\" não permite um argumento\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: a opção \"%c%s\" não permite um argumento\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: a opção \"%s\" requer um argumento\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opção não reconhecida \"--%s\"\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opção não reconhecida \"%c%s\"\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opção ilegal -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opção inválida -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opção requer um argumento -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: a opção \"-W %s\" é ambígua\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: a opção \"-W %s\" não permite argumentos\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: a expandir \"%s\"\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: a avaliar \"%s\"\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "impossível alocar %lu bytes para a tabela de hash: memória esgotada" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Load=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Collisions=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "A procurar regra implícita para \"%s\".\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "A procurar regra implícita de membro de arquivo para \"%s\".\n" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "A procurar regra implícita de membro de arquivo para \"%s\".\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "A evitar recursividade de regra implícita.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "A tentar regra padrão com haste \"%.*s\".\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Haste muito longa: \"%s%.*s\".\n" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "A rejeitar pré-requisito de regra \"%s\" impossível.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "A rejeitar pré-requisito implícito \"%s\" impossível.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "A tentar pré-requisito de regra \"%s\".\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "A tentar pré-requisito implícito \"%s\".\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "O ficheiro \"%s\" não existe.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: alvo actualizado \"%s\" devido a: %s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Pré-requisito \"%s\" do alvo \"%s\" não existe.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Encontrado pré-requisito \"%s\" como VPATH \"%s\"\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "A procurar regra com ficheiro intermédio \"%s\".\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "A procurar regra com ficheiro intermédio \"%s\".\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "A rejeitar pré-requisito de regra \"%s\" impossível.\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Sem regra implícita para \"%s\".\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Encontrada uma regra implícita para \"%s\".\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "A procurar regra implícita para \"%s\".\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Sem regra implícita para \"%s\".\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "Impossível criar ficheiro temporário\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (núcleo despejado)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorado)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Erro %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** A aguardar por trabalhos não terminados...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Filho vivo %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (remoto)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "A recolher filho ganhador %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "A recolher filho perdedor %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "A limpar ficheiro batch temporário %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "A limpar ficheiro batch temporário %s falhou (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "A remover filho %p PID %s%s da cadeia.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Símbolo lançado para filho %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() falhou ao lançar processo (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Contados %d argumentos no lançamento falhado\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "A pôr filho %p (%s) PID %s%s na cadeia.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Obtido símbolo para filho %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: alvo actualizado \"%s\" devido a: %s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: alvo \"%s\" não existe" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "Impossível forçar limites de carga neste sistema operativo" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "Impossível forçar limite de carga: " + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "não há mais gestão de ficheiros: impossível duplicar stdin\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "não há mais gestão de ficheiros: impossível duplicar stdout\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "não há mais gestão de ficheiros: impossível duplicar stderr\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "impossível restaurar stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "impossível restaurar stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "impossível restaurar stderr\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "fazer pid %s de filho recolhido, ainda à espera por pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: o espaço de ambiente pode estar esgotado" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL alterada (era \"%s\", é agora \"%s\")\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "A criar ficheiro batch temporaÅ•io %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Conteúdo do ficheiro batch:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Conteúdo do ficheiro batch:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (linha %d) Mau contexto de shell (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Falha ao abrir a tabela global de símbolos: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Objecto carregado %s não está declarado como compatível GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Falha ao carregar símbolo %s de %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nome de símbolo vazio para carga: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "A carregar símbolo %s de %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "A operação \"load\" não é suportada nesta plataforma." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opções:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m ignora para compatibilidade.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make faz todos os alvos incondicionalmente.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C PASTA, --directory=PASTA\n" +" muda para PASTA antes de qualquer outra " +"coisa.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d imprime muita informação de depuração.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=BANDEIRAS] imprime vários tipos de informação de " +"depuração.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" substitui as variáveis de ambiente com os " +"makefiles.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E CADEIA, --eval=CADEIA Avalia CADEIA como declaração makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n" +" lê FICHEIRO como makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help mostra esta mensagem e sai.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors ignora erros das receitas.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I PASTA, --include-dir=PASTA\n" +" procura em PASTA por makefiles incluídos.\n" + +#: src/main.c:344 +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 só vez; tarefas " +"infinitas sem argumento.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going continua quando alguns alvos não podem ser " +"feitos.\n" + +#: src/main.c:350 +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ão começa múltiplas tarefas a não ser que a " +"carga seja menor que N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times usa a última mtime entre ligações simbólicas e " +"alvo.\n" + +#: src/main.c:355 +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ão executa realmente nenhuma receita; só as " +"imprime.\n" + +#: src/main.c:358 +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" +" Considera FICHEIRO muito antigo e não o " +"refaz.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TIPO], --output-sync[=TIPO]\n" +" sincroniza saída de tarefas paralelas por " +"TIPO.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base imprime a base de dados interna do make.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question não executa receitas; estado de saída mostra " +"actualização.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules desactiva as regras implícitas internas.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables desactiva as definições de variáveis " +"internas.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet não fazer eco das receitas.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Ecoa receitas (desactiva o modo --silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" desliga -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr " -t, --touch tocar nos alvos em vez de os refazer.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace imprime informação de rastreio.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version mostra informação da versão e sai.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory imprime a pasta actual.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory desliga -w, mesmo que estivesse implicitamente " +"ligado.\n" + +#: src/main.c:392 +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" +" considea FICHEIRO infinitamente novo.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables avisa quando uma variável indefinida é " +"referenciada.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "erro de escrita: stdout" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "cadeia vazia inválida como nome de ficheiro" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "especificação de nível de depuração \"%s\" desconhecida" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [OPÇÕES] [ALVO] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa construído para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa construído para %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Reportar erros em \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: apanhado Interrupção/Excepção (código = 0x%lx, endereço = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Filtro de excepção não gerido chamado do programa %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Violação de acesso: operação de escrita no endereço 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Violação de acesso: operação de leitura no endereço 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() a definir default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "caminho de procura find_and_set_shell() define default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "desligar (ficheiro temporário): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"aviso: jobserver indisponível: a usar -j1. Adicionar \"+\" à regra-mãe make." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "aviso: -j%d forçado em submake: a repor modo jobserver." + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile da entrada padrão especificado duas vezes." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (ficheiro temporário)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "aviso: -j%d forçado em makefile: a repor modo jobserver." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Não são suportadas tarefas paralelas (-j) nesta platforma." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "A repor modo de tarefa única (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Não são suportadas ligações simbólicas: a desactivar -L" + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "A actualizar makefiles....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile \"%s\" pode entrar em ciclo; não será refeito.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: falha ao carregar" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Falha ao refazer makefile \"%s\"." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "makefile \"%s\" incluído não encontrado." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefile \"%s\" não encontrado" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Impossível voltar à pasta original." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "A re-executar[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL contém mais de um alvo" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Sem alvos" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Sem alvos especificados e sem makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "A actualizar alvos objectivo...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "aviso: detectado desvio do relógio. A build pode estar incompleta." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "a opção \"%s%s\" requer um argumento de cadeia não-vazia" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "a opção \"-%c\" requer um argumento inteiro positivo" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sConstruído para %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sConstruído para %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicença GPLv3+: GNU GPL versão 3 ou posterior \n" +"%sIsto é um programa grátis: pode alterá-lo e redistribuí-lo.\n" +"%sNÃO Hà QUALQUER GARANTIA, até ao limite da Lei.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Base de dados make, impressa em %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Base de dados make terminada em %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "A usar receita predefinida para \"%s\".\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "A criar ficheiro batch temporaÅ•io %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "desligar (ficheiro temporário): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporário)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (ficheiro temporário)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: a entrar em pasta desconhecida\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: a sair duma pasta desconhecida\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: a entrar na pasta \"%s\"\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: a sair da pasta \"%s\"\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: a entrar em pasta desconhecida\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: a sair duma pasta desconhecida\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: a entrar na pasta \"%s\"\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: a sair da pasta \"%s\"\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Parar.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "a criar túnel de tarefas" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "a enganar túnel de tarefas" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "a iniciar túnel de jobserver" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "erro interno: cadeia --jobserver-auth \"%s\" inválida" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "escrever jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "encerramento de jobserver" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect túnel de tarefas" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "ler túnel de tarefas" + +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "erro interno: cadeia --jobserver-auth \"%s\" inválida" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "A ler makefiles...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "A ler makefile \"%s\"" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (sem objectivo predefinido)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (caminho de procura)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (não importa)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (sem expansão ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "A slatar UTF-8 BOM em makefile \"%s\"\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "A saltar UTF-8 BOM no buffer makefile\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintaxe inválida em condicional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "a receita começa antes do primeiro alvo" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "regra em falta antes da receita" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "separador em falta (queria usar TAB em vez de 8 espaços?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "separador em falta" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "padrão de alvo em falta" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "múltiplos padrões de alvo" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "o padrão de alvo não contém \"%%\"" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "\"endif\" em falta" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "nome de variável vazio" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "texto estranho após directiva \"define\"" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "\"endef\" em falta, \"define\" não terminado" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "texto estranho após directiva \"endef\"" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "texto estranho após directiva \"%s\"" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "\"%s\" estranho" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "só um \"else\" por condicional" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Definição de variável específica do alvo mal formada" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "os pré-requisitos não podem ser definidos em receitas" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "alvos agrupados têm de fornecer uma receita" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "regras de padrão implícitas e estáticas misturadas" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "regras de padrão implícitas e normais misturadas" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "alvo \"%s\" não corresponde ao alvo padrão" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "ficheiro alvo \"%s\" tem ambas as entradas : e ::" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "alvo \"%s\" dado mais de uma vez na mesma regra" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "aviso: a sobrepor receita para o alvo \"%s\"" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "aviso: a ignorar receita antiga para o alvo \"%s\"" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** regras implícitas e normais misturadas: sintaxe obsoleta" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "aviso: a sobrepor participação no grupo para o alvo \"%s\"" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "aviso: visto carácter NUL; resto da linha ignorado" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "aviso: a sobrepor receita para o alvo \"%s\"" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Nada a fazer para \"%s\"." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "\"%s\" está actualizado." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "A podar ficheiro \"%s\".\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sSem regra para fazer o alvo \"%s\", necessária a \"%s\"%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sSem regra para fazer o alvo \"%s\"%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "A considerar o ficheiro alvo \"%s\"\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Tentativa recente falhada de actualizar o ficheiro \"%s\".\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Ficheiro \"%s\" já considerado.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Ainda a actualizar o ficheiro \"%s\".\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Terminou a actualização do ficheiro \"%s\".\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "O ficheiro \"%s\" não existe.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Aviso: o ficheiro \"%s\" .LOW_RESOLUTION_TIME tem um carimbo de alta " +"resolução" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Pré-requisito \"%s\" do alvo \"%s\" não existe.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "A usar receita predefinida para \"%s\".\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Dependência %s <- %s circular abandonada." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Terminados os pré-requisitos do ficheiro alvo \"%s\",\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Estão-se a fazer os pré-requisitos de \"%s\".\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "A desistir do ficheiro alvo \"%s\".\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Alvo \"%s\" não refeito devido a erros." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Pré-requisito \"%s\" é order-only para o alvo \"%s\".\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Pré-requisito \"%s\" do alvo \"%s\" não existe.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Pré-requisito \"%s\" é mais novo que o alvo \"%s\".\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Pré-requisito \"%s\" é mais velho que o alvo \"%s\".\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "O alvo \"%s\" é dois-pontos duplo e não tem pré-requisitos.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "Sem receita para \"%s\" e sem pré-requisitos realmente alterados.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "A fazer \"%s\" devido a bandeira always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Sem necessidade de refazer o alvo \"%s\"" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; a usar nome VPATH \"%s\"" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Necessário refazer o alvo \"%s\".\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " A ignorar nome VPATH \"%s\".\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Receita de \"%s\" em execução.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Falha ao refazer ficheiro alvo \"%s\".\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Ficheiro alvo \"%s\" refeito com sucesso.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "O ficheiro alvo \"%s\" tem de ser refeito sob -q.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "A usar comandos predefinidos para \"%s\".\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Aviso: o ficheiro \"%s\" tem a hora de modificação %s s no futuro" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "elemento .LIBPATTERNS \"%s\" não é um padrão" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "A alfândega não exportará: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Regras implícitas" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Sem regras implícitas." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u regras implícitas, %u (%.1f%%) terminal." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "ERRO: num_pattern_rules está errado! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "sinal desconhecido" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Desligar" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interromper" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Sair" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instrução ilegal" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Armadilha de rastreio/ponto de quebra" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abortado" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Armadilha IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Armadilha EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Excepção de vírgula flutuante" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Morto" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Erro de bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Falta de segmentação" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Má chamada de sistema" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Túnel quebrado" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarme" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminado" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Sinal 1 definido pelo utilizador" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Sinal 2 definido pelo utilizador" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Filho saiu" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Falha de energia" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Parado" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Parado (entrada tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Parado (saída tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Parado (sinal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Excedido limite de tempo da CPU" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Excedido limite de tamanho do ficheiro" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Temporizador virtual expirado" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Temporizador de perfil expirado" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Janela alterada" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuado" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condição I/O urgente" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Possível I/O" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Recurso perdido" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Sinal de perigo" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Pedido de informação" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Co-processador de vírgula flutuante não disponível" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Sem buffers strcache\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s buffers strcache: %lu (%lu) / cadeias = %lu / capacidade = %lu B / média " +"= %lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s buffer actual: tamanho = %hu B / usado = %hu B / total = %hu / média = %u " +"B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s outro usado: tamanho = %lu B / total = %lu / média = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s outro livre: tamanho = %lu B / máximo = %lu B / mínimo = %lu B / média = " +"%hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s desempenho strcache: procuras = %lu / taxa de sucesso = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# estatísticas da hash-table:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automático" + +#: src/variable.c:1789 +msgid "default" +msgstr "predefinido" + +#: src/variable.c:1792 +msgid "environment" +msgstr "ambiente" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "ambiente sob -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "linha de comandos" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "directiva \"override\"" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (de \"%s\", linha %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# conjunto de variáveis de estatísticas hash-table:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variáveis\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valores de variáveis específicas de padrão" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Sem valores de variáveis específicas de padrão" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valores de variáveis específicas de padrão" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "aviso: variável \"%.*s\" indefinida" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() falhou com %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-aviso, poderá ter de reactivar a gestão CTRL-Y a partir de DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "CD INTERNO %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Anexar saída a %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Anexar %.*s e limpar\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "A executar antes %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Caminhos de procura VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Sem caminhos de procura \"vpath\"." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# Caminhos de procura %u \"vpath\".\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Sem caminho de procura geral (variável \"VPATH\")." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Caminho de procura geral (variável \"VPATH\")." + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Ranhuras jobserver limitadas a %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "a criar semáforo jobserver: (erro %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "erro interno: impossível abrir semáforo jobserver '%s': (erro %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Cliente jobserver (semáforo %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "libertar semáforo jobserver: (erro %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "espera de semáforo ou processo filho: (erro %ld: %s)" + +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "tipo de output-sync \"%s\" desconhecido" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nome de função inválido: %s" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: utilizador %lu (real %lu), grupo %lu (real %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Acesso inicializado" + +#~ msgid "User access" +#~ msgstr "Acesso de utilizador" + +#~ msgid "Make access" +#~ msgstr "Acesso make" + +#~ msgid "Child access" +#~ msgstr "Acesso filho" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TIPO] (--output-sync[=TIPO]) não está configurado para esta versão." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Cliente jobserver (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "Túnel jobserver" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: comando não encontrado\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: comando não encontrado\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: programa de shell não encontrado" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s vai suspender por 30 segundos..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "feito sleep(30). A continuar.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Erro desconhecido %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Aviso: o ficheiro \"%s\" tem a hora de modificação no futuro" + +#~ msgid " terminal." +#~ msgstr " terminal." diff --git a/local/recipes/dev/gnu-make/source/po/pt_BR.gmo b/local/recipes/dev/gnu-make/source/po/pt_BR.gmo new file mode 100644 index 0000000000..6eff4e05a7 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/pt_BR.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/pt_BR.po b/local/recipes/dev/gnu-make/source/po/pt_BR.po new file mode 100644 index 0000000000..9ed3a63cf4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/pt_BR.po @@ -0,0 +1,2743 @@ +# Mensagem do GNU make em Português (Brasil) +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This file is distributed under the same license as the make package. +# Fábio Henrique F. Silva , 2000. +# Fábio Henrique F. Silva , 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 +# Fábio Henrique F. Silva , 2017, 2018, 2019 +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.2.91\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2019-10-04 22:31-0300\n" +"Last-Translator: Fábio Henrique F. Silva \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.0.6\n" + +# Caso você encontre alguma mensagem que não está bem traduzida, por +# favor me informe dando sua sugestão. +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "característica não suportada: '%s' " + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "o touch não está disponível no VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Arquivo '%s' não existe" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: '%s' não é um arquivo válido" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: O membro '%s' não existe em '%s'" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: O ar_member_touch retornou um código de erro inválido em '%s'" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "o lbr$set_module() falhou ao obter informações do módulo, estado = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() falhou com estado = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"erro na abertura da biblioteca '%s' para localizar o status do membro %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Membro '%s'%s: %ld bytes de %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (o nome pode estar truncado)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Data %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, modo = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "O comando tem muitas linhas (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Quebra.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "** [%s] O arquivo membro '%s' pode ser falso. Não foi apagado." + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "** O arquivo membro '%s' pode ser falso. Não foi apagado." + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "** [%s] Apagando arquivo '%s'" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "** Apagando arquivo '%s'" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# comandos a executar" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (embutido):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (de '%s', linha %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Diretórios\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: não pôde ser estabelecido.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (chave %s, mtime %d): não pôde ser aberto.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): não pôde ser aberto.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (dispositivo %ld, inode %ld): não pôde ser aberto.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (chave %s, mtime %ull): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispositivo %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Não" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " arquivos, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "não" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " impossibilidades" + +#: src/dir.c:1180 +msgid " so far." +msgstr " até agora." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " impossibilidades em %lu diretórios.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Variável recursiva '%s' faz referência a ela mesma (eventualmente)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "referência a variável não finalizada" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Os comandos especificados para o arquivo '%s' em %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"Os comandos para o arquivo '%s' foram encontrados por uma regra implícita," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "mas '%s' é considerado o mesmo arquivo que '%s'." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "Os comandos para '%s' serão ignorados em favor daqueles para '%s'." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "não pôde renomear de dois-pontos '%s' para dois-pontos duplos '%s'" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "não pôde renomer de dois-pontos duplos '%s' para dois-pontos '%s'" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "** Apagando arquivo intermediário '%s'" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Apagando arquivo intermediário...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Hora atual" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Data/Hora fora de faixa; substituindo %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Não é um alvo:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Arquivo importante (prerequisito de .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Alvo Falso (prerequisito de .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Linha de Comando do Alvo." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Um Padrão, arquivo MAKEFILES ou -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Regra implícita" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Pesquisa por regra implícita concluida." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Pesquisa por regra implícita não concluida." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Derivação padrão implícita/estática: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# O arquivo é um pré-requisito intermediário." + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Arquivo importante (prerequisito de .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Alvo Falso (prerequisito de .PHONY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Também faz:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# O Período da modificação nunca foi verificado." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# O Arquivo não existe." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# O Arquivo está desatualizado." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Última modificação %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# O Arquivo foi atualizado." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# O Arquivo não foi atualizado." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Comandos em execução (ISTO É UMA FALHA)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Comandos de dependências em execução (ISTO É UMA FALHA)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Atualizado com sucesso." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Precisa ser atualizado (-q está definido)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Problemas com a atualização." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valor inválido no membro 'command_state' !" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Arquivos" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# tabela hash de arquivos:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Campo '%s' não memorizado: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "primeiro argumento não numérico para a função 'word'" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "o primeiro argumento para a função 'word' deve ser maior que 0" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "primeiro argumento não numérico para a função 'wordlist' " + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "segundo argumento não numérico para a função 'wordlist' " + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "primeiro argumento não numérico para a função 'wordlist' " + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "segundo argumento não numérico para a função 'wordlist' " + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "" +"windows32_openpipe(): DuplicateHandle(In) falhou (e=%ld)\n" +" \n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "" +"windows32_openpipe(): DuplicateHandle(Err) falhou (e=%ld)\n" +"\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() falhou (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() falhou\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Apagando o arquivo de lote temporário %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "arquivo: faltando o nome do arquivo" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "aberto: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "gravação: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "fechado: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "arquivo: muitos argumentos" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "lido: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "arquivo: operação de arquivo inválida: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "O número de argumentos é insuficiente (%d) para a função '%s' " + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "A função '%s' não foi implementada nesta plataforma " + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "Chamada não terminada para a função '%s': faltando '%c' " + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Nome da função vazio" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Nome da função inválido: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Nome da função muito longo: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "O número mínimo de argumentos é inválido (%u) para a função %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "O número máximo de argumentos é inválido (%u) para a função %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "" +"%s: a opção '%s' é ambigua\n" +"\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "" +"%s: a opção '--%s' não permite um argumento\n" +"\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: a opção '%c%s' não permite um argumento\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "" +"%s: a opção '%s' requer um argumento\n" +"\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "" +"%s: a opção é desconhecida '--%s'\n" +"\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "" +"%s: a opção é desconhecida '%c%s'\n" +"\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: a opção é ilegal -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: a opção é inválida -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opção requer um argumento -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "" +"%s: a opção '-W %s' é ambigua\n" +"\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "" +"%s: a opção '-W %s' não permite um argumento\n" +"\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expandindo '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Avaliando '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "não foi possível alocar %lu bytes para a tabela hash: memória cheia" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Carga=%lu/%lu=%.0f%%," + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u," + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Colisões=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "" +"Procurando por uma regra implícita para '%s'.\n" +" \n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "" +"Procurando por uma regra implícita de arquivo-membro para '%s'.\n" +" \n" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "" +"Procurando por uma regra implícita de arquivo-membro para '%s'.\n" +" \n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Evitando recursão em regra implícita.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "" +"Tentando padrão para regra com '%.*s'.\n" +"\n" + +#: src/implicit.c:506 +#, fuzzy, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Desvio muito longo: '%.*s'.\n" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"Rejeitando pré-requisito para regra '%s'.\n" +"\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Rejeitando pré-requisitos implícitos '%s'.\n" +"\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "" +"Tentanto pré-requisito para a regra '%s'.\n" +"\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "" +"Tentando pré-requisito implícito '%s'.\n" +"\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "" +"O arquivo '%s' não existe.\n" +"\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: alvo atualizado '%s'devido a: %s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Pré-requisitos '%s' do alvo '%s' não existem.\n" +"\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "" +"Pré-requisito '%s' encontrado como VPATH '%s'\n" +"\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "" +"Procurando uma regra com o arquivo intermediário '%s'.\n" +"\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "" +"Procurando uma regra com o arquivo intermediário '%s'.\n" +"\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" +"Rejeitando pré-requisito para regra '%s'.\n" +"\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "" +"Nenhuma regra implícita encontrada para '%s'.\n" +"\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "" +"Regra implícita encontrada para '%s'.\n" +"\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "" +"Procurando por uma regra implícita para '%s'.\n" +" \n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "" +"Nenhuma regra implícita encontrada para '%s'.\n" +"\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "Não foi possível criar um arquivos temporário\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (arquivo core criado)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr "(ignorado)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Erro %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "** Esperando que outros processos terminem." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Filho ativo %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (remoto)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Descarregando processo filho %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Descarregando processo filho %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Apagando o arquivo de lote temporário: %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Ao apagar o arquivo de lote temporário %s houve uma falha (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Removendo o processo filho %p PID %s%s da cadeia.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Liberado sinalizador para o processo filho %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() falhou ao executar o processo (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Contados %d args na falha de execução\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Colocando o processo filho %p (%s) PID %s%s na cadeia.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Obtido o sinalizador para o processo filho %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: alvo atualizado '%s'devido a: %s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s Alvo '%s' não existe" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "não pôde forçar os limites de carga neste sistema operacional" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "não pôde forçar a carga limite:" + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "sem manipuladores de arquivos: não é possível duplicar stdin\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "sem manipuladores de arquivos: não é possível duplicar stdout\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "sem manipuladores de arquivos: não é possível duplicar stderr\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Não é possível restaurar stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Não é possível restaurar stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Não é possível restaurar stderr\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "processo filho descarregado: pid %s, aguardando pelo pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: o espaço de ambiente pode estar cheio" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "" +"$SHELL alterado (era '%s' e agora é '%s')\n" +"\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Criando arquivo de lote temporário %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Conteúdo do arquivo de lote:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Conteúdo do arquivo de lote:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (linha %d) contexto inválido (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Falha ao abrir a tabela de símbolos globais: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "O objeto carregado %s não foi declarado compatível com a GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Falhou ao carragar o símbolo %s de %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nome do símbolo vazio: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Carregando símbolo %s de %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "A operação 'load' não é suportada nesta plataforma." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Opções:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorado para compatibilidade.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" +" -B, --always-make Processa todos os alvos incondicionalmente.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRETÓRIO, --directory=DIRETÓRIO\n" +" Muda para o DIRETÓRIO antes de fazer algo.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Imprime muita informação de depuração.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=OPÇÕES] Imprime vários tipos de informações de " +"depuração.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Assume os valores das variáveis de ambiente.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +"-E STRING, --eval=STRING Avalia a STRING como uma declaração para um " +"makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ARQUIVO, --file=ARQUIVO, --makefile=ARQUIVO\n" +" Lê o ARQUIVO como se fosse um arquivo make.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Imprime esta mensagem e sai.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignora os erros dos comandos.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRETÓRIO, --include-dir=DIRETÓRIO\n" +" Pesquisa o DIRETÃ’RIO por arquivos make a " +"incluir.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Permite N tarefas de uma vez; tarefas infinitas " +"sem argumentos.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Continua mesmo que alguns alvos não possam ser " +"processados.\n" + +#: src/main.c:350 +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ão inicia múltiplas tarefas a menos que a " +"carga seja menor que N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +"-L, --check-symlink-times Usa o tempo mais antigo entre o vínculo simbólico " +"e o alvo.\n" + +#: src/main.c:355 +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ão executa quaisquer comandos; apenas imprime-" +"os.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o ARQUIVO, --old-file=ARQUIVO, --assume-old=ARQUIVO\n" +" Considera o ARQUIVO como muito antigo e não " +"reprocessá-o.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Sincroniza a saída de tarefas paralelas pelo " +"TIPO.\n" + +#: src/main.c:364 +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" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Não executa os comandos; O código de saida " +"indica se está atualizado.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules Desabilita as regras implícitas.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Desabilita a configuração das variáveis " +"embutidas.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Não ecoa os comandos.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Ecoa as instruções (desabilita o modo --" +"silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Desativa a opção -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Executa um `touch' nos alvos ao invés de " +"reprocessá-los.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " -trace Imprime informação de depuração.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version Imprime o número de versão do make e sai.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Imprime o diretório atual.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Desativa a opção -w, mesmo que ela esteja " +"implicitamente ativada.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W ARQUIVO, --what-if=ARQUIVO, --new-file=ARQUIVO, --assume-new=ARQUIVO\n" +" Considera o ARQUIVO infinitamente novo.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Avisa quando um variável não definida for " +"referenciada.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "Erro de gravação: stdout" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "Cadeia de caracteres vazia não é válida como nome de arquivo" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "nível de depuração desconhecido: '%s' " + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Uso: %s [opções] [alvo] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Este programa foi compilado para %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Este programa foi compilado para %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Informe os problemas para .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Interrupção/Exceção capturada (código = 0x%lx, endereço = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Não pôde tratar o filtro de exceção chamado por %s\n" +"CódigoExceção = %lx\n" +"SinalExceção = %lx\n" +"EndereçoExceção = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Violação de acesso: operação de escrita no endereço 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Violação de acesso: operação de leitura no endereço 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() definiu o default_shell = %s\n" + +#: src/main.c:1098 +#, 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" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "desvinculado (arquivos temporário): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "aviso: jobserver indisponível: usando -j1. Inclua '+' na regra pai. " + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "aviso: -j%d forçado no submake: reiniciando o modo jobserver." + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile na entrada padrão especificado duas vezes." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (arquivo temporário)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "aviso: -j%d forçado no submake: reiniciando o modo jobserver." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Tarefas paralelas (-j) não são suportadas nesta plataforma." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Reiniciando no modo de tarefa única (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Vínculos simbólicos não são suportados: desabilite -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Atualizando os arquivos makefiles ...\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "" +"O arquivo '%s' pode estar em loop; não reprocessá-lo.\n" +"\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: falhou ao carregar" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Problemas ao reprocessar o arquivo '%s'. " + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Arquivo '%s' incluido não foi encontrado. " + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "O arquivo '%s' não foi encontrado. " + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Não foi possível voltar ao diretório original." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Re-executando[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ". DEFAULT_GOAL contém mais do que um alvo" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Sem alvo" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Nenhum alvo indicado e nenhum arquivo make encontrado" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Atualizando os objetivos finais...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "aviso: O relógio está errado. Sua compilação pode ficar incompleta." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "a opção '%s%s' requer um argumento não vazio " + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "a opção '-%c' requer um argumento inteiro positivo " + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sCompilado para %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sCompilado para %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicença GPLv3+: GNU GPL versão 3 ou posterior \n" +"%sIsto é um aplicativo livre: você pode alterá-lo e redistribui-lo " +"livremente.\n" +"%sNÃO Hà GARANTIAS, exceto o que for permitido por lei.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Banco de dados do Make, impresso em %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Banco de dados do Make finalizado em %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "" +"Usando os comandos padrões para '%s'.\n" +"\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Criando arquivo de lote temporário %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "desvinculado (arquivos temporário): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (arquivo temporário)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (arquivo temporário)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Entrando em um diretório desconhecido\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Saindo de um diretório desconhecido\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "" +"%s: Entrando no diretório '%s'\n" +"\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "" +"%s: Saindo do diretório '%s'\n" +"\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Entrando em um diretório desconhecido\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Saindo de um diretório desconhecido\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "" +"%s[%u]: Entrando no diretório '%s'\n" +"\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "" +"%s[%u]: Saindo do diretório '%s'\n" +"\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Pare.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "criando canalização de tarefas" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplicando canalização de tarefas" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "inicializando a canalização do jobserver" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "erro interno: valor '%s' inválido para --jobserver-auth" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "gravar jobserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "servidor de job desligado" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "tarefas canalizadas pselect" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "tarefas canalizadas lidas" + +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "erro interno: valor '%s' inválido para --jobserver-auth" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Lendo arquivos makefile ...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Lendo arquivos makefile '%s' " + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (não há objetivo padrão)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (caminho de pesquisa)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (sem importância)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (sem expansão ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "Ignorando UTF-8 BOM no makefile '%s'\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Ignorando UTF-8 BOM no makefile buffer\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "síntaxe inválida na condicional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "comandos começam antes do primeiro alvo" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "falta uma regra antes dos comandos" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "faltando separador (você pensou em TAB ao invés de 8 espaços?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "faltando o separador" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "faltando o padrão dos alvos" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "múltiplos padrões para o alvo" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "padrão para o alvo não contém '%%' " + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "faltando 'endif' " + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "nome de variável vazio" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "Texto estranho depois da diretiva 'define' " + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "faltando 'endef', 'define' não terminado " + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "Texto estranho depois da diretiva 'endef'" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "Texto estranho depois da diretiva '%s' " + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "'%s' estranho " + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "use apenas um 'else' por condicional " + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Definição de variável para o alvo mau formada" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "os pré-requisitos não podem ser definidos no comando" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "alvos agrupados devem fornecer uma instrução" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "As regras implícitas e de padrão estático misturadas" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "As regras implícitas e normais misturadas" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "O alvo '%s' não coincide com o padrão " + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "O arquivo alvo '%s' tem entradas : e :: " + +#: src/read.c:2176 +#, 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. " + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "aviso: sobrescrevendo os comandos para o alvo '%s'" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "aviso: ignorando comandos antigos para o alvo '%s' " + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "As regras implícitas e normais misturadas: síntaxe obsoleta" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "aviso: sobrescrevendo o grupo para o alvo '%s'" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "aviso: caracter NUL detetado; o resto da linha foi ignorado" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "aviso: sobrescrevendo os comandos para o alvo '%s'" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Nada a ser feito para '%s'. " + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "'%s' está atualizado. " + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "" +"Atualizando o arquivo '%s'.\n" +"\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sSem regra para processar o alvo '%s', necessário por '%s'%s " + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sSem regra para processar o alvo '%s'%s " + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "" +"Considerando o arquivo alvo '%s'.\n" +"\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "" +"Tentativa de atualizar o arquivo '%s' falhou.\n" +"\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "" +"O arquivo '%s' já foi considerado.\n" +"\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "" +"Ainda está atualizando o arquivo '%s'.\n" +"\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "" +"Atualização do arquivo '%s' concluida.\n" +"\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "" +"O arquivo '%s' não existe.\n" +"\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Aviso: arquivo .LOW_RESOLUTION_TIME '%s' tem uma etiqueta de tempo de " +"alta resolução " + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "" +"Pré-requisitos '%s' do alvo '%s' não existem.\n" +"\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "" +"Usando os comandos padrões para '%s'.\n" +"\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Dependência circular %s <- %s abandonada." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "" +"Pré-requisitos do alvo '%s' concluido.\n" +"\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "" +"Pré-requisitos do '%s' estão sendo criados.\n" +"\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "" +"Desistindo do arquivo '%s'.\n" +"\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "O alvo '%s' não foi reprocessado por causa de erros. " + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "" +"Pré-requisito '%s' está ordenado para o alvo '%s'.\n" +"\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "" +"Pré-requisitos '%s' do alvo '%s' não existem.\n" +"\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "" +"Pré-requisito '%s' é mais novo do que o alvo '%s'.\n" +"\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "" +"Pré-requisito '%s' é mais antigo do que o alvo '%s'.\n" +"\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "O alvo '%s' são dois-pontos duplos e não tem pré-requisitos.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" +"Nenhum comando para '%s' e nenhum pré-requisito foi alterado.\n" +"\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "" +"Processando '%s' devido a opção always-make.\n" +"\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Não é necessário reprocessar o alvo '%s' " + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; usando o nome VPATH '%s' " + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "" +"O alvo '%s' deve ser reprocessado.\n" +"\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr "" +" Ignorando o nome VPATH '%s'.\n" +"\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "" +"Os comandos de '%s' estão rodando.\n" +"\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "" +"Falha ao reprocessar o alvo '%s'.\n" +"\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "" +"Alvo '%s' reprocessado com sucesso.\n" +"\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "" +"O alvo '%s' precisa ser reprocessado sob -q.\n" +"\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "" +"Usando os comandos padrões para '%s'.\n" +"\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "** Aviso: O arquivo '%s' está com a hora %s s adiantada " + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "O elemento .LIBPATTERNS '%s' não é um padrão " + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customizações não exportadas: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Regras implícitas." + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Faltam as regras implícitas." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u regras implícitas, %u (%.1f%%) terminal." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "ERRO: num_pattern_rules errada! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "sinal desconhecido" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Desconectar" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Interrupção" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Sair" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Instrução ilegal" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Aviso Trace/breakpoint" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Abortado" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Aviso IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Aviso EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Exceção de ponto flutuante" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Finalizado" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Erro de barramento" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Falha de segmentação" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Chamada de sistema inválida" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Canalização interrompida" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Despertador" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminado" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Sinal 1 definido pelo usuário" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Sinal 2 definido pelo usuário" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "O Filho saiu" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Falha na Energia Elétrica" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Parado" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Parado (entrada tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Parado (saida tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Parado (sinal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Tempo de CPU excedido" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Tamanho do arquivo excedido" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Temporizador virtual expirou" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Temporizador de perfil expirou" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Janela alterada" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuação" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Condição de E/S urgente" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Possível E/S" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Recurso perdido" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Sinal perigoso" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Solicitação de informação" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Co-processador aritmético indisponível" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Não há strcache buffers\n" + +#: src/strcache.c:304 +#, c-format +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 / armazenamento = %lu / med = " +"%lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s buf atual: tamanho = %hu B / usado = %hu B / contado = %hu / med = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s outro usado: total = %lu B / contado = %lu / med = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s outro livre: total = %lu B / max = %lu B / min = %lu B / med = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s desempenho strcache: pesquisados = %lu / encontrados = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# tabela hash de arquivos:\n" +"#" + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automático" + +#: src/variable.c:1789 +msgid "default" +msgstr "padrão" + +#: src/variable.c:1792 +msgid "environment" +msgstr "ambiente" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "ambiente sob -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "linha de comando" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "diretiva 'override' " + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (de '%s', linha %lu) " + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# tabela hash do conjunto de variávies:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variáveis\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valores da variável de padrões específicos" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Faltam valores para variável de padrões específicos" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valores para variável de padrões específicos" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "aviso: variável indefinida '%.*s' " + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() falhou com %d\n" + +#: src/vmsjobs.c:244 +#, 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" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "CD EMBUTIDO %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Saida redirecionada para %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Acrescentado %.*s e limpo\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Executando %s ao invés de\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Caminho VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Sem caminho 'vpath'. " + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u caminhos 'vpath'.\n" +"\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Sem caminho genérico (variável 'VPATH')." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Caminho genérico (variável 'VPATH'):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Slots Jobserver limitados a %d)\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "criando semáforos jobserver: (Erro %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "erro interno: falha ao abrir o semáforo jobserver '%s': (Erro %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Cliente Jobserver (semáforo %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "liberar semáforos do jobserver: (Erro %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "semáforo ou processo filho espera: (Erro %ld: %s)" + +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "tipo output-sync desconhecido '%s'" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Nome da função inválido: %s" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: usuário %lu (real %lu), grupo %lu (real %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Acesso inicializado" + +#~ msgid "User access" +#~ msgstr "Acesso do usuário" + +#~ msgid "Make access" +#~ msgstr "Acesso do make" + +#~ msgid "Child access" +#~ msgstr "Acesso filho" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TYPE] (--output-sync[=TYPE]) não está configurado para esta compilação." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Cliente Jobserver (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "canalização do jobserver" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s %s: Comando não encontrado\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Comando não encontrado\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Interpretador de comandos não encontrado" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s está suspenso por 30 segundos..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) concluido. Continuando.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Erro desconhecido %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "** Aviso: O arquivo '%s' está com a hora adiantada " + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "# Invalid value in `update_status' member!" +#~ msgstr "# Valor inválido no membro `update_status' !" + +#~ msgid "*** [%s] Error 0x%x (ignored)" +#~ msgstr "*** [%s] Erro 0x%x (ignorado)" + +#~ msgid "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] Erro 0x%x" + +#~ 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 "Invoking builtin recipe to update target `%s'.\n" +#~ msgstr "Chamando comandos internos para atualizar o alvo `%s'.\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "erro interno: múltiplas opções --jobserver-fds" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ msgid "virtual memory exhausted" +#~ msgstr "A memória virtual encheu" + +#~ msgid "write error" +#~ msgstr "erro de gravação" + +#~ 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 "Warning: Empty redirection\n" +#~ msgstr "Aviso: Redireção vazia\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "erro interno: `%s' command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "EMBUTIDO [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "RM EMBUTIDO %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Comando embutido desconhecido `%s'.\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Erro, comando vazio\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Entrada de %s redirecionada\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Erro redirecionado para %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Saida redirecionada para %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Erro de execução, %d\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" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sEste é um programa livre; veja o fonte para as condições de cópia.\n" +#~ "%sNão há garantias; nem mesmo de COMERCIALIZAÇÃO OU ATENDIMENTO A UMA\n" +#~ "%sFUNÇÃO EM PARTICULAR.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "`endef' extranho" + +#~ msgid "empty `override' directive" +#~ msgstr "diretiva `override' vazia" + +#~ msgid "invalid `override' directive" +#~ msgstr "diretiva `override' inválida" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-warning, CTRL-Y sairá do(s) subprocesso(s).\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Erro de sintaxe dentro de '\"'\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "Recebido um SIGSHLD; %u processos filhos descarregados.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Não especifique -j ou --jobs se o sh.exe não estiver disponível." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Reiniciando o make para o modo de trabalho único." + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "sem nome de arquivo para `%sinclude'" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "O alvo `%s' deixou pre-requisito padrão vazio" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Nenhum arquivo." diff --git a/local/recipes/dev/gnu-make/source/po/quot.sed b/local/recipes/dev/gnu-make/source/po/quot.sed new file mode 100644 index 0000000000..0122c46318 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1â€/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“â€/""/g diff --git a/local/recipes/dev/gnu-make/source/po/remove-potcdate.sin b/local/recipes/dev/gnu-make/source/po/remove-potcdate.sin new file mode 100644 index 0000000000..2436c49e78 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/local/recipes/dev/gnu-make/source/po/ro.gmo b/local/recipes/dev/gnu-make/source/po/ro.gmo new file mode 100644 index 0000000000..b2ede8f29b Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/ro.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/ro.po b/local/recipes/dev/gnu-make/source/po/ro.po new file mode 100644 index 0000000000..2a17574834 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/ro.po @@ -0,0 +1,2640 @@ +# Mesajele în limba română pentru pachetul make. +# Copyright © 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Remus-Gabriel Chelu , 2022. +# +# Cronologia traducerii fiÈ™ierului „makeâ€: +# Traducerea iniÈ›ială, făcută de R-GC, pentru versiunea make 4.2.93. +# Actualizare a traducerii pentru versiunea 4.3.90, făcută de R-GC, în 2022. +# Actualizare a traducerii pentru versiunea 4.3.91, făcută de R-GC, în 2022. +# Actualizare a traducerii pentru versiunea 4.3.92, făcută de R-GC, în 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU make 4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-24 12:06+0200\n" +"Last-Translator: Remus-Gabriel Chelu \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || ((n%100) > 0 && (n" +"%100) < 20)) ? 1 : 2);\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.1.1\n" + +# R-GC, scrie: +# după revizarea fiÈ™ierului, DȘ, zice: +# → aÈ™ folosi „funcÈ›ionalitateâ€, „caracteristica†se referă la +# însuÈ™ire/trăsătură (conform dexonline) +# *** +# Ok, corecÈ›ie aplicată (în contextul dat, cred că +# e o bună alegere) +# === +# după revizarea, din nou, a fiÈ™ierului cu ocazia +# trecerii la versiunea 4.3.91 È™i revizarea amănunÈ›ită +# a definiÈ›ilor pentru „caracteristică†și „funcÈ›ionalitate†+# din dexonline, revin la prima variantă a traducerii: +# «caracteristici». +# funcÈ›ionalitate ~= o caracteristică a cuiva, sau a +# unui dispozitiv este în stare de funcÈ›iune, este +# validă pentru a îndeplini un anumit scop sau +# funcÈ›iune. +# Exemplu: membrele sale, sunt complet funcÈ›ionale! +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "încercare de utilizare a unei caracteristici neacceptate: „%sâ€" + +# R-GC, scrie: +# o altă „versiune†a mesjului tradus, ar fi: +# „nu se poate executa «touch» asupra unui membru al unei arhive(unei părÈ›i de-o arhivă) pe VMS†+# *** +# Opinii/Idei? +# după revizarea fiÈ™ierului, DȘ, zice: +# → aici eu i-aÈ™ zice aÈ™a: „pe VMS nu este disponibilă modificare +# marcajelor de timp†sau „nu este disponibilă modificarea marcajelor de +# timp pe VMS†+# === +# CorecÈ›ie, aplicată +# traducerea iniÈ›ială, era: +# „nu se pot modifica marcajele de timp ale unui membru al unei arhive pe VMS†+#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "nu este disponibilă modificarea marcajelor de timp pe VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Arhiva „%s†nu există" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: %s nu este o arhivă validă" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Membrul „%s†nu există în „%sâ€" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: Cod de returnare greÈ™it de la ar_member_touch pe „%sâ€" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"lbr$set_module() nu a reuÈ™it să extragă informaÈ›iile despre modul, starea de " +"ieÈ™ire = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() a eÈ™uat cu starea = %d" + +# R-GC, scrie: +# după revizarea fiÈ™ierului, DȘ, zice: +# → aici cratima nu este necesară +# === +# Ok, corecÈ›ie aplicată +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"nu se poate deschide biblioteca „%s†pentru a căuta È™i a obÈ›ine starea " +"elementului %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "%s nu este valid pentru arhiva %s membru %s" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Membru „%sâ€%s: %ld octeÈ›i la %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (numele poate fi trunchiat)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Data %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mod = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "ReÈ›eta conÈ›ine prea multe linii (limita este de %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** ÃŽntrerupere.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Membrul arhivei „%s†poate fi fals; nu se È™terge" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Membrul arhivei „%s†poate fi fals; nu se È™terge" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Se È™terge fiÈ™ierul „%sâ€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Se È™terge fiÈ™ierul „%sâ€" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# reÈ›eta de executat" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (comanda internă):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (din „%sâ€, linia %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Directoare\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: nu a putut fi stabilit.\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (cheia %s, mtime %s): nu a putut fi deschis.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (dispozitiv %d, nod-i [%d,%d,%d]): nu a putut fi deschis.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (dispozitiv %ld, nod-i %ld): nu a putut fi deschis.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (cheia %s, mtime %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (dispozitiv %d, nod-i [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (dispozitiv %ld, nod-i %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Nu" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " fiÈ™iere, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "nu" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " imposibilități" + +#: src/dir.c:1180 +msgid " so far." +msgstr " până acum." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " imposibilități în %lu directoare.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: nu se expandează recursiv %s pentru a exporta în funcÈ›ia de shell\n" + +# R-GC, scrie: +# ar fi mai bine, înlocuită sintagma: +# „(în cele din urmă)â€, cu: +# „(până la urmă)†? +# *** +# Opinii/Idei? +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Variabila recursivă „%s†se referă la ea însăși (în cele din urmă)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "referință la variabilă neterminată" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "ReÈ›eta a fost specificată pentru fiÈ™ierul „%s†la %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"ReÈ›eta pentru fiÈ™ierul „%s†a fost găsită prin căutarea regulilor implicite," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "dar „%s†este considerat acum acelaÈ™i fiÈ™ier ca „%sâ€." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "ReÈ›eta pentru „%s†va fi ignorată în favoarea celei pentru „%sâ€." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"nu se poate redenumi de la două puncte simple „%s†la două puncte duble „%sâ€" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"nu se poate redenumi de la două puncte duble „%s†la două puncte simple „%sâ€" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Se È™terge fiÈ™ierul intermediar „%sâ€" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Se elimină fiÈ™ierele intermediare...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s nu poate să fie atât .NOTINTERMEDIATE, cât È™i .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s nu poate să fie atât .NOTINTERMEDIATE, cât È™i .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE È™i .SECONDARY se exclud reciproc" + +#: src/file.c:942 +msgid "Current time" +msgstr "Ora actuală" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Marcaj de timp în afara intervalului; se substituie %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Nu este o È›intă:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# FiÈ™ier preÈ›ios (cerinÈ›a prealabilă a .PRECIOUS)." + +# R-GC, scrie: +# nu È™tiu dacă în acest context, „Phony target†+# n-ar trebui să fie tradus ca: +# „Țintă pretinsă†+# *** +# Opinii/Idei? +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Èšintă falsă (cerinÈ›a prealabilă a .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Èšintă din linia de comandă." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" +"# Un fiÈ™ier implicit, MAKEFILES sau, unul via -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Regulă internă" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Căutarea implicită a regulilor a fost efectuată." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Căutarea implicită a regulilor nu a fost efectuată." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Familia modelului implicit/static: „%sâ€\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# FiÈ™ierul este o cerință prealabilă intermediară." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# FiÈ™ierul este o cerință prealabilă a .NOTINTERNMEDIATE." + +# R-GC, scrie: +# nu È™tiu dacă în acest context, „Phony target†+# n-ar trebui să fie tradus ca: +# „Țintă pretinsă†+# *** +# Opinii/Idei? +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# FiÈ™ierul este secundar (cerință prealabilă a .SECONDARY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# De asemenea, face:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Ora de modificare nu a fost niciodată verificată." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# FiÈ™ierul nu există." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# FiÈ™ierul este foarte vechi." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Ultima modificare %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# FiÈ™ierul a fost actualizat." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# FiÈ™ierul nu a fost actualizat." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# ReÈ›eta rulează în acest moment (ACESTA ESTE O EROARE)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# ReÈ›eta de dependenÈ›e rulează (ACESTA ESTE O EROARE)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Actualizat cu succes." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Trebuie să fie actualizat („-q†este activată)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Actualizarea a eÈ™uat." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Valoare nevalidă în membrul „command_stateâ€!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# FiÈ™iere" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# statistici din tabelul sumelor de control ale fiÈ™ierelor:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Câmpul „%s†nu este stocat în memoria tampon: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: valoare goală" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: „%s†în afara intervalului" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "primul argument al funcÈ›iei „word†nu este valid" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "primul argument al funcÈ›iei „word†trebuie să fie mai mare decât 0" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "primul argument al funcÈ›iei „wordlist†nu este valid" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "al doilea argument al funcÈ›iei „wordlist†nu este valid" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "primul argument al funcÈ›iei „intcmp†este nenumeric" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "al doilea argument al funcÈ›iei „intcmp†este nenumeric" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) a eÈ™uat (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) a eÈ™uat (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() a eÈ™uat (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() a eÈ™uat\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Se curăță fiÈ™ierul lotului de comenzi temporar %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "fiÈ™ier: lipseÈ™te numele fiÈ™ierului" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "deschide: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "scrie: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "închide: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "fiÈ™ier: prea multe argumente" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "citeÈ™te: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "fiÈ™ier: operaÈ›ie de fiÈ™ier nevalidă: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "număr insuficient de argumente (%u) pentru funcÈ›ia „%sâ€" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "neimplementat pe această platformă: funcÈ›ia „%sâ€" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "apel neterminat la funcÈ›ia „%sâ€: lipseÈ™te „%câ€" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Numele funcÈ›iei este gol" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Numele funcÈ›iei este nevalid: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Numele funcÈ›iei este prea lung: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Număr minim de argumente (%u) nevalid pentru funcÈ›ia %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Număr maxim de argumente (%u) nevalid pentru funcÈ›ia %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: opÈ›iunea „%s†este ambiguă\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: opÈ›iunea „--%s†nu permite un argument\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: opÈ›iunea „%c%s†nu permite un argument\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: opÈ›iunea „%s†necesită un argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: opÈ›iune nerecunoscută „--%sâ€\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: opÈ›iune nerecunoscută „%c%sâ€\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opÈ›iune ilegală -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opÈ›iune nevalidă -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opÈ›iunea necesită un argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: opÈ›iunea „-W %s†este ambiguă\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: opÈ›iunea „-W %s†nu permite un argument\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Se expandează „%sâ€\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Se evaluează „%sâ€\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "" +"nu se pot aloca %lu octeÈ›i pentru tabelul sumelor de control: memorie " +"epuizată" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "ÃŽncărcare=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Coliziuni=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Se caută o regulă implicită pentru „%sâ€.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Se caută regula implicită de membru al arhivei pentru „%sâ€.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "" +"Nu a fost găsită nicio regulă implicită de membru al arhivei pentru „%sâ€.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Evitarea recursiunii regulilor implicite pentru regula „%sâ€.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Continuă să se încerce.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Se încearcă regula modelului „%s†cu familia „%.*sâ€\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Familie prea lungă: „%s%.*sâ€.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"Se respinge regula „%s†din cauza cerinÈ›ei prealabile imposibile a regulii " +"„%sâ€.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Se respinge regula „%s†din cauza cerinÈ›ei prealabile implicite imposibile " +"„%sâ€.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Se încearcă cerinÈ›a prealabilă a regulii „%sâ€.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Se încearcă cerinÈ›a prealabilă implicită „%sâ€.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s†ar trebui să existe.n\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "S-a găsit „%sâ€.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Se utilizează regula de compatibilitate „%s†din cauza „%sâ€.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"CerinÈ›a prealabilă „%s†a regulii „%s†nu este aÈ™a cum ar trebui să fie.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "S-a găsit cerinÈ›a prealabilă „%s†ca VPATH „%sâ€.\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Se caută o regulă cu fiÈ™ierul explicit „%sâ€.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Se caută o regulă cu fiÈ™ierul intermediar „%sâ€.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "" +"Se respinge regula „%s†din cauza cerinÈ›ei preliminare imposibile „%sâ€.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Nu s-a găsit „%sâ€.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "S-a găsit regula implicită „%s†pentru „%sâ€.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Se caută o regulă de compatibilitate pentru „%sâ€..\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Nu s-a găsit nicio regulă implicită pentru „%sâ€.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Nu se poate crea un fiÈ™ier temporar" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (conÈ›inutul memoriei descărcat)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignorat)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Eroare %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Se aÈ™teaptă ca alte sarcini să se termine...." + +# R-GC, scrie: +# am ales traducerea mot-amot, pentru că +# consider că este cea ce reflectă cu exactitate +# starea procesului. Alte echipe au tradus ca +# „proces-copil activ ...â€, ceea ce este inexact. +# De exemplu, un proces oprit, nu poate să fie +# activ. +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Proces-copil viu %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (la distanță)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Finalizarea procesului-copil câștigător %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Finalizarea procesului-copil pierdut %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Se curăță fiÈ™ierul lotului de comenzi temporar %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Curățarea fiÈ™ierului lotului de comenzi temporar %s a eÈ™uat (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Se elimină procesul-copil %p PID %s%s din lanÈ›.\\\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Se eliberează indicativul pentru procesul-copil %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() nu a reuÈ™it să lanseze procesul (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Au fost numărate %d argumente în lansarea eÈ™uată\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Se pune procesul-copil %p (%s) PID %s%s în lanÈ›.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Se obÈ›ine indicativul pentru procesul-copil %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: se actualizează È›inta „%s†datorită: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "È›inta nu există" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "nu se pot aplica limitele de încărcare pe acest sistem de operare" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "nu poate aplica limita de încărcare: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"nu mai există operatori de fiÈ™iere disponibili: nu s-a putut duplica " +"intrarea standard" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"nu mai există operatori de fiÈ™iere disponibili: nu s-a putut duplica ieÈ™irea " +"standard" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "" +"nu mai există operatori de fiÈ™iere disponibili: nu s-a putut duplica ieÈ™irea " +"de eroare standard" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Nu s-a putut restabili intrarea standard" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Nu s-a putut restabili ieÈ™irea standard" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Nu s-a putut restabili ieÈ™irea de eroare standard" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "procesul-copil «make» procesat cu PID %s, dar încă aÈ™teaptă PID %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: spaÈ›iul de mediu ar putea fi epuizat" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL schimbat (era „%sâ€, acum „%sâ€)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Se creează fiÈ™ierul lotului de comenzi temporar %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"ConÈ›inutul fiÈ™ierului lotului de comenzi:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"ConÈ›inutul fiÈ™ierului lotului de comenzi:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (linia %d) Context shell greÈ™it (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Nu s-a putut deschide tabelul global de simboluri: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "S-a încărcat obiectul partajat %s\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Obiectul încărcat %s nu este declarat ca fiind compatibil GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Nu s-a putut încărca simbolul %s din %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Nume de simbol gol pentru încărcare: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Se încarcă simbolul %s din %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Se descarcă obiectul partajat %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "OperaÈ›ia „load†nu este acceptată pe această platformă" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "OpÈ›iuni:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignorat din motive de compatibilitate.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Face necondiÈ›ionat toate È›intele.\n" + +# R-GC, scrie: +# după revizarea fiÈ™ierului, DȘ, zice: +# → aici cred că se poate adapta „înainte de a începe.†+# === +# Am reformulat traducerea +# traducerea iniÈ›ială: +# „... înainte de a face ceva.†+#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C DIRECTOR, --directory=DIRECTOR\n" +" Schimbă la DIRECTOR(ul) înainte de a începe " +"vreo operaÈ›ie.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d AfiÈ™ează o mulÈ›ime de informaÈ›ii de depanare.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=FANIOANE] AfiÈ™ează diferite tipuri de informaÈ›ii de " +"depanare.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Variabilele de mediu primează față de " +"fiÈ™ierele makefile.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E ȘIR, --eval=ȘIR Evaluează ȘIR(ul) ca o declaraÈ›ie de " +"makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FIȘIER, --file=FIȘIER, --makefile=FIȘIER\n" +" CiteÈ™te FIȘIER ca pe un fiÈ™ier makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help AfiÈ™ează acest mesaj È™i iese.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignoră erorile din reÈ›ete.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DIRECTOR, --include-dir=DIRECTOR\n" +" Caută în DIRECTOR pentru fiÈ™ierele makefile " +"incluse.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Permite N lucrări simultan; fără argument, un " +"număr infinit de lucrări.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=STIL Selectează stilul serverului de lucrări de " +"utilizat.\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Continuă atunci când unele È›inte nu pot fi " +"făcute.\n" + +#: src/main.c:350 +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" +" Nu începe mai multe lucrări decât dacă " +"încărcarea este sub N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Utilizează ora ultimei modificări între " +"legături simbolice È™i È›intă.\n" + +#: src/main.c:355 +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" +" Nu rulează de fapt nicio reÈ›etă; doar o " +"afiÈ™ează.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o FIȘIER, --old-file=FIȘIER, --assume-old=FIȘIER\n" +" Consideră FIȘIER(ul) ca fiind foarte vechi È™i " +"nu-l reface.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[TIP], --output-sync[=TIP]\n" +" Sincronizează ieÈ™irea lucrărilor paralele după " +"TIP.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base AfiÈ™ează baza de date internă a «make».\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Nu rulează nicio reÈ›etă; starea de ieÈ™ire " +"indică dacă este actualizată.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Dezactivează regulile implicite interne.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Dezactivează configurările variabilelor " +"interne.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Efectuează amestecarea cerinÈ›elor prealabile " +"È™i a obiectivelor.\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Nu afiÈ™ează reÈ›etele.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent AfiÈ™ează reÈ›etele (dezactivează opÈ›iunea „--" +"silentâ€).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Dezactivează opÈ›iunea „-kâ€.\n" + +# R-GC, scrie: +# după revizarea fiÈ™ierului, DȘ, zice: +# → cred că ar trebui pusă „data†sau „timpul†în loc de „ora†+# === +# Cum È›i-se pare „marcajul de timpâ€, DȘ? +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Actualizează marcajul de timp al È›intelor în " +"loc să-le reconstruiască.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr "" +" --trace AfiÈ™ează informaÈ›iile de urmărire a " +"execuÈ›iei.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version AfiÈ™ează numărul versiunii de «make» È™i iese.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory AfiÈ™ează directorul curent.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Dezactivează opÈ›iunea „-wâ€, chiar dacă a fost " +"activată implicit.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W FIȘIER, --what-if=FIȘIER, --new-file=FIȘIER, --assume-new=FIȘIER\n" +" Consideră că FIȘIER(ul) este infinit de nou.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Avertizează atunci când se face referire la o " +"variabilă nedefinită.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "eroare de scriere: ieÈ™irea standard" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "un È™ir gol nu este valid ca nume de fiÈ™ier" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "specificaÈ›ie necunoscută a nivelului de depanare „%sâ€" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "tip de sincronizare de ieÈ™ire necunoscut „%sâ€" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Utilizare: %s [opÈ›iuni] [È›intă] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Acest program a fost construit pentru %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Acest program a fost construit pentru %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "RaportaÈ›i erorile la \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: ÃŽntrerupere/ExcepÈ›ie capturată (cod = 0x%lx, addr = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Filtru de excepÈ›ii negestionat apelat din programul %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "ÃŽncălcarea accesului: operaÈ›ie de scriere la adresa 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "ÃŽncălcarea accesului: operaÈ›ie de citire la adresa 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "" +"funcÈ›ia find_and_set_shell() stabileÈ™te valoarea lui default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" +"funcÈ›ia find_and_set_shell() stabileÈ™te calea de căutare a lui default_shell " +"= %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "înlăturare (legătură simbolică la fiÈ™ier temporar): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"avertisment: serverul de lucrări nu este disponibil: se foloseÈ™te „-j1â€. " +"AdăugaÈ›i „+†la regula părinte(parent) de «make»." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"avertisment: „-j%d†forÈ›at în submake: se reconfigurează modul server de " +"lucrări." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "" +"FiÈ™ierul „Makefile†de la intrarea standard a fost specificat de două ori" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: fiÈ™ierul temporar %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"avertisment: „-j%d†forÈ›at în „makefileâ€: se reconfigurează modul server de " +"lucrări." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Lucrările paralele (-j) nu sunt acceptate pe această platformă." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Se configurează la modul o singură lucrare (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Se utilizează controlorul serverului de lucrări „%sâ€\n" + +# R-GC, scrie: +# în versiunile anterioare, am tradus: +# mutex = mutiplexor +# *** +# cu modificările apărute în versiunea 4.3.91, +# acest mesaj a fost un pic modificat de către +# autori, È™i cum re-revizam întregul fiÈ™ier mi-a +# venit idea să caut ternenul în wikipedia; +# aÈ™a am aflat că: +# „In computer science, a lock or mutex (from mutual exclusion) is a synchronization primitive: a mechanism that enforces limits on access to a resource when there are many threads of execution. A lock is designed to enforce a mutual exclusion concurrency control policy, and with a variety of possible methods there exists multiple unique implementations for different applications. †+# === +# redirecÈ›ionare de la «Mutex» +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Se utilizează blocarea de sincronizare a ieÈ™irii %s\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Legăturile simbolice nu sunt acceptate: se dezactivează opÈ›iunea „-Lâ€." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Modul de amestecare activat: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Se actualizează fiÈ™ierele makefile....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile „%s†ar putea să fie în buclă; nu se reconstruieÈ™te.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: nu s-a putut încărca" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Nu s-a reuÈ™it refacerea fiÈ™ierului makefile „%sâ€." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "FiÈ™ierul makefile inclus „%s†nu a fost găsit." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "FiÈ™ierul makefile „%s†nu a fost găsit" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Nu s-a putut schimba înapoi la directorul iniÈ›ial" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Se execută din nou[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL conÈ›ine mai mult de o È›intă" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Fără È›inte" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Nu sunt specificate È›inte È™i nu a fost găsit niciun fiÈ™ier makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Se actualizează obiectivele vizate....\n" + +# R-GC, scrie: +# după revizarea fiÈ™ierului, DȘ, zice: +# → inspirându-mă din glosar aÈ™ zice: â€Versiunea compilată poate fi +# incompletă†/ „Această versiune compilată poate fi incompletă†+# → + aÈ™ retuÈ™a È™i următoarele linii cu „build†= „compilat†+# === +# nu sunt de acord cu idea; dacă folosim: +# directory = director È™i, folder = dosar; mi-se +# pare corect să folosim: +# build = construcÈ›ie È™i compile = compilare +# mai ales, că «make» face amîndouă operaÈ›iile +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"avertisment: A fost detectată o decalare a ceasului. ConstrucÈ›ia dvs. " +"poate fi incompletă." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "opÈ›iunea „%s%s†necesită un È™ir care nu este gol ca argument" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "opÈ›iunea „-%c†necesită un întreg pozitiv ca argument" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sConstruit pentru %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sConstruit pentru %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sLicenÈ›a GPLv3+: GNU GPL versiunea 3 sau ulterioară \n" +"%sAcesta este software liber: sunteÈ›i liber să îl modificaÈ›i È™i să îl " +"redistribuiÈ›i.\n" +"%sNU există NICIO GARANÈšIE, în măsura permisă de lege.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Baza de date a lui «make», afiÈ™ată pe %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Se finalizează baza de date a lui «make» pe %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s valoare %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s valoare %s: nu este un director" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "se utilizează directorul temporar implicit „%sâ€" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "crează fiÈ™ierul temporar %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "înlăturare legătură simbolică la fiÈ™ier temporar %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: fiÈ™ierul temporar %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: fiÈ™ierul temporar %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Se intră într-un director necunoscut\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Se părăseÈ™te un director necunoscut\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Se intră în directorul „%sâ€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Se părăseÈ™te directorul „%sâ€\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Se intră într-un director necunoscut\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Se părăseÈ™te un director necunoscut\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Se intră în directorul „%sâ€\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Se părăseÈ™te directorul „%sâ€\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"avertisment: Nu se poate obÈ›ine blocarea ieÈ™irii, se dezactivează " +"sincronizarea ieÈ™irii." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Stop.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Nu se poate deschide serverul de lucrări %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Stil necunoscut de autentificare al serverului de lucrări „%sâ€" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "se creează linia de legătură pentru lucrări" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "se duplică linia de legătură pentru lucrări" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "se iniÈ›ializează linia de legătură a serverului de lucrări" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "È™ir nevalid „%s†al argumentului opÈ›iunii „--jobserver-authâ€" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "scrie în serverul de lucrări" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "serverul de lucrări este oprit" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "funcÈ›ia pselect() a liniilor de legătură de lucrări" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "citeÈ™te liniile de legătură ale lucrărilor" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "È™ir nevalid „%s†al argumentului opÈ›iunii „---sync-mutexâ€" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "nu se poate deschide blocarea de sincronizare a ieÈ™irii %s: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Nu se poate deschide „%s†cu O_TMPFILE: %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Se citesc fiÈ™ierele makefile...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Se citesc fiÈ™ierele makefile '%s'" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (nici un obiectiv implicit)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (cale de căutare)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (nu contează)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " („~†nu se înlocuieÈ™te)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "Se omite BOM UTF-8 în fiÈ™ierul makefile „%sâ€\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Se omite BOM UTF-8 în fiÈ™ierul makefile din memoria tampon\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "sintaxă nevalidă în condiÈ›ional" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "reÈ›eta începe înainte de prima È›intă" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "lipseÈ™te o regulă înaintea reÈ›etei" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "lipseÈ™te separatorul (v-aÈ›i referit la TAB în loc de 8 spaÈ›ii?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "lipseÈ™te separatorul" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "modelul È›intă" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "multiple modele de È›intă" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "modelul È›intă nu conÈ›ine „%%â€" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "lipseÈ™te „endifâ€" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "nume de variabilă gol" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "text de prisos după directiva „define“" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "lipseÈ™te „endefâ€, „define†neterminat" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "text de prisos după directiva „endef“" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "text de prisos după directiva „%s“" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "„%s†de prisos" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "doar un „else†per condiÈ›ional" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "DefiniÈ›ie de variabilă specifică È›intei incorectă" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT nu ar trebui să aibă cerinÈ›e prealabile" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT nu ar trebui să aibă comenzi" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "cerinÈ›ele prealabile nu pot fi definite în reÈ›ete" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "È›intele grupate trebuie să furnizeze o reÈ›etă" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "regulile de model implicite È™i statice sunt amestecate" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "regulile implicite È™i normale sunt amestecate" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "È›inta „%s†nu se potriveÈ™te cu modelul È›intă" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "fiÈ™ierul È›intă „%s†are ambele intrări „:†și „::â€" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "È›inta „%s†este dată de mai multe ori în aceeaÈ™i regulă" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "avertisment: se înlocuieÈ™te reÈ›eta pentru È›inta „%sâ€" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "avertisment: se ignoră vechea reÈ›etă pentru È›inta „%sâ€" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** regulile implicite È™i normale sunt amestecate: sintaxă învechită" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "avertisment: se înlocuieÈ™te apartenenÈ›a la grup pentru È›inta „%sâ€" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "avertisment: caracter NUL detectat; restul liniei este ignorat" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "" +"avertisment: reÈ›eta modelului nu a actualizat È›inta corespunzătoare „%sâ€" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Nu trebuie făcut nimic pentru „%sâ€." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s†este actualizat." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Se scurtează fiÈ™ierul „%sâ€.\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sNici o regulă pentru a face È›inta „%sâ€, necesară pentru „%sâ€%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sNici o regulă pentru a face È›inta „%sâ€%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Luând în considerare fiÈ™ierul È›intă „%sâ€.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "ÃŽncercarea recentă de actualizare a fiÈ™ierului „%sâ€, a eÈ™uat.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "FiÈ™ierul „%s†a fost deja luat în considerare.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "FiÈ™ierul „%s†este încă în curs de actualizare.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "S-a terminat actualizarea fiÈ™ierului „%sâ€.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "FiÈ™ierul „%s†nu există.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Avertisment: fiÈ™ierul .LOW_RESOLUTION_TIME „%s†are un marcaj de timp de " +"înaltă rezoluÈ›ie" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Partenerul grupat al È›intei „%s†din fiÈ™ierul „%s†nu există.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Se utilizează reÈ›eta implicită pentru „%sâ€.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "DependenÈ›a circulară %s ↠%s este omisă." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "S-au încheiat cerinÈ›ele prealabile ale fiÈ™ierului È›intă „%sâ€.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "CerinÈ›ele prealabile pentru „%s†sunt în curs de realizare.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Se renunță la fiÈ™ierul È›intă „%sâ€.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Èšintă „%s†nu a fost refăcută din cauza erorilor." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "" +"CerinÈ›a prealabilă „%s†este numai pentru ordonare secvenÈ›ială pentru È›inta " +"„%sâ€.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "CerinÈ›a prealabilă „%s†a È›intei „%s†nu există.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "CerinÈ›a prealabilă „%s†este mai nouă decât È›inta „%sâ€.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "CerinÈ›a prealabilă „%s†este mai veche decât È›inta „%sâ€.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "" +"Èšinta „%s†are două două puncte duble „::†și nu are cerinÈ›e prealabile.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" +"Nicio reÈ›etă pentru „%s†și nicio cerință prealabilă nu a fost schimbată.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Se realizează „%s†din cauza opÈ›iunii „--always-makeâ€.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Nu este necesar să se reconstruiască È›inta „%sâ€" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; folosind numele VPATH „%sâ€" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Trebuie să se reconstruiască È›inta „%sâ€.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Se ignoră numele VPATH „%sâ€.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "ReÈ›eta lui „%s†este în curs de executare.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Nu s-a putut reconstrui fiÈ™ierul È›intă „%sâ€.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "S-a reconstruit cu succes fiÈ™ierul È›intă „%sâ€.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "FiÈ™ierul È›intă „%s†trebuie reconstruit cu opÈ›iunea „-qâ€.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Se utilizează comenzile implicite pentru „%sâ€.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Avertisment: FiÈ™ierul „%s†are ora de modificare %s s în viitor" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Elementul .LIBPATTERNS „%s†nu este un model" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Valorile definite de către utilizator, nu vor fi exportate: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" +"avertisment: se ignoră cerinÈ›ele prealabile privind definirea regulii " +"sufixului" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Reguli implicite" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Fără reguli implicite." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u reguli implicite, %u (%.1f%%) terminal." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "EROARE: num_pattern_rules este greÈ™it! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "mod de amestecare nevalid: %s: „%sâ€" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "semnal necunoscut" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Terminare anormală(Hangup)" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "ÃŽntrerupere" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Părăsire" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "InstrucÈ›iune ilegală" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "InstrucÈ›iuni de urmărire/punct de întrerupere" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Se renunță" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Detectare IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Detectare EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "ExcepÈ›ie virgulă mobilă" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Omorît" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Eroare de magistrală de date(bus)" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Eroare de segmentare" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Apel de sistem greÈ™it" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Linie de conectare întreruptă" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Ceas cu alarmă" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Terminat" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Semnalul «1» definit de utilizator" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Semnalul «2» definit de utilizator" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Procesul-copil a terminat" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Pană de curent" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Oprit" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Oprit (intrare tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Oprit (ieÈ™ire tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Oprit (semnal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "S-a depășit limita de timp CPU" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "S-a depășit limita de dimensiune a fiÈ™ierului" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Cronometrul virtual a expirat" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Cronometrul de creare a profilului a expirat" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Fereastră redimensionată" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Continuare" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "CondiÈ›ie In/IeÈ™ urgentă" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "In/IeÈ™ posibilă" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Resursă pierdută" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Semnal de pericol" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Solicitare de informaÈ›ie" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Coprocesorul în virgulă mobilă nu este disponibil" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Fără memorii tampon strcache\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s memorii tampon strcache: %lu (%lu) / È™iruri = %lu / stocare = %lu B / " +"media = %lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s memoria tampon actuală: dimensiune = %hu B / utilizată = %hu B / " +"cantitatea = %hu / media = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s alta utilizată: total = %lu B / cantitatea = %lu / media = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s alta liberă: total = %lu B / max = %lu B / min = %lu B / media = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s randamentul strcache: căutări = %lu / rata de potrivire = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statistici din tabelul sumelor de control ale fiÈ™ierelor:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automat" + +#: src/variable.c:1789 +msgid "default" +msgstr "implicit" + +#: src/variable.c:1792 +msgid "environment" +msgstr "mediu" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "mediu cu opÈ›iunea „-eâ€" + +#: src/variable.c:1801 +msgid "command line" +msgstr "linie de comandă" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "directiva „overrideâ€" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (din „%sâ€, linia %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "" +"# statistici pentru setul de variabile din tabelul sumelor de control\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabiles\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Valori de variabile specifice modelului" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Nu există valori de variabile specifice modelului." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u valori de variabile specifice modelului" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "avertisment: variabilă nedefinită „%.*sâ€" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() a eÈ™uat cu %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-avertisment, poate fi necesar să reactivaÈ›i controlul combinaÈ›iei de taste " +"«CTRL-Y» din DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "COMANDA INTERNÄ‚ «CD» %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Adăugă ieÈ™irea la %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Adăugă %.*s È™i curăță\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Se execută %s în schimb\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Căi de căutare VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Fără căi de căutare „vpathâ€." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u căi de căutare „vpathâ€.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Nicio cale de căutare generală (variabilă „VPATHâ€)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Calea de căutare generală (variabilă „VPATHâ€):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Sloturi ale serverului de lucrări limitate la %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "se creează semaforul serverului de lucrări: (Eroare %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"eroare internă: nu se poate deschide semaforul serverului de lucrări „%sâ€: " +"(Eroare %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Clientul serverului de lucrări (semafor %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "eliberare a semaforului serverului de lucrări: (Eroare %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "în aÈ™teptarea semaforului sau a procesului-copil: (Eroare %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "nu se poate analiza blocarea de sincronizare a ieÈ™irii %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "blocare de sincronizare a ieÈ™irii nevalidă: %s" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "Configurarea serverului de lucrări (fifo %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "Configurarea serverului de lucrării (fds %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Clientul serverului de lucrări (fds %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (fiÈ™ier temporar)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: utilizator %lu (real %lu), grup %lu (real %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Accesul a fost iniÈ›ializat" + +#~ msgid "User access" +#~ msgstr "Acces de utilizator" + +#~ msgid "Make access" +#~ msgstr "Acces de «make»" + +#~ msgid "Child access" +#~ msgstr "Acces de proces-copil" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[TIP] (--output-sync[=TIP]) nu este configurat pentru această " +#~ "construcÈ›ie." + +#~ msgid "jobserver pipeline" +#~ msgstr "linia de legătură a serverului de lucrări" diff --git a/local/recipes/dev/gnu-make/source/po/ru.gmo b/local/recipes/dev/gnu-make/source/po/ru.gmo new file mode 100644 index 0000000000..ca777b8f47 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/ru.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/ru.po b/local/recipes/dev/gnu-make/source/po/ru.po new file mode 100644 index 0000000000..73cbac4830 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/ru.po @@ -0,0 +1,2640 @@ +# Translation of make messages to Russian. +# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2009 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Oleg S. Tihonov , 1998. +# Alexey Mahotkin , 2001. +# Denis Perchine , 2001, 2002. +# Pavel Maryanov , 2009. +# Yuri Kozlov , 2009, 2010, 2013, 2014, 2016, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2020-01-03 22:09+0300\n" +"Last-Translator: Yuri Kozlov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Lokalize 2.0\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" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "попытка иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÑредÑтва: «%s»" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "обновление времени Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‡Ð»ÐµÐ½Ð° архива невозможно в ÑиÑтеме VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "обновление времени изменениÑ: Ðрхив «%s» не ÑущеÑтвует" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "обновление времени изменениÑ: Ðеверный архив: «%s»" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "обновление времени изменениÑ: Элемент «%s» не ÑодержитÑÑ Ð² «%s»" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "" +"обновление времени изменениÑ: Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ ar_member_touch вернула\n" +"ошибочное значение Ð´Ð»Ñ Â«%s»" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() не Ñмогла извлечь информацию о модуле, ÑÑ‚Ð°Ñ‚ÑƒÑ = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$init_control() вернула код ошибки %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "" +"невозможно открыть библиотеку «%s» Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ Ñлемента %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Элемент «%s»%s: %ld байт по адреÑу %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (Ð¸Ð¼Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть уÑечено)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Дата %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, mode = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Ð’ ÑпоÑобе Ñлишком много Ñтрок (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** ОÑтанов.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Элемент архива «%s», кажетÑÑ, недейÑтвителен; не удалён" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Элемент архива «%s», кажетÑÑ, недейÑтвителен; не удалён" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] УдалÑетÑÑ Ñ„Ð°Ð¹Ð» «%s»" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** УдалÑетÑÑ Ñ„Ð°Ð¹Ð» «%s»" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# ÑпоÑоб, который Ñледует применить" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (вÑтроенные):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (из «%s», Ñтрока %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Каталоги\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: невозможно получить ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð¾Ð¼ stat.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (ключ %s, mtime %l64u): невозможно открыть.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (уÑтройÑтво %d, inode [%d,%d,%d]): невозможно открыть.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (уÑтройÑтво %ld, inode %ld): невозможно открыть.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ключ %s, mtime %l64u): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (уÑтройÑтво %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (уÑтройÑтво %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ðет" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " файлов," + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "нет" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " недоÑтижимых целей" + +#: src/dir.c:1180 +msgid " so far." +msgstr " на текущий момент." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " недоÑтижимых целей в %lu каталогах.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "РекурÑÐ¸Ð²Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«%s» ÑÑылаетÑÑ Ñама на ÑÐµÐ±Ñ (в результате)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ ÑÑылка на переменную" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "СпоÑоб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» был задан в %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "СпоÑоб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» был найден из неÑвного правила," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "но «%s» и «%s» теперь ÑчитаютÑÑ Ð¾Ð´Ð½Ð¸Ð¼ и тем же файлом." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" +"СпоÑоб Ð´Ð»Ñ Â«%s» игнорируетÑÑ, вмеÑто него будет иÑпользован ÑпоÑоб Ð´Ð»Ñ Â«%s»." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"невозможно переименовать «%s» Ñ Ð¾Ð´Ð½Ð¸Ð¼ двоеточием в «%s» Ñ Ð´Ð²ÑƒÐ¼Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ñми" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"невозможно переименовать «%s» Ñ Ð´Ð²ÑƒÐ¼Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ñми в «%s» Ñ Ð¾Ð´Ð½Ð¸Ð¼ двоеточием" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Удаление промежуточного файла «%s»" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Удаление промежуточных файлов...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Текущее времÑ" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Временной штамп выходит за пределы диапазона; подÑтавлÑем %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ðе ÑвлÑетÑÑ Ñ†ÐµÐ»ÑŒÑŽ:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Ценный файл (завиÑимоÑть .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# ПÑевдоцель (завиÑимоÑть от .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Цель, Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÐ¼Ð°Ñ Ð¸Ð· командной Ñтроки." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# По умолчанию, MAKEFILES, или -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Ð’Ñтроенное правило" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# ПроизводилÑÑ Ð¿Ð¾Ð¸Ñк неÑвных правил." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# ПоиÑк неÑвных правил не производилÑÑ." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# ОÑнова неÑвного или ÑтатичеÑкого образца: «%s»\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Файл — Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚Ð¾Ñ‡Ð½Ð°Ñ Ð·Ð°Ð²Ð¸ÑимоÑть." + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Ценный файл (завиÑимоÑть .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# ПÑевдоцель (завиÑимоÑть от .PHONY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Собирает также:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Ð’Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð¸ разу не проверÑлоÑÑŒ." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Файл не ÑущеÑтвует." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Файл очень Ñтарый." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Ð’Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Файл был обновлён." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Файл не был обновлён." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Ð’ данный момент уже применÑетÑÑ Ð½ÐµÐºÐ¸Ð¹ ÑпоÑоб (ЭТО ОШИБКÐ)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "" +"# Ð’ данный момент уже применÑетÑÑ Ð½ÐµÐºÐ¸Ð¹ ÑпоÑоб по завиÑимоÑÑ‚Ñм (ЭТО ОШИБКÐ)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# УÑпешно обновлено." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Должно быть обновлено (задан ключ -q)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Попытка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÐµÐ·ÑƒÑпешна." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ðеверное значение члена «command_state»!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Файлы" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# ÑоÑтоÑние файлов хеш-таблицы:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Поле «%s» не кешировано: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "нечиÑловой первый аргумент функции «word»" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "первый аргумент функции «word» должен быть больше нулÑ" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "нечиÑловой первый аргумент функции «wordlist»" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "нечиÑловой второй аргумент функции «wordlist»" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "нечиÑловой первый аргумент функции «wordlist»" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "нечиÑловой второй аргумент функции «wordlist»" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) вернула код ошибки (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) вернула код ошибки (e=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() вернула код ошибки (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() завершилаÑÑŒ неудачно\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Очищаю временный пакетный файл %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "файл: отÑутÑтвует Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "открытие: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "запиÑÑŒ: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "закрытие: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "файл: Ñлишком много аргументов" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "чтение: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "файл: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð¼: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недоÑтаточно аргументов (вÑего %d) функции «%s»" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "не реализовано на Ñтой платформе: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Â«%s»" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "незавершённый вызов функции «%s»: пропущено «%c»" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "ПуÑтое Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Ðекорректное Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Слишком длинное Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Ðекорректное минимальное чиÑло аргументов (вÑего %u) функции %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Ðекорректное макÑимальное чиÑло аргументов (вÑего %u) функции %s" + +# Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ getopt иÑключены, Ñ‚.к. они отноÑÑÑ‚ÑÑ Ðº уже +# уÑтаревшей верÑии Ñтой библиотеки, и иÑчезнут в Ñледующей верÑии make +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: ключ «%s» не однозначен\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: ключ «--%s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: ключ «%c%s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: ключу «%s» требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: неизвеÑтный ключ «--%s»\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: неизвеÑтный ключ «%c%s»\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: недопуÑтимый ключ -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: неверный ключ -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: ключ требует аргумент -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: ключ «-W %s» неоднозначен\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: ключ «-W %s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: раÑширÑетÑÑ Â«%s»\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: вычиÑлÑетÑÑ Â«%s»\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "не удалоÑÑŒ выделить %lu байт Ð´Ð»Ñ Ñ…ÐµÑˆ-таблицы: закончилаÑÑŒ памÑть" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Загружено=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Переформулировано=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Противоречий=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "ПоиÑк неÑвного правила Ð´Ð»Ñ Â«%s».\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "ПоиÑк неÑвного правила Ð´Ð»Ñ Ñлемента архива «%s».\n" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "ПоиÑк неÑвного правила Ð´Ð»Ñ Ñлемента архива «%s».\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Избежание рекурÑивного вызова неÑвного правила.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Попытка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° Ñ Ð¾Ð±Ñ€Ð°Ð·Ñ†Ð¾Ð¼ «%.*s».\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Слишком длинный образец: «%s%.*s».\n" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Отвержение невозможной завиÑимоÑти правила «%s».\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Отвержение невозможной неÑвной завиÑимоÑти «%s».\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Попытка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° завиÑимоÑти «%s».\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Попытка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½ÐµÑвной завиÑимоÑти «%s».\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Файл «%s» не ÑущеÑтвует.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: обновление цели «%s» из-за: %s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "ЗавиÑимоÑть «%s» цели «%s» не ÑущеÑтвует.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Обнаружена завиÑимоÑть «%s» в виде VPATH «%s»\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "ПоиÑк правила Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚Ð¾Ñ‡Ð½Ñ‹Ð¼ файлом «%s».\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "ПоиÑк правила Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚Ð¾Ñ‡Ð½Ñ‹Ð¼ файлом «%s».\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Отвержение невозможной завиÑимоÑти правила «%s».\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Ðе найдено неÑвного правила Ð´Ð»Ñ Â«%s».\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Ðайдено неÑвное правило Ð´Ð»Ñ Â«%s».\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "ПоиÑк неÑвного правила Ð´Ð»Ñ Â«%s».\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Ðе найдено неÑвного правила Ð´Ð»Ñ Â«%s».\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "Ðе удалоÑÑŒ Ñоздать временный файл\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (Ñделан дамп памÑти)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (игнорирование)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<вÑтроенное>" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Ошибка %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹â€¦" + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Ðезавершённый потомок %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (удалённый)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "ПодбираетÑÑ ÑƒÐ´Ð°Ñ‡Ð½Ð¾ завершившийÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼Ð¾Ðº %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "ПодбираетÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð¾ завершившийÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼Ð¾Ðº %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Подчищаю временный пакетный файл %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "ОчиÑтка временного пакетного файла %s завершилаÑÑŒ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "УдалÑетÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼Ð¾Ðº %p PID %s%s из цепочки.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "ОÑвобождён токен Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() не Ñмогла запуÑтить процеÑÑ (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"При неудачном запуÑке ÑоÑчитано %d аргументов\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Помещение потомка %p (%s) PID %s%s в цепочку потомков.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Получен токен Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: обновление цели «%s» из-за: %s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: цель «%s» не ÑущеÑтвует" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "Ñта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÑиÑтема не позволÑет уÑтанавливать пределы загрузки" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "невозможно уÑтановить пределы загрузки: " + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "закончилиÑÑŒ файловые деÑкрипторы: не удалоÑÑŒ Ñделать копию stdin\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "закончилиÑÑŒ файловые деÑкрипторы: не удалоÑÑŒ Ñделать копию stdout\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "закончилиÑÑŒ файловые деÑкрипторы: не удалоÑÑŒ Ñделать копию stderr\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Ðе удалоÑÑŒ воÑÑтановить stdin\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Ðе удалоÑÑŒ воÑÑтановить stdout\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Ðе удалоÑÑŒ воÑÑтановить stderr\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "make нашла завершившегоÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° pid %s, вÑÑ‘ ещё ожидает pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: вероÑтно, закончилоÑÑŒ меÑто под окружение" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $SHELL изменилаÑÑŒ (было «%s», теперь «%s»)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "СоздаётÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ пакетный файл %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Содержимое файла пакетных заданий:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Содержимое файла пакетных заданий:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" +"%s (Ñтрока %d) Плохой контекÑÑ‚ командного процеÑÑора (!unixy && !" +"batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Ðе удалоÑÑŒ открыть глобальную таблицу Ñимволов: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Загруженный объект %s не объÑвлено как ÑовмеÑтимый Ñ GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Ðе удалоÑÑŒ загрузить Ñимвол %s из %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "ПуÑтое Ð¸Ð¼Ñ Ñимвола Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "ЗагружаетÑÑ Ñимвол %s из %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Â«load» не поддерживаетÑÑ Ð½Ð° Ñтой платформе." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Ключи:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m ИгнорируетÑÑ Ð´Ð»Ñ ÑовмеÑтимоÑти.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Без уÑловий отрабатывать вÑе цели.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C КÐТÐЛОГ, --directory=КÐТÐЛОГ\n" +" Перейти в КÐТÐЛОГ перед выполнением дейÑтвий.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d Выводить маÑÑу отладочных Ñообщений.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=ФЛÐГИ] Выводить различные типы отладочной " +"информации.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Переменные Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð¼ÐµÐ½ÑÑŽÑ‚ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ " +"makefile.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E СТРОКÐ, --eval=СТРОКРВычиÑлить СТРОКУ как предложение makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ФÐЙЛ, --file=ФÐЙЛ, --makefile=ФÐЙЛ\n" +" ИÑпользовать ФÐЙЛ в качеÑтве makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Показать Ñту Ñправку и выйти.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Игнорировать ошибки ÑпоÑобов.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I КÐТÐЛОГ, --include-dir=КÐТÐЛОГ\n" +" ИÑкать включаемые make-файлы в КÐТÐЛОГЕ.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] ЗапуÑкать одновременно до N заданий; \n" +" еÑли N не указано, чиÑло заданий " +"неограничено.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Продолжать работу, даже еÑли некоторые цели\n" +" не могут быть доÑтигнуты.\n" + +#: src/main.c:350 +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" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times ИÑпользовать поÑледнее mtime при выборе между\n" +" ÑимволичеÑкими ÑÑылками и целью.\n" + +#: src/main.c:355 +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" + +#: src/main.c:358 +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" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[ТИП], --output-sync[=ТИП]\n" +" Синхронизировать вывод параллельных\n" +" заданий Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ ТИП.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base Ðапечатать внутреннюю базу данных make.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Ðе применÑть ÑпоÑоб;\n" +" код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚, вÑÑ‘ ли уже " +"Ñделано.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Ðе иÑпользовать вÑтроенные неÑвные правила.\n" + +# Что такое "variable settings"? +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Выключить уÑтановку вÑтроенных\n" +" значений переменных.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Ðе показывать Ñами ÑпоÑобы.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Показывать ÑпоÑобы (отключает режим --" +"silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Отменить ключ -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch УÑтановить Ð²Ñ€ÐµÐ¼Ñ Ð´Ð¾Ñтупа целей в текущее,\n" +" а не переÑобирать их.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Выводить траÑÑировочную информацию.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version Показать информацию о верÑии и выйти.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Ðапечатать текущий каталог.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Отменить ключ -w, даже еÑли он был Ñвно " +"указан.\n" + +#: src/main.c:392 +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" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Выдавать предупреждение при ÑÑылке\n" +" на неопределённую переменную.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "ошибка запиÑи: stdout" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "пуÑÑ‚Ð°Ñ Ñтрока недопуÑтима в качеÑтве имени файла" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "задан неизвеÑтный уровень отладки «%s»" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "неизвеÑтный тип output-sync «%s»" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "ИÑпользование: %s [КЛЮЧ]... [ЦЕЛЬ]...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Эта программа Ñобрана Ð´Ð»Ñ %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Эта программа Ñобрана Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Сообщайте об ошибках по адреÑу \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: поймано прерывание или иÑключение (код = 0x%lx, Ð°Ð´Ñ€ÐµÑ = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Ðеобработанное иÑключение в программе %s\n" +"Код иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ = %lx\n" +"Флаги иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ = %lx\n" +"ÐÐ´Ñ€ÐµÑ Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Ðарушение доÑтупа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи по адреÑу 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Ðарушение доÑтупа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() уÑтанавливает default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "find_and_set_shell(): поиÑк в путÑÑ… уÑтанавливает default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (временный файл)" + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"предупреждение: Ñервер заданий недоÑтупен: иÑпользуетÑÑ -j1. Добавьте «+» к " +"правилу в родительÑком make." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"предупреждение: в Ñуб-Makefile принудительно задан -j%d; ÑÐ±Ñ€Ð¾Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° " +"Ñервера заданий" + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile из Ñтандартного ввода указан дважды." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (временный файл)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"предупреждение: в makefile принудительно задан -j%d; ÑÐ±Ñ€Ð¾Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° Ñервера " +"заданий" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Параллельные Ð·Ð°Ð´Ð°Ð½Ð¸Ñ (-j) не поддерживаютÑÑ Ð½Ð° Ñтой платформе." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "ВозвращаетÑÑ Ñ€ÐµÐ¶Ð¸Ð¼ одиночного Ð·Ð°Ð´Ð°Ð½Ð¸Ñ (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "неизвеÑтный тип output-sync «%s»" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "СимволичеÑкие ÑÑылки не поддерживаютÑÑ: отменÑетÑÑ ÐºÐ»ÑŽÑ‡ -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Обновление make-файлов....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Make-файл «%s», возможно, зациклен, он не будет переÑобиратьÑÑ.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: не удалоÑÑŒ загрузить" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Попытка переÑобрать make-файл «%s» завершилаÑÑŒ неудачно." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Включаемый make-файл «%s» не найден." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Make-файл «%s» не найден" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Ðевозможно перейти в первоначальный каталог." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Повторное выполнение[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL Ñодержит более одной цели" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Ðет целей" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Ðе заданы цели и не найден make-файл" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Обновление целей результата...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "предупреждение: Ðеправильный ход чаÑов. Сборка может быть неполной." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "длÑ ключа «%s%s» нужно указать аргументом непуÑтую Ñтроку" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "ключ «-%c» должен иÑпользоватьÑÑ Ñ Ñ†ÐµÐ»Ñ‹Ð¼ положительным аргументом" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sЭта программа Ñобрана Ð´Ð»Ñ %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sЭта программа Ñобрана Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sÐ›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ GPLv3+: GNU GPL верÑии 3 или новее \n" +"%sЭто Ñвободное программное обеÑпечение: вы можете Ñвободно изменÑть его и\n" +"%sраÑпроÑтранÑть. ÐЕТ ÐИКÐКИХ ГÐРÐÐТИЙ вне пределов, допуÑтимых законом.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# База данных Make, напечатана %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Печать базы данных Make завершена %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "ИÑпользование ÑпоÑоба по умолчанию Ð´Ð»Ñ Â«%s».\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "СоздаётÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ пакетный файл %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (временный файл)" + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (временный файл)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (временный файл)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Вход в неизвеÑтный каталог\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Выход из неизвеÑтного каталога\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: вход в каталог «%s»\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: выход из каталога «%s»\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: вход в неизвеÑтный каталог\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: выход из неизвеÑтного каталога\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: вход в каталог «%s»\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: выход из каталога «%s»\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". ОÑтанов.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "неизвеÑтный тип output-sync «%s»" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "ÑоздаётÑÑ ÐºÐ°Ð½Ð°Ð» заданий" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "делаетÑÑ ÐºÐ¾Ð¿Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð° заданий" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð° Ñервера заданий" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока --jobserver-auth «%s»" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "запиÑÑŒ Ñервера заданий" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "Ñервер заданий выключен" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect из канала заданий" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "чтение канала заданий" + +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока --jobserver-auth «%s»" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "неизвеÑтный тип output-sync «%s»" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Чтение make-файлов...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Чтение make-файла «%s»" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (нет цели по умолчанию)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (путь поиÑка)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (игнорировать ошибки)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (не раÑкрывать Ñимвол `~') " + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "ПропуÑк UTF-8 BOM в make-файле «%s»\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "ПропуÑк UTF-8 BOM в буфере make-файла\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "неверный ÑинтакÑÐ¸Ñ Ð² уÑловном выражении" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "обнаружен ÑпоÑоб до первого Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ†ÐµÐ»Ð¸" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "перед ÑпоÑобом отÑутÑтвует правило" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "пропущен разделитель (возможно нужен TAB вмеÑто воÑьми пробелов?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "пропущен разделитель" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "пропущен образец цели" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "неÑколько образцов цели" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "образец цели не Ñодержит «%%»" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "отÑутÑтвует «endif»" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "пуÑтое Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "излишний текÑÑ‚ поÑле директивы «define»" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "отÑутÑтвует «endif», Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ Â«define»" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "излишний текÑÑ‚ поÑле директивы «endef»" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "Излишний текÑÑ‚ поÑле директивы «%s»" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "излишнÑÑ Â«%s»" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "в уÑловном выражении возможна только одна «else»" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Ðеправильный формат Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ цели" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "в ÑпоÑобах не могут задаватьÑÑ Ð·Ð°Ð²Ð¸ÑимоÑти" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ñ‹Ñ… целей должен предоÑтавлÑтьÑÑ ÑпоÑоб" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "Ñмешаны неÑвные правила и правила Ñо ÑтатичеÑкими образцами" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "Ñмешаны неÑвные и обычные правила" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "цель «%s» не ÑоответÑтвует образцу целей" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "целевой файл «%s» имеет Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¸ Ñ :, и Ñ ::" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "цель «%s» указана неÑколько раз в одном правиле" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "предупреждение: переопределение ÑпоÑоба Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s»" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "предупреждение: Ñтарый ÑпоÑоб Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s» игнорируютÑÑ" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** Ñмешаны неÑвные и обычные правила: уÑтаревший ÑинтакÑиÑ" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "предупреждение: переопределение членÑтва группы Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s»" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "предупреждение: вÑтречен Ñимвол NUL; игнорируетÑÑ Ð´Ð¾ конца Ñтроки" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "предупреждение: переопределение ÑпоÑоба Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s»" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Цель «%s» не требует Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "«%s» не требует обновлениÑ." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "ОбрезаетÑÑ Ñ„Ð°Ð¹Ð» «%s».\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sÐет правила Ð´Ð»Ñ Ñборки цели «%s», требуемой Ð´Ð»Ñ Â«%s»%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sÐет правила Ð´Ð»Ñ Ñборки цели «%s»%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Обработка целевого файла «%s».\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° обновить файл «%s» завершилаÑÑŒ неудачно.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Файл «%s» уже был обработан.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Файл «%s» обновлÑетÑÑ Ð² данный момент.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Обновление файла «%s» завершено.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Файл «%s» не ÑущеÑтвует.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Предупреждение: у файла «%s» параметр LOW_RESOLUTION_TIME Ñодержит метку " +"времени Ñ Ð²Ñ‹Ñокой точноÑтью" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "ЗавиÑимоÑть «%s» цели «%s» не ÑущеÑтвует.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "ИÑпользование ÑпоÑоба по умолчанию Ð´Ð»Ñ Â«%s».\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "ЦикличеÑÐºÐ°Ñ Ð·Ð°Ð²Ð¸ÑимоÑть %s <- %s пропущена." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Обновление целей, от которых завиÑит целевой файл «%s», завершено.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Цели, от которых завиÑит «%s», в наÑтоÑщий момент ÑобираютÑÑ.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Ðварийный оÑтанов на целевом файле «%s».\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Цель «%s» не была переÑобрана из-за ошибок." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "ЗавиÑимоÑть «%s» Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s» завиÑит от порÑдка.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "ЗавиÑимоÑть «%s» цели «%s» не ÑущеÑтвует.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "ЗавиÑимоÑть «%s» новее, чем цель «%s».\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "ЗавиÑимоÑть «%s» Ñтарее, чем цель «%s».\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Цель «%s» объÑвлена Ñ Ð´Ð²ÑƒÐ¼Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ñми и не имеет завиÑимоÑтей.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "СпоÑоб Ð´Ð»Ñ Â«%s» не задан, и начальные уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ðµ изменены.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "ПереÑборка «%s» из-за уÑтановленного флага always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Ðет необходимоÑти переÑобирать цель «%s»" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; иÑпользуетÑÑ VPATH-Ð¸Ð¼Ñ Â«%s»" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Ðеобходимо переÑобрать цель «%s».\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " ИгнорируетÑÑ VPATH-Ð¸Ð¼Ñ Â«%s».\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑетÑÑ ÑпоÑоб «%s».\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Ðе удалоÑÑŒ переÑоздать файл цели «%s».\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Целевой файл «%s» уÑпешно переÑоздан.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Целевой файл «%s» требует переÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ -q.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "ИÑпользование команд по умолчанию Ð´Ð»Ñ Â«%s».\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Предупреждение: Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» находитÑÑ Ð² будущем (%s)" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Элемент .LIBPATTERNS «%s» не ÑвлÑетÑÑ Ð¾Ð±Ñ€Ð°Ð·Ñ†Ð¾Ð¼" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Ðе ÑкÑпортируемые наÑтройки: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# ÐеÑвные правила" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# ÐеÑвных правил нет." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# ÐеÑвных правил: %u, терминальных: %u (%.1f%%)" + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "ОШИБКÐ: неверное значение num_pattern_rules! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "неизвеÑтный Ñигнал" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Обрыв терминальной линии" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Прерывание" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Ðварийное прерывание" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑтрукциÑ" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Прерывание на контрольной точке" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Прервано" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Ошибка IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Ошибка ÑмулÑции" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Ошибка операции Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Уничтожение" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Ðеверное обращение к памÑти" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Ðарушение прав доÑтупа к памÑти" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Ðеправильный ÑиÑтемный вызов" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Обрыв канала" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Сигнал по таймеру" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Завершение" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "ОпределÑемый пользователем Ñигнал 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "ОпределÑемый пользователем Ñигнал 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Потомок завершил работу" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Отказ питаниÑ" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "ОÑтанов" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "ОÑтанов (ввод Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð»Ð°) " + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "ОÑтанов (вывод на терминал)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "ОÑтанов (Ñигнал)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Превышен предел процеÑÑорного времени" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Превышен предел размера файла" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Виртуальное Ð²Ñ€ÐµÐ¼Ñ Ð¸Ñтекло" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ñтекло" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Окно изменено" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Возобновление" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ ÑкÑтренного ввода/вывода" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Возможен ввод/вывод" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "РеÑÑƒÑ€Ñ Ð¿Ð¾Ñ‚ÐµÑ€Ñн" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Сигнал опаÑноÑти" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "СопроцеÑÑор Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой недоÑтупен" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s без буферов strcache\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s буферы strcache: %lu (%lu) / Ñтрок = %lu / хранилище = %lu Б / Ñред = %lu " +"Б\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s текущий buf: размер = %hu Б / иÑпользуетÑÑ = %hu Б / кол-во = %hu / Ñред " +"= %u Б\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "" +"%s Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ иÑпользуетÑÑ: вÑего = %lu Б / кол-во = %lu / Ñред = %lu Б\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñвободно: вÑего = %lu Б / макÑ. = %lu Б / мин. = %lu Б / " +"Ñред. = %hu Б\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s производительноÑть strcache: поиÑков = %lu / найдено = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# ÑоÑтоÑние хеш-таблицы:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "автоматичеÑкаÑ" + +#: src/variable.c:1789 +msgid "default" +msgstr "по умолчанию" + +#: src/variable.c:1792 +msgid "environment" +msgstr "определена в Ñреде" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "make-файл" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "окружение Ñ -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "определена в командной Ñтроке" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "Директива «override»" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (из «%s», Ñтрока %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# ÑоÑтоÑние переменных в хеш-таблице:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Переменные\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… оÑобенные Ð´Ð»Ñ Ð¼Ð°Ñки" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Ðет значений переменных оÑобенных Ð´Ð»Ñ Ð¼Ð°Ñки." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u значений переменных оÑобенных Ð´Ð»Ñ Ð¼Ð°Ñки" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "предупреждение: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«%.*s»" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() вернула код ошибки %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-предупреждение, возможно вам потребуетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ разрешить\n" +"обработку CTRL-Y из DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "ВСТРОЕÐÐЫЙ CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Стандартный вывод добавлен в %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Добавить %.*s и очиÑтить\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "ВмеÑто заданного выполнÑетÑÑ %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# Пути поиÑка VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Ðе определён путь поиÑка «vpath»." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u путей поиÑка по «vpath»\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ðе определён общий (Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«VPATH») путь поиÑка." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Общий (Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«VPATH») путь поиÑка:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "КоличеÑтво Ñлотов Ñервера заданий ограничено %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "Ñоздание Ñемафора Ñервера заданий: (ошибка %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: не удалоÑÑŒ открыть Ñемафор Ñервера заданий «%s»: (ошибка " +"%ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Клиент Ñервера заданий (Ñемафор %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "оÑвобождение Ñемафора Ñервера заданий: (ошибка %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "ожидание Ñемафора или процеÑÑа-потомка: (ошибка %ld: %s)" + +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "неизвеÑтный тип output-sync «%s»" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Ðекорректное Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %s" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "" +#~ "%s: пользователь %lu (дейÑтвительный %lu),\n" +#~ "группа %lu (дейÑÑ‚Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "ДоÑтуп инициализации" + +#~ msgid "User access" +#~ msgstr "ДоÑтуп пользователÑ" + +#~ msgid "Make access" +#~ msgstr "ДоÑтуп make" + +#~ msgid "Child access" +#~ msgstr "ДоÑтуп потомка" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "-O[ТИП] (--output-sync[=ТИП]) не наÑтроен в данной Ñборке." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Клиент Ñервера заданий (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "конвейер Ñервера заданий" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: Команда не найдена\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Команда не найдена\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Командный процеÑÑор не найден" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s приоÑтанавливаетÑÑ Ð½Ð° 30 Ñекунд..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) завершён. Продолжаем.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Предупреждение: Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» находитÑÑ Ð² будущем" + +#~ msgid " terminal." +#~ msgstr " терминал." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ€ÐµÑ†ÐµÐ¿Ñ‚Ð° Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s»" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Ошибка 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "Ñоздаю копию Ñервера заданий" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Предупреждение: ПуÑтое перенаправление\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: «%s» command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "ВСТРОЕÐÐЫЙ [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "ВСТРОЕÐÐÐЯ ECHO %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð²ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° «%s»\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° неизвеÑтна или не поддерживаетÑÑ Ð² .ONESHELL: «%s»\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Ошибка, пуÑÑ‚Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Стандартный ввод перенаправлен из %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Поток ошибок перенаправлен в %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Стандартный вывод перенаправлен в %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Ошибка Ð¿Ð¾Ñ€Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неÑколько ключей --sync-mutex" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неÑколько ключей --jobserver-fds" + +#~ msgid "virtual memory exhausted" +#~ msgstr "закончилаÑÑŒ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñть" + +#~ msgid "write error" +#~ msgstr "ошибка запиÑи" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "ВСТРОЕÐÐЫЙ RM %s\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" + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sЭто ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°; подробноÑти об уÑловиÑÑ… раÑпроÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ " +#~ "Ñмотрите\n" +#~ "%sв иÑходном коде. Мы ÐЕ предоÑтавлÑем гарантий; даже гарантий\n" +#~ "%sКОММЕРЧЕСКОЙ ЦЕÐÐОСТИ или ПРИГОДÐОСТИ ДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ.\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "излишний `endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "пуÑÑ‚Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° `override'" + +#~ msgid "invalid `override' directive" +#~ msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° `override'" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-предупреждение, поÑле CTRL-Y оÑтанутÑÑ Ñуб-процеÑÑÑ‹.\n" diff --git a/local/recipes/dev/gnu-make/source/po/sr.gmo b/local/recipes/dev/gnu-make/source/po/sr.gmo new file mode 100644 index 0000000000..ed1121da61 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/sr.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/sr.po b/local/recipes/dev/gnu-make/source/po/sr.po new file mode 100644 index 0000000000..79ce979e4d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/sr.po @@ -0,0 +1,2509 @@ +# Serbian translation for make. +# Copyright © 2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# МироÑлав Ðиколић , 2016–2022. +msgid "" +msgstr "" +"Project-Id-Version: make-4.3.90\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-09-25 10:48+0200\n" +"Last-Translator: МироÑлав Ðиколић \n" +"Language-Team: Serbian <(nothing)>\n" +"Language: sr\n" +"MIME-Version: 1.0\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" +"X-Generator: Poedit 2.3\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "покушавам да кориÑтим неподржану функцију: „%s“" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "члан архиве додирника није доÑтупан на ВМС-у" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Ðрхива „%s“ не поÑтоји" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: „%s“ није иÑправна архива" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Члан „%s“ не поÑтоји у „%s“" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch: Лош повратни код из „ar_member_touch“ на „%s“" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"Функција „lbr$set_module()“ није уÑпела да извуче податке модула, Ñтање = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "Функција „lbr$ini_control()“ није уÑпела Ñа Ñтањем = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "не могу да отворим библиотеку „%s“ да потражим Ñтање члана %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "ÐеиÑправно „%s“ за архиву „%s“ члан „%s“" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Члан „%s“%s: %ld бајта при %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (назив је можда Ñкраћен)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Датум %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " уид = %d, гид = %d, режим = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Рецепт има превише редова (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Прекид.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Члан архиве „%s“ је можда лажан; није обриÑан" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Члан архиве „%s“ је можда лажан; није обриÑан" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Бришем датотеку „%s“" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Бришем датотеку „%s“" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# рецепт за извршавање" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (уграђено):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (од „%s“, %lu. ред):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Директоријуми\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: не могу да добавим податке.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (кључ „%s“, м-време %I64u): не могу да отворим.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (уређај %d, и-чвор [%d,%d,%d]): не могу да отворим.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (уређај %ld, и-чвор %ld): не могу да отворим.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (кључ „%s“, м-време %I64u): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (уређај %d, и-чвор [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (уређај %ld, и-чвор %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Ðе" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " датотеке, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "не" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " немогућноÑти" + +#: src/dir.c:1180 +msgid " so far." +msgstr " за Ñада." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " немогућноÑти у %lu директоријума.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu: не ширим дубинÑки „%s“ за извоз у функцију шкољке\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "ДубинÑка променљива „%s“ упућује на Ñебе (евентуално)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "недовршена упута променљиве" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Рецепт је наведен за датотеку „%s“ у %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "Ðашао Ñам рецепт за датотеку „%s“ изричитом претрагом правила," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "али Ñе „%s“ Ñада Ñматра иÑтом датотеком као „%s“." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "Рецепат за „%s“ биће замењен у кориÑÑ‚ једног за „%s“." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "не могу да преименујем једну двотачку „%s“ у две двотачке „%s“" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "не могу да преименујем две двотачке „%s“ у једну двотачку „%s“" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Бришем поÑредничку датотеку „%s“" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Уклањам поÑредничке датотеке...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "„%s“ не може бити и „.NOTINTERMEDIATE“ и „.INTERMEDIATE“" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "„%s“ не може бити „.NOTINTERMEDIATE“ и „.SECONDARY“" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "„.NOTINTERMEDIATE“ и „.SECONDARY“ Ñе узајамно иÑкључују" + +#: src/file.c:942 +msgid "Current time" +msgstr "Тренутно време" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: ВременÑка ознака је ван опÑега; замењујем „%s“" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ðије мета:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Драгоцена датотека (предуÑлов од „.PRECIOUS“)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Лажна мета (предуÑлов од „.PHONY“)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Мета линије наредби." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# ОÑновно, „MAKEFILES“, или „-include/sinclude makefile“." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Правило изградње" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Претрага по изричитом правилу је обављена." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Претрага по изричитом правилу није обављена." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Изричити/Ñтатички корен шаблона: '%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Датотека је прелазни предуÑлов." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Датотека је предуÑлов за „.NOTINTERMEDIATE“." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Датотека је Ñекундарна (предуÑлов за „.SECONDARY“)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Такође твори:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Време измене није никада проверено." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Датотека не поÑтоји." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Датотека је превише Ñтара." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# ПоÑледња измена „%s“\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Датотека је оÑвежена." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Датотека није оÑвежена." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Рецепт тренутно ради (ОВО ЈЕ ГРЕШКÐ)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Рецепт завиÑноÑти ради (ОВО ЈЕ ГРЕШКÐ)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# УÑпешно је оÑвежена." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Треба да Ñе оÑвежи („-q“ је подешено)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Ðије уÑпела да Ñе оÑвежи." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# ÐеиÑправна вередноÑÑ‚ у члану „command_state“!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Датотеке" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# ÑтатиÑтика хеш-табеле датотека:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Поље „%s“ није у оÑтави: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: празна вредноÑÑ‚" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: „%s“ је ван опÑега" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "неиÑправан први аргумент за функцију „word“" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "први аргумент за функцију „word“ мора бити број већи од 0" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "неиÑправан први аргумент за функцију „wordlist“" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "неиÑправан други аргумент за функцију „wordlist“" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "не-бројевни први аргумент за функцију „intcmp“" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "не-бројевни други аргумент за функцију „intcmp“" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: „DuplicateHandle(In)“ није уÑпело (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: „DuplicateHandle(Err)“ није уÑпело (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "„CreatePipe()“ није уÑпело (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): „process_init_fd()“ није уÑпело\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Бришем привремену датотеку групе „%s“\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: недоÑтаје назив датотеке" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: превише аргумената" + +# +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: неиÑправна радња датотеке: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недовољан број аргумената (%d) за функцију „%s“" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "није примењено на овој платформи: функција „%s“" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "недовршен позив за функцију „%s“: недоÑтаје „%c“" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Празан назив функције" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "ÐеиÑправан назив функције: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Ðазив функције је предуг: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "ÐеиÑправан најмањи број аргумената (%u) за функцију „%s“" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "ÐеиÑправан највећи број аргумената (%u) за функцију „%s“" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: опција „%s“ је нејаÑна\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: опција „--%s“ не дозвољава аргумент\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: опција „%c%s“ не дозвољава аргумент\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: опција „%s“ захтева аргумент\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: непозната опција „--%s“\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: непозната опција „%c%s“\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: неиÑправна опција -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: неиÑправна опција -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: опција захтева аргумент -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: опција „-W %s“ је нејаÑна\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: опција „-W %s“ не дозвољава аргумент\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Проширујем „%s“\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Процењујем „%s“\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "не могу да доделим %lu бајта за хеш табелу: меморија је потрошена" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Учитавам=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Поново хеширам=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Сукоби=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Тражим изричито правило за „%s“.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Тражим изричито правило члана архиве за „%s“.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "ÐиÑам нашао изричито правило члана архиве за „%s“.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Избегавам изричито дубачење правила за правило „%s“.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Покушавам јаче.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Покушавам правило шаблона „%s“ Ñа обележјем „%.*s“.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Корен је предуг: „%s%.*s“.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Одбацујем правило „%s“ због немогућег предуÑлова правила „%s“.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Одбацујем правило „%s“ због немогућег изричитог предуÑлова „%s“.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Покушавам Ñа предуÑловом правила „%s“.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Покушавам изричити предуÑлов „%s“.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "„%s“ треба да поÑтоји.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Ðађох „%s“.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "КориÑтим правило ÑаглаÑноÑти „%s“ уÑлед „%s“.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "ПредуÑлов „%s“ правила „%s“ Ñе не квалификује да треба да поÑтоји.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Ðађох предуÑлов „%s“ као „VPATH“ „%s“\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Тражим правило Ñа екÑплицитном датотеком „%s“.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Тражим правило Ñа Ñредњом датотеком „%s“.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Одбацујем правило „%s“ због немогућег предуÑлова „%s“.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "ÐиÑам нашао „%s“.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Ðађох изричито правило „%s“ за „%s“.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Тражим правило ÑаглаÑноÑти за „%s“.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "ÐиÑам нашао изричито правило за „%s“.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Ðе могу да направим привремену датотеку" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (језгрени избачај)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (занемарено)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<уграђено>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] грешка %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Чекам на недовршене поÑлове...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Ðктиван Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ (%s) ПИД %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (удаљено)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "ПочиÑтио Ñам уÑпели Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ ПИД %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "ПочиÑтио Ñам неуÑпели Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ ПИД %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Бришем привремену датотеку групе „%s“\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "ÐиÑам уÑпео да обришем привремену датотеку групе „%s“ (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Уклањам Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ ПИД %s%s из ланца.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Отпуштен прÑтен за Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "Функција „process_easy()“ није уÑпела да покрене Ð¿Ñ€Ð¾Ñ†ÐµÑ (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Избројах %d аргумента у неуÑпелом покретању\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Стављам Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ (%s) ПИД %s%s у ланац.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Добијен прÑтен за Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: оÑвежавам мету „%s“ уÑлед: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "мета не поÑтоји" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "не могу да Ñпроведем ограничења оптерећења на овом оперативном ÑиÑтему" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "не могу да Ñпроведем ограничење оптерећења: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "нема више ручки датотеке: не могу да удвоÑтручим Ñтандардни улаз" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "нема више ручки датотеке: не могу да удвоÑтручим Ñтандардни излаз" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "нема више ручки датотеке: не могу да удвоÑтручим Ñтандардну грешку" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Ðе могу да повратим Ñтандардни улаз" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Ðе могу да повратим Ñтандардни излаз" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Ðе могу да повратим Ñтандардну грешку" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "мејк је почиÑтио Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñа пид-ом %s, још увек чекам на пид %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: можда је потрошен проÑтор окружења" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "„$SHELL“ је промењена (беше „%s“, Ñада је „%s“)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Правим привремену датотеку групе „%s“\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Садржај датотеке групе:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"Садржај датотеке групе:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (%d. ред) Лош контекÑÑ‚ шкољке (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "ÐиÑам уÑпео да отворим општу табелу Ñимбола: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Учитан је дељени објекат „%s“\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Учитани објекат „%s“ није проглашен да је ÑаглаÑан Ñа ОЈЛ-ом" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "ÐиÑам уÑпео да учитам Ñимбол „%s“ из „%s“: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Празан назив Ñимбола за учитано: „%s“" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Учитавам Ñимбол „%s“ из „%s“\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "РаÑтоварујем дељени објекат „%s“\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Радња „load“ није подржана на овој платформи" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Опције:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Занемарено зарад ÑаглаÑноÑти.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make БезуÑловно одрађује Ñве мете.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C ДИР, --directory=ДИР\n" +" Прелази у ДИРЕКТОРИЈУМ пре него што било шта " +"уради.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d ИÑпиÑује доÑта података за уклањање грешака.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=ЗÐСТÐВИЦЕ] ИÑпиÑује разне врÑте података за уклањање " +"грешака.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Променљиве окружења превазилазе " +"мејк_датотеке.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E STRING, --eval=ÐИСКРПроцењује ÐИСКУ као изјаву мејк_датотеке.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ДТТКÐ, --file=ДТТКÐ, --makefile=ДТТКÐ\n" +" Чита ДÐТОТЕКУ као мејк_датотеку.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Приказује ову помоћ и излази.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Занемарује грешке из рецепата.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I ДИР, --include-dir=ДИР\n" +" Тражи у ДИРЕКТОРИЈУМУ укључене мејк_датотеке.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [Бр.], --jobs[=Бр.] Допушта БРОЈ поÑла одједном; беÑконачан број " +"поÑлова без аргумената.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=СТИЛ Бира Ñтил Ñервера поÑла за коришћење.\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going ÐаÑтавља и даље када неке мете не могу бити " +"одрађене.\n" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [Бр.], --load-average[=Бр.], --max-load[=Бр.]\n" +" Ðе започиње више поÑлова оÑим ако оптерећење " +"није иÑпод БРОЈÐ.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times КориÑти поÑледње м-време између Ñимболичких " +"веза и мете.\n" + +#: src/main.c:355 +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" + +#: src/main.c:358 +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" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[ВРСТÐ], --output-sync[=ВРСТÐ]\n" +" УÑаглашава излаз паралелних поÑлова ВРСТОМ.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr "" +" -p, --print-data-base ИÑпиÑује унутрашњу базу података мејка.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Ðе покреће ниједан рецепт; излазно Ñтање " +"говори да ли је оÑвежен.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules ИÑкључује уграђена изричита правила.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables ИÑкључује уграђена подешавања променљиве.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={СЕЈЕ|наÑумично|обрнуто|ништа}]\n" +" Обавља мешање предуÑлова и циљева.\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Ðе приказује рецепте.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Одзвања рецептима (иÑкључује режим „--" +"silent“).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" ИÑкључује „-k“.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Додирује мете умеÑто да их поново одрађује.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace ИÑпиÑује податке о праћењу.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version ИÑпиÑује издање програма и излази.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory ИÑпиÑује тренутни директоријум.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory ИÑкључује „-w“, чак и ако је изричито " +"укључена.\n" + +#: src/main.c:392 +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" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Упозорава када Ñе упућује на неодређену " +"променљиву.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "грешка пиÑања: Ñтандардни излаз" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "празна ниÑка је неиÑправна као назив датотеке" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "непозната одредба нивоа прочишћавања „%s“" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "непозната врÑта уÑклађивања излаза „%s“" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Употреба: %s [опције] [мета] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Овај програм је изграђен за „%s“\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Овај програм је изграђен за „%s“ (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Грешке пријавите на \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Добих прекид/изузетак (код = 0x%lx, адреÑа = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Ðеобрадив филтер изузеткаје позван из програма „%s“\n" +"Код изузетка = %lx\n" +"ЗаÑтавице изузетка = %lx\n" +"ÐдреÑа изузетка = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Повреда приÑтупа: радња пиÑања на адреÑи 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Повреда приÑтупа: радња читања на адреÑи 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "Функција „нађи_и_подеÑи_шкољку()“ подешава „оÑновну_шкољку“ = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" +"Претрага путање „нађи_и_подеÑи_шкољку()“ подешава „оÑновну_шкољку“ = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "поништавам везу (привремена датотека): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"упозорење: поÑлужитељ поÑла није доÑтупан: кориÑтим „-j1“. Додајте + да " +"родитељ одреди правило." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"упозорење: „-j%d“ је приÑиљено у Ñубмејку: поново подешава режим поÑлужитеља " +"поÑла." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Мејк_датотека Ñа Ñтандардног улаза је наведена два пута" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: привремена датотека „%s“: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"упозорење: „-j%d“ је приÑиљено у „makefile“: поново подешава режим " +"поÑлужитеља поÑла." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Паралелни поÑлови (-j) ниÑу подржани на овој платформи." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Враћам на режим једног поÑла (-j1) mode." + +#: src/main.c:2248 +#, fuzzy, c-format +msgid "Using jobserver controller %s\n" +msgstr "Ðепознат Ñтил уÑклађивања Ñервера поÑла „%s“" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "неиÑправно узајамно иÑкључивање уÑклађивања излаза: %s" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Симболичке везе ниÑу подржане: иÑкључујем „-L“." + +#: src/main.c:2327 +#, fuzzy, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "неиÑправан режим мешања: %s: „%s“" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "ОÑвежавам мејк_датотеке...\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Мејк_датотека „%s“ Ñе можда понавља; неђу је поново одрадити.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: ниÑам уÑпео да учитам" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "ÐиÑам уÑпео поново да одрадим мејк_датотеку „%s“." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "ÐиÑам нашао укључену мејк_датотеку „%s“." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "ÐиÑам нашао мејк_датотеку „%s“" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Ðе могу да Ñе вратим у изворни директоријум" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Поново-извршавам[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr "„.DEFAULT_GOAL“ Ñадржи више од једне мете" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Ðема мета" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "ÐиÑу наведене мете и ниÑам нашао мејк_датотеку" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "ОÑвежавам циљне мете...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"упозорење: Откривен је проблем Ñа чаÑовником. Ваша изградња може бити " +"недовршена." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "Опција „%s%s“ захтева аргумент не-празне ниÑке" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "Опција „-%c“ захтева аргумент позитивног целог броја" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sИзградња за „%s“\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sИзградња за „%s“(%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sДозвола ОЈЛи3+: Гнуова ОЈЛ 3. издање или новије \n" +"%sОво је Ñлободан Ñофтвер: можете Ñлободно да га мењате и раÑподељујете.\n" +"%sÐема ÐИКÐКВЕ ГÐРÐÐЦИЈЕ, у Ñкалду Ñа законом.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# База података мејка, штампана %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# База података мејка је завршена %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "КориÑтим оÑновни рецепт за „%s“.\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "fwrite: привремена датотека „%s“: %s" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "поништавам везу (привремена датотека): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen: привремена датотека „%s“: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: привремена датотека „%s“: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Улазим у непознат директоријум\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Ðапуштам непознат директоријум\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Улазим у директоријум „%s“\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Ðапуштам директоријум „%s“\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Улазим у непознат директоријум\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Ðапуштам непознат директоријум\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Улазим у директоријум „%s“\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Ðапуштам директоријум „%s“\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"упозорење: Ðе могу да прибавим катанац излаза, иÑкључујем уÑклађивање излаза." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Стајем.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Ðе могу да отворим Ñервер поÑла „%s“: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Ðепознат Ñтил уÑклађивања Ñервера поÑла „%s“" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "Ñтварам Ñпојку поÑла" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "удвоÑтручавам Ñпојку поÑлова" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "почетна Ñпојка поÑлужитеља поÑла" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "неиÑправна „--jobserver-auth“ ниÑка „%s“" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "пишем поÑлужитеља поÑла" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "поÑлужитељ поÑла је угашен" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "п-бира Ñпојку поÑлова" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "читам Ñпојку поÑла" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "неиÑправна „--sync-mutex“ ниÑка „%s“" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "не могу да отворим узајамно иÑкључивање уÑклађивања излаза „%s“: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Читам мејк_датотеке...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Читам мејк_датотеку „%s“" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (нема оÑновног циља)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (претражујем путању)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (не марим)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (нема ~ проширења)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "ПреÑкачем УТФ-8 БОМ у мејк_датотеци „%s“\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "ПреÑкачем УТФ-8 БОМ у међумеморији мејк_датотеке\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "неиÑправна ÑинтакÑа у уÑлову" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "рецепт долази пре прве мете" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "недоÑтаје правило пре рецепта" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "недоÑтаје раздвајач (да ли Ñте миÑлили ТÐБУЛÐТОР умеÑто 8 размака?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "недоÑтаје раздвојник" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "недоÑтаје шаблон мете" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "више шаблона мете" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "шаблон мете не Ñадржи „%%“" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "недоÑтаје „endif“" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "празан назив променљиве" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "Ñувишан текÑÑ‚ након директиве „define“" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "недоÑтаје „endef“, неокончано „define“" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "Ñувишан текÑÑ‚ након директиве „endef“" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "Ñувишан текÑÑ‚ након директиве „%s“" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "Ñувишно „%s“" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "Ñамо једно „else“ по уÑлову" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Лоша одредница променљиве Ñпецифичне мети" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "„.WAIT“ не треба да има предуÑлове" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "„.WAIT“ не треба да има наредбе" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "предуÑлови Ñе не могу одредити у рецептима" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "групиÑане мете морају обезбедити рецепт" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "помешана правила изричитог и Ñтатичког шаблона" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "помешана изричита и обична правила" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "мета „%s“ не одговара шаблону мете" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "датотека мете „%s“ има и : и :: уноÑе" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "мета „%s“ је дата више од једном у иÑтом правилу" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "упозорење: препиÑујем рецепт за мету „%s“" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "упозорење: занемарујем Ñтари рецепт за мету „%s“" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** помешана изричита и обична правила: заÑтарела ÑинтакÑа" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "упозорење: препиÑујем чланÑтво групе за мету „%s“" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "упозорење: видех ÐИШТÐÐ’ÐРзнак; оÑтатак реда је занемарен" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "упозорење: препиÑујем рецепт за мету „%s“" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Ðишта неће бити урађено за „%s“." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "„%s“ је оÑвежено." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "ЧиÑтим датотеку „%s“.\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sÐема правила за одрађивање мете „%s“, треба га „%s“%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sÐема правила за одрађивање мете „%s“%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Разматрам датотеку мете „%s“.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Ðедавно Ñам покушао и ниÑам уÑпео да оÑвежим датотеку „%s“.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Датотека „%s“ је већ разматрана.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Још увек оÑвежавам датотеку „%s“.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Завршио Ñам оÑвежавање датотеке „%s“.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Датотека „%s“ не поÑтоји.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Упозорење: „.LOW_RESOLUTION_TIME“ датотека „%s“ има виÑоку резолуцију " +"временÑке ознаке" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "ГрупиÑани парњак мете „%s“ датотеке „%s“ не поÑтоји.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "КориÑтим оÑновни рецепт за „%s“.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Кружна „%s <— %s“ завиÑноÑÑ‚ је одбачена." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Завршио Ñам предуÑлове датотеке мете „%s“.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "ПреудÑлови од „%s“ Ñу одрађени.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "ОдуÑтајем над датотеком мете „%s“.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Мета „%s“ није поново одрађена због грешака." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "ПредуÑлов „%s“ је Ñамо по поретку за мету „%s“.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "ПреудÑлов „%s“ мете „%s“ не поÑтоји.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "ПредуÑлов „%s“ је новији од мете „%s“.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "ПредуÑлов „%s“ је Ñтарији од мете „%s“.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Мета „%s“ је двоÑтрука двотачка и нема предуÑлове.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "Ðема рецепта за „%s“ и никакви предуÑлови заправо ниÑу мењани.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Одрађујем „%s“ због заÑтавице увек-одради.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Ðема потребе за поновнм одрађивањем мете „%s“" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; кориÑтим „VPATH“ назив „%s“" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Морам поново да одрадим мету „%s“.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Занемарујем „VPATH“ назив „%s“.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Рецепт од „%s“ је покренут.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "ÐиÑам уÑпео поново да одрадим датотеку мете „%s“.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "УÑпешно Ñам одрадио датотеку мете „%s“.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Датотека мете „%s“ треба поново да Ñе одради под „-q“.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "КориÑтим оÑновне наредбе за „%s“.\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Упозорење: Датотека „%s“ има време измене %s Ñек. у будућноÑти" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "„.LIBPATTERNS“ елемент „%s“ није шаблон" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Прилагођени неће извеÑти: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "упозорење:занемарујем предуÑлове на дефиницији правила ÑуфикÑа" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Изричита правила" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Ðема изричитих правила." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u изричита правила, %u (%.1f%%) терминал." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "ГРЕШКÐ: број_правила_шаблона је погрешан! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "неиÑправан режим мешања: %s: „%s“" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "непознати Ñигнал" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "ОбуÑтави" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Прекини" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Изађи" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "ÐеиÑправна инÑтрукција" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Замка праћења/тачке прекида" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Прекинуто" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "ИОТ замка" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "ЕМТ замка" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Изузетак покретног зареза" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Убијен" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Грешка Ñабирнице" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Грешка Ñегментације" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Лош ÑиÑтемÑки позив" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Оштећена Ñпојка" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Будилник" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Окончан" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "КориÑнички одређени Ñигнал 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "КориÑнички одређени Ñигнал 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "ÐŸÐ¾Ñ‚Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ˜Ðµ напуштен" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "ÐеуÑпех напајања" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "ЗауÑтављен" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "ЗауÑтављен (улаз конзоле)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "ЗауÑтављен (излаз конзоле)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "ЗауÑтављен (Ñигнал)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Прекорачено је временÑко ограничење процеÑора" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Прекорачено је ограничење величине датотеке" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Виртуелни одбројавач је иÑтекао" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Одбројавач профилиÑања је иÑтекао" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Прозор је измењен" + +#: src/signame.c:189 +msgid "Continued" +msgstr "ÐаÑтављен" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Хитни У/И уÑлов" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O је могућ" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "СИГВИÐД" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "СИГФОÐ" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Губитак изворишта" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "ОпаÑан Ñигнал" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Захтев за информацијама" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Ко-процеÑор покретног зареза није доÑтупан" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Ðема међумеморија причуваних ниÑки\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s међумеморије причуваних ниÑки: %lu (%lu) / ниÑке = %lu / Ñмештај = %lu " +"B / проÑек = %lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s текућа међумеморија: величина = %hu B / коришћено = %hu B / број = %hu / " +"проÑек = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s оÑталих коришћених: укупно = %lu B / број = %lu / проÑек = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s оÑталих Ñлободних: укупно = %lu B / највише = %lu B / најмање = %lu B / " +"проÑек = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s учинковитоÑÑ‚ причуваних ниÑки: тражења = %lu / проÑек погодака = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# ÑтатиÑтика хеш-табеле:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "аутоматÑки" + +#: src/variable.c:1789 +msgid "default" +msgstr "оÑновно" + +#: src/variable.c:1792 +msgid "environment" +msgstr "окружење" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "мејк_датотека" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "окружење под „-e“" + +#: src/variable.c:1801 +msgid "command line" +msgstr "линија наредби" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "директива „override“" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (од „%s“, %lu. ред)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# променљива подешава ÑтатиÑтику хеш табеле:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Променљиве\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# ВредноÑти променљиве према шаблону" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Ðема вредноÑти променљиве према шаблону." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u вредноÑти променљиве према шаблону" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "упозорење: неодређена променљива „%.*s“" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "Функција „sys$search()“ није уÑпела Ñа %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-упозорење, мораћете поново да укључите „КТРЛ-Y“ руковање из ДЦЛ-а.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "ЦД ИЗГРÐДЊЕ „%s“\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "ДЦЛ: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Придодајем излаз на „%s“\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Придодајем „%.*s“ и чиÑтим\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "УмеÑто тога извршавам „%s“\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# „VPATH“ путање претраге\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Ðема „vpath“ путања претраге." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u „vpath“ путање претраге.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ðема опште (променљиве „VPATH“) путање претраге." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Општа (променљиве „VPATH“) путања претраге:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Подножја поÑлужитеља поÑла Ñу ограничена на %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "правим Ñемафор поÑлужитеља поÑла: (грешка %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"унутрашња грешка: не могу да отворим Ñемафор поÑлужитеља поÑла „%s“: (грешка " +"%ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Клијент поÑлужитеља поÑла (Ñемафор „%s“)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "отпуштам Ñемафор поÑлужитеља поÑла: (грешка %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "Ñемафор или Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑа чека: (грешка %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "не могу да обрадим узајамно иÑкључивање уÑклађивања излаза „%s“: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "неиÑправно узајамно иÑкључивање уÑклађивања излаза: %s" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "ПоÑтавка Ñервера поÑла (пупи „%s“)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "ПоÑтавка Ñервера поÑла (опиÑници датотека %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Клијент поÑлужитеља поÑла (опиÑници датотека %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "отвори датотеку (привремена датотека)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: кориÑник „%lu“ (Ñтварни „%lu“), група „%lu“ (Ñтварна „%lu“)\n" + +#~ msgid "Initialized access" +#~ msgstr "Покренут приÑтуп" + +#~ msgid "User access" +#~ msgstr "ПриÑтуп кориÑника" + +#~ msgid "Make access" +#~ msgstr "ПриÑтуп мејка" + +#~ msgid "Child access" +#~ msgstr "ПриÑтуп подпроцеÑа" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "„-O[ВРСТÐ]“ (--output-sync[=ВРСТÐ]) није подешено за ову изградњу." + +#~ msgid "jobserver pipeline" +#~ msgstr "Ñпојни ред поÑлужитеља поÑла" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: Ðема такве наредбе\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Ðема такве наредбе\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: ÐиÑам нашао програм шкољке" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "„%s“ је обуÑтављен за 30 Ñекунде..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "обављено је „Ñпавај(30)“. ÐаÑтављам.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Ðепозната грешка %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Упозорење: Датотека „%s“ има време измене у будућноÑти" + +#~ msgid " terminal." +#~ msgstr " терминал." diff --git a/local/recipes/dev/gnu-make/source/po/stamp-po b/local/recipes/dev/gnu-make/source/po/stamp-po new file mode 100644 index 0000000000..9788f70238 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/stamp-po @@ -0,0 +1 @@ +timestamp diff --git a/local/recipes/dev/gnu-make/source/po/sv.gmo b/local/recipes/dev/gnu-make/source/po/sv.gmo new file mode 100644 index 0000000000..4c29a09180 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/sv.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/sv.po b/local/recipes/dev/gnu-make/source/po/sv.po new file mode 100644 index 0000000000..04e7d76069 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/sv.po @@ -0,0 +1,2451 @@ +# Swedish messages translation of make +# Copyright © 2002, 2007, 2011, 2013, 2014, 2016, 2019, 2020, 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Tomas Gradin , 1996-2002. +# Christer Andersson , 2007. +# Göran Uddeborg , 2011, 2013, 2014, 2016, 2019, 2020, 2022. +# +# $Id: make.po,v 1.34 2022-10-25 08:53:05+02 göran Exp $ +msgid "" +msgstr "" +"Project-Id-Version: make 4.3.92\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-25 08:52+0200\n" +"Last-Translator: Göran Uddeborg \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "försök att använda en funktion som inte stöds: â€%sâ€" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "att nudda en arkivmedlem är inte tillgängligt i VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "nudda: Arkivet â€%s†finns inte" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "nudda: â€%s†är inte nÃ¥got giltigt arkiv" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "nudda: medlemmen â€%s†finns inte i â€%sâ€" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "nudda: Felaktig returkod frÃ¥n ar_member_touch pÃ¥ â€%sâ€" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"lbr$set_module() misslyckades med att extrahera modulinformation, status = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() misslyckades och gav status = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "kan inte öppna biblioteket â€%s†för att slÃ¥ upp medlemsstatus %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Felaktig %s för arkivet %s medlemmen %s" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Medlem â€%sâ€%s: %ld byte vid %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (namnet kan vara avkortat)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Datum %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, flaggor = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Receptet har för mÃ¥nga rader (gräns %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Avbrott.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Arkivmedlemmen â€%s†kan vara felaktig; ej borttagen" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Arkivmedlemmen â€%s†kan vara felaktig; ej borttagen" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Tar bort filen â€%sâ€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Tar bort filen â€%sâ€" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# recept att utföra" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (inbyggd):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (frÃ¥n â€%sâ€, rad %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Kataloger\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: kunde inte ta status.\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (nyckel %s, mtid %s): kunde inte öppnas.\n" + +#: src/dir.c:1126 +#, 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" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (enhet %ld, inod %ld): kunde inte öppnas.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (nyckel %s, mtid %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (enhet %d, inod [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (enhet %ld, inod %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Inga" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " filer, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "inga" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " omöjligheter" + +#: src/dir.c:1180 +msgid " so far." +msgstr " hittills." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " omöjligheter i %lu kataloger.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: expanderar inte %s rekursivt för att exportera till skalfunktion\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Den rekursiva variabeln â€%s†hänvisar till sig själv (sÃ¥ smÃ¥ningom)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "oavslutad variabelreferens" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "Recept angavs för filen â€%s†pÃ¥ %s:%lu," + +#: src/file.c:277 +#, 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," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "men â€%s†anses nu vara samma fil som â€%sâ€." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" +"Kommer att bortse frÃ¥n recept för â€%s†till förmÃ¥n för det som gäller â€%sâ€." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "kan inte ändra namn frÃ¥n enkelkolon â€%s†till dubbelkolon â€%sâ€" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "kan inte ändra namn frÃ¥n dubbelkolon â€%s†till enkelkolon â€%sâ€" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Tar bort mellanfilen â€%sâ€" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Tar bort mellanfiler …\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s kan inte vara bÃ¥de .NOTINTERMEDIATE och .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s kan inte vara bÃ¥de .NOTINTERMEDIATE och .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE och .SECONDARY är ömsesidigt uteslutande" + +#: src/file.c:942 +msgid "Current time" +msgstr "Nuvarande tid" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Tidsvärde utanför gränser; ersätter med %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Inte ett mÃ¥l:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Värdefull fil (nödvändig för .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# LÃ¥tsasmÃ¥l (nödvändig för .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# KommandoradsmÃ¥l." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "" +"# En standardmakefil, eller enligt MAKEFILES, eller en -include/sinclude-" +"makefil." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Inbyggd regel" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Implicit regelsökning har genomförts." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Implicit regelsökning har inte genomförts." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Implicit/statisk mönsterstam: â€%sâ€\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Filen är ett övergÃ¥ende beroende." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Filen är en förutsättning för .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Filen är sekundär (förutsättning för .SECONDARY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Skapar ocksÃ¥:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Ändringstiden har inte kontrollerats." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Filen finns inte." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Filen är mycket gammal." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Senast ändrad %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Filen har uppdaterats." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Filen har inte uppdaterats." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Recept körs just nu (DETTA ÄR ETT FEL)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Beroenderecept körs (DETTA ÄR ETT FEL)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Uppdateringen lyckades." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Behöver uppdateras (-q har angivits)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Uppdateringen misslyckades." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ogiltigt värde i medlemmen â€command_stateâ€!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Filer" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# statistik för filhashtabell:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Fältet â€%s†cachas inte: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: tomt värde" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: â€%s†utanför intervallet" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "felaktigt första argument till funktionen â€wordâ€" + +#: src/function.c:803 +#, c-format +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" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "felaktigt första argument till funktionen â€wordlistâ€" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "felaktigt andra argument till funktionen â€wordlistâ€" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "icke-numeriskt första argument till funktionen â€intcmpâ€" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "icke-numeriskt andra argument till funktionen â€intcmpâ€" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) misslyckades (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Fel) misslyckades (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() misslyckades (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() misslyckades\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Städar bort tillfällig satsfil %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: filnamn saknas" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "öppna: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "skriv: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "stäng: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: för mÃ¥nga argument" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "läs: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: felaktig filÃ¥tgärd: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "otillräckligt antal argument (%u) till funktionen â€%sâ€" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "ej implementerat pÃ¥ denna plattform: funktionen â€%sâ€" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "oavslutat funktionsanrop â€%sâ€: â€%c†saknas" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Tomt funktionsnamn" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Felaktigt funktionsnamn: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Funktionsnamnet är för lÃ¥ngt: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Felaktigt minsta antal argument (%u) till funktionen â€%sâ€" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Felaktigt största antal argument (%u) till funktionen â€%sâ€" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: flaggan â€%s†är tvetydig\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: flaggan â€--%s†tar inget argument\n" + +#: src/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" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: flaggan â€%s†kräver ett argument\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: okänd flagga â€--%sâ€\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: okänd flagga â€%c%sâ€\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: otillÃ¥ten flagga -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ogiltig flagga -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: flaggan kräver ett argument -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: flaggan â€-W %s†är tvetydig\n" + +#: src/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" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Expanderar â€%sâ€\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Evaluerar â€%sâ€\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "kan inte allokera %lu byte för hashtabell: minnet slut" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Fyllnadsgrad=%lu/%lu=%.0f %%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Omhash=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Kollisioner=%lu/%lu=%.0f %%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Letar efter en implicit regel för â€%sâ€.\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Letar efter en implicit regel för arkivmedlemmen â€%sâ€.\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Ingen implicit regel för arkivmedlem funnen för â€%sâ€.\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Undviker rekursion orsakad av implicit regel för regeln â€%sâ€.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "Försöker hÃ¥rdare.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Prövar mönsterregeln â€%s†med stammen â€%.*sâ€.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stammen är för lÃ¥ng: â€%s%.*sâ€.\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "" +"Avvisar regeln â€%s†pÃ¥ grund av den omöjliga regelförutsättningen â€%sâ€.\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "" +"Avvisar regeln â€%s†pÃ¥ grund av den omöjliga implicita förutsättningen " +"â€%sâ€.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Prövar det regelförutsättningen â€%sâ€.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Prövar den implicita förutsättningen â€%sâ€.\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "â€%s†borde finnas.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Hittade â€%sâ€.\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "Använder kompatibilitetsregeln â€%s†pÃ¥ grund av â€%sâ€.\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "" +"Förutsättningen â€%s†för regeln â€%s†kvalificerar inte som borde finnas.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Hittade förutsättningen â€%s†som VPATH â€%sâ€.\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Letar efter en regel med den explicita filen â€%sâ€.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Letar efter en regel med mellanfilen â€%sâ€.\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Avvisar regeln â€%s†pÃ¥ grund av den omöjliga förutsättningen â€%sâ€.\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "â€%s†finns inte.\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Hittade en implicit regel â€%s†för â€%sâ€.\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Söker efter en kompatibilitetsregel för â€%sâ€.\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Hittade ingen implicit regel för â€%sâ€.\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Kan inte skapa en temporärfil" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (minnesdump)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ignoreras)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Fel %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Inväntar oavslutade jobb..." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Levande barnprocess %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (fjärr)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Inhöstar lyckad barnprocess: %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Inhöstar misslyckad barnprocess: %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Städar bort tillfällig satsfil %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Bortstädning av tillfällig satsfil %s misslyckades (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Tar bort barnprocessen %p PID %s%s frÃ¥n kedjan.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Frigjorde symbol för barnprocessen %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() misslyckades med processtart (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Räknade till %d argument vid misslyckad start\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "För upp barnprocessen %p (%s) PID %s%s pÃ¥ kedjan.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Erhöll symbol för barnprocessen %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: uppdatera mÃ¥let â€%s†pÃ¥ grund av: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "mÃ¥let finns inte" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "kan inte upprätthÃ¥lla lastbegränsningar i detta operativsystem" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "kan inte upprätthÃ¥lla lastbegränsning: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "inga fler filhandtag: kunde inte duplicera standard in" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "inga fler filhandtag: kunde inte duplicera standard ut" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "inga fler filhandtag: kunde inte duplicera standard fel" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Kunde inte Ã¥terställa standard in" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Kunde inte Ã¥terställa standard ut" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Kunde inte Ã¥terställa standard fel" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "make inhöstade barn-pid %s, inväntar fortfarande pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: miljöutrymmet kanske är slut" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL ändrades (var â€%sâ€, är nu â€%sâ€)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Skapar tillfällig satsfil %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"SatsfilinnehÃ¥ll:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"SatsfilinnehÃ¥ll:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, 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" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Misslyckades att öppna den globala symboltabellen: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Laddade det delade objektet %s\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Laddat objekt %s är inte deklarerat att vara GPL-kompatibelt" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Misslyckades att ladda symbolen %s frÃ¥n %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "Tomt symbolnamn för laddning: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Laddar symbol %s frÃ¥n %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Laddar ur det delade objektet %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Operationen â€load†stödjs inte pÃ¥ denna plattform" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Flaggor:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Ignoreras av kompatibilitetsskäl.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Bygg ovillkorligen alla mÃ¥l.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C KATALOG, --directory=KATALOG\n" +" Byt katalog till KATALOG innan nÃ¥got görs.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr "" +" -d Skriv ut massor av felsökningsinformation.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=FLAGGOR] Skriv ut olika sorters " +"felsökningsinformation.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Miljövariabler Ã¥sidosätter makefiler.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E STRÄNG, --eval=STRÄNG Evaluera STRÄNG som en makefile-sats.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f FIL, --file=FIL, --makefile=FIL\n" +" Använd FIL som makefil.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Skriv ut detta meddelande och avsluta.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Ignorera fel frÃ¥n recept.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I KATALOG, --include-dir=KATALOG\n" +" Genomsök KATALOG efter inkluderade makefiler.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] TillÃ¥t N samtidiga jobb; oändligt mÃ¥nga om " +"inget antal anges.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STIL Välj stilen pÃ¥ jobbserver att använda.\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Fortsätt även om vissa mÃ¥l inte kan skapas.\n" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" PÃ¥börja fler jobb endast om lasten understiger " +"N.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Använd den senaste av mtiderna för symboliska " +"länkar eller mÃ¥l.\n" + +#: src/main.c:355 +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" +" -n, --just-print, --dry-run, --recon\n" +" Kör inte nÃ¥got recept, skriv bara ut dem.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o FIL, --old-file=FIL, --assume-old=FIL\n" +" Betrakta FIL som mycket gammal och Ã¥terskapa " +"den inte.\n" + +#: src/main.c:361 +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" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base Skriv ut makes interna databas.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Kör inga recept; slutstatus visar om det är " +"aktuellt.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr "" +" -r, --no-builtin-rules Inaktivera de inbyggda implicita reglerna.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr "" +" -R, --no-builtin-variables Inaktivera de inbyggda " +"variabelinställningarna.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={FRÖ|random|reverse|none}]\n" +" Blanda förutsättningar och mÃ¥l.\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Ã…terge inte recept.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Skriv recept (avaktivera --silent-läge).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Stäng av -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Nydatera mÃ¥l i stället för att Ã¥terskapa dem.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Skriv spÃ¥rningsinformation.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr "" +" -v, --version Skriv ut makes versionsnummer och avsluta.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Skriv ut aktuell katalog.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Stäng av -w, även om det är implicit " +"pÃ¥slaget.\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n" +" Betrakta FIL som hur ny som helst.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Varna vid användning av en odefinierad " +"variabel.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "skrivfel: standard ut" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "en tom sträng är ett ogiltigt filnamn" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "okänd felsökningsnivÃ¥ â€%s†angiven" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "okänd typ av utmatningssynkronisering â€%sâ€" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Användning: %s [flaggor] [mÃ¥l] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Detta program byggdes för %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Detta program byggdes för %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Anmäl fel till .\n" +"Skicka synpunkter pÃ¥ översättningen till .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Avbrott/Undantag fÃ¥ngat (kod = 0x%lx, adress = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"Ett ohanterat undantagsfilter anropades frÃ¥n programmet %s\n" +"Undantagskod = %lx\n" +"Undantagsflaggor = %lx\n" +"Undantagsadress = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "Ã…tkomstförseelse: skrivinstruktion pÃ¥ adressen 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "Ã…tkomstförseelse: läsinstruktion pÃ¥ adressen 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() ger default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "sökvägen för find_and_set_shell() gav default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "avlänka (temporärfil): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"varning: jobbserver otillgänglig: använder -j1. Lägg till â€+†i " +"föräldraregeln." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "varning: -j%d framtvingat i del-make: Ã¥terställer jobbserverläge." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefil frÃ¥n standard in angavs dubbelt" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: temporärfilen %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "varning: -j%d framtvingat i makefile: Ã¥terställer jobbserverläge." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Parallella jobb (-j) stöds inte pÃ¥ denna plattform." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Ã…terställer till enkeljobbsläge (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "Okänd styrning för jobbservern %s\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "Använder mutex för utmatningssynkronisering %s\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Symboliska länkar stöds inte: inaktiverar -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Aktivera blandningsläge: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Uppdaterar makefiler...\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefilen â€%s†kan loopa; Ã¥terskapas inte.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: misslyckades att ladda" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Misslyckades med att Ã¥terskapa makefilen â€%sâ€." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Den inkluderade makefilen â€%s†fanns inte." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Makefilen â€%s†fanns inte" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Kunde inte Ã¥tergÃ¥ till ursprungskatalogen" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Utför pÃ¥ nytt[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL innehÃ¥ller fler än ett mÃ¥l" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Inga mÃ¥l" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Inga mÃ¥l angavs och ingen makefil hittades" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Uppdaterar slutmÃ¥l...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"varning: Klockförskjutning upptäckt. Bygget kan ha blivit ofullständigt." + +#: src/main.c:3186 +#, 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" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "flaggan â€-%c†kräver ett positivt heltal som argument" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sByggt för %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sByggt för %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sLicens GPLv3+: GNU GPL version 3 eller senare \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" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make-databas, utskriven %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Färdigställde Make-databas %s\n" + +#: src/misc.c:602 +#, c-format +msgid "%s value %s: %s" +msgstr "%s värde %s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "%s värde %s: inte en katalog" + +#: src/misc.c:613 +#, c-format +msgid "using default temporary directory '%s'" +msgstr "använder standardtemporärkatalogen â€%sâ€" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "skapa temporärfilen %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "avlänka temporärfilen %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: temporärfilen %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: temporärfilen %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: GÃ¥r till en okänd katalog\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Lämnar en okänd katalog\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: GÃ¥r till katalogen â€%sâ€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Lämnar katalogen â€%sâ€\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: GÃ¥r till en okänd katalog\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Lämnar en okänd katalog\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: GÃ¥r till katalogen â€%sâ€\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Lämnar katalogen â€%sâ€\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"varning: Kan inte fÃ¥ utmatningslÃ¥s, avaktiverar utmatningssynkronisering." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Stannar.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Det gÃ¥r inte att öppna jobbservern %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Okänd autentiseringsstil för jobbservern â€%sâ€" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "skapar jobbrör" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "duplicerar jobbrör" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "iordningställer rör till jobbserver" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "felaktig sträng --jobserver-auth â€%sâ€" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "skriver till jobbserver" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "jobbservern stängdes ner" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect jobbrör" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "läser frÃ¥n jobbledning" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "felaktig sträng --jobserver-auth â€%sâ€" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "kan inte öppna mutex för utmatningssynkronisering %s: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "Det gÃ¥r inte att öppna â€%s†med O_TMPFILE: %s.\n" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Läser makefiler...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Läser makefilen â€%sâ€" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (inget standardmÃ¥l)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (sökväg)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (oviktigt)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (ingen ~-expansion)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "Hoppar över UTF-8-BOM i makefilen â€%sâ€\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Hoppar över UTF-8-BOM i makefile-buffert\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "ogiltig syntax i villkorssats" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "recept inleds före första mÃ¥let" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "regel saknas före recept" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "separator saknas (var avsikten TAB i stället för 8 mellanslag?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "separator saknas" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "mÃ¥lmönster saknas" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "flera mÃ¥lmönster" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "mÃ¥lmönstret innehÃ¥ller inget â€%%â€" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "â€endif†saknas" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "tomt variabelnamn" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "överflödig text efter direktivet â€defineâ€" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "â€endef†saknas, oavslutad â€defineâ€" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "överflödig text efter direktivet â€endefâ€" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "överflödig text efter direktivet â€%sâ€" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "överflödigt â€%sâ€" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "endast ett â€else†per villkor" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Felformad mÃ¥lberoende variabeldefinition" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT skall inte ha nÃ¥gra förutsättningar" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT skall inte ha kommandon" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "beroenden kan inte definieras i recept" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "grupperade mÃ¥l mÃ¥ste tillhandahÃ¥lla ett recept" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "blandade implicita regler och statiska mönsterregler" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "blandade implicita regler och normala regler" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "mÃ¥let â€%s†motsvarar inte mÃ¥lmönstret" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "mÃ¥lfilen â€%s†har bÃ¥de poster med : och ::" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "mÃ¥let â€%s†anges flera gÃ¥nger i samma regel" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "varning: Ã¥sidosätter recept för mÃ¥let â€%sâ€" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "varning: ignorerar gammalt recept för mÃ¥let â€%sâ€" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** blandade implicita regler och normala regler: förÃ¥ldrad syntax" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "varning: Ã¥sidosätter gruppmedlemskap för mÃ¥let â€%sâ€" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "varning: NUL-tecken upptäckt, bortser frÃ¥n resten av raden" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "varning: mönsterreceptet uppdaterade inte motpartsmÃ¥let â€%sâ€." + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Inget behöver göras för â€%sâ€." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "â€%s†är aktuell." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Beskär filen â€%sâ€.\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sIngen regel för att skapa mÃ¥let â€%sâ€, som behövs av â€%sâ€%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sIngen regel för att skapa mÃ¥let â€%sâ€%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Överväger mÃ¥lfilen â€%sâ€.\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "Misslyckades nyligen med att uppdatera filen â€%sâ€.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Filen â€%s†har redan övervägts.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Uppdaterar fortfarande filen â€%sâ€.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Slutförde uppdaterandet av filen â€%sâ€.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Filen â€%s†finns inte.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Varning: .LOW_RESOLUTION_TIME-filen â€%s†har en högupplöst tidsstämpel" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Grupperad mÃ¥lmotpart â€%s†för filen â€%s†finns inte.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Använder standardrecept för â€%sâ€.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Det cirkulära beroendet %s <- %s släpptes." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Avslutade förutsättningarna för mÃ¥lfilen â€%sâ€.\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Förutsättningarna för â€%s†skapas.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Ger upp med mÃ¥lfilen â€%sâ€.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "MÃ¥let â€%s†återskapades inte pÃ¥ grund av fel." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Förutsättningen â€%s†för mÃ¥let â€%s†är endast ordning.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Förutsättningen â€%s†för mÃ¥let â€%s†finns inte.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Förutsättningen â€%s†är nyare än mÃ¥let â€%sâ€.\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Förutsättningen â€%s†är äldre än mÃ¥let â€%sâ€.\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "MÃ¥let â€%s†är dubbelkolon och har inga förutsättningar.\n" + +#: src/remake.c:852 +#, 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" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Skapar â€%s†pÃ¥ grund av flaggan always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Inget behov att Ã¥terskapa mÃ¥let â€%sâ€" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; använder VPATH-namnet â€%sâ€" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "MÃ¥ste Ã¥terskapa mÃ¥let â€%sâ€.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Bortser frÃ¥n VPATH-namnet â€%sâ€.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Receptet för â€%s†körs.\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Misslyckades med att Ã¥terskapa mÃ¥lfilen â€%sâ€.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Ã…terskapade mÃ¥lfilen â€%sâ€.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "MÃ¥lfilen â€%s†behöver Ã¥terskapas med -q.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Använder standardkommandon för â€%sâ€.\n" + +#: src/remake.c:1499 +#, 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" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS-elementet â€%s†är inte ett mönster" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Customs kommer inte att exportera %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "varning: ignorerar förutsättningar i suffixregeldefinition" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Implicita regler" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Inga implicita regler." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u implicita regler, %u (%.1f %%) slutliga." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "FEL: num_pattern_rules är felaktigt! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "felaktigt blandningsläge: %s: â€%sâ€" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "okänd signal" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Avringd" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Avbrott" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Avslutad" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "OtillÃ¥ten instruktion" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "SpÃ¥rningsfälla" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Avbruten" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IO-fälla" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Emulatorfälla" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Flyttalsundantag" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Dödad" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Bussfel" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Segmenteringsfel" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Felaktigt systemanrop" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Ledningsbrott" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarmklocka" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Avslutad" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Användarsignal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Användarsignal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Barn avslutades" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Strömavbrott" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Stoppades" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Stoppades (tty-läsning)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Stoppades (tty-utskrift)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Stoppades (signal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU-tidsgräns överskreds" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Filstorleksgräns överskreds" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Virtuellt tidur löpte ut" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Profileringstidur löpte ut" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Fönster ändrat" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Fortsatte" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "BrÃ¥dskande I/O-läge" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O-tillfälle" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Miste resurs" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Farosignal" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Informationsbegäran" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Flyttalsprocessor inte tillgänglig" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Inga strcache-buffertar\n" + +#: src/strcache.c:304 +#, 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" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s aktuell buf: storlek = %hu B / använt = %hu B / antal = %hu / snitt = %u " +"B\n" + +#: src/strcache.c:319 +#, 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" + +#: src/strcache.c:322 +#, 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" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache-prestanda: uppslagningar = %lu / träffsäkerhet = %lu %%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# statistik för hashtabell:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "automatisk" + +#: src/variable.c:1789 +msgid "default" +msgstr "normal" + +#: src/variable.c:1792 +msgid "environment" +msgstr "miljö" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefil" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "miljö enligt -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "kommandorad" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "â€overrideâ€-direktiv" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (frÃ¥n â€%sâ€, rad %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# statistik för variabelmängd-hashtabell:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Variabler\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Mönsterspecifika variabelvärden" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Inga mönsterspecifika variabelvärden." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u mönsterspecifika variabelvärden" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "varning: odefinierad variabel â€%.*sâ€" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() misslyckades med %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-varning, CTRL-Y-hantering kanske behöver Ã¥terställas frÃ¥n DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "INBYGGT CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Lägg till utdata till %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Lägg till %.*s och rensa upp\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Utför %s i stället\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH-sökvägar\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Inga â€vpathâ€-sökvägar." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u â€vpathâ€-sökvägar.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ingen allmän sökväg (enligt â€VPATHâ€-variabeln)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Allmän sökväg (enligt â€VPATHâ€-variabeln):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Jobbserverfack begränsat till %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "skapar jobbserversemafor: (Fel %ld: %s)" + +#: src/w32/w32os.c:259 +#, 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)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobbserverklient (semafor %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "släpp jobbserversemafor: (Fel %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "väntan pÃ¥ semafor eller barnprocess: (Fel %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "kan inte tolka mutex för utmatningssynkronisering %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "felaktigt mutex för utmatningssynkronisering: %s" diff --git a/local/recipes/dev/gnu-make/source/po/tr.gmo b/local/recipes/dev/gnu-make/source/po/tr.gmo new file mode 100644 index 0000000000..7e8cf06e27 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/tr.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/tr.po b/local/recipes/dev/gnu-make/source/po/tr.po new file mode 100644 index 0000000000..78454e9604 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/tr.po @@ -0,0 +1,2662 @@ +# Turkish translations for GNU Make messages. +# Copyright (C) 2006 Free Software Foundation, Inc. +# Nilgün Belma Bugüner , 2001, ..., 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: make 3.81\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2006-04-23 08:45+0300\n" +"Last-Translator: Nilgün Belma Bugüner \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: KBabel 1.9.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/ar.c:47 +#, fuzzy, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "desteklenmeyen özelliÄŸi kullanmaya çalışıyor: `%s'" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "VMS'de iÅŸe yaramayan arÅŸiv üyesine dokunup geçiyor" + +#: src/ar.c:151 +#, fuzzy, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "Dokunulup geçildi: ArÅŸiv `%s' yok" + +#: src/ar.c:154 +#, fuzzy, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "Dokunulup geçildi: `%s' geçerli bir arÅŸiv deÄŸil" + +#: src/ar.c:161 +#, fuzzy, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "Dokunulup geçildi: Üye `%s', `%s' içinde yok" + +#: src/ar.c:168 +#, 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ı" + +#: src/arscan.c:130 +#, 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" + +#: src/arscan.c:236 +#, fuzzy, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control durum =%d ile baÅŸarısız oldu" + +#: src/arscan.c:261 +#, fuzzy, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "`%s' kaynakçası `%s' üyesine bakmak için açılamadı" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, fuzzy, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Üye `%s'%s: %ld bayt %ld 'de (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr "(isim kırpılmış olmalı)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Tarih %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " Kull-kim = %d, Grup-kim = %d, kip = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Bırakıldı.\n" + +#: src/commands.c:629 +#, fuzzy, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] ArÅŸiv üyesi `%s' sahte olabilir; silinmedi" + +#: src/commands.c:633 +#, fuzzy, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** ArÅŸiv üyesi `%s' sahte olabilir; silinmedi" + +#: src/commands.c:647 +#, fuzzy, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] `%s' dosyası siliniyor" + +#: src/commands.c:649 +#, fuzzy, c-format +msgid "*** Deleting file '%s'" +msgstr "*** `%s' dosyası siliniyor" + +#: src/commands.c:685 +#, fuzzy +msgid "# recipe to execute" +msgstr "# çalıştırma komutları" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (paket içinde):" + +#: src/commands.c:690 +#, fuzzy, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (`%s'den, satır %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Dizin\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: durumlanamadı.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (anahtar (key) %s, deÄŸiÅŸiklik tarihi (mtime) %d): açılamadı.\n" + +#: src/dir.c:1126 +#, 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" + +#: src/dir.c:1131 +#, 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" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (anahtar (key) %s, deÄŸiÅŸiklik tarihi (mtime) %d):" + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (aygıt %d, i-düğüm [%d,%d,%d]):" + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (aygıt %ld, i-düğüm %ld):" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Hayır" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " dosyaları," + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "hayır" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr "olanaksızlıklar" + +#: src/dir.c:1180 +msgid " so far." +msgstr " çok uzak." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " %lu dizinde olanaksızlıklar.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, fuzzy, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "Çevrimsel deÄŸiÅŸken `%s' tekrar kendine bağıntılı (sonuçta)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "sonlandırılmamış deÄŸiÅŸken bağıntısı" + +#: src/file.c:272 +#, fuzzy, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "`%s' dosyası için komutlar %s:%lu de belirtildi," + +#: src/file.c:277 +#, fuzzy, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "`%s' dosyası için komutlar örtük kural aramasında bulundu," + +#: src/file.c:281 +#, 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." + +#: src/file.c:284 +#, fuzzy, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "`%s' dosyası için komutlar `%s' lehine yoksayılmış olacak." + +#: src/file.c:304 +#, 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" + +#: src/file.c:310 +#, 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" + +#: src/file.c:407 +#, fuzzy, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Aracı dosya `%s' siliniyor" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Aracı dosyalar siliniyor...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Åžu an" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Tarih damgası kapsamdışı; yerine %s kullanılıyor" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Bir hedef deÄŸil:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Kıymetli dosya (.PRECIOUS önceden gerekliliÄŸi)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Sahte hedef (.PHONY önceden gerekliliÄŸi)." + +#: src/file.c:1098 +#, fuzzy +msgid "# Command line target." +msgstr "# Komut-satırı hedefi." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Bir öntanımlı,MAKEFILES veya -include/sinclude makefile." + +#: src/file.c:1102 +#, fuzzy +msgid "# Builtin rule" +msgstr "" +"\n" +"# Örtük kural yok." + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Örtük kural araÅŸtırması yapılmıştı." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Örtük kural araÅŸtırması yapılmamıştı." + +#: src/file.c:1107 +#, fuzzy, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Örtük/deÄŸiÅŸmeyen kalıp kökü: `%s'\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "" +"# Orta seviyede önceden gerekli bir dosya (öncelikle gerekli dosyalara " +"aracılık eden dosya)" + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Kıymetli dosya (.PRECIOUS önceden gerekliliÄŸi)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Sahte hedef (.PHONY önceden gerekliliÄŸi)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# OluÅŸtursa da:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# DeÄŸiÅŸiklik zamanı hiç kontrol edilmedi." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Dosya yok." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Dosya çok eski." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Son deÄŸiÅŸiklik tarihi %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Dosya güncelleÅŸtirilmiÅŸti." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Dosya güncelleÅŸtirilmemiÅŸti." + +#: src/file.c:1139 +#, fuzzy +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Komutlar ÅŸu an iÅŸlemlerini sürdürüyor (BU BİR YAZILIM HATASI)." + +#: src/file.c:1142 +#, 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)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Tamamen güncellendi." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# GüncellenmiÅŸ olması gerekir (-q verildi)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# GüncellenmiÅŸ olamadı." + +#: src/file.c:1163 +#, fuzzy +msgid "# Invalid value in 'command_state' member!" +msgstr "# `command_state' üyesinde geçersiz deÄŸer!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Dosyalar" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# dosyaların hash tablosu durumları:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "`word' iÅŸlevinde sayısal olmayan ilk argüman" + +#: src/function.c:803 +#, fuzzy, c-format +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ı" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "`wordlist' iÅŸlevinde sayısal olmayan ilk argüman" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "`wordlist' iÅŸlevinde sayısal olmayan ikinci argüman" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "`wordlist' iÅŸlevinde sayısal olmayan ilk argüman" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "`wordlist' iÅŸlevinde sayısal olmayan ikinci argüman" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "create_child_process: DuplicateHandle(In) baÅŸarısız (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "create_child_process: DuplicateHandle(Err) baÅŸarısız (e=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() baÅŸarısız (e=%ld)\n" + +#: src/function.c:1723 +#, fuzzy, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe (): process_init_fd() baÅŸarısız\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Geçici komut-listesi (batch) dosyası %s temizleniyor\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "" + +#: src/function.c:2347 src/function.c:2383 +#, fuzzy, c-format +msgid "open: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2360 +#, fuzzy, c-format +msgid "write: %s: %s" +msgstr "yazma hatası: %s" + +#: src/function.c:2363 src/function.c:2402 +#, fuzzy, c-format +msgid "close: %s: %s" +msgstr "%s%s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "" + +#: src/function.c:2397 +#, fuzzy, c-format +msgid "read: %s: %s" +msgstr "%s: %s" + +#: src/function.c:2409 +#, fuzzy, c-format +msgid "file: invalid file operation: %s" +msgstr "%s: geçersiz seçenek -- %c\n" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "argüman sayısı (%d) `%s' iÅŸlevinde yetersiz" + +#: src/function.c:2539 +#, fuzzy, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "bu platformda gerçekleÅŸtirilmemiÅŸ: iÅŸlev `%s'" + +#: src/function.c:2608 +#, fuzzy, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "`%s' iÅŸlemine çaÄŸrı sonlandırılmamış: `%c' kayıp" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "" + +#: src/function.c:2798 +#, fuzzy, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "argüman sayısı (%d) `%s' iÅŸlevinde yetersiz" + +#: src/function.c:2801 +#, fuzzy, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "argüman sayısı (%d) `%s' iÅŸlevinde yetersiz" + +#: src/getopt.c:659 +#, fuzzy, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: `%s' seçeneÄŸi belirsiz\n" + +#: src/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" + +#: src/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" + +#: src/getopt.c:705 src/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" + +#: src/getopt.c:734 +#, fuzzy, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: `--%s' seçeneÄŸi bilinmiyor\n" + +#: src/getopt.c:738 +#, fuzzy, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: `%c%s' seçeneÄŸi bilinmiyor\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: kuraldışı seçenek -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: geçersiz seçenek -- %c\n" + +#: src/getopt.c:797 src/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" + +#: src/getopt.c:844 +#, fuzzy, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: `-W %s' seçeneÄŸi belirsiz\n" + +#: src/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" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "" + +#: src/hash.c:50 +#, fuzzy, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "hash tablosu için %ld bayt ayrılamıyor: bellek tükendi" + +#: src/hash.c:280 +#, fuzzy, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Yük=%ld/%ld=%.0f%%, " + +#: src/hash.c:282 +#, fuzzy, c-format +msgid "Rehash=%u, " +msgstr "Rehash=%d, " + +#: src/hash.c:283 +#, fuzzy, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Çakışmalar=%ld/%ld=%.0f%%" + +#: src/implicit.c:41 +#, fuzzy, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "`%s' için bir örtük kural arıyor.\n" + +#: src/implicit.c:57 +#, 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" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "`%s' için arÅŸiv-üyesi örtük kural arıyor.\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Örtük kural çevrimi görmezden geliniyor.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "`%.*s' köküyle kalıp kuralı deneniyor.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Kural önceden gerekliliÄŸi `%s' olanaksız olduÄŸundan reddediliyor.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Örtük önceden gereklilik `%s' olanaksız olduÄŸundan reddediliyor.\n" + +#: src/implicit.c:787 +#, fuzzy, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Kural önceden gerekliliÄŸi `%s' deneniyor.\n" + +#: src/implicit.c:788 +#, fuzzy, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Örtük önceden gereklilik `%s' deneniyor.\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "`%s' dosyası yok.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Hedef `%s' in önceden gereklisi `%s' mevcut deÄŸil.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "Önceden gereklilik `%s' VPATH `%s' olarak bulundu.\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Aracı dosya `%s' ile bir kural arıyor.\n" + +#: src/implicit.c:886 +#, fuzzy, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Aracı dosya `%s' ile bir kural arıyor.\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Kural önceden gerekliliÄŸi `%s' olanaksız olduÄŸundan reddediliyor.\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "`%s' için bir örtük kural yok.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "`%s' için bir örtük kural bulundu.\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "`%s' için bir örtük kural arıyor.\n" + +#: src/implicit.c:1157 +#, fuzzy, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "`%s' için bir örtük kural yok.\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "Bir geçici dosya oluÅŸturulamıyor\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (bellek kopyası - core dosyası - diske yazıldı)" + +#: src/job.c:557 +#, fuzzy +msgid " (ignored)" +msgstr "[%s] Hata %d (yoksayıldı)" + +#: src/job.c:561 src/job.c:1900 +#, fuzzy +msgid "" +msgstr " (paket içinde):" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "*** [%s] Hata %d" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** BitmemiÅŸ iÅŸler için bekliyor...." + +#: src/job.c:719 +#, 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" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (karşıdan)" + +#: src/job.c:914 +#, 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" + +#: src/job.c:915 +#, 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" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Geçici komut-listesi dosyası %s temizleniyor\n" + +#: src/job.c:972 +#, fuzzy, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "Geçici komut-listesi dosyası %s temizleniyor\n" + +#: src/job.c:1083 +#, 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" + +#: src/job.c:1146 +#, fuzzy, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Ast 0x%08lx (%s) için simge (token) kullanıma sunuldu.\n" + +#: src/job.c:1583 src/job.c:2497 +#, 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" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Sayılan %d argüman ile baÅŸarısız oldu\n" + +#: src/job.c:1650 +#, 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" + +#: src/job.c:1883 +#, fuzzy, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Ast 0x%08lx (%s) için simge (token) saÄŸlandı.\n" + +#: src/job.c:1909 +#, fuzzy, c-format +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" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "# Dosya yok." + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "iÅŸletim sisteminde yük sınırlarına ulaşılamadı " + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "ulaşılamayan yük sınırı: " + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "baÅŸka dosya tutucu yok: standart girdi kopyalanamadı\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "baÅŸka dosya tutucu yok: standart çıktı kopyalanamadı\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "baÅŸka dosya tutucu yok: standart girdi kopyalanamadı\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Standart girdi eski haline getirilemedi\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Standart çıktı eski haline getirilemedi\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Standart girdi eski haline getirilemedi\n" + +#: src/job.c:2530 +#, 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" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: ortam alanı tükenmiÅŸ olabilir" + +#: src/job.c:2869 +#, fuzzy, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL deÄŸiÅŸti (`%s' idi, ÅŸimdi `%s')\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "%s geçici komut-liste dosyasını oluÅŸturuyor\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" + +#: src/job.c:3630 +#, 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" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Bu platformda paralel iÅŸler (-j) desteklenmiyor." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Seçenekler:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Uyumluluk için yoksayıldı.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr "" +" -B, --always-make Tüm hedefler koÅŸulsuz olarak oluÅŸturulur.\n" + +#: src/main.c:322 +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" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -b, -m Bir sürü hata ayıklama bilgisi basar.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=SEÇENEKLER] ÇeÅŸitli türde hata ayıklama bilgileri basar.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides Ortam deÄŸiÅŸkenleri makefile'ları deÄŸiÅŸtirir.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f DOSYA, --file=DOSYA, --makefile=DOSYA\n" +" DOSYAyı bir makefile olarak okur.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Bu iletiyi basar ve çıkar.\n" + +#: src/main.c:339 +#, fuzzy +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Komutların ürettiÄŸi hataları yoksayar.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I DİZİN, --include-dir=DİZİN\n" +" Eklenecek makefile'ları DİZİNde arar.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Bir defada N iÅŸe izin verir; argumansız iÅŸ\n" +" sayısı sınırsızdır.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +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" + +#: src/main.c:350 +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" +" Yük N'den az olmadıkça çoklu iÅŸler " +"baÅŸlatılmaz.\n" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times sembolik baÄŸlarla hedef arasında en son mtime\n" +" kullanılır\n" + +#: src/main.c:355 +#, fuzzy +msgid "" +" -n, --just-print, --dry-run, --recon\n" +" Don't actually run any recipe; just print " +"them.\n" +msgstr "" +" -n, --just-print, --dry-run, --recon\n" +" Gerçekte komutlar çalıştırılmaz, gösterilir.\n" + +#: src/main.c:358 +msgid "" +" -o FILE, --old-file=FILE, --assume-old=FILE\n" +" Consider FILE to be very old and don't remake " +"it.\n" +msgstr "" +" -o DOSYA, --old-file=DOSYA, --assume-old=DOSYA\n" +" DOSYAnın çok eski olduÄŸu varsayılır ve\n" +" yeniden iÅŸlem yapılmaz.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base make'in içsel veritabanını basar.\n" + +#: src/main.c:366 +#, fuzzy +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Komut çalıştırmaz; güncelse çıkışta belirtir\n" + +#: src/main.c:368 +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" + +#: src/main.c:370 +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" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +#, fuzzy +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Komutlar iÅŸlenirken gösterilmez.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" + +#: src/main.c:379 +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" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Yeniden derlemek yerine hedeflere bakıp " +"geçer.\n" + +#: src/main.c:384 +#, fuzzy +msgid " --trace Print tracing information.\n" +msgstr " -b, -m Bir sürü hata ayıklama bilgisi basar.\n" + +#: src/main.c:386 +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" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Kullanılan dizini basar.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Dolaylı olarak açılmış olsa bile -w 'yi " +"kapatır\n" + +#: src/main.c:392 +msgid "" +" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" +" Consider FILE to be infinitely new.\n" +msgstr "" +" -W DOSYA, --what-if=DOSYA, --new-file=DOSYA, --assume-new=DOSYA\n" +" DOSYA sonsuz yeni varsayılır.\n" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Atanmamış bir deÄŸiÅŸkene bağıntı yapıldığında\n" +" uyarır.\n" + +#: src/main.c:728 src/main.c:730 +#, fuzzy, c-format +msgid "write error: stdout" +msgstr "yazma hatası: %s" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "dosyaismi olarak boÅŸ dizge geçersiz" + +#: src/main.c:834 +#, fuzzy, c-format +msgid "unknown debug level specification '%s'" +msgstr "Hata ayıklama düzeyi özelliÄŸi `%s' bilinmiyor" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Kullanım: %s [seçenekler] [hedef] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Bu program %s için kurgulanmış\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Bu program %s için kurgulanmış (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Yazılım hatalarını adresine,\n" +"çeviri hatalarını adresine bildiriniz.\n" + +#: src/main.c:940 +#, 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" + +#: src/main.c:947 +#, fuzzy, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"program %s tarafından elde edilmemiÅŸ olaÄŸandışı-durum süzgeci çaÄŸrıldı\n" +"OlaÄŸandışılıkKodu = %lx\n" +"OlaÄŸandışılıkBayrakları = %lx\n" +"OlaÄŸandışılıkAdresi = %lx\n" + +#: src/main.c:955 +#, fuzzy, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "EriÅŸim uyumsuzluÄŸu: %lx adresinde yazma iÅŸlemi\n" + +#: src/main.c:956 +#, fuzzy, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "EriÅŸim uyumsuzluÄŸu: %lx adresinde okuma iÅŸlemi\n" + +#: src/main.c:1028 src/main.c:1042 +#, fuzzy, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell default_shell = %s olarak belirliyor\n" + +#: src/main.c:1098 +#, 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" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (geçici dosya): " + +#: src/main.c:1833 +#, fuzzy, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"uyarı: iÅŸ sunucusu kullanımdışı: -j1 kullanılıyor. Üst make kuralına `+' " +"ekle." + +#: src/main.c:1841 +#, fuzzy, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "uyarı: alt derlemede -jN zorlandı: iÅŸ sunucusu kipi kapatılıyor." + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile standart girdiden iki kez belirtildi." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (geçici dosya)" + +#: src/main.c:2095 +#, fuzzy, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "uyarı: alt derlemede -jN zorlandı: iÅŸ sunucusu kipi kapatılıyor." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Bu platformda paralel iÅŸler (-j) desteklenmiyor." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Tek iÅŸ kipi (-j1) için make'i baÅŸlatma konumuna alıyor" + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Sembolik baÄŸlar desteklenmiyor: -L iptal ediliyor" + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "makefile'ları güncelliyor...\n" + +#: src/main.c:2397 +#, fuzzy, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "`%s' make dosyası çevrime girdi; yeniden derlenemez.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "" + +#: src/main.c:2528 +#, fuzzy, c-format +msgid "Failed to remake makefile '%s'." +msgstr "`%s' make dosyası yeniden derlenemiyor." + +#: src/main.c:2548 +#, fuzzy, c-format +msgid "Included makefile '%s' was not found." +msgstr "İçerilen make dosyası `%s' bulunamadı." + +#: src/main.c:2552 +#, fuzzy, c-format +msgid "Makefile '%s' was not found" +msgstr "`%s' make dosyası bulunamadı" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Geriye, özgün dizine geçilemiyor." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Yeniden çalıştırılıyor[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL bir hedeften fazlasını içeriyor" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Hedef yok" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Hedefler belirtilmediÄŸinden make dosyası yok" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Amaçlanan hedefler güncelleniyor...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "uyarı: Clock skew saptandı. Derleme tamamlanamayabilir." + +#: src/main.c:3186 +#, fuzzy, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "`-%c' seçeneÄŸi bir boÅŸ olmayan dizge argüman gerektirir" + +#: src/main.c:3267 +#, 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" + +#: src/main.c:3652 +#, fuzzy, c-format +msgid "%sBuilt for %s\n" +msgstr "" +"\n" +"%sBu program %s için derlenmiÅŸ\n" + +#: src/main.c:3654 +#, fuzzy, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "" +"\n" +"%sBu program %s için derlenmiÅŸ (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# Make veri tabanı, %s üzerine basıldı" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# %s üzerindeki Make veri tabanı tamamlandı\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "`%s' için öntanımlı komutlar kullanılıyor.\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "%s geçici komut-liste dosyasını oluÅŸturuyor\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (geçici dosya): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (geçici dosya)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (geçici dosya)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: bilinmeyen bir dizine giriliyor\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: bilinmeyen dizinden çıkılıyor\n" + +#: src/output.c:100 +#, fuzzy, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: `%s' dizine giriliyor\n" + +#: src/output.c:102 +#, fuzzy, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: `%s' dizininden çıkılıyor\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Bilinmeyen bir dizine giriliyor\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Bilinmeyen dizinden çıkılıyor\n" + +#: src/output.c:111 +#, fuzzy, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]:`%s' dizinine giriliyor\n" + +#: src/output.c:113 +#, fuzzy, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: `%s' dizininden çıkılıyor\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Durdu.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "iÅŸleri yaratıyor" + +#: src/posixos.c:201 src/posixos.c:434 +#, fuzzy +msgid "duping jobs pipe" +msgstr "iÅŸleri yaratıyor" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "iÅŸleri hazırlıyor" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "içsel hata: --jobserver-fds dizgesi `%s' geçersiz" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "iÅŸ-sunucusu yazıyor" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "" + +#: src/posixos.c:486 +#, fuzzy +msgid "pselect jobs pipe" +msgstr "görev listesi okunuyor" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "görev listesi okunuyor" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Makefile'lar okunuyor...\n" + +#: src/read.c:330 +#, fuzzy, c-format +msgid "Reading makefile '%s'" +msgstr "`%s' make dosyası okunuyor" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (öntanımlı amaç yok)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (arama yolu)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (umurunda deÄŸil)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr "( ~ uzantısı yok)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "ÅŸartlı ifade de yazılış hatası" + +#: src/read.c:1002 +#, fuzzy, c-format +msgid "recipe commences before first target" +msgstr "komutlar ilk hedeften önce baÅŸlıyor" + +#: src/read.c:1053 +#, fuzzy, c-format +msgid "missing rule before recipe" +msgstr "komutlardan önceki kural kayıp" + +#: src/read.c:1154 +#, fuzzy, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "(8 boÅŸluÄŸu TAB'mı zannettiniz?)" + +#: src/read.c:1156 +#, fuzzy, c-format +msgid "missing separator" +msgstr "kayıp ayraç%s" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "hedef kalıp kayıp" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "çok sayıda hedef kalıp" + +#: src/read.c:1306 +#, fuzzy, c-format +msgid "target pattern contains no '%%'" +msgstr "hedef kalıp `%%' içermiyor" + +#: src/read.c:1349 +#, fuzzy, c-format +msgid "missing 'endif'" +msgstr "`endif' kayıp" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "boÅŸ deÄŸiÅŸken ismi" + +#: src/read.c:1423 +#, fuzzy, c-format +msgid "extraneous text after 'define' directive" +msgstr "`endef' yönergesinden sonraki metin yersiz" + +#: src/read.c:1448 +#, fuzzy, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "`endef' kayıp, `define' sonlandırılmamış" + +#: src/read.c:1476 +#, fuzzy, c-format +msgid "extraneous text after 'endef' directive" +msgstr "`endef' yönergesinden sonraki metin yersiz" + +#: src/read.c:1548 +#, fuzzy, c-format +msgid "extraneous text after '%s' directive" +msgstr "`%s' yönergesinden sonraki metin yersiz" + +#: src/read.c:1549 +#, fuzzy, c-format +msgid "extraneous '%s'" +msgstr "`%s' yersiz" + +#: src/read.c:1577 +#, fuzzy, c-format +msgid "only one 'else' per conditional" +msgstr "her ÅŸartlı ifade de sadece bir `else'" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Hedefe özgü deÄŸiÅŸken tanımı bozuk" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, fuzzy, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "öngereksinimler komut betiklerinde tanımlanamaz" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "örtük ve duraÄŸan kalıp kuralları karışmış" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "örtük ve normal kurallar karışmış" + +#: src/read.c:2155 +#, fuzzy, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "hedef `%s' hedef kalıpla eÅŸleÅŸmiyor" + +#: src/read.c:2170 src/read.c:2221 +#, fuzzy, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "hedef dosya `%s'hem : hem de :: girdilerine sahip" + +#: src/read.c:2176 +#, fuzzy, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "hedef `%s' aynı kuralda birden fazla belirtilmiÅŸ." + +#: src/read.c:2186 +#, fuzzy, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "uyarı: hedef `%s' için komutlar geçersiz kılınıyor" + +#: src/read.c:2189 +#, fuzzy, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "uyarı: hedef `%s' için eski komutlar yoksayılıyor" + +#: src/read.c:2308 +#, fuzzy, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "örtük ve normal kurallar karışmış" + +#: src/read.c:2325 +#, fuzzy, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "uyarı: hedef `%s' için komutlar geçersiz kılınıyor" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "uyarı: NUL karakteri görüldü; satırın geri kalanı yoksayılıyor" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "uyarı: hedef `%s' için komutlar geçersiz kılınıyor" + +#: src/remake.c:254 +#, fuzzy, c-format +msgid "Nothing to be done for '%s'." +msgstr "`%s' için hiçbir ÅŸey yapılmadı." + +#: src/remake.c:255 +#, fuzzy, c-format +msgid "'%s' is up to date." +msgstr "`%s' güncel" + +#: src/remake.c:350 +#, fuzzy, c-format +msgid "Pruning file '%s'.\n" +msgstr "Budanmış dosya `%s'.\n" + +#: src/remake.c:416 +#, 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" + +#: src/remake.c:426 +#, fuzzy, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sHedef `%s' i derlemek için hiçbir kural yok%s" + +#: src/remake.c:452 +#, fuzzy, c-format +msgid "Considering target file '%s'.\n" +msgstr "hedef dosya `%s' hesaba katılıyor.\n" + +#: src/remake.c:459 +#, 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" + +#: src/remake.c:471 +#, fuzzy, c-format +msgid "File '%s' was considered already.\n" +msgstr "`%s' dosyası zaten hesaba katıldı.\n" + +#: src/remake.c:481 +#, fuzzy, c-format +msgid "Still updating file '%s'.\n" +msgstr "`%s' dosyası hala güncelleniyor.\n" + +#: src/remake.c:484 +#, fuzzy, c-format +msgid "Finished updating file '%s'.\n" +msgstr "`%s' dosyasının güncellenmesi tamamlandı.\n" + +#: src/remake.c:513 +#, fuzzy, c-format +msgid "File '%s' does not exist.\n" +msgstr "`%s' dosyası yok.\n" + +#: src/remake.c:520 +#, fuzzy, c-format +msgid "" +"*** 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" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Hedef `%s' in önceden gereklisi `%s' mevcut deÄŸil.\n" + +#: src/remake.c:558 +#, fuzzy, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "`%s' için öntanımlı komutlar kullanılıyor.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Çevrimsel %s <- %s bağımlılığı iptal edildi." + +#: src/remake.c:737 +#, fuzzy, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "`%s' hedef dosyasının önceden gereklilikleri tamamlandı.\n" + +#: src/remake.c:743 +#, fuzzy, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "`%s' için önceden gereklilikler derlenmeye devam ediyor.\n" + +#: src/remake.c:757 +#, fuzzy, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "`%s' hedef dosyasında umut kesiliyor.\n" + +#: src/remake.c:762 +#, fuzzy, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Hedef `%s' hatalardan dolayı yeniden derlenemez." + +#: src/remake.c:814 +#, fuzzy, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "Önceden gerekli `%s' hedef `%s' için ÅŸart.\n" + +#: src/remake.c:819 +#, fuzzy, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "Hedef `%s' in önceden gereklisi `%s' mevcut deÄŸil.\n" + +#: src/remake.c:824 +#, fuzzy, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "Önceden gerekli `%s' hedef `%s' den daha yeni.\n" + +#: src/remake.c:827 +#, fuzzy, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "Önceden gerekli `%s' hedef `%s' den daha eski.\n" + +#: src/remake.c:845 +#, 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" + +#: src/remake.c:852 +#, fuzzy, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "`%s' için komutlar ve önceden gerekliliklerde bir deÄŸiÅŸiklik yok.\n" + +#: src/remake.c:857 +#, fuzzy, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Daima derle seçeneÄŸinden dolayı `%s' derleniyor.\n" + +#: src/remake.c:865 +#, fuzzy, c-format +msgid "No need to remake target '%s'" +msgstr "Hedef `%s' nin yeniden derlenmesine gerek yok" + +#: src/remake.c:867 +#, fuzzy, c-format +msgid "; using VPATH name '%s'" +msgstr "; VPATH ismi `%s' kullanılıyor" + +#: src/remake.c:891 +#, fuzzy, c-format +msgid "Must remake target '%s'.\n" +msgstr "Hedef `%s' yeniden derlenmeli.\n" + +#: src/remake.c:897 +#, fuzzy, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " VPATH ismi `%s' yoksayılıyor.\n" + +#: src/remake.c:906 +#, fuzzy, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "`%s' nin komutları çalışmaya devam ediyor.\n" + +#: src/remake.c:913 +#, fuzzy, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Hedef dosya `%s' yeniden derlenirken hata oluÅŸtu.\n" + +#: src/remake.c:916 +#, fuzzy, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Hedef dosya `%s' yeniden derlenmesi baÅŸarıyla tamamlandı.\n" + +#: src/remake.c:919 +#, 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" + +#: src/remake.c:1118 +#, fuzzy, c-format +msgid "Using default commands for '%s'.\n" +msgstr "`%s' için öntanımlı komutlar kullanılıyor.\n" + +#: src/remake.c:1499 +#, fuzzy, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Uyarı: `%s' dosyasının deÄŸiÅŸiklik tarihi %.2g s kadar gelecekte" + +#: src/remake.c:1747 +#, fuzzy, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS elemanı `%s' bir kalıp deÄŸil" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "ÖzelleÅŸtirilmiÅŸ olanlar dışarı aktarılmayacak: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Örtük Kurallar" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Örtük kural yok." + +#: src/rule.c:610 +#, fuzzy, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u örtük kural, %u" + +#: src/rule.c:619 +#, fuzzy, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "YAZILIM HATASI: num_pattern_rules yanlış! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "bilinmeyen sinyal" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Tıkanma" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Kesme" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Çık" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Yönergeler uygun deÄŸil" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "İzleme/kesmenoktası yakalayıcı" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "İptal edildi" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT tuzağı" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT tuzağı" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Gerçek sayı olaÄŸandışı durumu" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Süreç durduruldu" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Veri yolu hatası" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Parçalama arızası" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Sistem çaÄŸrısı hatalı" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Veri alınamıyor" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Alarm saati" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Sonlandırıldı" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Kullanıcı tanımlı sinyal 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Kullanıcı tanımlı sinyal 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Ast bıraktı" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Güç kesilmesi" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Durduruldu" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Durduruldu (konsol girdisi)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Durduruldu (konsol çıktısı)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Durduruldu (sinyal)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU zaman sınırı aşıldı" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Dosya uzunluÄŸu sınırı aşıldı" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Sanal süreölçer kullanım süresi doldu" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Tanıtım süreölçer kullanım süresi doldu" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Pencere boyutları deÄŸiÅŸtirildi" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Devam ediliyor" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Acil G/Ç koÅŸulu" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "G/Ç mümkün" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Kaynak kaybı" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Tehlike sinyali" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Bilgi isteÄŸi" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Aritmetik iÅŸlemci kullanılabilir deÄŸil" + +#: src/strcache.c:274 +#, fuzzy, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "%s dizge belleÄŸi tamponlarının sayısı: %d\n" + +#: src/strcache.c:304 +#, fuzzy, c-format +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" + +#: src/strcache.c:308 +#, fuzzy, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "%s dizge belleÄŸi boyu: toplam = %d / max = %d / min = %d / ort = %d\n" + +#: src/strcache.c:319 +#, fuzzy, c-format +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" + +#: src/strcache.c:322 +#, fuzzy, c-format +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" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" + +#: src/strcache.c:328 +#, fuzzy +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"\n" +"# dosyaların hash tablosu durumları:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "otomatik" + +#: src/variable.c:1789 +msgid "default" +msgstr "öntanımlı" + +#: src/variable.c:1792 +msgid "environment" +msgstr "çevre" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "derleme dosyası" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "çevre -e altında" + +#: src/variable.c:1801 +msgid "command line" +msgstr "komut satırı" + +#: src/variable.c:1804 +#, fuzzy +msgid "'override' directive" +msgstr "`override' yönergesi" + +#: src/variable.c:1814 +#, fuzzy, c-format +msgid " (from '%s', line %lu)" +msgstr " (`%s'den, satır %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# deÄŸiÅŸken kümesi hash tablosunun durumu:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# DeÄŸiÅŸkenler\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Kalıba özgü DeÄŸiÅŸken DeÄŸerleri" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# ÖrneÄŸe duyarlı deÄŸiÅŸken deÄŸeri yok." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u örneÄŸe duyarlı deÄŸiÅŸken deÄŸeri" + +#: src/variable.h:237 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "uyarı: `%.*s' deÄŸiÅŸkeni atanmamış" + +#: src/vmsfunctions.c:91 +#, fuzzy, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search %d ile baÅŸarısız\n" + +#: src/vmsjobs.c:244 +#, 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" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "OLUÅžUMİÇİ CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "" + +#: src/vmsjobs.c:1281 +#, fuzzy, c-format +msgid "Append output to %s\n" +msgstr "%s e yönlendirilmiÅŸ çıktı\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "%s yerine çalıştırılıyor\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH Arama yolu\n" + +#: src/vpath.c:617 +#, fuzzy +msgid "# No 'vpath' search paths." +msgstr "# `vpath' arama yolları yok" + +#: src/vpath.c:619 +#, fuzzy, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u `vpath' arama yolu.\n" + +#: src/vpath.c:622 +#, fuzzy +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Genel arama yolu (`VPATH' çevre deÄŸiÅŸkeni) yok." + +#: src/vpath.c:628 +#, fuzzy +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Genel (`VPATH' çevre deÄŸiÅŸkeni) arama yolu:\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "" + +#~ 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 "*** [%s] Error 0x%x" +#~ msgstr "*** [%s] Hata 0x%x" + +#~ msgid "process_easy() failed failed to launch process (e=%ld)\n" +#~ msgstr "Süreci baÅŸlatmada process_easy() baÅŸarısız oldu (e=%ld)\n" + +#~ msgid "%s: Command not found" +#~ msgstr "%s: Komut bulunamadı" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Kabuk uygulaması bulunamadı" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s 30 saniyeliÄŸine askıya alınıyor..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "sleep(30) bitti. Devam ediliyor.\n" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "içsel hata: çok sayıda --jobserver-fds seçeneÄŸi" + +#~ msgid "dup jobserver" +#~ msgstr "çift iÅŸ sunucusu" + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sBu bir serbest yazılımdır; kopyalama koÅŸulları için kaynak koduna " +#~ "bakınız.\n" +#~ "%sHiçbir garantisi yoktur; hatta SATILABİLİRLİĞİ veya ÅžAHSİ " +#~ "KULLANIMINIZA\n" +#~ "%sUYGUNLUÄžU için bile garanti verilmez.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Bilinmeyen hata %d" + +#~ msgid "virtual memory exhausted" +#~ msgstr "sanal bellek tükendi" + +#~ 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" + +#~ msgid "Initialized access" +#~ msgstr "İlklendirilmiÅŸ eriÅŸim" + +#~ msgid "User access" +#~ msgstr "Kullanıcı eriÅŸimi" + +#~ msgid "Make access" +#~ msgstr "Make eriÅŸimi" + +#~ msgid "Child access" +#~ msgstr "Asta eriÅŸim" + +#~ msgid "write error" +#~ msgstr "yazma hatası" + +#~ msgid "extraneous `endef'" +#~ msgstr "yersiz `endef'" + +#~ msgid "empty `override' directive" +#~ msgstr "boÅŸ `override' yönergesi" + +#~ msgid "invalid `override' directive" +#~ msgstr "`override' yönergesi geçersiz" + +#~ msgid "Warning: File `%s' has modification time in the future" +#~ msgstr "Uyarı: `%s' dosyası gelecekteki bir deÄŸiÅŸiklik tarihini içeriyor" + +#~ msgid " terminal." +#~ msgstr " terminal." + +#~ msgid "" +#~ "\n" +#~ "%s # of strings in strcache: %d\n" +#~ msgstr "" +#~ "\n" +#~ "%s dizge belleÄŸindeki dizgelerin sayısı: %d\n" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Uyarı: BoÅŸ yönlendirme\n" + +#~ msgid "internal error: `%s' command_state" +#~ msgstr "içsel hata: `%s' command_state" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "-uyarı, CTRL-Y etraftaki alt-süreç(ler)i bıraktıracak.\n" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "OLUÅžUMİÇİ [%s][%s]\n" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "OLUÅžUMİÇİ RM %s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "OluÅŸumiçi komut '%s' bilinmiyor\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Hata, boÅŸ komut\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "%s den yönlendirilmiÅŸ girdi\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "%s e yönlendirilmiÅŸ hata\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "doÄŸum hatası, %d\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "Dosyada hala yazılış hatası var: '\"'\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "SIGCHLD sinyali alındı; %u saÄŸlanmamış ast dosya.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "sh.exe yoksa -j veya --jobs belirtilemez." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Tek iÅŸ kipi için make'i baÅŸlatma konumuna alıyor" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "`%sinclude' için dosyaismi yok" + +#~ msgid "target `%s' leaves prerequisite pattern empty" +#~ msgstr "hedef `%s' önceden gereklilik kalıbını boÅŸ bırakıyor" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# Dosyalar yok." + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# %u dosya %u hash kümesinde.\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "# her tabloda ortalama %.3f dosya, bir tabloda en çok %u dosya.\n" + +#~ msgid "DIRECTORY" +#~ msgstr "DİZİN" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "Hiç bir ÅŸey yapmadan DİZİNe geçer" + +#~ msgid "FLAGS" +#~ msgstr "BAYRAKLAR" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "Bir hata ayıklayıcı eklemeye izin vermek için süreci askıya alır" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "Çevre deÄŸiÅŸkenleri makefile'ları geçersiz kılıyor" + +#~ msgid "FILE" +#~ msgstr "DOSYA" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "DOSYAyı bir makefile olarak okur" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "İçerilmiÅŸ makefile'lar için DİZİNi araÅŸtırır" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "Yük N'in altında olmadıkça iÅŸler baÅŸlatılmaz" + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "Genellikle hiçbir komut çalıştırılmaz; onları basar" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "DOSYAnın çok eski olduÄŸunu hesaba katarak yeniden derlemez." + +#~ msgid "Don't echo commands" +#~ msgstr "Komutları ekolamaz" + +#~ msgid "Turns off -k" +#~ msgstr "-k 'yı kapatır" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "DOSYAnın ne kadar yeni olduÄŸundaki belirsizliÄŸi hesaba katar." + +#~ msgid "Entering" +#~ msgstr " Dizine girdi:" + +#~ msgid "Leaving" +#~ msgstr "Dizini bıraktı:" + +#~ msgid "# No variables." +#~ msgstr "# DeÄŸiÅŸkenker yok" + +#~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" +#~ msgstr "# her tabloda %.1f deÄŸiÅŸken ortalaması, bir tabloda en çok %u\n" + +#~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" +#~ msgstr "# her tabloda %d.%d deÄŸiÅŸken ortalaması, bir tabloda en çok %u\n" diff --git a/local/recipes/dev/gnu-make/source/po/uk.gmo b/local/recipes/dev/gnu-make/source/po/uk.gmo new file mode 100644 index 0000000000..f78894e76f Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/uk.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/uk.po b/local/recipes/dev/gnu-make/source/po/uk.po new file mode 100644 index 0000000000..93d8a15320 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/uk.po @@ -0,0 +1,2593 @@ +# Переклад make українÑькою. +# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Volodymyr M. Lisivka , 2001-2012. +# Yuri Chornoivan , 2012, 2013, 2014, 2016, 2019, 2020, 2022. +msgid "" +msgstr "" +"Project-Id-Version: make 4.3.91\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-10-19 20:05+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Lokalize 20.12.0\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "Ñпроба вжити можливіÑть, підтримки Ñкої не передбачено: \"%s\"" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни члена архіву неможливо у ÑиÑтемі VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: Ðрхів \"%s\" не Ñ–Ñнує" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: некоректний архів: \"%s\"" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: Член \"%s\" не міÑтитьÑÑ Ñƒ \"%s\"" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "" +"Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ ar_member_touch повернула\n" +"помилковий код відповіді Ð´Ð»Ñ \"%s\"" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_module() не вдалоÑÑ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ дані модулÑ, Ñтан = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "Помилка lbr$ini_control() з повідомленнÑм Ñтану = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ бібліотеку «%s» Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ Ñтану елемента %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s Ð´Ð»Ñ Ð°Ñ€Ñ…Ñ–Ð²Ñƒ %s, чаÑтина %s" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Елемент «%s»%s: %ld байтів з %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (ім'Ñ Ð¼Ð¾Ð¶Ðµ бути обрізано)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Дата %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, режим = 0%o.\n" + +#: src/commands.c:379 +#, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "У рецепті забагато Ñ€Ñдків (Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ - %hu)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Зупинка.\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] Елемент архіву, «%s», можливо Ñ” фіктивним; не вилучено" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Елемент архіву, «%s», можливо Ñ” фіктивним; не вилучено" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Вилучаємо файл \"%s\"" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Вилучаємо файл \"%s\"" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# ÑпоÑіб, Ñкий Ñлід заÑтоÑувати" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (вбудоване):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (з \"%s\", Ñ€Ñдок %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Каталоги\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: неможливо отримати інформацію (stat).\n" + +#: src/dir.c:1122 +#, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (ключ %s, Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ %s): не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸.\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (приÑтрій %d, івузол [%d,%d,%d]): неможливо відкрити.\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (приÑтрій %ld, івузол %ld): не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸.\n" + +#: src/dir.c:1155 +#, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (ключ %s, Ñ‡Ð°Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— %s): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (приÑтрій %d, івузол [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (приÑтрій %ld, івузол %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "ÐÑ–" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " файлів, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ні" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " недоÑÑжних цілей" + +#: src/dir.c:1180 +msgid " so far." +msgstr " на поточний момент." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " недоÑÑжних цілей у %lu каталогах.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" +"%s:%lu: не розкриваємо рекурÑивно %s Ð´Ð»Ñ ÐµÐºÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ функції оболонки\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "РекурÑивна змінна \"%s\" поÑилаєтьÑÑ Ñама на Ñебе (у результаті)" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "незавершена поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° змінну" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "СпоÑіб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» було задано %s:%lu," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "" +"СпоÑіб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» було знайдено за допомогою пошуку неÑвних правил," + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "але \"%s\" Ñ– \"%s\" тепер вважаютьÑÑ Ð¾Ð´Ð½Ð¸Ð¼ Ñ– тим же ж файлом. " + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "СпоÑіб Ð´Ð»Ñ Â«%s» буде проігноровано на кориÑть ÑпоÑобу Ð´Ð»Ñ Â«%s»." + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "" +"неможливо перейменувати \"%s\" з однією двокрапкою у \"%s\" з двома " +"двокрапками" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "" +"неможливо перейменувати \"%s\" з двома двокрапками у \"%s\" з однією " +"двокрапкою" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Вилучаємо проміжний файл «%s»" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Вилучаємо проміжні файли...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s не може бути одночаÑно .NOTINTERMEDIATE Ñ– .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s не може бути одночаÑно .NOTINTERMEDIATE Ñ– .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE Ñ– .SECONDARY Ñ” взаємно виключними" + +#: src/file.c:942 +msgid "Current time" +msgstr "Поточний чаÑ" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: чаÑова позначка поза допуÑтимим діапазоном; замінюємо на %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Ðе Ñ” метою:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# ВартіÑний файл (залежніÑть .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# ПÑевдоціль (залежніÑть .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Мета, що викликаєтьÑÑ Ð· командного Ñ€Ñдка." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Типово, MAKEFILES, або -include/sinclude makefile." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Вбудоване правило" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Пошук неÑвних правил виконано." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Пошук неÑвних правил не було виконано." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# ОÑнова неÑвного або Ñтатичного шаблону: \"%s\"\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Файл Ñ” проміжною залежніÑтю." + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Файл Ñ” передумовою .NOTINTERMEDIATE." + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Файл Ñ” вторинним (передумова .SECONDARY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# Збирає також:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Ð§Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ ніколи не перевірÑвÑÑ." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Файл не Ñ–Ñнує." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Файл дуже Ñтарий." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# ВоÑтаннє оновлено %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Файл був оновлений." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Файл не було оновлено." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# ВиконуєтьÑÑ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ° (ЦЕ ПОМИЛКÐ)" + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Ці залежноÑті вже оброблÑютьÑÑ (ЦЕ ПОМИЛКÐ)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# УÑпішно оновлено." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Повинно бути оновлено (вÑтановлений ключ -q)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Спроба Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð±ÐµÐ·ÑƒÑпішна." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð»ÐµÐ½Ð° \"command_state\"!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Файли" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# ÑтатиÑтика щодо таблиці хешів файлів:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: поле «%s» не кешовано: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s: порожнє значеннÑ" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s: «%s» поза припуÑтимим діапазоном" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "некоректний перший аргумент Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— \"word\"" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "першим аргументом функції «word» має бути чиÑло, більше за 0" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "некоректний перший аргумент Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— \"wordlist\"" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "некоректний другий аргумент Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— \"wordlist\"" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "не чиÑловий перший аргумент Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— \"intcmp\"" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "не чиÑловий другий аргумент Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— \"intcmp\"" + +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: помилка DuplicateHandle(In) (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: помилка DuplicateHandle(Err) (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "Помилка CreatePipe() (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): помилка process_init_fd()\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Спорожнюємо тимчаÑовий пакетний файл %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: не вказано назви файла" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: надто багато аргументів" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file: некоректна Ð´Ñ–Ñ Ð½Ð°Ð´ файлом: %s" + +#: src/function.c:2527 +#, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "недоÑÑ‚Ð°Ñ‚Ð½Ñ ÐºÑ–Ð»ÑŒÐºÑ–Ñть аргументів (%u) функції «%s»" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "не реалізовано на цій платформі: Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Â«%s»" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "незавершений виклик функції \"%s\"; пропущено \"%c\"" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "ÐŸÐ¾Ñ€Ð¾Ð¶Ð½Ñ Ð½Ð°Ð·Ð²Ð° функції" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Ðекоректна назва функції: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Ðазва функції Ñ” задовгою: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Ðекоректна мінімальна кількіÑть аргументів (%u) функції %s" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Ðекоректна макÑимальна кількіÑть аргументів (%u) функції %s" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s: параметр «%s» не Ñ” однозначним\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² до параметра «--%s» не передбачено\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² до параметра «%c%s» не передбачено\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: до параметра «%s» Ñлід додати аргумент\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: невідомий параметр «--%s»\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s: невідомий параметр «%c%s»\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: невірний параметр -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: невірний параметр -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: параметру необхідний аргумент -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s: параметр «-W %s» не Ñ” однозначним\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² до параметра «-W %s» не передбачено\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: розгортаємо «%s»\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: обчиÑлюємо «%s»\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити %lu байтів Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– хешів: вичерпано пам’Ñть" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "ЗавантаженнÑ=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Повторне хешуваннÑ=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Збіги=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Пошук неÑвного правила Ð´Ð»Ñ \"%s\".\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "Пошук неÑвного правила Ð´Ð»Ñ Ñ‡Ð»ÐµÐ½Ð° архіву \"%s\".\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Ðе знайдено неÑвного правила чаÑтини архіву Ð´Ð»Ñ Â«%s».\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ€ÐµÐºÑƒÑ€Ñивного виклику неÑвного правила Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° «%s».\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "ÐамагаємоÑÑ Ð±ÑƒÑ‚Ð¸ ретельнішими.\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "ПеревірÑємо правило Ð²Ð·Ñ–Ñ€Ñ†Ñ Â«%s» з оÑновою «%.*s».\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Занадто довгий шаблон: «%s%.*s».\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Ð’Ñ–Ð´ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° «%s» через неможливу передумову правила «%s».\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Ð’Ñ–Ð´ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° «%s» через неможливіÑть неÑвної передумови «%s».\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "ПеревірÑємо передумову правила «%s».\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "ПеревірÑємо неÑвну передумову «%s».\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "«%s» має Ñ–Ñнувати.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "Знайдено «%s».\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "ВикориÑтовуємо правило ÑуміÑноÑті «%s» через «%s».\n" + +#: src/implicit.c:856 +#, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Передумова «%s» правила «%s» не пройшла перевірки на Ñ–ÑнуваннÑ.\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "ВиÑвлено залежніÑть «%s» у форматі VPATH «%s».\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Пошук правила з Ñвним файлом «%s».\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Пошук правила з проміжним файлом \"%s\".\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Відкидаємо правило «%s» через неможливіÑть передумови «%s».\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "Ðе знайдено «%s».\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Знайдено неÑвне правило «%s» Ð´Ð»Ñ Â«%s».\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Шукаємо правило ÑуміÑноÑті Ð´Ð»Ñ Â«%s».\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "Ðе знайдено неÑвних правил Ð´Ð»Ñ \"%s\".\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "Ðе вдалоÑÑ Ñтворити тимчаÑовий файл" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (зроблений дамп пам'Ñті)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (ігноруєтьÑÑ)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<вбудований>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Помилка %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** ÐžÑ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½ÑŒ..." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Ðезавершений дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (віддалений)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Підбираємо вдалий дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· PID %p %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Підбираємо невдалий дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· PID %p %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Ð—Ð½Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñового командного файла %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "" +"Спроба Ð²Ð¸Ñ‚Ð¸ÐºÐ°Ð½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñового файла пакетної обробки %s зазнала невдачі (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Вилучаємо PID дочірнього процеÑу %p %s%s з ланцюжка.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Звільнено Ñимвол Ð´Ð»Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() не вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити Ð¿Ñ€Ð¾Ñ†ÐµÑ (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Під Ñ‡Ð°Ñ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾Ð³Ð¾ запуÑку кількіÑть аргументів дорівнювала %d\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Додаємо дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· PID %p (%s) %s%s до ланцюжка.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Отримано Ñимвол Ð´Ð»Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼ÐµÑ‚Ð¸ «%s» з такої причини: %s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "мети не Ñ–Ñнує" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "" +"Ñ†Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ð¹Ð½Ð° ÑиÑтема не дозволÑÑ” вÑтановлювати Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° завантаженнÑ" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "неможливо вÑтановити Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° завантаженнÑ: " + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "не виÑтачає файлових деÑкрипторів: не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ stdin" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "не виÑтачає файлових деÑкрипторів: не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ stdout" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "не виÑтачає файлових деÑкрипторів: не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ stderr" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ stdin" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ stdout" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ stderr" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "" +"make підібрано дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· pid %s, Ñкий вÑе ще чекає на Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ " +"процеÑу з pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: ймовірно, завершилоÑÑ Ð¼Ñ–Ñце у Ñередовищі" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL змінено (було «%s», тепер «%s»)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Створюємо тимчаÑовий пакетний файл %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"ВміÑÑ‚ файла пакетної обробки:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"ВміÑÑ‚ пакетного файла:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "" +"%s (Ñ€Ñдок %d) Поганий контекÑÑ‚ оболонки (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ таблицю загальних Ñимволів: %s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "Завантажено об'єкт Ñпільного викориÑÑ‚Ð°Ð½Ð½Ñ %s\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "Завантажений об’єкт %s не оголошено Ñк ÑуміÑний з GPL" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñимвол %s з %s: %s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "ÐŸÐ¾Ñ€Ð¾Ð¶Ð½Ñ Ð½Ð°Ð·Ð²Ð° Ñимволу Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ: %s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Завантажуємо Ñимвол %s з %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "Вивантажуємо об'єкт Ñпільного викориÑÑ‚Ð°Ð½Ð½Ñ %s\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "Ðа цій платформі Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´Ñ–Ñ— «load» не передбачено" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Ключі:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m ІгноруєтьÑÑ, Ð´Ð»Ñ ÑуміÑноÑті.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make безумовно оброблÑти вÑÑ– запиÑи мети.\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr "" +" -C КÐТÐЛОГ, --directory=КÐТÐЛОГ\n" +" Перейти до каталогу до Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð±ÑƒÐ´ÑŒ-Ñких " +"дій.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d ВивеÑти діагноÑтичні повідомленнÑ.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=ПРÐПОРЦІ] ВивеÑти діагноÑтичні Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¸Ñ… " +"типів.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Змінні Ñередовища мають вищий пріоритет за " +"змінні makefile.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E РЯДОК, --eval=РЯДОК Обробити РЯДОК Ñк інÑтрукцію makefile.\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f ФÐЙЛ, --file=ФÐЙЛ, --makefile=ФÐЙЛ\n" +" ВикориÑтати ФÐЙЛ Ñк makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help ВивеÑти це Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ– вийти.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr "" +" -i, --ignore-errors Ігнорувати помилки від ÑпоÑобів збираннÑ.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I КÐТÐЛОГ, --include-dir=КÐТÐЛОГ\n" +" Виконати пошук включених makefile у каталозі.\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] Виконувати одночаÑно N завдань; Ñкщо не " +"вказано — необмежену кількіÑть.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" +" --jobserver-style=СТИЛЬ Вибрати Ñтиль, Ñкий викориÑтовуватиме Ñервер " +"завдань.\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr "" +" -k, --keep-going Продовжувати роботу, Ñкщо Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ ÑкоїÑÑŒ мети " +"неможливе.\n" + +#: src/main.c:350 +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" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times ВикориÑтовувати новіший Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ з чаÑів " +"зміни поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ– мети.\n" + +#: src/main.c:355 +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" + +#: src/main.c:358 +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" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[ТИП], --output-sync[=ТИП]\n" +" Ñинхронізувати виведені дані паралельних " +"завдань за ТИПом.\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base ВивеÑти внутрішню базу даних make.\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question не заÑтоÑовувати жодних " +"ÑпоÑобів; код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ”, чи вÑе вже " +"зроблено.\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules Вимкнути вбудовані неÑвні правила.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables Вимкнути вбудовані параметри змінних.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Виконати Ð¿ÐµÑ€ÐµÐ¼Ñ–ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´ÑƒÐ¼Ð¾Ð² Ñ– цілей.\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Ðе виводити ÑпоÑоби збираннÑ.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr "" +" --no-silent Виводити ÑпоÑоби Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ (вимкнути режим --" +"silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Вимкнути -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch Змінювати Ñ‡Ð°Ñ Ð´Ð¾Ñтупу до мети заміÑть Ñ—Ñ— " +"повторного збираннÑ.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace ВивеÑти дані щодо траÑуваннÑ.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version ВивеÑти дані щодо верÑÑ–Ñ— make Ñ– вийти.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Виводити дані щодо поточного каталогу.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr "" +" --no-print-directory Вимкнути -w, навіть Ñкщо Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð±ÑƒÐ»Ð¾ " +"виконано неÑвним чином.\n" + +#: src/main.c:392 +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" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Попереджати про поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° невизначену " +"змінну.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "помилка запиÑу: stdout" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "порожній Ñ€Ñдок не може бути назвою файла" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "невідома ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ€Ñ–Ð²Ð½Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтики, «%s»" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "невідомий тип Ñинхронізації виведених даних, «%s»" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "ВикориÑтаннÑ: %s [КЛЮЧІ]... [ЦІЛЬ]...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Цю програму зібрано Ð´Ð»Ñ %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Цю програму зібрано Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "Повідомлюйте про помилки до \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: ÑталоÑÑ Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ (код = 0x%lx, адреÑа = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"З програми %s викликано фільтр непридатних до обробки виключень\n" +"Код Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ = %lx\n" +"Прапорці Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ = %lx\n" +"ÐдреÑа Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "ÐŸÐ¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» доÑтупу: Ð´Ñ–Ñ Ð· запиÑу за адреÑою 0x%p\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "ÐŸÐ¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» доÑтупу: Ð´Ñ–Ñ Ð· Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° адреÑою 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() вÑтановлює default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "" +"Пошуком шлÑхів find_and_set_shell() вÑтановлено Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (тимчаÑовий файл): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"попередженнÑ: Ñервер завдань недоÑтупний: викориÑтовуємо -j1. Додайте «+» до " +"батьківÑького правила збираннÑ." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "попередженнÑ: у submake вказано -j%d: вимикаємо режим Ñервера завдань." + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "Makefile зі Ñтандартного джерела вхідних даних вказано двічі" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite: тимчаÑовий файл %s: %s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"попередженнÑ: у makefile вказано -j%d: вимикаємо режим Ñервера завдань." + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "Ðа цій платформі паралельної обробки завдань (-j) не передбачено." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "ПовертаємоÑÑ Ð´Ð¾ режиму єдиного Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "ВикориÑтовуємо контролер Ñервера завдань %s\n" + +#: src/main.c:2250 +#, c-format +msgid "Using output-sync mutex %s\n" +msgstr "ВикориÑтовуємо Ñемафор Ñинхронізації Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ %s\n" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Підтримки Ñимволічних поÑилань не передбачено: вимикаємо -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "Увімкнено режим перемішуваннÑ: %s\n" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ make-файлів...\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Make-файл \"%s\", можливо, зациклений, він не перезбиратиметьÑÑ.\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Спроба перезібрати make-файл \"%s\" безуÑпішна." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Make-файл \"%s\", Ñкий включаєтьÑÑ, не було знайдено." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Make-файл \"%s\" не було знайдено" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¹Ñ‚Ð¸ у первіÑний каталог" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Повторне виконаннÑ[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL міÑтить декілька запиÑів мети" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Ðема цілей" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Ðе задані цілі Ñ– не знайдений make-файл" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ†Ñ–Ð»ÐµÐ¹ мети...\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"попередженнÑ: виÑвлено Ð²Ñ–Ð´Ñ…Ð¸Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ–Ð² годинника. Ð—Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ðµ бути " +"неповним." + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "разом з «%s%s» мало бути вказано непорожній Ñ€Ñдковий аргумент" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "ключ \"-%c\" повинен викориÑтовуватиÑÑ Ð· цілим додатним аргументом" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sЗібрано Ð´Ð»Ñ %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sЗібрано Ð´Ð»Ñ %s (%s)\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%sУмови Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ»Ð°Ð´ÐµÐ½Ð¾ у GPLv3+: GNU GPL верÑÑ–Ñ— 3 або новішій, " +"\n" +"%sЦе вільне програмне забезпеченнÑ: ви можете вільно змінювати Ñ– поширювати " +"його.\n" +"%sВам не надаєтьÑÑ Ð–ÐžÐ”ÐИХ ГÐРÐÐТІЙ, окрім гарантій передбачених " +"законодавÑтвом.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# База даних Make, надрукована %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Друк бази даних Make завершено %s\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "ВикориÑтовуємо типовий ÑпоÑіб Ð´Ð»Ñ Â«%s».\n" + +#: src/misc.c:698 +#, c-format +msgid "create temporary file %s: %s" +msgstr "ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñового файла %s: %s" + +#: src/misc.c:708 +#, c-format +msgid "unlink temporary file %s: %s" +msgstr "від'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñового файла %s: %s" + +#: src/misc.c:733 +#, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fdopen: тимчаÑовий файл %s: %s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen: тимчаÑовий файл %s: %s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: входимо до невідомого каталогу\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: виходимо з невідомого каталогу\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: входимо до каталогу «%s»\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Залишаю каталог \"%s\"\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: входимо до невідомого каталогу\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: залишаємо невідомий каталог\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: входимо до каталогу «%s»\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Залишаю каталог \"%s\"\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" +"попередженнÑ: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ, вимикаємо " +"Ñинхронізацію виведеннÑ." + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Зупинка.\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñервер завдань %s: %s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "Ðевідомий Ñтиль Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ Ð½Ð° Ñервері завдань «%s»" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "Ñтворюємо канал завдань" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "дублюємо канал завдань" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "ініціалізуємо канал Ñервера завдань" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "некоректний Ñ€Ñдок --jobserver-auth «%s»" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ Ñервера завдань" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "Ñервер завдань вимкнено" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pselect Ð´Ð»Ñ ÐºÐ°Ð½Ð°Ð»Ñƒ завдань" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñів з потоку завдань" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "некоректний Ñ€Ñдок --sync-mutex «%s»" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñемафор Ñинхронізації Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ %s: %s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ make-файлів...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ make-файла \"%s\"" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (немає типової мети)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (шлÑÑ… пошуку)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (не зважати)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (не розширювати ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "ПропуÑкаємо мітку UTF-8 у файлі makefile «%s»\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "ПропуÑкаємо мітку UTF-8 у буфері файла makefile\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "невірний ÑинтакÑÐ¸Ñ Ñƒ умовному вираженні" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑпоÑобу Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ”Ñ‚ÑŒÑÑ Ð´Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÑˆÐ¾Ñ— мети" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "пропущено правило до ÑпоÑобу" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "пропущено роздільник (ви хотіли ввеÑти TAB заміÑть 8 пробілів?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "пропущено розділювач" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "пропущений шаблон цілі" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "не один шаблон цілі" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "шаблон цілі не міÑтить \"%%\"" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "пропущена \"endif\"" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "порожнє ім'Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "зайвий текÑÑ‚ піÑÐ»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð¸ «define»" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "пропущена \"endif\", незавершена \"define\"" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "зайвий текÑÑ‚ піÑÐ»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð¸ «endef»" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "зайвий текÑÑ‚ піÑÐ»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð¸ \"%s\"" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "зайва \"%s\"" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "в умовному виразі можлива лише одна директива `else'" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Помилкове Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñпецифічного Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT не повинна мати передумов" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT не повинна міÑтити команд" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "у ÑпоÑобах Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð½Ðµ можна вказувати залежноÑтей" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "Ð´Ð»Ñ Ð·Ð³Ñ€ÑƒÐ¿Ð¾Ð²Ð°Ð½Ð¸Ñ… цілей має бути надано ÑпоÑіб збираннÑ" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "змішані неÑвні правила Ñ– правила зі Ñтатичними зразками" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "змішані неÑвні Ñ– звичайні правила" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "ціль \"%s\" не відповідає зразку цілей" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "цільовий файл \"%s\" має Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ– з \":\", Ñ– з \"::\" " + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "ціль \"%s\" зазначено декілька разів у одному правилі" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "попередженнÑ: замінюємо ÑпоÑіб Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s»" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "попередженнÑ: ігноруємо заÑтарілий ÑпоÑіб Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s»" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** змішані неÑвні Ñ– звичайні правила: заÑтарілий ÑинтакÑиÑ" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "попередженнÑ: перевизначаємо учаÑть у групах Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s»" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "попередженнÑ: зуÑтрінутий Ñимвол NUL; ігноруєтьÑÑ Ð´Ð¾ ÐºÑ–Ð½Ñ†Ñ Ñ€Ñдки" + +#: src/remake.c:97 +#, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "попередженнÑ: взірцевий ÑпоÑіб не оновив ціль вузла «%s»." + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Ціль \"%s\" не вимагає Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "\"%s\" не вимагає оновленнÑ." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Обрізаємо файл «%s».\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%sÐема правила Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ†Ñ–Ð»Ñ– \"%s\", необхідної Ð´Ð»Ñ \"%s\"%s" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sÐема правила Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ†Ñ–Ð»Ñ– \"%s\"%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Обробка цільового файла \"%s\".\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñпроба оновити файл \"%s\" завершилаÑÑ Ð±ÐµÐ·ÑƒÑпішно.\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Файл \"%s\" вже було оброблено.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Ð’Ñе ще оновлюєтьÑÑ Ñ„Ð°Ð¹Ð» \"%s\".\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\" завершено.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Ðе виÑвлено файла з назвою «%s».\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** ПопередженнÑ: файл .LOW_RESOLUTION_TIME «%s» має чаÑову позначку виÑокої " +"точноÑті" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "Згрупованого вузла цілей «%s» файла «%s» не Ñ–Ñнує.\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "ВикориÑтовуємо типовий ÑпоÑіб Ð´Ð»Ñ Â«%s».\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Циклічна залежніÑть %s <- %s пропущена." + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Завершено обробку попередніх залежноÑтей файла мети «%s».\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "Цілі, від Ñких залежить \"%s\", збираютьÑÑ.\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Ðварійний зупинка на цільовому файлі \"%s\".\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Ціль \"%s\" не була перезібрана через помилки." + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "ЗалежніÑть «%s» визначено Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s» лише порÑдком збираннÑ.\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "ЗалежноÑті «%s» мети «%s» не Ñ–Ñнує.\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "ЗалежніÑть «%s» Ñ” новішою за мету «%s».\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "ЗалежніÑть «%s» Ñ” Ñтарішою за мету «%s».\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "Ціль \"%s\" оголошена з двома двокрапками Ñ– не має залежноÑтей.\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "Ðемає ÑпоÑобу Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Â«%s», вÑÑ– попередні залежноÑті не змінено.\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Збираємо «%s» через вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° always-make.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Потреби у повторному збиранні мети «%s» немає" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; викориÑтовуємо назву VPATH «%s»" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Ðеобхідно перезібрати ціль \"%s\".\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Ігноруємо назву VPATH «%s».\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "ЗаÑтоÑовуємо ÑпоÑіб «%s».\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "Спроба перезібрати цільовий файл \"%s\" безуÑпішна.\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Цільовий файл \"%s\" уÑпішно перезібраний.\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "Цільовий файл \"%s\" вимагає Ð¿ÐµÑ€ÐµÐ·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð· ключем -q.\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… команд Ð´Ð»Ñ Â«%s».\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "Увага: Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ файла «%s» перебуває на %s Ñ Ñƒ майбутньому" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Елемент .LIBPATTERNS «%s» не Ñ” зразком" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "ÐеекÑпортовні налаштуваннÑ: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" +"попередженнÑ: ігноруємо передумови щодо ÑуфікÑального Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð°" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# ÐеÑвні правила" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# ÐеÑвних правил нема." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# ÐеÑвних правил: %u, термінальних: %u (%.1f%%)." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "ПОМИЛКÐ: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ num_pattern_rules Ñ” помилковим! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "некоректний режим перемішуваннÑ: %s: «%s»" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "невідомий Ñигнал" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Обрив" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "ПерериваннÑ" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Вихід" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "ÐеприпуÑтима інÑтрукціÑ" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "ПаÑтка траÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡Ð¸ точки зупинки" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Припинено" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "ПаÑтка IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "ПаÑтка EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Помилка операції з крапкою, що плаває" + +#: src/signame.c:121 +msgid "Killed" +msgstr "ЗнищеннÑ" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Помилка на шині" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Збій Ñегментації" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Поганий ÑиÑтемний виклик" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "Обрив каналу" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Сигнал по таймеру" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Завершено" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Обумовлений кориÑтувачем Ñигнал 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Обумовлений кориÑтувачем Ñигнал 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Ðащадок завершив роботу" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Збій живленнÑ" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Зупинено" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Зупинено (ввід з термінала) " + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Зупинено (вивід на термінал)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Зупинено (Ñигнал)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Перевищене Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° процеÑорний чаÑ" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Перевищений межа розміру файла" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Віртуальний Ñ‡Ð°Ñ Ð¼Ð¸Ð½ÑƒÐ²" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "Ð§Ð°Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð¼Ð¸Ð½ÑƒÐ²" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Вікно змінено" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Продовжено" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Умова екÑтреного вводу/виводу" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "Можливий ввід/вивід" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "РеÑÑƒÑ€Ñ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Сигнал небезпеки" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Запит інформації" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Допоміжний процеÑор Ð´Ð»Ñ Ð¾Ð±Ñ‡Ð¸Ñлень з рухомою комою недоÑтупний" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s немає буферів strcache\n" + +#: src/strcache.c:304 +#, c-format +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" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"Поточний буфер %s: розмір = %hu Б / викориÑтано = %hu Б / кількіÑть = %hu / " +"Ñер = %u Б\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "Інше викориÑтане %s: загалом = %lu B / кількіÑть = %lu / Ñер = %lu Б\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"Інше вільне %s: загалом = %lu Б / Ð¼Ð°ÐºÑ = %lu Б / мін = %lu Б / Ñер = %hu Б\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"Ð¨Ð²Ð¸Ð´ÐºÐ¾Ð´Ñ–Ñ strcache %s: циклів пошуку = %lu / відÑоток знайденого = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# ÑтатиÑтика щодо таблиці хешів:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "автоматична" + +#: src/variable.c:1789 +msgid "default" +msgstr "типовий" + +#: src/variable.c:1792 +msgid "environment" +msgstr "визначена у Ñередовищі" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "файл make" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "заданий ключ -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "визначена у командному Ñ€Ñдку" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "Директива «override»" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (з \"%s\", Ñ€Ñдок %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# Ñтан змінних у хеш-таблиці:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Змінні\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Специфічні Ð´Ð»Ñ Ð·Ñ€Ð°Ð·ÐºÐ° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ…" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Ðемає Ñпецифічних Ð´Ð»Ñ Ð·Ñ€Ð°Ð·ÐºÐ° значень змінних." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u Ñпецифічних Ð´Ð»Ñ Ð·Ñ€Ð°Ð·ÐºÐ° значень змінних" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "попередженнÑ: невизначена змінна \"%.*s\"" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() повернуто код помилки %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "" +"-попередженнÑ, ймовірно, вам варто повторно увімкнути обробку CTRL-Y з DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "ВБУДОВÐÐИЙ CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "ДопиÑати виведенні дані до %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "ДопиÑати %.*s Ñ– Ñпорожнити\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "ЗаміÑть заданого виконуєтьÑÑ %s\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# ШлÑхи пошуку VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Ðе визначено шлÑÑ… пошуку \"vpath\"." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u шлÑхи пошуку \"vpath\".\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Ðе визначено загальний шлÑÑ… пошуку (змінна \"VPATH\")." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# Загальний шлÑÑ… пошуку (змінна \"VPATH\"):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Слоти Ñервера завдань обмежено значеннÑм %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "Ñтворюємо Ñемафор Ñервера завдань: (помилка %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñемафор Ñервера завдань «%s»: " +"(помилка %ld: %s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Клієнт Ñервера завдань (Ñемафор %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "ÑпуÑкаємо Ñемафор Ñервера завдань: (Помилка %ld: %s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "Ð¾Ñ‡Ñ–ÐºÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñемафора або дочірнього процеÑу: (помилка %ld: %s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñемафор Ñинхронізації Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ %s: %s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "некоректний Ñемафор Ñинхронізації виведеннÑ: %s" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñервера завдань (fifo %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñервера завдань (деÑкриптори файлів %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Клієнт Ñервера завдань (fd %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (тимчаÑовий файл)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: кориÑтувач %lu (наÑправді %lu), група %lu (наÑправді %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "Ініціалізований доÑтуп" + +#~ msgid "User access" +#~ msgstr "ДоÑтуп кориÑтувача" + +#~ msgid "Make access" +#~ msgstr "ДоÑтуп make" + +#~ msgid "Child access" +#~ msgstr "ДоÑтуп дочірнього процеÑу" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "" +#~ "-O[ТИП] (--output-sync[=ТИП]) Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ ÑеанÑу Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð½Ðµ налаштовано." + +#~ msgid "jobserver pipeline" +#~ msgstr "канал Ñервера завдань" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: не знайдено команди\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: не знайдено команди\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Командний процеÑор не знайдений" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s призупинÑєтьÑÑ Ð½Ð° 30 Ñекунд..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "виконано sleep(30). Продовжуємо.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Ðевідома помилка %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "Увага: Файл \"%s\" має майбутній Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸" + +#~ msgid " terminal." +#~ msgstr "." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: Ñпроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ€ÐµÑ†ÐµÐ¿Ñ‚Ð° Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s» зазнала невдачі" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Помилка 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "дублюємо Ñервер завдань" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "ПопередженнÑ: порожнє переÑпрÑмуваннÑ\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: «%s» command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "ВБУДОВÐÐИЙ [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "ВБУДОВÐÐЕ ECHO %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Ðевідома вбудована команда \"%s\".\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "У .ONESHELL Ñ†Ñ Ð²Ð±ÑƒÐ´Ð¾Ð²Ð°Ð½Ð° команда Ñ” невідомою або непідтримуваною: «%s»\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Помилка, Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "ПереÑпрÑмоване Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð· %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку переÑпрÑмовано до %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "ПереÑпрÑмовуємо Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð¾ %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Помилка Ð¿Ð¾Ñ€Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: вказано декілька параметрів --sync-mutex" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: вказано декілька ключів --jobserver-fds" + +#~ msgid "virtual memory exhausted" +#~ msgstr "віртуальна пам'Ñть вичерпана" + +#~ msgid "write error" +#~ msgstr "помилка запиÑу" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "ВБУДОВÐÐИЙ RM %s\n" + +#~ msgid "# Invalid value in 'update_status' member!" +#~ msgstr "# Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð»ÐµÐ½Ð° \"update_status\"!" + +#~ msgid "unknown trace mode '%s'" +#~ msgstr "невідомий режим траÑÑƒÐ²Ð°Ð½Ð½Ñ Â«%s»" diff --git a/local/recipes/dev/gnu-make/source/po/vi.gmo b/local/recipes/dev/gnu-make/source/po/vi.gmo new file mode 100644 index 0000000000..400637efea Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/vi.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/vi.po b/local/recipes/dev/gnu-make/source/po/vi.po new file mode 100644 index 0000000000..6d1eee5fe3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/vi.po @@ -0,0 +1,2625 @@ +# Vietnamese translation for Make. +# Bản dịch tiếng Việt dành cho make. +# Copyright © 2016 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Clytie Siddall , 2006-2010. +# Nguyá»…n Thái Ngá»c Duy , 2012. +# Trần Ngá»c Quân , 2012-2014, 2016, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2020-01-04 15:04+0700\n" +"Last-Translator: Trần Ngá»c Quân \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Language-Team-Website: \n" +"X-Generator: Poedit 2.2.4\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "đã dùng tính năng chưa được há»— trợ: “%sâ€" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "“touch†thành viên kho không có trên VMS" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch: Kho “%s†không tồn tại" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch: “%s†không phải là kho hợp lệ" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch: Thành viên “%s†không tồn tại trong “%sâ€" + +#: src/ar.c:168 +#, c-format +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â€" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "" +"lbr$set_module() đã không giải nén thông tin vá» mô-Ä‘un, trạng thái = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() bị lá»—i vá»›i trạng thái = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "không thể mở thư viện “%s†để tra tìm thành viên “%dâ€" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "Thành viên “%sâ€%s: %ld byte tại %ld (%ld).\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (có lẽ tên đã bị cắt ngắn)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " Ngày %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d, gid = %d, chế độ = 0%o.\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "Công thức có quá nhiá»u dòng (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** Ngắt.\n" + +#: src/commands.c:629 +#, c-format +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á»" + +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** Thành viên kho “%s†có thể là giả; chưa bị xóa bá»" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] Äang xóa tập tin “%sâ€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** Äang xóa tập tin “%sâ€" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# công thức cần thá»±c hiện" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (dá»±ng-sẵn):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (từ “%sâ€, dòng %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# Thư mục\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s: không thể lấy thống kê.\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (khóa %s, mtime %I64u): không thể mở.\n" + +#: src/dir.c:1126 +#, 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ể mở.\n" + +#: src/dir.c:1131 +#, 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ể mở.\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (khóa %s, mtime %I64u): " + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (thiết bị %d, inode [%d,%d,%d]): " + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (thiết bị %ld, inode %ld): " + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "Không" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " tập tin, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "không" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " việc không thể làm được" + +#: src/dir.c:1180 +msgid " so far." +msgstr " cho đến giá»." + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " việc không thể làm được trong %lu thư mục.\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +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ó" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "tham chiếu biến chưa chấm dứt" + +#: src/file.c:272 +#, 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," + +#: src/file.c:277 +#, c-format +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," + +#: src/file.c:281 +#, 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â€." + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "" +"Công thức cho “%s†sẽ bị bá» qua trong sá»± chấp thuận cá»§a má»™t cái cho “%sâ€." + +#: src/file.c:304 +#, c-format +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" + +#: src/file.c:310 +#, c-format +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" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** Äang xóa tập tin trung gian “%sâ€" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "Xóa các tập tin trung gian…\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "Giá» hiện tại" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s: Thá»i gian cá»§a tập tin ở ngoài phạm vi nên thay thế bằng %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# Không phải là đích:" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# Tập tin giá trị (Ä‘iá»u kiện tiên quyết cá»§a .PRECIOUS)." + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# Äích giả (Ä‘iá»u kiện tiên quyết cá»§a .PHONY)." + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# Äích dòng lệnh." + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# Mặc định, MAKEFILES, hoặc makefile kiểu -include/sinclude." + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# Quy tắc dá»±ng sẵn" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# Hoàn tất tìm quy tắc ngầm." + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# Chưa hoàn tất tìm quy tắc ngầm." + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# Cuống mẫu ngầm/tÄ©nh: “%sâ€\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# Tập tin là má»™t Ä‘iá»u kiện tiên quyết trung gian." + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# Tập tin giá trị (Ä‘iá»u kiện tiên quyết cá»§a .PRECIOUS)." + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# Äích giả (Ä‘iá»u kiện tiên quyết cá»§a .PHONY)." + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# CÅ©ng tạo:" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# Chưa kiểm tra giá» sá»­a đổi." + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# Tập tin không tồn tại." + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# Tập tin rất cÅ©." + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# Lần sá»­a cuối cùng %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# Tập tin đã được cập nhật." + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# Tập tin chưa được cập nhật." + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# Công thức Ä‘ang chạy (ÄÂY LÀ MỘT Lá»–I)." + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# Công thức phụ thuá»™c Ä‘ang chạy (ÄÂY LÀ MỘT Lá»–I)." + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# Cập nhật thành công." + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# Cần được cập nhật (-q được đặt)." + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# Gặp lá»—i khi cập nhật." + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# Gặp giá trị sai trong thành viên “command_stateâ€!" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# Tập tin" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# thống kê bảng băm tập tin:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s: Trưá»ng “%s†chưa được nhá»› đệm: %s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "đối số thứ nhất không phải dạng số cho hàm “wordâ€" + +#: src/function.c:803 +#, c-format +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" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "đối số thứ nhất không phải số cho hàm “wordlistâ€" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "đối số thứ hai không phải số cho hàm “wordlistâ€" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "đối số thứ nhất không phải số cho hàm “wordlistâ€" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "đối số thứ hai không phải số cho hàm “wordlistâ€" + +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) gặp lá»—i (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) gặp lá»—i (e=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() bị lá»—i (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() gặp lá»—i\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "Dá»n dẹp tập tin bó tạm %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file: thiết tên tập tin" + +# Variable: do not translate/ biến: đừng dịch +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "mở: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "ghi: %s: %s" + +# Variable: do not translate/ biến: đừng dịch +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "đóng: %s: %s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "file: quá ít đối số" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read: %s: %s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "tập tin: Thao tác tập tin không hợp lệ: %s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "không đủ số đối số (%d) cho hàm “%sâ€" + +#: src/function.c:2539 +#, c-format +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â€" + +#: src/function.c:2608 +#, c-format +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â€" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "Tên hàm trống rá»—ng" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "Tên hàm không hợp lệ: %s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "Tên hàm quá dài: %s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "Số lượng đối số tối thiểu (%u) là không hợp lệ cho hàm “%sâ€" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "Số lượng đối số tối Ä‘a (%u) là không hợp lệ cho hàm “%sâ€" + +#: src/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" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s: tùy chá»n “--%s†không nhận đối số\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s: tùy chá»n “%c%s†không nhận đối số\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: tùy chá»n “%s†cần má»™t đối số\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s: không nhận ra tùy chá»n “--%sâ€\n" + +#: src/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" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: tùy chá»n không hợp lệ -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: tùy chá»n không hợp lệ -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tùy chá»n cần má»™t đối số -- %c\n" + +#: src/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" + +#: src/getopt.c:862 +#, c-format +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" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: Äang khai triển “%sâ€\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: Äang định giá “%sâ€\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "không thể cấp phát %lu byte cho bảng băm: hết bá»™ nhá»›" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "Tải =%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "Băm lại=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "Xung đột =%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "Tìm quy tắc ngầm cho “%sâ€.\n" + +#: src/implicit.c:57 +#, c-format +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" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "Tìm quy tắc ngầm vá» thành phần kho cho “%sâ€.\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "Tránh quy tắc ngầm đệ quy.\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "Thá»­ quy tắc mẫu vá»›i cuống “%.*sâ€.\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "Stem quá dài: “%s%.*sâ€.\n" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "Từ chối Ä‘iá»u kiện tiên quyết không thể thá»a “%sâ€.\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "Từ chối Ä‘iá»u kiện tiên quyết ngầm không thể “%sâ€.\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "Thá»­ Ä‘iá»u kiện tiên quyết quy tắc “%sâ€.\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "Thá»­ Ä‘iá»u kiện tiên quyết ngầm “%sâ€.\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "Tập tin “%s†không tồn tại.\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s: cập nhật đích “%sâ€, cần bởi: %s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "Äiá»u kiện tiên quyết “%s†cá»§a đích “%s†không tồn tại.\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +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" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "Tìm quy tắc có tập tin trung gian “%sâ€.\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "Tìm quy tắc có tập tin trung gian “%sâ€.\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "Từ chối Ä‘iá»u kiện tiên quyết không thể thá»a “%sâ€.\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "Không tìm thấy quy tắc ngầm cho “%sâ€.\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "Tìm thấy quy tắc ngầm cho “%sâ€.\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "Tìm quy tắc ngầm cho “%sâ€.\n" + +#: src/implicit.c:1157 +#, 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" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "Không thể tạo tập tin tạm\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (đổ lõi)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (bá» qua)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] Lá»—i %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** Äang đợi những công việc chưa hoàn tất…" + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "Tiến trình con còn sống %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (máy chá»§)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "Äang thắng lại tiến trình con %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "Äang mất tiến trình con %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "Dá»n dẹp tập tin bó tạm %s\n" + +#: src/job.c:972 +#, 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" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "Bá» tiến trình con %p PID %s%s khá»i xâu.\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "Äã giải phóng thẻ bài cho tiến trình con %p (%s).\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() gặp lá»—i khi chạy tiến trình (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"Äếm được %d đối số trong lần khởi chạy bị lá»—i\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "Äặt tiến trình con %p (%s) PID %s%s vào xâu.\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "Äã lấy thẻ bài cho Ä‘iá»u con %p (%s).\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s: cập nhật đích “%sâ€, cần bởi: %s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: đích “%s†không tồn tại" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "không thể buá»™c giá»›i hạn tải trên hệ Ä‘iá»u hành này" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "không thể buá»™c giá»›i hạn tải: " + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "" +"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" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "" +"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" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +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" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "Không thể phục hồi đầu vào chuẩn\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "Không thể phục hồi đầu ra chuẩn\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "Không thể phục hồi đầu ra lá»—i tiêu chuẩn\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "đặt Ä‘iá»u con đã bắt là PID %s, vẫn còn đợi PID %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: cạn không gian dành cho biến môi trưá»ng" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL thay đổi (trước là “%sâ€, giá» là “%sâ€)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "Tạo tập tin bó lệnh tạm: %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"Ná»™i dung tập tin bó lệnh:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, 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" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (dòng %d) Ngữ cảnh shell sai (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, 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" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, 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" + +#: src/load.c:106 +#, 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" + +#: src/load.c:151 +#, 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" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "Äang tải ký hiệu %s từ %s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +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." + +#: src/main.c:317 +msgid "Options:\n" +msgstr "Tùy chá»n:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m Bá» qua để tương thích.\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make Tạo má»i đích vô Ä‘iá»u kiện.\n" + +#: src/main.c:322 +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 sang THƯ MỤC này trước khi làm.\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d In rất nhiá»u thông tin gỡ rối.\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr "" +" --debug[=CỜ…] In nhiá»u loại thông tin gỡ rối khác nhau.\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" Biến môi trưá»ng đè tập tin makefile.\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr "" +" -E STRING, --eval=CHUá»–I Äịnh lượng CHUá»–I như má»™t lệnh makefile.\n" + +#: src/main.c:334 +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 dạng makefile.\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help Hiển thị trợ giúp này và thoát.\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors Bá» qua lá»—i từ công thức.\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr "" +" -I THƯ_MỤC, --include-dir=THƯ_MỤC\n" +" Quét THƯ-MỤC này tìm makefile con.\n" + +#: src/main.c:344 +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 công việc đồng thá»i; không có đối " +"số thì vô hạn.\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr " -k, --keep-going Cứ tiếp tục khi không thể tạo đích.\n" + +#: src/main.c:350 +msgid "" +" -l [N], --load-average[=N], --max-load[=N]\n" +" Don't start multiple jobs unless load is below " +"N.\n" +msgstr "" +" -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" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times Dùng mtime má»›i nhất giữa liên kết và đích.\n" + +#: src/main.c:355 +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" +" Không chạy công thức; chỉ in chúng ra.\n" + +#: src/main.c:358 +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" +" Coi TẬP-TIN là rất cÅ© và không tạo lại.\n" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -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" + +#: src/main.c:364 +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" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question Không chạy; mã thoát là \"đã cập nhật\".\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules Tắt quy tắc ngầm dá»±ng sẵn.\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables Tắt đặt biến dá»±ng sẵn.\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet Không in lại công thức.\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr " --no-silent In ra công thức (tắt chế độ --silent).\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" Tắt -k.\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr " -t, --touch Chạm đích thay vì tạo lại.\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace Hiển thị thông tin dấu vết.\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version Hiển thị phiên bản make rồi thoát.\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory Hiển thị thư mục hiện thá»i.\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr " --no-print-directory Tắt -w, thậm chí nếu được bật ngầm.\n" + +#: src/main.c:392 +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, --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" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr "" +" --warn-undefined-variables Cảnh báo tham chiếu đến biến chưa xác định.\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "lá»—i ghi: đầu ra tiêu chuẩn" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "chuá»—i rá»—ng không hợp lệ làm tên tập tin" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "không hiểu đặc tả cấp gỡ rối “%sâ€" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "không hiểu kiểu output-sync “%sâ€" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "Cách dùng: %s [các_tùy_chá»n] [đích] …\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"Chương trình này đã được dịch cho %s\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"Chương trình này đã được dịch cho %s (%s)\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "" +"Hãy thông báo lá»—i cho \n" +"Hãy thông báo lá»—i dịch cho .\n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s: Bắt được ngắt/ngoại lệ (mã = 0x%lx, địa chỉ = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"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 (mã ngoại lệ) = %lx\n" +"ExceptionFlags (các cá» ngoại lệ) = %lx\n" +"ExceptionAddress (địa chỉ ngoại lệ) = 0x%p\n" + +#: src/main.c:955 +#, 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ỉ 0x%p\n" + +#: src/main.c:956 +#, 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ỉ 0x%p\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() Ä‘ang đặt default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "find_and_set_shell() đã quét đưá»ng dẫn thì đặt default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "unlink (bá» liên kết tập tin tạm): " + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "" +"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." + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "" +"cảnh báo: -j%d bị ép buá»™c trong make con: Ä‘ang đặt lại chế độ jobserver." + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "Tập tin makefile từ đầu vào chuẩn được ghi hai lần." + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (tập tin tạm)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "" +"cảnh báo: -j%d bị ép buá»™c trong make con: Ä‘ang đặt lại chế độ jobserver." + +#: src/main.c:2191 +#, c-format +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." + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "Äặt lại thành chế độ công việc đơn (-j1)." + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "không hiểu kiểu output-sync “%sâ€" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "Không há»— trợ liên kết má»m: tắt -L." + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "Cập nhật makefile…\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile “%s†bị lặp; không tạo lại nó.\n" + +# Variable: do not translate/ biến: đừng dịch +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: gặp lá»—i khi tải" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "Gặp lá»—i khi làm lại makefile “%sâ€." + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "Không tìm thấy makefile bao gồm “%sâ€." + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "Không tìm thấy makefile “%sâ€" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "Không thể chuyển vá» thư mục gốc." + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "Thá»±c hiện lại[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL chứa nhiá»u đích" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "Không có đích" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "Chưa chỉ định đích, và không tìm thấy makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "Äang cập nhật đích mong muốn…\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "" +"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." + +#: src/main.c:3186 +#, 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" + +#: src/main.c:3267 +#, c-format +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" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%sÄÆ°á»£c biên dịch cho %s\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%sÄÆ°á»£c biên dịch cho %s (%s)\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sGiấy phép GPL pb3+: Giấy phép Công cá»™ng GNU phiên bản 3 hay sau \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 kiện được pháp luật cho phép.\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# CÆ¡ sở dữ liệu Make, in lúc %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# Hoàn tất cÆ¡ sở dữ liệu Make lúc %s\n" + +# Variable: don't translate / Biến: đừng dịch +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "Dùng công thức mặc định cho “%sâ€.\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "Tạo tập tin bó lệnh tạm: %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "unlink (bá» liên kết tập tin tạm): " + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (tập tin tạm)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (tập tin tạm)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: Vào thư mục lạ\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: Rá»i khá»i thư mục lạ\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: Vào thư mục “%sâ€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: Rá»i thư mục “%sâ€\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: Vào thư mục chưa biết\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: Rá»i khá»i thư mục lạ\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: Vào thư mục “%sâ€\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: Rá»i khá»i thư mục “%sâ€\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr ". Dừng.\n" + +# Variable: don't translate / Biến: đừng dịch +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "không hiểu kiểu output-sync “%sâ€" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "tạo ống dẫn công việc" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "nhân bản ống dẫn công việc" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "khởi tạo đưá»ng ống “jobserverâ€" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "lá»—i ná»™i bá»™: gặp chuá»—i --jobserver-auth “%s†không hợp lệ" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "ghi lại trình phục vụ công việc" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "tắt máy phục vụ công việc" + +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect (chá»n tiến trình?) ống dẫn công việc" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "Ä‘á»c ống dẫn công việc" + +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "lá»—i ná»™i bá»™: gặp chuá»—i --jobserver-auth “%s†không hợp lệ" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "không hiểu kiểu output-sync “%sâ€" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "Äang Ä‘á»c makefile…\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "Äang Ä‘á»c makefile “%sâ€" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (không có mục đích mặc định)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (đưá»ng dẫn tìm kiếm)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (không quan tâm)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (không nối thêm ~)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "Bá» qua “UTF-8 BOM†trong makefile “%sâ€\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "Bá» qua “UTF-8 BOM†trong bá»™ đệm cá»§a tập tin makefile\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "cú pháp không hợp lệ trong biểu thức Ä‘iá»u kiện" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "công thức bắt đầu trước đích thứ nhất" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "thiếu quy tắc trước công thức" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "" +"thiếu dấu phân cách (bạn đã định dùng TAB thay vì 8 khoảng trắng phải không?)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "thiếu dấu phân cách" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "thiếu mẫu đích" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "nhiá»u mẫu đích" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "mẫu đích không chứa “%%â€" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "thiếu chỉ thị “endifâ€" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "tên biến rá»—ng" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "gặp các ký tá»± thừa đằng sau chỉ thị “defineâ€" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "thiếu “endefâ€, chỉ thị “define†chưa hoàn thiện" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "gặp các ký tá»± thừa đằng sau chỉ thị “endefâ€" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "gặp các ký tá»± thừa đằng sau chỉ thị “%sâ€" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "gặp “%s†thừa" + +#: src/read.c:1577 +#, c-format +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" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "Äịnh nghÄ©a biến đích riêng biệt bị há»ng" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "không thể định nghÄ©a Ä‘iá»u kiện tiên quyết cho công thức" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "các đích đã nhóm phải cung cấp má»™t công thức" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "trá»™n lẫn quy tắc ngầm và mẫu tÄ©nh" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "trá»™n quy tắc ngầm và thưá»ng" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "đích “%s†không tương ứng vá»›i mẫu đích" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "tập tin đích “%s†có cả hai hạng mục : và ::" + +#: src/read.c:2176 +#, c-format +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" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "cảnh báo: đè công thức cho đích “%sâ€" + +#: src/read.c:2189 +#, 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â€" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** trá»™n quy tắc ngầm và thưá»ng: cú pháp này đã lạc hậu" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "cảnh báo: đè thành viên nhóm cho đích “%sâ€" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "cảnh báo: thấy ký tá»± NUL; bá» qua phần còn lại cá»§a dòng" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "cảnh báo: đè công thức cho đích “%sâ€" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "Không cần làm gì cho “%sâ€." + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "“%s†đã cập nhật rồi." + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "Xén bá»›t tập tin “%sâ€.\n" + +#: src/remake.c:416 +#, c-format +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" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%sKhông có quy tắc để tạo đích “%sâ€%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "Coi tập tin đích “%sâ€.\n" + +#: src/remake.c:459 +#, c-format +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" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "Coi tập tin “%s†là đã sẵn có rồi.\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "Vẫn Ä‘ang cập nhật tập tin “%sâ€.\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "Hoàn tất cập nhật tập tin “%sâ€.\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "Tập tin “%s†không tồn tại.\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "" +"*** Cảnh báo: tập tin .LOW_RESOLUTION_TIME “%s†có nhãn thá»i gian độ phân " +"giải cao" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%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" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "Dùng công thức mặc định cho “%sâ€.\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "Bá» phụ thuá»™c vòng tròn %s <- %s." + +#: src/remake.c:737 +#, c-format +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" + +#: src/remake.c:743 +#, c-format +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" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "Chịu thua tập tin đích “%sâ€.\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "Äích “%s†không được tạo lại do lá»—i." + +#: src/remake.c:814 +#, 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" + +#: src/remake.c:819 +#, 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" + +#: src/remake.c:824 +#, 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" + +#: src/remake.c:827 +#, c-format +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" + +#: src/remake.c:845 +#, c-format +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" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "" +"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" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "Tạo “%s†do cỠ“always-makeâ€.\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "Không cần tạo lại đích “%sâ€." + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr "; dùng tên VPATH “%sâ€" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "Phải tạo lại đích “%sâ€.\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " Bá» qua tên VPATH “%sâ€.\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "Äang chạy công thức cá»§a “%sâ€.\n" + +#: src/remake.c:913 +#, c-format +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" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "Tạo lại thành công tập tin đích “%sâ€.\n" + +#: src/remake.c:919 +#, c-format +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" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "Dùng lệnh mặc định cho “%sâ€.\n" + +#: src/remake.c:1499 +#, 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" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr "Phần tá»­ .LIBPATTERNS “%s†không phải là má»™t mẫu" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "Phần tùy chỉnh không xuất được: %s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# Quy tắc ngầm" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# Không có quy tắc ngầm." + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u quy tắc ngầm, %u (%.1f%%) đầu cuối." + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "Lá»–I: num_pattern_rules không đúng! %u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "tín hiệu lạ" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "Treo" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "Ngắt" + +#: src/signame.c:98 +msgid "Quit" +msgstr "Thoát" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "Chỉ lệnh không hợp lệ" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "Bẫy vết/Ä‘iểm ngắt" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "Bị há»§y bá»" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "Bẫy IOT" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "Bẫy EMT" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "Ngoại lệ dấu chấm động" + +#: src/signame.c:121 +msgid "Killed" +msgstr "Bị buá»™c kết thúc" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "Lá»—i bus" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "Lá»—i phân Ä‘oạn" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "Lệnh gá»i hệ thống sai" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "á»ng dẫn há»ng" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "Äồng hồ báo động" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "Äã chấm dứt" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "Tín hiệu tá»± định nghÄ©a 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "Tín hiệu tá»± định nghÄ©a 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "Tiến trình con đã thoát" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "Mất Ä‘iện đột ngá»™t" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "Bị ngừng" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "Bị ngừng (đầu vào tty)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "Bị ngừng (đầu ra tty)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "Bị ngừng (tín hiệu)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "Vượt giá»›i hạn thá»i gian CPU" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "Vượt giá»›i hạn kích cỡ tập tin" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "Bá»™ đếm thá»i gian ảo đã hết hạn" + +#: src/signame.c:180 +msgid "Profiling timer expired" +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" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "Cá»­a sổ bị thay đổi" + +#: src/signame.c:189 +msgid "Continued" +msgstr "Äã tiếp tục" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "Äiá»u kiện I/O khẩn cấp" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O có thể" + +# Literal: don't translate / NghÄ©a chữ: đừng dịch +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +# Literal: don't translate / NghÄ©a chữ: đừng dịch +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "Tài nguyên bị mất" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "Tín hiệu nguy hiểm" + +#: src/signame.c:217 +msgid "Information request" +msgstr "Yêu cầu thông tin" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "Không có bá»™ đồng xá»­ lý số thá»±c dấu chấm động" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s Không có bá»™ đệm strcache\n" + +#: src/strcache.c:304 +#, 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" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "" +"%s đệm hiện tại: kcỡ = %hu B / đã dùng = %hu B / slượng = %hu / tbình = %u " +"B\n" + +#: src/strcache.c:319 +#, 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" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s trống khác: tổng = %lu B / tÄ‘a = %lu B / t.thiểu = %lu B / t.bình = %hu " +"B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s hiệu năng strcache: tra cứu = %lu / tá»· lệ trúng = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# thống kê bảng băm tập tin:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "tá»± động" + +#: src/variable.c:1789 +msgid "default" +msgstr "mặc định" + +#: src/variable.c:1792 +msgid "environment" +msgstr "môi trưá»ng" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "môi trưá»ng vá»›i -e" + +#: src/variable.c:1801 +msgid "command line" +msgstr "dòng lệnh" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "chỉ thị “overrideâ€" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (từ “%sâ€, dòng %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# thống kê bảng băm biến được đặt:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# Biến\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Giá trị biến đặc tả cho mẫu" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# Không có giá trị biến đặc tả cho mẫu." + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u giá trị biến đặc tả cho mẫu" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "cảnh báo: biến “%.*s†chưa được định nghÄ©a" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() gặp lá»—i vá»›i %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-warning, có lẽ bạn cần phải bật lại xá»­ lý CTRL-Y từ DCL.\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL: %s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "Nối thêm đầu ra vào %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "Nối thêm %.*s và dá»n dẹp\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "Thá»±c hiện %s để thay thế\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# ÄÆ°á»ng dẫn tìm kiếm VPATH\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# Không có đưá»ng dẫn tìm kiếm “vpathâ€." + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u đưá»ng dẫn tìm kiếm “vpathâ€.\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# Không có đưá»ng dẫn tìm kiếm chung (biến “VPATHâ€)." + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# ÄÆ°á»ng dẫn tìm kiếm chung (biến “VPATHâ€):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Khe jobserver bị giá»›i hạn thành %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "Ä‘ang tạo tín hiệu jobserver: (Lá»—i %ld: %s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "" +"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)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Ứng dụng khách jobserver (cá» hiệu %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "giải phóng tín hiệu jobserver: (Lá»—i %ld: %s)" + +#: src/w32/w32os.c:381 +#, 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)" + +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "không hiểu kiểu output-sync “%sâ€" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "Tên hàm không hợp lệ: %s" + +#~ 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" + +#~ msgid "Initialized access" +#~ msgstr "Truy cập đã được khởi tạo" + +#~ msgid "User access" +#~ msgstr "Truy cập ngưá»i dùng" + +#~ msgid "Make access" +#~ msgstr "Truy cập Make" + +#~ msgid "Child access" +#~ msgstr "Truy cập con" + +#~ 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." + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Ứng dụng khách jobserver (fds %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "đưá»ng ống “jobserverâ€" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s: %s: Không tìm thấy lệnh\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]: %s: Không tìm thấy lệnh\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s: Không tìm thấy chương trình hệ vá»" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s Ä‘ang ngưng trong 30 giây…" + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "đã ngá»§(30). Tiếp tục.\n" + +#~ msgid "Unknown error %d" +#~ msgstr "Lá»—i chưa biết %d" + +#~ 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." + +#~ msgid " terminal." +#~ msgstr " thiết bị cuối." + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: công thức cho đích “%s†gặp lá»—i" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] Lá»—i 0x%x%s" + +# Variable: don't translate / Biến: đừng dịch +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "dup jobserver" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "Cảnh báo: Chuyển hướng trống rá»—ng\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "lá»—i ná»™i bá»™: command_state “%sâ€" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "BUILTIN [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "BUILTIN ECHO %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "Không hiểu lệnh dá»±ng sẵn “%sâ€\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "" +#~ "Lệnh dá»±ng sẵn là chưa biết hoặc không được há»— trợ trong .ONESHELL: “%sâ€\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "Lá»—i, lệnh trống rá»—ng\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "Äã chuyển hướng đầu vào từ %s\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "Äã chuyển hướng lá»—i tá»›i %s\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "Äã chuyển hướng đầu ra tá»›i %s\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "Gặp lá»—i sản sinh tiến trình, %d\n" + +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "lá»—i ná»™i bá»™: có nhiá»u tùy chá»n --sync-mutex" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "lá»—i ná»™i bá»™: có nhiá»u tùy chá»n --jobserver-fds" + +#~ msgid "virtual memory exhausted" +#~ msgstr "hết bá»™ nhá»› ảo" + +#~ msgid "write error" +#~ msgstr "lá»—i ghi" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "BUILTIN RM %s\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" + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%sPhần má»m này tá»± do; hãy xem mã nguồn để tìm thấy Ä‘iá»u kiện sao chép.\n" +#~ "%sKhông bảo đảm gì cả, dù khả năng bán hay khả năng làm việc dứt khoát.\n" +#~ "%s\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "gặp “endef†bắt nguồn ở ngoài" + +#~ msgid "empty `override' directive" +#~ msgstr "chỉ thị “override†(đè) rá»—ng" + +#~ msgid "invalid `override' directive" +#~ msgstr "chỉ thị “override†(đè) không hợp lệ" + +#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" +#~ msgstr "* cảnh báo, CTRL-Y sẽ để má»™t số tiến trình con còn lại.\n" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "Äừng ghi rõ “-j†hay “--jobs†nếu không sẵn sàng." + +#~ msgid "Resetting make for single job mode." +#~ msgstr "Äang đặt lại trình make cho chế độ công việc đơn." diff --git a/local/recipes/dev/gnu-make/source/po/zh_CN.gmo b/local/recipes/dev/gnu-make/source/po/zh_CN.gmo new file mode 100644 index 0000000000..36a4856614 Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/zh_CN.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/zh_CN.po b/local/recipes/dev/gnu-make/source/po/zh_CN.po new file mode 100644 index 0000000000..ced185bb4d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/zh_CN.po @@ -0,0 +1,2661 @@ +# Make in zh_CN. +# Copyright (C) 2002 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# Wang Li , 2002. +# LI Daobing , 2008, 2013. +# Mingye Wang , 2015, 2016. +# Boyuan Yang <073plan@gmail.com>, 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: make 4.2.93\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2020-01-05 15:27-0500\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" +"Language-Team: Chinese (simplified) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 2.2.4\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "è¯•å›¾ä½¿ç”¨ä¸æ”¯æŒçš„功能:“%sâ€" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "VMS ç³»ç»Ÿä¸Šä¸æ”¯æŒ touch å½’æ¡£æˆå‘˜" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch:归档文件“%sâ€ä¸å­˜åœ¨" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch:“%sâ€ä¸æ˜¯åˆæ³•的归档文件" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch:在“%2$sâ€ä¸­ä¸å­˜åœ¨æˆå‘˜â€œ%1$sâ€" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch:“%sâ€ä¸Šçš„ ar_member_touch 的返回ç ä¸å½“" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_modules() èŽ·å–æ¨¡å—ä¿¡æ¯å¤±è´¥ï¼Œè¿”å›žçŠ¶æ€ = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() å¤±è´¥ï¼Œè¿”å›žçŠ¶æ€ = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "无法打开库“%sâ€ä»¥å¯»æ‰¾æˆå‘˜ï¼ŒçŠ¶æ€ %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "æˆå‘˜â€œ%sâ€%s: %ld 字节于 %ld (%ld)。\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (åç§°å¯èƒ½è¢«æˆªæ–­)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " 日期 %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d,gid = %d,mode = 0%o。\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "命令酿–¹è¡Œæ•°å¤ªå¤š (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** 中断。\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] å½’æ¡£æˆå‘˜â€œ%sâ€å¯èƒ½æ˜¯å‡çš„;未删除" + +# 是化学的æˆåˆ†ï¼Œæ˜¯ç‰¹æŠ€ï¼ +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** å½’æ¡£æˆå‘˜â€œ%sâ€å¯èƒ½æ˜¯å‡çš„;未删除" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] 正在删除文件“%sâ€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** 正在删除文件“%sâ€" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# è¦æ‰§è¡Œçš„é…æ–¹" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (内置):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (从“%sâ€ï¼Œè¡Œ %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# 目录\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s:无法对其进行 stat æ“作。\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (关键字 %s,修改时间 %I64u):无法打开。\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):无法打开。\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (设备 %ld,i-节点 %ld):无法打开。\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (关键字 %s,修改时间 %I64u):" + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):" + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (设备 %ld,i-节点 %ld):" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "æ— " + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " 文件, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "æ— " + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " ä¸å¯èƒ½" + +#: src/dir.c:1180 +msgid " so far." +msgstr " 迄今为止。" + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " ä¸å¯èƒ½åœ¨ %lu 目录中。\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "递归å˜é‡â€œ%sâ€ï¼ˆæœ€ç»ˆå°†ä¼šï¼‰å¼•用自身" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "未终止的å˜é‡å¼•用" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "关于文件“%sâ€çš„命令酿–¹åœ¨ %s:%lu 处指定," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "关于文件“%sâ€çš„命令酿–¹é€šè¿‡éšå«è§„则æœç´¢è€Œæ‰¾åˆ°ï¼Œ" + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "但“%sâ€çŽ°åœ¨è¢«çœ‹åšâ€œ%sâ€çš„åŒä¸€ä¸ªæ–‡ä»¶ã€‚" + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "“%sâ€çš„命令酿–¹è¢«å¿½ç•¥ï¼Œè½¬è€Œä½¿ç”¨â€œ%sâ€çš„。" + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "无法将å•冒å·â€œ%sâ€é‡å‘½å为åŒå†’å·â€œ%sâ€" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "无法将åŒå†’å·â€œ%sâ€é‡å‘½å为å•冒å·â€œ%sâ€" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** 正在删除中间文件“%sâ€" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "正在删除中间文件...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr "" + +#: src/file.c:942 +msgid "Current time" +msgstr "当剿—¶é—´" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%sï¼šæ—¶é—´æ ‡è®°è¶…å‡ºèŒƒå›´ï¼›æ­£åœ¨æ›¿æ¢ %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# 䏿˜¯ä¸€ä¸ªç›®æ ‡ï¼š" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# é‡è¦æ–‡ä»¶ (.PRECIOUSçš„å‰æ)。" + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# å‡ç›®æ ‡ (.PHONYçš„å‰æ)。" + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# 命令行目标。" + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# 缺çœçš„ã€MAKEFILES 指定的ã€-include/sinclude 包å«çš„ makefile。" + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# 内建规则" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# 对éšå«è§„则的æœç´¢å·²å®Œæˆã€‚" + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# 对éšå«è§„则的æœç´¢å°šæœªå®Œæˆã€‚" + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# éšå«/陿€æ¨¡å¼ä¸»å¹²ï¼šâ€œ%sâ€\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# æ–‡ä»¶æ˜¯ä¸€ä¸ªä¸­é—´å‰æã€‚" + +#: src/file.c:1111 +#, fuzzy +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# é‡è¦æ–‡ä»¶ (.PRECIOUSçš„å‰æ)。" + +#: src/file.c:1113 +#, fuzzy +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# å‡ç›®æ ‡ (.PHONYçš„å‰æ)。" + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# 还è¦åˆ¶ä½œï¼š" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# ä»Žä¸æ£€æŸ¥ä¿®æ”¹æ—¶é—´ã€‚" + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# 文件ä¸å­˜åœ¨ã€‚" + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# 文件éžå¸¸é™ˆæ—§ã€‚" + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# 最近更新 %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# 文件已ç»è¢«æ›´æ–°ã€‚" + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# 文件尚未被更新。" + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# 正在è¿è¡Œçš„é…æ–¹ (这是 BUG)。" + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# 正在è¿è¡Œçš„ä¾èµ–æ€§é…æ–¹ (这是 BUG)。" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# æ›´æ–°æˆåŠŸã€‚" + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# éœ€è¦æ›´æ–° (用 -q 设定)。" + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# 更新失败。" + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# “command_stateâ€æˆå‘˜ä¸­å­˜åœ¨æ— æ•ˆçš„值ï¼" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# 文件" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# 文件æ‚凑表状æ€:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s:字段“%sâ€æœªè¢«ç¼“存:%s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "" + +#: src/function.c:800 +#, fuzzy +msgid "invalid first argument to 'word' function" +msgstr "“wordâ€å‡½æ•°çš„ç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "“wordâ€å‡½æ•°çš„ç¬¬ä¸€ä¸ªå‚æ•°å¿…须大于 0" + +#: src/function.c:821 +#, fuzzy +msgid "invalid first argument to 'wordlist' function" +msgstr "“wordlistâ€å‡½æ•°çš„ç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" + +#: src/function.c:822 +#, fuzzy +msgid "invalid second argument to 'wordlist' function" +msgstr "“wordlistâ€å‡½æ•°çš„ç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" + +#: src/function.c:1328 +#, fuzzy +msgid "non-numeric first argument to 'intcmp' function" +msgstr "“wordlistâ€å‡½æ•°çš„ç¬¬ä¸€ä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" + +#: src/function.c:1329 +#, fuzzy +msgid "non-numeric second argument to 'intcmp' function" +msgstr "“wordlistâ€å‡½æ•°çš„ç¬¬äºŒä¸ªå‚æ•°ä¸æ˜¯æ•°å­—" + +# 程åºå‘˜çš„函数åæç¤ºï¼Œè¿˜æ˜¯ä¸è¦åЍå§ã€‚ +#: src/function.c:1684 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) 失败 (e=%ld)\n" + +#: src/function.c:1708 +#, fuzzy, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) 失败 (e=%ld)\n" + +#: src/function.c:1715 +#, fuzzy, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() 失败 (e=%ld)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() 失败\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "æ­£åœ¨æ¸…é™¤ä¸´æ—¶æ‰¹å¤„ç†æ–‡ä»¶ %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file:缺少文件å" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close:%s:%s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "fileï¼šå¤ªå¤šå‚æ•°" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read:%s:%s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file:无效文件(file)æ“作:%s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "函数“%2$sâ€çš„傿•°æ•°é‡ (%1$d) ä¸å¤Ÿ" + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "在本平å°ä¸Šæœªå®žçŽ°ï¼šå‡½æ•°â€œ%sâ€" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "对函数“%sâ€çš„æœªç»ˆæ­¢çš„è°ƒç”¨ï¼šé—æ¼â€œ%câ€" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "空函数å" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "无效的函数å称:%s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "函数å称太长:%s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "函数“%2$sâ€çš„æœ€å°‘傿•°æ•°é‡ (%1$u) 无效" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "函数“%2$sâ€çš„æœ€å¤šå‚æ•°æ•°é‡ (%1$u) 无效" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s:选项“%sâ€å«ä¹‰ä¸æ¸…\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s:选项“--%sâ€ä¸å…è®¸å‚æ•°\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s:选项“%c%sâ€ä¸å…è®¸å‚æ•°\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s:选项“%sâ€éœ€è¦ä¸€ä¸ªå‚æ•°\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s:无法识别的选项“--%sâ€\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s:无法识别的选项“%c%sâ€\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%sï¼šéžæ³•选项 -- %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%sï¼šéžæ³•选项 -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s:选项需è¦ä¸€ä¸ªå‚æ•° -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s:选项“-W %sâ€å«ä¹‰ä¸æ¸…\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s:选项“-W %sâ€ä¸å…è®¸ç»™å‡ºå‚æ•°\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: 正拓展 '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: 正求值 '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "无法为æ‚å‡‘è¡¨åˆ†é… %lu 字节: 内存耗尽" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "è´Ÿè½½=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "釿–°æ‚凑=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "碰撞=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "正在为“%sâ€å¯»æ‰¾éšå«è§„则。\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "正在为“%sâ€å¯»æ‰¾å½’æ¡£æˆå‘˜éšå«è§„则。\n" + +#: src/implicit.c:61 +#, fuzzy, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "正在为“%sâ€å¯»æ‰¾å½’æ¡£æˆå‘˜éšå«è§„则。\n" + +#: src/implicit.c:326 +#, fuzzy, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "é¿å…éšå«è§„则递归。\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "" + +#: src/implicit.c:501 +#, fuzzy, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "用主干“%.*sâ€å°è¯•åŒ¹é…æ¨¡å¼è§„则。\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "主干太长:'%s%.*s'.\n" + +#: src/implicit.c:768 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "æ‹’ç»ä¸å¯èƒ½çš„è§„åˆ™å‰æâ€œ%sâ€ã€‚\n" + +#: src/implicit.c:770 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "æ‹’ç»ä¸å¯èƒ½çš„éšå«å‰æâ€œ%sâ€ã€‚\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "å°è¯•è§„åˆ™å‰æâ€œ%sâ€ã€‚\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "å°è¯•éšå«å‰æâ€œ%sâ€ã€‚\n" + +#: src/implicit.c:827 +#, fuzzy, c-format +msgid "'%s' ought to exist.\n" +msgstr "文件“%sâ€ä¸å­˜åœ¨ã€‚\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "" + +#: src/implicit.c:842 +#, fuzzy, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "%s:更新“%sâ€ï¼Œå› ä¸ºï¼š%s" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "目标“%2$sâ€çš„å‰æâ€œ%1$sâ€ä¸å­˜åœ¨ã€‚\n" + +#: src/implicit.c:870 +#, fuzzy, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "å‰æâ€œ%sâ€åœ¨ VPATH“%sâ€ä¸­å‘现\n" + +#: src/implicit.c:885 +#, fuzzy, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "正在寻找包å«ä¸­é—´æ–‡ä»¶â€œ%sâ€çš„规则。\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "正在寻找包å«ä¸­é—´æ–‡ä»¶â€œ%sâ€çš„规则。\n" + +#: src/implicit.c:927 +#, fuzzy, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "æ‹’ç»ä¸å¯èƒ½çš„è§„åˆ™å‰æâ€œ%sâ€ã€‚\n" + +#: src/implicit.c:931 +#, fuzzy, c-format +msgid "Not found '%s'.\n" +msgstr "找ä¸åˆ°å…³äºŽâ€œ%sâ€çš„éšå«è§„则。\n" + +#: src/implicit.c:1144 +#, fuzzy, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "找到一æ¡å…³äºŽâ€œ%sâ€çš„éšå«è§„则。\n" + +#: src/implicit.c:1151 +#, fuzzy, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "正在为“%sâ€å¯»æ‰¾éšå«è§„则。\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "找ä¸åˆ°å…³äºŽâ€œ%sâ€çš„éšå«è§„则。\n" + +#: src/job.c:380 +#, fuzzy +msgid "Cannot create a temporary file" +msgstr "无法创建临时文件\n" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (核心已转储)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (已忽略)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<内置>" + +#: src/job.c:587 +#, fuzzy, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s:%s] 错误 %d%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** 正在等待未完æˆçš„任务...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "活跃å­è¿›ç¨‹ %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (远程)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "正在中止获胜的å­è¿›ç¨‹ %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "正在中止失败的å­è¿›ç¨‹ %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "正在清除临时批文件 %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "清ç†ä¸´æ—¶æ‰¹å¤„ç†æ–‡ä»¶ %s 失败 (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "从链中删除å­è¿›ç¨‹ %p PID %s%s。\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "为å­è¿›ç¨‹ %p (%s) 释放令牌 (token)。\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() å¯åŠ¨è¿›ç¨‹å¤±è´¥ (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"失败执行中共有 %d ä¸ªå‚æ•°ã€‚\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "å°†å­è¿›ç¨‹ %p (%s) PID %s%s 放入链。\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "获得至进程 %p (%s) 的标记。\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s:更新“%sâ€ï¼Œå› ä¸ºï¼š%s" + +#: src/job.c:1910 +#, fuzzy +msgid "target does not exist" +msgstr "%s: 目标文件“%sâ€ä¸å­˜åœ¨" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "无法在本æ“作系统中实施负载é™åˆ¶" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "无法实施负载é™åˆ¶ï¼š" + +#: src/job.c:2195 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "æ²¡æœ‰å‰©ä½™çš„æ–‡ä»¶å¥æŸ„: 无法å¤åˆ¶æ ‡å‡†è¾“å…¥\n" + +#: src/job.c:2207 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "æ²¡æœ‰å‰©ä½™çš„æ–‡ä»¶å¥æŸ„: 无法å¤åˆ¶æ ‡å‡†è¾“出\n" + +#: src/job.c:2221 +#, fuzzy, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "æ²¡æœ‰å‰©ä½™çš„æ–‡ä»¶å¥æŸ„: 无法å¤åˆ¶æ ‡å‡†é”™è¯¯\n" + +#: src/job.c:2236 +#, fuzzy, c-format +msgid "Could not restore stdin" +msgstr "无法还原标准输入\n" + +#: src/job.c:2244 +#, fuzzy, c-format +msgid "Could not restore stdout" +msgstr "无法还原标准输出\n" + +#: src/job.c:2252 +#, fuzzy, c-format +msgid "Could not restore stderr" +msgstr "无法还原标准错误\n" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "make 已中止的å­è¿›ç¨‹ pid %s,ä»åœ¨ç­‰å¾… pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: 环境å˜é‡ç©ºé—´å¯èƒ½ä¼šè€—å°½" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL å·²æ”¹å˜ (原为“%sâ€ï¼ŒçŽ°ä¸ºâ€œ%sâ€)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "正在创建临时批文件 %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"æ‰¹å¤„ç†æ–‡ä»¶å†…容:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"æ‰¹å¤„ç†æ–‡ä»¶å†…容:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (行 %d) 错误的 shell 上下文 (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "打开全局符å·è¡¨å¤±è´¥ï¼š%s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "已加载的对象 %s 未声明为 GPL 兼容" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "从 %2$s åŠ è½½ç¬¦å· %1$s 失败:%3$s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "è¦åŠ è½½çš„ç¬¦å·å为空:%s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "正从 %2$s åŠ è½½ç¬¦å· %1$s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "" + +#: src/load.c:251 +#, fuzzy, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "本平å°ä¸æ”¯æŒâ€œloadâ€æ“作。" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "选项:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m 为兼容性而忽略。\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make æ— æ¡ä»¶åˆ¶ä½œ (make) 所有目标。\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr " -C 目录, --directory=目录 在执行å‰å…ˆåˆ‡æ¢åˆ° <目录>。\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d 打å°å¤§é‡è°ƒè¯•ä¿¡æ¯ã€‚\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr " --debug[=æ——æ ‡] 打å°å„ç§è°ƒè¯•ä¿¡æ¯ã€‚\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" 环境å˜é‡è¦†ç›– makefile 中的å˜é‡ã€‚\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E 字串, --eval=字串 å°† <字串> 作为 makefile 语å¥ä¼°å€¼ã€‚\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f 文件, --file=文件, --makefile=文件\n" +" 从 <文件> 中读入 makefile。\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help 打å°è¯¥æ¶ˆæ¯å¹¶é€€å‡ºã€‚\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors 忽略æ¥è‡ªå‘½ä»¤é…方的错误。\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr " -I 目录, --include-dir=目录 在 <目录> 中æœç´¢è¢«åŒ…å«çš„ makefile。\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] åŒæ—¶å…许 N ä¸ªä»»åŠ¡ï¼›æ— å‚æ•°è¡¨æ˜Žå…许无é™ä¸ªä»»åŠ¡ã€‚\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr "" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr " -k, --keep-going 当æŸäº›ç›®æ ‡æ— æ³•制作时ä»ç„¶ç»§ç»­ã€‚\n" + +#: src/main.c:350 +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" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times 使用软链接åŠè½¯é“¾æŽ¥ç›®æ ‡ä¸­ä¿®æ”¹æ—¶é—´è¾ƒæ™šçš„一个。\n" + +#: src/main.c:355 +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" + +#: src/main.c:358 +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" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[类型], --output-sync[=类型]\n" +" 使用 <类型> æ–¹å¼åŒæ­¥å¹¶è¡Œä»»åŠ¡è¾“å‡ºã€‚\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base æ‰“å° make 的内部数æ®åº“。\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question ä¸è¿è¡Œä»»ä½•é…æ–¹ï¼›é€€å‡ºçжæ€è¯´æ˜Žæ˜¯å¦å·²å…¨éƒ¨æ›´æ–°ã€‚\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules ç¦ç”¨å†…ç½®éšå«è§„则。\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables ç¦ç”¨å†…ç½®å˜é‡è®¾ç½®ã€‚\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet ä¸è¾“å‡ºé…æ–¹å‘½ä»¤ã€‚\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr " --no-silent 坹酿–¹è¿›è¡Œå›žæ˜¾ï¼ˆç¦ç”¨ --silent 模å¼ï¼‰ã€‚\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" 关闭 -k。\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch touch ç›®æ ‡ï¼ˆæ›´æ–°ä¿®æ”¹æ—¶é—´ï¼‰è€Œä¸æ˜¯é‡æ–°åˆ¶ä½œå®ƒ" +"们。\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace 打å°è·Ÿè¸ªä¿¡æ¯ã€‚\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version æ‰“å° make 的版本å·å¹¶é€€å‡ºã€‚\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory 打å°å½“å‰ç›®å½•。\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr " --no-print-directory 关闭 -w,å³ä½¿ -w 默认开å¯ã€‚\n" + +#: src/main.c:392 +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" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr " --warn-undefined-variables 当引用未定义å˜é‡çš„æ—¶å€™å‘出警告。\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "写错误: 标准输出" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "空字符串是无效的文件å" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "未知的调试级别定义“%sâ€" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "䏿˜Žè¾“å‡ºåŒæ­¥ç±»åž‹â€œ%sâ€" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "用法:%s [选项] [目标] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"该程åºä¸º %s 编译\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"该程åºä¸º %s (%s) 编译\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "报告错误到 \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s:æ•获中断/异常 (ä»£ç  = 0x%lx, åœ°å€ = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"ä»Žç¨‹åº %s 产生的未处ç†çš„异常过滤器\n" +"å¼‚å¸¸ç  = %lx\n" +"异常标志 = %lx\n" +"å¼‚å¸¸åœ°å€ = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "访问冲çªï¼šåœ°å€ 0x%p 处的写æ“作\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "访问冲çªï¼šåœ°å€ 0x%p 处的读æ“作\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() 设置 default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "find_and_set_shell() 路径æœç´¢ç»“果设置 default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "删除 (临时文件):" + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "警告: jobserver ä¸å¯ç”¨: 正使用 -j1。添加 “+†到父 make 的规则。" + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "警告: å­ make 中强制 -j%d: é‡ç½® jobserver 模å¼ã€‚" + +#: src/main.c:1930 +#, fuzzy, c-format +msgid "Makefile from standard input specified twice" +msgstr "两次指明æ¥è‡ªæ ‡å‡†è¾“入的 makefile。" + +#: src/main.c:1940 +#, fuzzy, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite (临时文件)" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "警告: å­ make 中强制 -j%d: é‡ç½® jobserver 模å¼ã€‚" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "本平å°ä¸æ”¯æŒå¹¶è¡Œä»»åŠ¡ (-j)。" + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "é‡ç½®ä¸ºå•ä»»åŠ¡æ¨¡å¼ (-j1)。" + +#: src/main.c:2248 +#, c-format +msgid "Using jobserver controller %s\n" +msgstr "" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "䏿˜Žè¾“å‡ºåŒæ­¥ç±»åž‹â€œ%sâ€" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "䏿”¯æŒè½¯é“¾æŽ¥ï¼šç¦ç”¨ -L。" + +#: src/main.c:2327 +#, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "正在更新 makefile....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile “%sâ€å¯èƒ½å¾ªçŽ¯ï¼›ä¸ä¼šé‡æ–°æ‰§è¡Œå®ƒã€‚\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: 加载失败" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "釿–°æ‰§è¡Œ makefile“%sâ€å¤±è´¥ã€‚" + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "找ä¸åˆ°è¢«å¼•入的 makefile“%sâ€ã€‚" + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "找ä¸åˆ° makefile “%sâ€" + +#: src/main.c:2700 +#, fuzzy, c-format +msgid "Couldn't change back to original directory" +msgstr "无法回到原始目录。" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "釿–°æ‰§è¡Œ[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL 包å«å¤šä½™ä¸€ä¸ªç›®æ ‡" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "无目标" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "没有指明目标并且找ä¸åˆ° makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "更新目标....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "警告:检测到时钟错误。您的构建版本å¯èƒ½æ˜¯ä¸å®Œæ•´çš„。" + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "“%s%sâ€é€‰é¡¹éœ€è¦éžç©ºå­—ç¬¦ä¸²å‚æ•°" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "“-%câ€é€‰é¡¹éœ€è¦æ­£æ•´æ•°å‚æ•°" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%s为 %s 编译\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%s为 %s (%s) 编译\n" + +#: src/main.c:3665 +#, fuzzy, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \n" +"%sThis is free software: you are free to change and redistribute it.\n" +"%sThere is NO WARRANTY, to the extent permitted by law.\n" +msgstr "" +"%s许å¯è¯ï¼šGPLv3+:GNU 通用公共许å¯è¯ç¬¬ 3 版或更新版本。\n" +"%s本软件是自由软件:您å¯ä»¥è‡ªç”±ä¿®æ”¹å’Œé‡æ–°å‘布它。\n" +"%s在法律å…许的范围内没有其他ä¿è¯ã€‚\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# make æ•°æ®åŸºç¡€ï¼Œæ‰“å°åœ¨ %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# 在 %s ä¸Šå®Œæˆ make æ•°æ®åŸºç¡€\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "使用“%sâ€çš„é»˜è®¤é…æ–¹ã€‚\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "正在创建临时批文件 %s\n" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "删除 (临时文件):" + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen (临时文件)" + +#: src/misc.c:747 +#, fuzzy, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen (临时文件)" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: 进入一个未知的目录\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: 离开一个未知的目录\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: 进入目录“%sâ€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: 离开目录“%sâ€\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: 进入一个未知的目录\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: 离开一个未知的目录\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: 进入目录“%sâ€\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: 离开目录“%sâ€\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr "。 åœæ­¢ã€‚\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, fuzzy, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "䏿˜Žè¾“å‡ºåŒæ­¥ç±»åž‹â€œ%sâ€" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "正在创建任务管é“" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "正在å¤åˆ¶ä»»åŠ¡ç®¡é“" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "åˆå§‹åŒ–任务æœåŠ¡å™¨ç®¡é“" + +#: src/posixos.c:261 +#, fuzzy, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "å†…éƒ¨é”™è¯¯ï¼šéžæ³• --jobserver-auth 验è¯å­—符串“%sâ€" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "写入任务æœåС噍" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "任务æœåС噍关闭" + +# , fuzzy +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect 任务管é“" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "读å–任务管é“" + +#: src/posixos.c:672 +#, fuzzy, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "å†…éƒ¨é”™è¯¯ï¼šéžæ³• --jobserver-auth 验è¯å­—符串“%sâ€" + +#: src/posixos.c:681 +#, fuzzy, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "䏿˜Žè¾“å‡ºåŒæ­¥ç±»åž‹â€œ%sâ€" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "正在读入 makefiles...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "正在读入 makefile “%sâ€" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (没有缺çœç›®æ ‡)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (æœç´¢è·¯å¾„)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ä¸ç”¨ç†)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (没有 ~ 扩展)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "跳过 Makefile“%sâ€ä¸­çš„ UTF-8 BOM\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "跳过 Makefile 缓冲区中的 UTF-8 BOM\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "æ¡ä»¶ä¸­å«æœ‰æ— æ•ˆè¯­æ³•" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "é…æ–¹åœ¨ç¬¬ä¸€ä¸ªç›®æ ‡å‰å¼€å§‹" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "é…æ–¹ä¹‹å‰é—æ¼äº†è§„则" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "分隔符缺失 (你大概想用 TABï¼Œè€Œä¸æ˜¯å…«ä¸ªç©ºæ ¼)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "缺失分隔符" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "无目标匹é…" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "多个目标匹é…" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "目标模å¼ä¸å«æœ‰â€œ%%â€" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "é—æ¼â€œendifâ€" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "空å˜é‡å" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "“endefâ€æŒ‡ä»¤åŽå«æœ‰ä¸è¯¥å‡ºçŽ°çš„æ–‡å­—" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "é—æ¼â€œendefâ€ï¼Œæœªç»ˆæ­¢çš„“defineâ€" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "“endefâ€æŒ‡ä»¤åŽå«æœ‰ä¸è¯¥å‡ºçŽ°çš„æ–‡å­—" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "在“%sâ€æŒ‡ä»¤ä¹‹åŽå«æœ‰ä¸è¯¥å‡ºçŽ°çš„æ–‡å­—" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "ä¸è¯¥å‡ºçŽ°çš„â€œ%sâ€" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "æ¯ä¸ªæ¡ä»¶åªèƒ½æœ‰ä¸€ä¸ªâ€œelseâ€" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "畸形的针对目标的标é‡å®šä¹‰" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr "" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr "" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "ä¾èµ–æ— æ³•åœ¨é…æ–¹è„šæœ¬ä¸­å®šä¹‰" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "æˆç»„的目标必须æä¾›ä¸€ä¸ªé…æ–¹" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "混和的éšå«å’Œé™æ€æ¨¡å¼è§„则" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "混和的éšå«å’Œæ™®é€šè§„则" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "目标“%sâ€ä¸åŒ¹é…目标模å¼" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "目标文件“%sâ€å«æœ‰ : å’Œ :: ä¸¤ç§æ¡ç›®" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "目标“%sâ€åœ¨åŒä¸€ä¸ªè§„则中给出了多次" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "警告:覆盖关于目标“%sâ€çš„é…æ–¹" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "警告:忽略关于目标“%sâ€çš„æ—§é…æ–¹" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** éšå«å’Œæ™®é€šè§„则混åˆï¼šå·²å¼ƒç”¨çš„语法" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "警告:覆盖关于目标“%sâ€çš„组æˆå‘˜" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "警告:é‡åˆ°äº† NUL 字符;忽略行的剩余部分" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "警告:覆盖关于目标“%sâ€çš„é…æ–¹" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "对“%sâ€æ— éœ€åšä»»ä½•事。" + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "“%sâ€å·²æ˜¯æœ€æ–°ã€‚" + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "正删除文件“%sâ€ã€‚\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%s没有规则å¯åˆ¶ä½œç›®æ ‡â€œ%sâ€ï¼Œç”±â€œ%sâ€%s 需求" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%s没有规则å¯åˆ¶ä½œç›®æ ‡â€œ%sâ€%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "正在考虑目标文件“%sâ€ã€‚\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "最近已å°è¯•过更新文件“%sâ€å¹¶å¤±è´¥ã€‚\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "已考虑过文件“%sâ€ã€‚\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "ä»ç„¶åœ¨æ›´æ–°æ–‡ä»¶â€œ%sâ€ã€‚\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "更新文件“%sâ€å®Œæˆã€‚\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "文件“%sâ€ä¸å­˜åœ¨ã€‚\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "*** 警告: .LOW_RESOLUTION_TIME 文件 `%s' 有一个高精度的的时间标志" + +#: src/remake.c:538 +#, fuzzy, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "目标“%2$sâ€çš„å‰æâ€œ%1$sâ€ä¸å­˜åœ¨ã€‚\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "使用“%sâ€çš„é»˜è®¤é…æ–¹ã€‚\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "放弃循环ä¾èµ– %s <- %s 。" + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "目标文件“%sâ€çš„å‰æå·²å®Œæˆã€‚\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "正在制作“%sâ€çš„å‰æã€‚\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "放弃目标文件“%sâ€ã€‚\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "由于错误目标“%sâ€å¹¶æœªé‡æ–°åˆ¶ä½œã€‚" + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "å‰æâ€œ%sâ€å¯¹ç›®æ ‡â€œ%sâ€æ¥è¯´ä»…ç”¨äºŽæŒ‡å®šæ‰§è¡Œé¡ºåº (order-only) 。\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "目标“%2$sâ€çš„å‰æâ€œ%1$sâ€ä¸å­˜åœ¨ã€‚\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "å‰æâ€œ%sâ€æ¯”目标“%sâ€æ–°ã€‚\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "å‰æâ€œ%sâ€æ¯”目标“%sâ€æ—§ã€‚\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "目标“%sâ€æ˜¯åŒå†’å·ç›®æ ‡å¹¶ä¸”æ²¡æœ‰å‰æã€‚\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "没有关于“%sâ€çš„é…æ–¹ï¼Œå¹¶ä¸”没有实际改å˜çš„å‰æã€‚\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "由于 always-make 标志所以制作“%sâ€ã€‚\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "ä¸éœ€è¦é‡æ–°åˆ¶ä½œç›®æ ‡â€œ%sâ€" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr ";使用 VPATH å称“%sâ€" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "å¿…é¡»é‡æ–°åˆ¶ä½œç›®æ ‡â€œ%sâ€ã€‚\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " 忽略 VPATH å称“%sâ€ã€‚\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "“%sâ€çš„命令酿–¹æ­£åœ¨è¢«æ‰§è¡Œã€‚\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "釿–°åˆ¶ä½œç›®æ ‡æ–‡ä»¶â€œ%sâ€å¤±è´¥ã€‚\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "釿–°åˆ¶ä½œç›®æ ‡æ–‡ä»¶â€œ%sâ€æˆåŠŸã€‚\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "目标文件“%sâ€éœ€è¦ä»¥ -q 选项釿–°åˆ¶ä½œã€‚\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "使用关于“%sâ€çš„默认命令。\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "警告:文件“%sâ€çš„ä¿®æ”¹æ—¶é—´åœ¨æœªæ¥ %s ç§’åŽ" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS 的元素“%sâ€ä¸æ˜¯ä¸€ä¸ªæ¨¡å¼" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "用户ä¸å¸Œæœ›å¯¼å‡ºï¼š%s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# éšå«è§„则" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# 没有éšå«è§„则。" + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u æ¡éšå«è§„则,%u (%.1f%%) 为末端。" + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "BUG:num_pattern_rules 出错ï¼%u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "未知的信å·" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "挂起" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "中断" + +#: src/signame.c:98 +msgid "Quit" +msgstr "退出" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "éžæ³•指令" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "跟踪/断点陷阱" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "已中止" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT 陷阱" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT 陷阱" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "浮点数异常" + +#: src/signame.c:121 +msgid "Killed" +msgstr "å·²æ€æ­»" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "总线错误" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "段错误" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "错误的系统调用" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "断开的管é“" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "闹钟" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "已终止" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "ç”¨æˆ·å®šä¹‰ä¿¡å· 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "ç”¨æˆ·å®šä¹‰ä¿¡å· 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "å­è¿›ç¨‹å·²é€€å‡º" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "电æºå¤±æ•ˆ" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "å·²åœæ­¢" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "å·²åœæ­¢ (tty 输入)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "å·²åœæ­¢ (tty 输出)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "å·²åœæ­¢ (ä¿¡å·)" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "CPU 时间超出é™åˆ¶" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "文件大å°è¶…出é™åˆ¶" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "虚拟时钟超时" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "测试时钟超市" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "窗å£å·²æ”¹å˜" + +#: src/signame.c:189 +msgid "Continued" +msgstr "ç»§ç»­" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "紧急 I/O æ¡ä»¶" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "I/O å¯è¡Œ" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "资æºä¸¢å¤±" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "å±é™©ä¿¡å·" + +#: src/signame.c:217 +msgid "Information request" +msgstr "ä¿¡æ¯è¯·æ±‚" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "浮点数å处ç†å™¨ä¸å¯ç”¨" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s 没有 strcache 缓冲区\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s strcache 缓冲: %lu (%lu) / 字串 = %lu / 空间 = %lu B / å¹³å‡ = %lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "%s ç›®å‰ç¼“冲: 尺寸 = %hu B / 已用 = %hu B / æ•°é‡ = %hu / å¹³å‡ = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s 其他已用: 总共 = %lu B / æ•°é‡ = %lu / å¹³å‡ = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s 其他空余: 总共 = %lu B / 最大 = %lu B / æœ€å° = %lu B / å¹³å‡ = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache 性能:查找 = %lu / 命中率 = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# æ‚凑表统计数æ®:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "自动" + +#: src/variable.c:1789 +msgid "default" +msgstr "默认" + +#: src/variable.c:1792 +msgid "environment" +msgstr "环境" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "-e 指定的环境å˜é‡" + +#: src/variable.c:1801 +msgid "command line" +msgstr "命令行" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "“overrideâ€æŒ‡ä»¤" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (从“%sâ€ï¼Œè¡Œ %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# å˜é‡çš„æ‚å‡‘è¡¨çŠ¶æ€:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# å˜é‡\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Pattern-specific å˜é‡å€¼" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# 没有 pattern-specific å˜é‡çš„值。" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u 个 pattern-specific å˜é‡çš„值" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "警告:未定义的å˜é‡â€œ%.*sâ€" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() 失败并返回 %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-警告, ä½ å¯èƒ½å¿…须从 DCL 釿–°å¯ç”¨ CTRL-Y 处ç†ã€‚\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL:%s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "将输出追加到 %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "追加 %.*s 并清ç†\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "执行 %s 作为替代\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH æœç´¢è·¯å¾„\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# 没有“vpathâ€æœç´¢è·¯å¾„。" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u “vpathâ€æœç´¢è·¯å¾„。\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# 没有通用æœç´¢è·¯å¾„(“VPATHâ€å˜é‡)。" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# 通用æœç´¢è·¯å¾„(“VPATHâ€å˜é‡):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Jobserver æ§½ä½æ•°é™åˆ¶ä¸º %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "正创建 jobserver ä¿¡å·é‡ï¼šï¼ˆé”™è¯¯ %ld:%s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "内部错误:无法打开 jobserver ä¿¡å·é‡â€œ%sâ€ï¼šï¼ˆé”™è¯¯ %ld:%s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobserver 客户端(信å·é‡ %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "释放 jobserver ä¿¡å·é‡ï¼šï¼ˆé”™è¯¯ %ld:%s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "ä¿¡å·é‡æˆ–å­è¿›ç¨‹ç­‰å¾…:(错误 %ld:%s)" + +#: src/w32/w32os.c:449 +#, fuzzy, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "䏿˜Žè¾“å‡ºåŒæ­¥ç±»åž‹â€œ%sâ€" + +#: src/w32/w32os.c:452 +#, fuzzy, c-format +msgid "invalid output sync mutex: %s" +msgstr "无效的函数å称:%s" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: 用户 %lu (真实用户 %lu), 组 %lu (真实组 %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "åˆå§‹åŒ–æˆåŠŸ" + +#~ msgid "User access" +#~ msgstr "用户æƒé™" + +#~ msgid "Make access" +#~ msgstr "Make æƒé™" + +#~ msgid "Child access" +#~ msgstr "å­è¿›ç¨‹ æƒé™" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "-O[类型] (--output-sync[=类型]) 并未é…置入此 make 构建。" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Jobserver 客户端(文件æè¿°ç¬¦ %d,%d)\n" + +#~ msgid "jobserver pipeline" +#~ msgstr "任务æœåŠ¡å™¨ç®¡é“" + +#~ msgid "%s: %s: Command not found\n" +#~ msgstr "%s:%s:命令未找到\n" + +#~ msgid "%s[%u]: %s: Command not found\n" +#~ msgstr "%s[%u]:%s:命令未找到\n" + +#~ msgid "%s: Shell program not found" +#~ msgstr "%s:未找到 shell 程åº" + +#~ msgid "%s is suspending for 30 seconds..." +#~ msgstr "%s 正在挂起 30 ç§’..." + +#~ msgid "done sleep(30). Continuing.\n" +#~ msgstr "ç¡çœ å®Œæˆ(30)。继续。\n" + +#~ msgid "Unknown error %d" +#~ msgstr "未知错误 %d" + +#~ msgid "Warning: File '%s' has modification time in the future" +#~ msgstr "警告:文件“%sâ€çš„修改时间在未æ¥" + +#~ msgid " terminal." +#~ msgstr " 终端。" + +#~ msgid "%s: recipe for target '%s' failed" +#~ msgstr "%s: '%s' çš„å‘½ä»¤é…æ–¹å¤±è´¥" + +#~ msgid "%s[%s] Error 0x%x%s" +#~ msgstr "%s[%s] 错误 0x%x%s" + +#~ msgid "%s[%s] %s%s%s" +#~ msgstr "%s[%s] %s%s%s" + +#~ msgid "dup jobserver" +#~ msgstr "å¤åˆ¶ä»»åŠ¡æœåС噍" + +#~ msgid "Warning: Empty redirection\n" +#~ msgstr "警告:空的é‡å®šå‘\n" + +#~ msgid "internal error: '%s' command_state" +#~ msgstr "内部错误:“%sâ€command_state" + +#~ msgid "BUILTIN [%s][%s]\n" +#~ msgstr "BUILTIN [%s][%s]\n" + +#~ msgid "BUILTIN ECHO %s->%s\n" +#~ msgstr "BUILTIN ECHO %s->%s\n" + +#~ msgid "Unknown builtin command '%s'\n" +#~ msgstr "未知的内置命令“%sâ€\n" + +#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n" +#~ msgstr "内置命令在 .ONESHELL 内未知或ä¸å—支æŒï¼šâ€œ%sâ€\n" + +#~ msgid "Error, empty command\n" +#~ msgstr "错误,空命令\n" + +#~ msgid "Redirected input from %s\n" +#~ msgstr "æ¥è‡ª %s çš„é‡å®šå‘输入\n" + +#~ msgid "Redirected error to %s\n" +#~ msgstr "到 %s çš„é‡å®šå‘错误输出\n" + +#~ msgid "Redirected output to %s\n" +#~ msgstr "到 %s çš„é‡å®šå‘输出\n" + +#~ msgid "Error spawning, %d\n" +#~ msgstr "错误产生,%d\n" + +#, fuzzy +#~ msgid "# Invalid value in 'update_status' member!" +#~ msgstr "# “update_statusâ€æˆå‘˜ä¸­æ— æ•ˆçš„值ï¼" + +#, fuzzy +#~ msgid "unknown trace mode '%s'" +#~ msgstr "未知的内置命令“%sâ€\n" + +#, fuzzy +#~ msgid "internal error: multiple --sync-mutex options" +#~ msgstr "内部错误:多个 --jobserver-fds 选项" + +#~ msgid "internal error: multiple --jobserver-fds options" +#~ msgstr "内部错误:多个 --jobserver-fds 选项" + +#~ msgid "virtual memory exhausted" +#~ msgstr "虚拟内存耗尽" + +#~ msgid "write error" +#~ msgstr "写错误" + +#~ msgid "BUILTIN RM %s\n" +#~ msgstr "BUILTIN RM %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" + +#~ msgid "" +#~ "%sThis is free software; see the source for copying conditions.\n" +#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n" +#~ "%sPARTICULAR PURPOSE.\n" +#~ msgstr "" +#~ "%s该程åºä¸ºè‡ªç”±è½¯ä»¶ï¼Œè¯¦æƒ…å¯å‚é˜…ç‰ˆæƒæ¡æ¬¾ã€‚在法律å…许的范围内\n" +#~ "%s我们ä¸ä½œä»»ä½•æ‹…ä¿ï¼Œè¿™åŒ…å«ä½†ä¸é™äºŽä»»ä½•商业适售性以åŠé’ˆå¯¹ç‰¹\n" +#~ "%s定目的的适用性的担ä¿ã€‚\n" + +#~ msgid "extraneous `endef'" +#~ msgstr "多于的“endefâ€" + +#~ msgid "empty `override' directive" +#~ msgstr "空“overrideâ€æŒ‡ä»¤" + +#~ msgid "invalid `override' directive" +#~ msgstr "无效的“overrideâ€æŒ‡ä»¤" + +#~ msgid "" +#~ "\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" + +#~ msgid "" +#~ "\n" +#~ "# No files." +#~ msgstr "" +#~ "\n" +#~ "# 无文件。" + +#~ msgid "" +#~ "\n" +#~ "# %u files in %u hash buckets.\n" +#~ msgstr "" +#~ "\n" +#~ "# 有 %u 个文件存储在 %u 个æ‚凑å•元中。\n" + +#~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" +#~ msgstr "# æ¯ä¸ªå•元平å‡å«æœ‰ %.3f 个文件,一个å•å…ƒæœ€å¤šå«æœ‰ %u 个文件。\n" + +#~ msgid "Syntax error, still inside '\"'\n" +#~ msgstr "语法错误,ä»ç„¶åœ¨â€œ\"â€ä¹‹ä¸­\n" + +#~ msgid "Got a SIGCHLD; %u unreaped children.\n" +#~ msgstr "收到 SIGCHLD ä¿¡å·ï¼›å°šæœ‰ %u 个å­è¿›ç¨‹å­˜åœ¨ã€‚\n" + +#~ msgid "DIRECTORY" +#~ msgstr "DIRECTORY" + +#~ msgid "Change to DIRECTORY before doing anything" +#~ msgstr "在åšä»»ä½•事之å‰è½¬ç§»åˆ° DIRECTORY 中" + +#~ msgid "FLAGS" +#~ msgstr "标志" + +#~ msgid "Suspend process to allow a debugger to attach" +#~ msgstr "挂起进程以便调试器进行连接" + +#~ msgid "Environment variables override makefiles" +#~ msgstr "环境å˜é‡è¦†ç›– makefile" + +#~ msgid "FILE" +#~ msgstr "FILE" + +#~ msgid "Read FILE as a makefile" +#~ msgstr "å°† FILE 作为 makefile 读入" + +#~ msgid "Search DIRECTORY for included makefiles" +#~ msgstr "在 DIRECTORY 中æœç´¢å¼•入的 makefile" + +#~ msgid "Don't start multiple jobs unless load is below N" +#~ msgstr "除éžè´Ÿè½½ä½ŽäºŽ N å¦åˆ™å°±ä¸å¯åŠ¨å¤šä¸ªä»»åŠ¡" + +#~ msgid "Don't actually run any commands; just print them" +#~ msgstr "ä¸ä¼šå®žé™…è¿è¡Œä»»ä½•å‘½ä»¤ï¼›åªæ˜¯æ‰“å°å®ƒä»¬" + +#~ msgid "Consider FILE to be very old and don't remake it" +#~ msgstr "å°† FILE 认定为过于陈旧而ä¸é‡çŽ°åˆ›å»ºå®ƒ" + +#~ msgid "Don't echo commands" +#~ msgstr "ä¸è¦å›žæ˜¾å‘½ä»¤" + +#~ msgid "Turns off -k" +#~ msgstr "关闭 -k" + +#~ msgid "Consider FILE to be infinitely new" +#~ msgstr "å°† FILE çœ‹åšæ— é™æ–°" + +#~ msgid "Do not specify -j or --jobs if sh.exe is not available." +#~ msgstr "如果 sh.exe ä¸å¯ç”¨ï¼Œå°±ä¸è¦ç»™å‡º -j 或 --jobs。" + +#~ msgid "Resetting make for single job mode." +#~ msgstr "å°† make é‡ç½®ä¸ºå•任务模å¼ã€‚" + +#~ msgid "Entering" +#~ msgstr "正在进入" + +#~ msgid "Leaving" +#~ msgstr "正在离开" + +#~ msgid "no file name for `%sinclude'" +#~ msgstr "“%sinclude†没有文件å" + +#~ msgid "# No variables." +#~ msgstr "# 没有å˜é‡ã€‚" + +#~ 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" diff --git a/local/recipes/dev/gnu-make/source/po/zh_TW.gmo b/local/recipes/dev/gnu-make/source/po/zh_TW.gmo new file mode 100644 index 0000000000..783d771a7e Binary files /dev/null and b/local/recipes/dev/gnu-make/source/po/zh_TW.gmo differ diff --git a/local/recipes/dev/gnu-make/source/po/zh_TW.po b/local/recipes/dev/gnu-make/source/po/zh_TW.po new file mode 100644 index 0000000000..70da0e7363 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/po/zh_TW.po @@ -0,0 +1,2458 @@ +# Chinese (traditional) translation for make. +# Copyright (C) 2002 Free Software Foundation, Inc. +# This file is distributed under the same license as the make package. +# +# Wang Li , 2002. +# LI Daobing , 2008, 2013. +# Mingye Wang , 2015, 2016. +# Y.C Cheng , 2017. +# Boyuan Yang <073plan@gmail.com>, 2018, 2019. +# Yi-Jyun Pan , 2019, 2020, 2022. +msgid "" +msgstr "" +"Project-Id-Version: make 4.3.90\n" +"Report-Msgid-Bugs-To: bug-make@gnu.org\n" +"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"PO-Revision-Date: 2022-09-23 07:02+0800\n" +"Last-Translator: Yi-Jyun Pan \n" +"Language-Team: Chinese (traditional) \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.1.1\n" +"X-ZhConverter: ç¹åŒ–姬 dict-4ac8d2ed-r906 @ 2019/10/24 21:28:21 | https://" +"zhconvert.org\n" + +#: src/ar.c:47 +#, c-format +msgid "attempt to use unsupported feature: '%s'" +msgstr "è©¦åœ–ä½¿ç”¨ä¸æ”¯æ´çš„功能:「%sã€" + +#: src/ar.c:127 +#, c-format +msgid "touch archive member is not available on VMS" +msgstr "VMS ç³»çµ±ä¸Šä¸æ”¯æ´ touch å°å­˜æˆå“¡" + +#: src/ar.c:151 +#, c-format +msgid "touch: Archive '%s' does not exist" +msgstr "touch:å°å­˜æª”案「%sã€ä¸å­˜åœ¨" + +#: src/ar.c:154 +#, c-format +msgid "touch: '%s' is not a valid archive" +msgstr "touch:「%sã€ä¸æ˜¯æœ‰æ•ˆçš„å°å­˜æª”案" + +#: src/ar.c:161 +#, c-format +msgid "touch: Member '%s' does not exist in '%s'" +msgstr "touch:在「%2$sã€ä¸­ä¸å­˜åœ¨æˆå“¡ã€Œ%1$sã€" + +#: src/ar.c:168 +#, c-format +msgid "touch: Bad return code from ar_member_touch on '%s'" +msgstr "touch:「%sã€ä¸Šçš„ ar_member_touch 的返回碼ä¸ç•¶" + +#: src/arscan.c:130 +#, c-format +msgid "lbr$set_module() failed to extract module info, status = %d" +msgstr "lbr$set_modules() å–得模組訊æ¯å¤±æ•—,返回狀態 = %d" + +#: src/arscan.c:236 +#, c-format +msgid "lbr$ini_control() failed with status = %d" +msgstr "lbr$ini_control() 失敗,返回狀態 = %d" + +#: src/arscan.c:261 +#, c-format +msgid "unable to open library '%s' to lookup member status %d" +msgstr "無法打開函å¼åº«ã€Œ%sã€ä»¥å°‹æ‰¾æˆå“¡ï¼Œç‹€æ…‹ %d" + +#: src/arscan.c:402 src/arscan.c:406 +#, c-format +msgid "Invalid %s for archive %s member %s" +msgstr "%2$s å°å­˜æª”之 %3$s æˆå“¡çš„ %1$s 無效" + +#: src/arscan.c:995 +#, c-format +msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n" +msgstr "æˆå“¡ã€Œ%sã€%s: %ld ä½å…ƒçµ„æ–¼ %ld (%ld)。\n" + +#: src/arscan.c:996 +msgid " (name might be truncated)" +msgstr " (å稱å¯èƒ½è¢«æˆªæ–·)" + +#: src/arscan.c:999 +#, c-format +msgid " Date %s" +msgstr " 日期 %s" + +#: src/arscan.c:1000 +#, c-format +msgid " uid = %d, gid = %d, mode = 0%o.\n" +msgstr " uid = %d,gid = %d,mode = 0%o。\n" + +#: src/commands.c:379 +#, fuzzy, c-format +msgid "Recipe has too many lines (limit %hu)" +msgstr "指令方案行數太多 (%ud)" + +#: src/commands.c:501 +msgid "*** Break.\n" +msgstr "*** 中斷。\n" + +#: src/commands.c:629 +#, c-format +msgid "*** [%s] Archive member '%s' may be bogus; not deleted" +msgstr "*** [%s] å°å­˜æˆå“¡ã€Œ%sã€å¯èƒ½æ˜¯å‡çš„;未刪除" + +# 是化學的æˆåˆ†ï¼Œæ˜¯ç‰¹æŠ€ï¼ +#: src/commands.c:633 +#, c-format +msgid "*** Archive member '%s' may be bogus; not deleted" +msgstr "*** å°å­˜æˆå“¡ã€Œ%sã€å¯èƒ½æ˜¯å‡çš„;未刪除" + +#: src/commands.c:647 +#, c-format +msgid "*** [%s] Deleting file '%s'" +msgstr "*** [%s] 正在刪除檔案「%sã€" + +#: src/commands.c:649 +#, c-format +msgid "*** Deleting file '%s'" +msgstr "*** 正在刪除檔案「%sã€" + +#: src/commands.c:685 +msgid "# recipe to execute" +msgstr "# è¦åŸ·è¡Œçš„æ–¹æ¡ˆ" + +#: src/commands.c:688 +msgid " (built-in):" +msgstr " (內建):" + +#: src/commands.c:690 +#, c-format +msgid " (from '%s', line %lu):\n" +msgstr " (從「%sã€ï¼Œè¡Œ %lu):\n" + +#: src/dir.c:1107 +msgid "" +"\n" +"# Directories\n" +msgstr "" +"\n" +"# 目錄\n" + +#: src/dir.c:1119 +#, c-format +msgid "# %s: could not be stat'd.\n" +msgstr "# %s:無法å°å…¶é€²è¡Œ stat 動作。\n" + +#: src/dir.c:1122 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): could not be opened.\n" +msgstr "# %s (é—œéµå­— %s,修改時間 %I64u):無法打開。\n" + +#: src/dir.c:1126 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" +msgstr "# %s (è£ç½® %d,i-節點 [%d,%d,%d]):無法打開。\n" + +#: src/dir.c:1131 +#, c-format +msgid "# %s (device %ld, inode %ld): could not be opened.\n" +msgstr "# %s (è£ç½® %ld,i-節點 %ld):無法打開。\n" + +#: src/dir.c:1155 +#, fuzzy, c-format +msgid "# %s (key %s, mtime %s): " +msgstr "# %s (é—œéµå­— %s,修改時間 %I64u):" + +#: src/dir.c:1159 +#, c-format +msgid "# %s (device %d, inode [%d,%d,%d]): " +msgstr "# %s (è£ç½® %d,i-節點 [%d,%d,%d]):" + +#: src/dir.c:1164 +#, c-format +msgid "# %s (device %ld, inode %ld): " +msgstr "# %s (è£ç½® %ld,i-節點 %ld):" + +#: src/dir.c:1168 src/dir.c:1189 +msgid "No" +msgstr "ç„¡" + +#: src/dir.c:1171 src/dir.c:1192 +msgid " files, " +msgstr " 檔案, " + +#: src/dir.c:1173 src/dir.c:1194 +msgid "no" +msgstr "ç„¡" + +#: src/dir.c:1176 +msgid " impossibilities" +msgstr " ä¸å¯èƒ½" + +#: src/dir.c:1180 +msgid " so far." +msgstr " 迄今為止。" + +#: src/dir.c:1197 +#, c-format +msgid " impossibilities in %lu directories.\n" +msgstr " ä¸å¯èƒ½åœ¨ %lu 目錄中。\n" + +#: src/expand.c:113 +#, c-format +msgid "%s:%lu: not recursively expanding %s to export to shell function\n" +msgstr "%s:%lu:ä¸éžè¿´å±•開用來輸出至 shell 函å¼çš„ %s\n" + +#: src/expand.c:149 +#, c-format +msgid "Recursive variable '%s' references itself (eventually)" +msgstr "éžè¿´è®Šæ•¸ã€Œ%sã€ï¼ˆæœ€çµ‚將會)引用自身" + +#: src/expand.c:295 +#, c-format +msgid "unterminated variable reference" +msgstr "未終止的變數引用" + +#: src/file.c:272 +#, c-format +msgid "Recipe was specified for file '%s' at %s:%lu," +msgstr "關於檔案「%sã€çš„æŒ‡ä»¤æ–¹æ¡ˆåœ¨ %s:%lu 處指定," + +#: src/file.c:277 +#, c-format +msgid "Recipe for file '%s' was found by implicit rule search," +msgstr "關於檔案「%sã€çš„æŒ‡ä»¤æ–¹æ¡ˆé€éŽéš±å«è¦å‰‡æœå°‹è€Œæ‰¾åˆ°ï¼Œ" + +#: src/file.c:281 +#, c-format +msgid "but '%s' is now considered the same file as '%s'." +msgstr "但「%sã€ç¾åœ¨è¢«çœ‹åšã€Œ%sã€çš„åŒä¸€å€‹æª”案。" + +#: src/file.c:284 +#, c-format +msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." +msgstr "「%sã€çš„æŒ‡ä»¤æ–¹æ¡ˆè¢«å¿½ç•¥ï¼Œè½‰è€Œä½¿ç”¨ã€Œ%sã€çš„。" + +#: src/file.c:304 +#, c-format +msgid "can't rename single-colon '%s' to double-colon '%s'" +msgstr "無法將單冒號「%sã€é‡æ–°å‘½å為雙冒號「%sã€" + +#: src/file.c:310 +#, c-format +msgid "can't rename double-colon '%s' to single-colon '%s'" +msgstr "無法將雙冒號「%sã€é‡æ–°å‘½å為單冒號「%sã€" + +#: src/file.c:407 +#, c-format +msgid "*** Deleting intermediate file '%s'" +msgstr "*** 正在刪除中間檔案「%sã€" + +#: src/file.c:411 +#, c-format +msgid "Removing intermediate files...\n" +msgstr "正在刪除中間檔案...\n" + +#: src/file.c:825 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" +msgstr "%s ä¸èƒ½åŒæ™‚是 .NOTINTERMEDIATE å’Œ .INTERMEDIATE" + +#: src/file.c:840 +#, c-format +msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" +msgstr "%s ä¸èƒ½åŒæ™‚是 .NOTINTERMEDIATE å’Œ .SECONDARY" + +#: src/file.c:850 +#, c-format +msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" +msgstr ".NOTINTERMEDIATE å’Œ .SECONDARY 互斥" + +#: src/file.c:942 +msgid "Current time" +msgstr "ç›®å‰æ™‚é–“" + +#: src/file.c:946 +#, c-format +msgid "%s: Timestamp out of range; substituting %s" +msgstr "%s:時間標記超出範åœï¼›æ­£åœ¨å–代 %s" + +#: src/file.c:1089 +msgid "# Not a target:" +msgstr "# 䏿˜¯ä¸€å€‹ç›®æ¨™ï¼š" + +#: src/file.c:1094 +msgid "# Precious file (prerequisite of .PRECIOUS)." +msgstr "# é‡è¦æª”案 (.PRECIOUS çš„å‰æ)。" + +#: src/file.c:1096 +msgid "# Phony target (prerequisite of .PHONY)." +msgstr "# å‡ç›®æ¨™ (.PHONY çš„å‰æ)。" + +#: src/file.c:1098 +msgid "# Command line target." +msgstr "# 指令列目標。" + +#: src/file.c:1100 +msgid "# A default, MAKEFILES, or -include/sinclude makefile." +msgstr "# é è¨­çš„ã€MAKEFILES 指定的ã€-include/sinclude 包å«çš„ makefile。" + +#: src/file.c:1102 +msgid "# Builtin rule" +msgstr "# 內建è¦å‰‡" + +#: src/file.c:1104 +msgid "# Implicit rule search has been done." +msgstr "# å°éš±å«è¦å‰‡çš„æœå°‹å·²å®Œæˆã€‚" + +#: src/file.c:1105 +msgid "# Implicit rule search has not been done." +msgstr "# å°éš±å«è¦å‰‡çš„æœå°‹å°šæœªå®Œæˆã€‚" + +#: src/file.c:1107 +#, c-format +msgid "# Implicit/static pattern stem: '%s'\n" +msgstr "# éš±å«/éœæ…‹æ¨¡å¼ä¸»å¹¹ï¼šã€Œ%sã€\n" + +#: src/file.c:1109 +msgid "# File is an intermediate prerequisite." +msgstr "# æª”æ¡ˆæ˜¯ä¸€å€‹ä¸­é–“å‰æã€‚" + +#: src/file.c:1111 +msgid "# File is a prerequisite of .NOTINTERMEDIATE." +msgstr "# 檔案是 .NOTINTERMEDIATE çš„å‰æã€‚" + +#: src/file.c:1113 +msgid "# File is secondary (prerequisite of .SECONDARY)." +msgstr "# 檔案是 secondary 的(.SECONDARY çš„å‰æï¼‰ã€‚" + +#: src/file.c:1117 +msgid "# Also makes:" +msgstr "# é‚„è¦è£½ä½œï¼š" + +#: src/file.c:1123 +msgid "# Modification time never checked." +msgstr "# å¾žä¸æª¢æŸ¥ä¿®æ”¹æ™‚間。" + +#: src/file.c:1125 +msgid "# File does not exist." +msgstr "# 檔案ä¸å­˜åœ¨ã€‚" + +#: src/file.c:1127 +msgid "# File is very old." +msgstr "# 檔案éžå¸¸é™³èˆŠã€‚" + +#: src/file.c:1132 +#, c-format +msgid "# Last modified %s\n" +msgstr "# 最近更新 %s\n" + +#: src/file.c:1135 +msgid "# File has been updated." +msgstr "# 檔案已經被更新。" + +#: src/file.c:1135 +msgid "# File has not been updated." +msgstr "# 檔案尚未被更新。" + +#: src/file.c:1139 +msgid "# Recipe currently running (THIS IS A BUG)." +msgstr "# 正在執行的方案 (這是 BUG)。" + +#: src/file.c:1142 +msgid "# Dependencies recipe running (THIS IS A BUG)." +msgstr "# 正在執行的ä¾è³´æ€§æ–¹æ¡ˆ (這是 BUG)。" + +#: src/file.c:1151 +msgid "# Successfully updated." +msgstr "# æ›´æ–°æˆåŠŸã€‚" + +#: src/file.c:1155 +msgid "# Needs to be updated (-q is set)." +msgstr "# éœ€è¦æ›´æ–° (用 -q 設定)。" + +#: src/file.c:1158 +msgid "# Failed to be updated." +msgstr "# 更新失敗。" + +#: src/file.c:1163 +msgid "# Invalid value in 'command_state' member!" +msgstr "# 「command_stateã€æˆå“¡ä¸­å­˜åœ¨ç„¡æ•ˆçš„值ï¼" + +#: src/file.c:1182 +msgid "" +"\n" +"# Files" +msgstr "" +"\n" +"# 檔案" + +#: src/file.c:1186 +msgid "" +"\n" +"# files hash-table stats:\n" +"# " +msgstr "" +"\n" +"# 檔案雜湊表狀態:\n" +"# " + +#: src/file.c:1196 +#, c-format +msgid "%s: Field '%s' not cached: %s" +msgstr "%s:欄ä½ã€Œ%sã€æœªè¢«å¿«å–:%s" + +#: src/function.c:779 src/function.c:1284 +#, c-format +msgid "%s: empty value" +msgstr "%s:空值" + +#: src/function.c:784 +#, c-format +msgid "%s: '%s' out of range" +msgstr "%s:「%sã€è¶…出範åœ" + +#: src/function.c:800 +msgid "invalid first argument to 'word' function" +msgstr "傳入 “word†函å¼çš„第一個引數無效" + +#: src/function.c:803 +#, c-format +msgid "first argument to 'word' function must be greater than 0" +msgstr "「wordã€å‡½æ•¸çš„ç¬¬ä¸€å€‹åƒæ•¸å¿…須大於 0" + +#: src/function.c:821 +msgid "invalid first argument to 'wordlist' function" +msgstr "傳入 “wordlist†函å¼çš„第一個引數無效" + +#: src/function.c:822 +msgid "invalid second argument to 'wordlist' function" +msgstr "傳入 “wordlist†函å¼çš„第二個引數無效" + +#: src/function.c:1328 +msgid "non-numeric first argument to 'intcmp' function" +msgstr "傳入 “intcmp†函å¼çš„ç¬¬ä¸€å€‹å¼•æ•¸ä¸æ˜¯æ•¸å­—" + +#: src/function.c:1329 +msgid "non-numeric second argument to 'intcmp' function" +msgstr "傳入 “intcmp†函å¼çš„ç¬¬äºŒå€‹å¼•æ•¸ä¸æ˜¯æ•¸å­—" + +# 程å¼è¨­è¨ˆå¸«çš„函數åæç¤ºï¼Œé‚„是ä¸è¦å‹•å§ã€‚ +#: src/function.c:1684 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) 失敗 (e=%lu)\n" + +#: src/function.c:1708 +#, c-format +msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) 失敗 (e=%lu)\n" + +#: src/function.c:1715 +#, c-format +msgid "CreatePipe() failed (e=%lu)\n" +msgstr "CreatePipe() 失敗 (e=%lu)\n" + +#: src/function.c:1723 +#, c-format +msgid "windows32_openpipe(): process_init_fd() failed\n" +msgstr "windows32_openpipe(): process_init_fd() 失敗\n" + +#: src/function.c:1983 +#, c-format +msgid "Cleaning up temporary batch file %s\n" +msgstr "正在清除暫時批次檔 %s\n" + +#: src/function.c:2343 src/function.c:2373 +#, c-format +msgid "file: missing filename" +msgstr "file:缺少檔案å" + +#: src/function.c:2347 src/function.c:2383 +#, c-format +msgid "open: %s: %s" +msgstr "open: %s: %s" + +#: src/function.c:2360 +#, c-format +msgid "write: %s: %s" +msgstr "write: %s: %s" + +#: src/function.c:2363 src/function.c:2402 +#, c-format +msgid "close: %s: %s" +msgstr "close:%s:%s" + +#: src/function.c:2376 +#, c-format +msgid "file: too many arguments" +msgstr "fileï¼šå¤ªå¤šåƒæ•¸" + +#: src/function.c:2397 +#, c-format +msgid "read: %s: %s" +msgstr "read:%s:%s" + +#: src/function.c:2409 +#, c-format +msgid "file: invalid file operation: %s" +msgstr "file:無效檔案(file)動作:%s" + +#: src/function.c:2527 +#, fuzzy, c-format +msgid "insufficient number of arguments (%u) to function '%s'" +msgstr "函數「%2$sã€çš„åƒæ•¸æ•¸é‡ (%1$d) ä¸å¤ " + +#: src/function.c:2539 +#, c-format +msgid "unimplemented on this platform: function '%s'" +msgstr "在本平å°ä¸Šæœªå¯¦ç¾ï¼šå‡½æ•¸ã€Œ%sã€" + +#: src/function.c:2608 +#, c-format +msgid "unterminated call to function '%s': missing '%c'" +msgstr "å°å‡½æ•¸ã€Œ%sã€çš„æœªçµ‚止的呼å«ï¼šéºæ¼ã€Œ%cã€" + +#: src/function.c:2791 +#, c-format +msgid "Empty function name" +msgstr "空函數å" + +#: src/function.c:2793 +#, c-format +msgid "Invalid function name: %s" +msgstr "無效的函數å稱:%s" + +#: src/function.c:2795 +#, c-format +msgid "Function name too long: %s" +msgstr "函數å稱太長:%s" + +#: src/function.c:2798 +#, c-format +msgid "Invalid minimum argument count (%u) for function %s" +msgstr "函數「%2$sã€çš„æœ€å°‘åƒæ•¸æ•¸é‡ (%1$u) 無效" + +#: src/function.c:2801 +#, c-format +msgid "Invalid maximum argument count (%u) for function %s" +msgstr "函數「%2$sã€çš„æœ€å¤šåƒæ•¸æ•¸é‡ (%1$u) 無效" + +#: src/getopt.c:659 +#, c-format +msgid "%s: option '%s' is ambiguous\n" +msgstr "%s:é¸é …「%sã€å«ç¾©ä¸æ¸…\n" + +#: src/getopt.c:683 +#, c-format +msgid "%s: option '--%s' doesn't allow an argument\n" +msgstr "%s:é¸é …「--%sã€ä¸å…è¨±åƒæ•¸\n" + +#: src/getopt.c:688 +#, c-format +msgid "%s: option '%c%s' doesn't allow an argument\n" +msgstr "%s:é¸é …「%c%sã€ä¸å…è¨±åƒæ•¸\n" + +#: src/getopt.c:705 src/getopt.c:878 +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s:é¸é …「%sã€éœ€è¦ä¸€å€‹åƒæ•¸\n" + +#: src/getopt.c:734 +#, c-format +msgid "%s: unrecognized option '--%s'\n" +msgstr "%s:無法識別的é¸é …「--%sã€\n" + +#: src/getopt.c:738 +#, c-format +msgid "%s: unrecognized option '%c%s'\n" +msgstr "%s:無法識別的é¸é …「%c%sã€\n" + +#: src/getopt.c:764 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s:é¸é …無效 ─ %c\n" + +#: src/getopt.c:767 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s:無效é¸é … -- %c\n" + +#: src/getopt.c:797 src/getopt.c:927 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s:é¸é …需è¦ä¸€å€‹åƒæ•¸ -- %c\n" + +#: src/getopt.c:844 +#, c-format +msgid "%s: option '-W %s' is ambiguous\n" +msgstr "%s:é¸é …「-W %sã€å«ç¾©ä¸æ¸…\n" + +#: src/getopt.c:862 +#, c-format +msgid "%s: option '-W %s' doesn't allow an argument\n" +msgstr "%s:é¸é …「-W %sã€ä¸å…è¨±çµ¦å‡ºåƒæ•¸\n" + +#: src/guile.c:58 +#, c-format +msgid "guile: Expanding '%s'\n" +msgstr "guile: 正展開 '%s'\n" + +#: src/guile.c:74 +#, c-format +msgid "guile: Evaluating '%s'\n" +msgstr "guile: 正求值 '%s'\n" + +#: src/hash.c:50 +#, c-format +msgid "can't allocate %lu bytes for hash table: memory exhausted" +msgstr "ç„¡æ³•ç‚ºé›œæ¹Šè¡¨åˆ†é… %lu ä½å…ƒçµ„: 記憶體耗盡" + +#: src/hash.c:280 +#, c-format +msgid "Load=%lu/%lu=%.0f%%, " +msgstr "負載=%lu/%lu=%.0f%%, " + +#: src/hash.c:282 +#, c-format +msgid "Rehash=%u, " +msgstr "釿–°é›œæ¹Š=%u, " + +#: src/hash.c:283 +#, c-format +msgid "Collisions=%lu/%lu=%.0f%%" +msgstr "碰撞=%lu/%lu=%.0f%%" + +#: src/implicit.c:41 +#, c-format +msgid "Looking for an implicit rule for '%s'.\n" +msgstr "正在為「%sã€å°‹æ‰¾éš±å«è¦å‰‡ã€‚\n" + +#: src/implicit.c:57 +#, c-format +msgid "Looking for archive-member implicit rule for '%s'.\n" +msgstr "正在為「%sã€å°‹æ‰¾å°å­˜æˆå“¡éš±å«è¦å‰‡ã€‚\n" + +#: src/implicit.c:61 +#, c-format +msgid "No archive-member implicit rule found for '%s'.\n" +msgstr "沒找到「%sã€çš„å°å­˜æˆå“¡éš±å«è¦å‰‡ã€‚\n" + +#: src/implicit.c:326 +#, c-format +msgid "Avoiding implicit rule recursion for rule '%s'.\n" +msgstr "防止「%sã€è¦å‰‡ç™¼ç”Ÿéš±å«è¦å‰‡éžè¿´ã€‚\n" + +#: src/implicit.c:451 +#, c-format +msgid "Trying harder.\n" +msgstr "更努力嘗試。\n" + +#: src/implicit.c:501 +#, c-format +msgid "Trying pattern rule '%s' with stem '%.*s'.\n" +msgstr "嘗試將「%sã€æ¨¡å¼è¦å‰‡èˆ‡ã€Œ%.*sã€ä¸»å¹¹é…å°ã€‚\n" + +#: src/implicit.c:506 +#, c-format +msgid "Stem too long: '%s%.*s'.\n" +msgstr "主幹太長:「%s%.*sã€ã€‚\n" + +#: src/implicit.c:768 +#, c-format +msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" +msgstr "拒絕「%sã€è¦å‰‡ï¼Œå› ç‚ºã€Œ%sã€è¦å‰‡å‰æä¸å¯èƒ½ç™¼ç”Ÿã€‚\n" + +#: src/implicit.c:770 +#, c-format +msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" +msgstr "拒絕「%sã€è¦å‰‡ï¼Œå› ç‚ºã€Œ%sã€éš±å«å‰æä¸å¯èƒ½ç™¼ç”Ÿã€‚\n" + +#: src/implicit.c:787 +#, c-format +msgid "Trying rule prerequisite '%s'.\n" +msgstr "嘗試è¦å‰‡å‰æã€Œ%sã€ã€‚\n" + +#: src/implicit.c:788 +#, c-format +msgid "Trying implicit prerequisite '%s'.\n" +msgstr "嘗試隱å«å‰æã€Œ%sã€ã€‚\n" + +#: src/implicit.c:827 +#, c-format +msgid "'%s' ought to exist.\n" +msgstr "「%sã€æ‡‰å­˜åœ¨ã€‚\n" + +#: src/implicit.c:834 +#, c-format +msgid "Found '%s'.\n" +msgstr "找到「%sã€ã€‚\n" + +#: src/implicit.c:842 +#, c-format +msgid "Using compatibility rule '%s' due to '%s'.\n" +msgstr "使用「%sã€ç›¸å®¹æ€§è¦å‰‡ï¼Œå› ç‚ºã€Œ%sã€ã€‚\n" + +#: src/implicit.c:856 +#, fuzzy, c-format +msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" +msgstr "「%2$sã€è¦å‰‡çš„「%1$sã€å‰ææ²’法æˆç«‹ã€Œæ‡‰ç•¶å­˜åœ¨ã€çš„æ¢ä»¶ã€‚\n" + +#: src/implicit.c:870 +#, c-format +msgid "Found prerequisite '%s' as VPATH '%s'.\n" +msgstr "在「%sã€VPATH 找到「%sã€å‰æã€‚\n" + +#: src/implicit.c:885 +#, c-format +msgid "Looking for a rule with explicit file '%s'.\n" +msgstr "正在尋找有明確檔案「%sã€çš„è¦å‰‡ã€‚\n" + +#: src/implicit.c:886 +#, c-format +msgid "Looking for a rule with intermediate file '%s'.\n" +msgstr "正在尋找包å«ä¸­é–“檔案「%sã€çš„è¦å‰‡ã€‚\n" + +#: src/implicit.c:927 +#, c-format +msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" +msgstr "拒絕「%sã€è¦å‰‡ï¼Œå› ç‚ºã€Œ%sã€å‰æä¸å¯èƒ½ç™¼ç”Ÿã€‚\n" + +#: src/implicit.c:931 +#, c-format +msgid "Not found '%s'.\n" +msgstr "找ä¸åˆ°ã€Œ%sã€ã€‚\n" + +#: src/implicit.c:1144 +#, c-format +msgid "Found implicit rule '%s' for '%s'.\n" +msgstr "找到「%2$sã€çš„「%1$sã€éš±å«è¦å‰‡ã€‚\n" + +#: src/implicit.c:1151 +#, c-format +msgid "Searching for a compatibility rule for '%s'.\n" +msgstr "正在æœå°‹ã€Œ%sã€çš„相容性è¦å‰‡ã€‚\n" + +#: src/implicit.c:1157 +#, c-format +msgid "No implicit rule found for '%s'.\n" +msgstr "找ä¸åˆ°é—œæ–¼ã€Œ%sã€çš„éš±å«è¦å‰‡ã€‚\n" + +#: src/job.c:380 +msgid "Cannot create a temporary file" +msgstr "無法建立暫存檔案" + +#: src/job.c:552 +msgid " (core dumped)" +msgstr " (已傾尿 ¸å¿ƒ)" + +#: src/job.c:557 +msgid " (ignored)" +msgstr " (已忽略)" + +#: src/job.c:561 src/job.c:1900 +msgid "" +msgstr "<內建>" + +#: src/job.c:587 +#, c-format +msgid "%s[%s: %s] Error %d%s%s" +msgstr "%s[%s: %s] 錯誤 %d%s%s" + +#: src/job.c:677 +#, c-format +msgid "*** Waiting for unfinished jobs...." +msgstr "*** 正在等待未完æˆçš„作業...." + +#: src/job.c:719 +#, c-format +msgid "Live child %p (%s) PID %s %s\n" +msgstr "使用中å­ç¨‹åº %p (%s) PID %s %s\n" + +#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#, c-format +msgid " (remote)" +msgstr " (é ç«¯)" + +#: src/job.c:914 +#, c-format +msgid "Reaping winning child %p PID %s %s\n" +msgstr "正在中止ç²å‹çš„å­ç¨‹åº %p PID %s %s\n" + +#: src/job.c:915 +#, c-format +msgid "Reaping losing child %p PID %s %s\n" +msgstr "正在中止失敗的å­ç¨‹åº %p PID %s %s\n" + +#: src/job.c:966 +#, c-format +msgid "Cleaning up temp batch file %s\n" +msgstr "正在清除暫時批次檔 %s\n" + +#: src/job.c:972 +#, c-format +msgid "Cleaning up temp batch file %s failed (%d)\n" +msgstr "æ¸…ç†æš«æ™‚批次檔 %s 失敗 (%d)\n" + +#: src/job.c:1083 +#, c-format +msgid "Removing child %p PID %s%s from chain.\n" +msgstr "從éˆä¸­åˆªé™¤å­ç¨‹åº %p PID %s%s。\n" + +#: src/job.c:1146 +#, c-format +msgid "Released token for child %p (%s).\n" +msgstr "為å­ç¨‹åº %p (%s) 釋放憑證 (token)。\n" + +#: src/job.c:1583 src/job.c:2497 +#, c-format +msgid "process_easy() failed to launch process (e=%ld)\n" +msgstr "process_easy() 啟動處ç†ç¨‹åºå¤±æ•— (e=%ld)\n" + +#: src/job.c:1587 src/job.c:2501 +#, c-format +msgid "" +"\n" +"Counted %d args in failed launch\n" +msgstr "" +"\n" +"失敗執行中共有 %d å€‹åƒæ•¸ã€‚\n" + +#: src/job.c:1650 +#, c-format +msgid "Putting child %p (%s) PID %s%s on the chain.\n" +msgstr "å°‡å­ç¨‹åº %p (%s) PID %s%s 放入éˆã€‚\n" + +#: src/job.c:1883 +#, c-format +msgid "Obtained token for child %p (%s).\n" +msgstr "å–得至處ç†ç¨‹åº %p (%s) 的標記。\n" + +#: src/job.c:1909 +#, c-format +msgid "%s: update target '%s' due to: %s" +msgstr "%s:更新「%sã€ï¼Œå› ç‚ºï¼š%s" + +#: src/job.c:1910 +msgid "target does not exist" +msgstr "目標ä¸å­˜åœ¨" + +#: src/job.c:2104 +#, c-format +msgid "cannot enforce load limits on this operating system" +msgstr "無法在本作業系統中實施負載é™åˆ¶" + +#: src/job.c:2106 +msgid "cannot enforce load limit: " +msgstr "無法實施負載é™åˆ¶ï¼š" + +#: src/job.c:2195 +#, c-format +msgid "no more file handles: could not duplicate stdin" +msgstr "檔案控制代碼已用盡:無法複製 stdin" + +#: src/job.c:2207 +#, c-format +msgid "no more file handles: could not duplicate stdout" +msgstr "檔案控制代碼已用盡:無法複製 stdout" + +#: src/job.c:2221 +#, c-format +msgid "no more file handles: could not duplicate stderr" +msgstr "檔案控制代碼已用盡:無法複製 stderr" + +#: src/job.c:2236 +#, c-format +msgid "Could not restore stdin" +msgstr "無法還原 stdin" + +#: src/job.c:2244 +#, c-format +msgid "Could not restore stdout" +msgstr "無法還原 stdout" + +#: src/job.c:2252 +#, c-format +msgid "Could not restore stderr" +msgstr "無法還原 stderr" + +#: src/job.c:2530 +#, c-format +msgid "make reaped child pid %s, still waiting for pid %s\n" +msgstr "make 已中止的å­ç¨‹åº pid %s,ä»åœ¨ç­‰å¾… pid %s\n" + +#: src/job.c:2630 +#, c-format +msgid "spawnvpe: environment space might be exhausted" +msgstr "spawnvpe: 環境變數空間å¯èƒ½æœƒè€—盡" + +#: src/job.c:2869 +#, c-format +msgid "$SHELL changed (was '%s', now '%s')\n" +msgstr "$SHELL 已改變 (原為「%sã€ï¼Œç¾ç‚ºã€Œ%sã€)\n" + +#: src/job.c:3306 src/job.c:3510 +#, c-format +msgid "Creating temporary batch file %s\n" +msgstr "正在建立暫時批檔案 %s\n" + +#: src/job.c:3314 +#, c-format +msgid "" +"Batch file contents:\n" +"\t@echo off\n" +msgstr "" +"批次檔內容:\n" +"\t@echo off\n" + +#: src/job.c:3522 +#, c-format +msgid "" +"Batch file contents:%s\n" +"\t%s\n" +msgstr "" +"批次檔內容:%s\n" +"\t%s\n" + +#: src/job.c:3630 +#, c-format +msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" +msgstr "%s (行 %d) 錯誤的 shell 上下文 (!unixy && !batch_mode_shell)\n" + +#: src/load.c:60 +#, c-format +msgid "Failed to open global symbol table: %s" +msgstr "打開全域符號表失敗:%s" + +#: src/load.c:93 +#, c-format +msgid "Loaded shared object %s\n" +msgstr "已載入 %s 共用物件\n" + +#: src/load.c:99 +#, c-format +msgid "Loaded object %s is not declared to be GPL compatible" +msgstr "已載入的物件 %s æœªè²æ˜Žç‚º GPL 相容" + +#: src/load.c:106 +#, c-format +msgid "Failed to load symbol %s from %s: %s" +msgstr "從 %2$s 載入符號 %1$s 失敗:%3$s" + +#: src/load.c:151 +#, c-format +msgid "Empty symbol name for load: %s" +msgstr "è¦è¼‰å…¥çš„符號å為空:%s" + +#: src/load.c:206 +#, c-format +msgid "Loading symbol %s from %s\n" +msgstr "正從 %2$s 載入符號 %1$s\n" + +#: src/load.c:232 +#, c-format +msgid "Unloading shared object %s\n" +msgstr "正在å¸è¼‰ %s 共用物件\n" + +#: src/load.c:251 +#, c-format +msgid "The 'load' operation is not supported on this platform" +msgstr "本平å°ä¸æ”¯æ´ “load†æ“作" + +#: src/main.c:317 +msgid "Options:\n" +msgstr "é¸é …:\n" + +#: src/main.c:318 +msgid " -b, -m Ignored for compatibility.\n" +msgstr " -b, -m 為相容性而忽略。\n" + +#: src/main.c:320 +msgid " -B, --always-make Unconditionally make all targets.\n" +msgstr " -B, --always-make ç„¡æ¢ä»¶è£½ä½œ (make) 所有目標。\n" + +#: src/main.c:322 +msgid "" +" -C DIRECTORY, --directory=DIRECTORY\n" +" Change to DIRECTORY before doing anything.\n" +msgstr " -C 目錄, --directory=目錄 在執行å‰å…ˆåˆ‡æ›åˆ° <目錄>。\n" + +#: src/main.c:325 +msgid " -d Print lots of debugging information.\n" +msgstr " -d 輸出大é‡é™¤éŒ¯è¨Šæ¯ã€‚\n" + +#: src/main.c:327 +msgid "" +" --debug[=FLAGS] Print various types of debugging information.\n" +msgstr " --debug[=旗標] 輸出å„種除錯訊æ¯ã€‚\n" + +#: src/main.c:329 +msgid "" +" -e, --environment-overrides\n" +" Environment variables override makefiles.\n" +msgstr "" +" -e, --environment-overrides\n" +" 環境變數覆蓋 makefile 中的變數。\n" + +#: src/main.c:332 +msgid "" +" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" +msgstr " -E 字串, --eval=字串 å°‡ <字串> 作為 makefile 語å¥ä¼°å€¼ã€‚\n" + +#: src/main.c:334 +msgid "" +" -f FILE, --file=FILE, --makefile=FILE\n" +" Read FILE as a makefile.\n" +msgstr "" +" -f 檔案, --file=檔案, --makefile=檔案\n" +" 從 <檔案> 中讀入 makefile。\n" + +#: src/main.c:337 +msgid " -h, --help Print this message and exit.\n" +msgstr " -h, --help 輸出該訊æ¯ä¸¦é›¢é–‹ã€‚\n" + +#: src/main.c:339 +msgid " -i, --ignore-errors Ignore errors from recipes.\n" +msgstr " -i, --ignore-errors 忽略來自指令方案的錯誤。\n" + +#: src/main.c:341 +msgid "" +" -I DIRECTORY, --include-dir=DIRECTORY\n" +" Search DIRECTORY for included makefiles.\n" +msgstr " -I 目錄, --include-dir=目錄 在 <目錄> 中æœå°‹è¢«åŒ…å«çš„ makefile。\n" + +#: src/main.c:344 +msgid "" +" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " +"arg.\n" +msgstr "" +" -j [N], --jobs[=N] åŒæ™‚å…許 N å€‹ä½œæ¥­ï¼›ç„¡åƒæ•¸è¡¨æ˜Žå…許無é™å€‹ä½œæ¥­ã€‚\n" + +#: src/main.c:346 +msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" +msgstr " --jobserver-style=STYLE 鏿“‡ jobserver è¦ä½¿ç”¨çš„風格。\n" + +#: src/main.c:348 +msgid "" +" -k, --keep-going Keep going when some targets can't be made.\n" +msgstr " -k, --keep-going ç•¶æŸäº›ç›®æ¨™ç„¡æ³•製作時ä»ç„¶ç¹¼çºŒã€‚\n" + +#: src/main.c:350 +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" + +#: src/main.c:353 +msgid "" +" -L, --check-symlink-times Use the latest mtime between symlinks and " +"target.\n" +msgstr "" +" -L, --check-symlink-times 使用符號連çµåŠç¬¦è™Ÿé€£çµç›®æ¨™ä¸­ä¿®æ”¹æ™‚間較晚的一" +"個。\n" + +#: src/main.c:355 +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" + +#: src/main.c:358 +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" + +#: src/main.c:361 +msgid "" +" -O[TYPE], --output-sync[=TYPE]\n" +" Synchronize output of parallel jobs by TYPE.\n" +msgstr "" +" -O[類型], --output-sync[=類型]\n" +" 使用 <類型> æ–¹å¼åŒæ­¥ä¸¦è¡Œä½œæ¥­è¼¸å‡ºã€‚\n" + +#: src/main.c:364 +msgid " -p, --print-data-base Print make's internal database.\n" +msgstr " -p, --print-data-base 輸出 make 的內部資料庫。\n" + +#: src/main.c:366 +msgid "" +" -q, --question Run no recipe; exit status says if up to " +"date.\n" +msgstr "" +" -q, --question ä¸åŸ·è¡Œä»»ä½•方案;離開狀態說明是å¦å·²å…¨éƒ¨æ›´æ–°ã€‚\n" + +#: src/main.c:368 +msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" +msgstr " -r, --no-builtin-rules åœç”¨å…§å»ºéš±å«è¦å‰‡ã€‚\n" + +#: src/main.c:370 +msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" +msgstr " -R, --no-builtin-variables åœç”¨å…§å»ºè®Šæ•¸è¨­å®šã€‚\n" + +#: src/main.c:372 +msgid "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Perform shuffle of prerequisites and goals.\n" +msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" 釿–°æŽ’åˆ—ã€Œå‰æã€å’Œã€Œç›®æ¨™ã€ã€‚\n" +" random 隨機;reverse åå‘ï¼›\n" +" none ä¸é‡æ–°æŽ’列。\n" +"\n" + +#: src/main.c:375 +msgid " -s, --silent, --quiet Don't echo recipes.\n" +msgstr " -s, --silent, --quiet ä¸è¼¸å‡ºæ–¹æ¡ˆæŒ‡ä»¤ã€‚\n" + +#: src/main.c:377 +msgid " --no-silent Echo recipes (disable --silent mode).\n" +msgstr " --no-silent å°æ–¹æ¡ˆé€²è¡Œå›žé¡¯ï¼ˆåœç”¨ --silent 模å¼ï¼‰ã€‚\n" + +#: src/main.c:379 +msgid "" +" -S, --no-keep-going, --stop\n" +" Turns off -k.\n" +msgstr "" +" -S, --no-keep-going, --stop\n" +" 關閉 -k。\n" + +#: src/main.c:382 +msgid " -t, --touch Touch targets instead of remaking them.\n" +msgstr "" +" -t, --touch touch ç›®æ¨™ï¼ˆæ›´æ–°ä¿®æ”¹æ™‚é–“ï¼‰è€Œä¸æ˜¯é‡æ–°è£½ä½œå®ƒ" +"們。\n" + +#: src/main.c:384 +msgid " --trace Print tracing information.\n" +msgstr " --trace 輸出跟蹤訊æ¯ã€‚\n" + +#: src/main.c:386 +msgid "" +" -v, --version Print the version number of make and exit.\n" +msgstr " -v, --version 輸出 make 的版本號並離開。\n" + +#: src/main.c:388 +msgid " -w, --print-directory Print the current directory.\n" +msgstr " -w, --print-directory 輸出目å‰ç›®éŒ„。\n" + +#: src/main.c:390 +msgid "" +" --no-print-directory Turn off -w, even if it was turned on " +"implicitly.\n" +msgstr " --no-print-directory 關閉 -w,å³ä½¿ -w é è¨­é–‹å•Ÿã€‚\n" + +#: src/main.c:392 +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" + +#: src/main.c:395 +msgid "" +" --warn-undefined-variables Warn when an undefined variable is " +"referenced.\n" +msgstr " --warn-undefined-variables 當引用未定義變數的時候發出警告。\n" + +#: src/main.c:728 src/main.c:730 +#, c-format +msgid "write error: stdout" +msgstr "寫錯誤: 標準輸出" + +#: src/main.c:742 +#, c-format +msgid "empty string invalid as file name" +msgstr "空字串是無效的檔案å" + +#: src/main.c:834 +#, c-format +msgid "unknown debug level specification '%s'" +msgstr "未知的除錯級別定義「%sã€" + +#: src/main.c:874 +#, c-format +msgid "unknown output-sync type '%s'" +msgstr "䏿˜Žè¼¸å‡ºåŒæ­¥é¡žåž‹ã€Œ%sã€" + +#: src/main.c:898 +#, c-format +msgid "Usage: %s [options] [target] ...\n" +msgstr "用法:%s [é¸é …] [目標] ...\n" + +#: src/main.c:904 +#, c-format +msgid "" +"\n" +"This program built for %s\n" +msgstr "" +"\n" +"該程å¼ç‚º %s 編譯\n" + +#: src/main.c:906 +#, c-format +msgid "" +"\n" +"This program built for %s (%s)\n" +msgstr "" +"\n" +"該程å¼ç‚º %s (%s) 編譯\n" + +#: src/main.c:909 +#, c-format +msgid "Report bugs to \n" +msgstr "報告錯誤到 \n" + +#: src/main.c:940 +#, c-format +msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" +msgstr "%s:æ•ç²ä¸­æ–·/異常 (程å¼ç¢¼ = 0x%lx, ä½å€ = 0x%p)\n" + +#: src/main.c:947 +#, c-format +msgid "" +"\n" +"Unhandled exception filter called from program %s\n" +"ExceptionCode = %lx\n" +"ExceptionFlags = %lx\n" +"ExceptionAddress = 0x%p\n" +msgstr "" +"\n" +"å¾žç¨‹å¼ %s 產生的未處ç†çš„ç•°å¸¸éŽæ¿¾å™¨\n" +"異常碼 = %lx\n" +"異常標誌 = %lx\n" +"異常ä½å€ = 0x%p\n" + +#: src/main.c:955 +#, c-format +msgid "Access violation: write operation at address 0x%p\n" +msgstr "å­˜å–è¡çªï¼šä½å€ 0x%p 處的寫入動作\n" + +#: src/main.c:956 +#, c-format +msgid "Access violation: read operation at address 0x%p\n" +msgstr "å­˜å–è¡çªï¼šä½å€ 0x%p 處的讀å–動作\n" + +#: src/main.c:1028 src/main.c:1042 +#, c-format +msgid "find_and_set_shell() setting default_shell = %s\n" +msgstr "find_and_set_shell() 設定 default_shell = %s\n" + +#: src/main.c:1098 +#, c-format +msgid "find_and_set_shell() path search set default_shell = %s\n" +msgstr "find_and_set_shell() 路徑æœå°‹çµæžœè¨­å®š default_shell = %s\n" + +#: src/main.c:1151 +msgid "unlink (temporary file): " +msgstr "刪除 (暫存檔):" + +#: src/main.c:1833 +#, c-format +msgid "" +"warning: jobserver unavailable: using -j1. Add '+' to parent make rule." +msgstr "警告: jobserver ä¸å¯ç”¨: 正使用 -j1。添加「+ã€åˆ°çˆ¶ make çš„è¦å‰‡ã€‚" + +#: src/main.c:1841 +#, c-format +msgid "warning: -j%d forced in submake: resetting jobserver mode." +msgstr "警告: å­ make 中強制 -j%d: é‡è¨­ jobserver 模å¼ã€‚" + +#: src/main.c:1930 +#, c-format +msgid "Makefile from standard input specified twice" +msgstr "指定了兩次æºè‡ªæ¨™æº–輸入的 Makefile" + +#: src/main.c:1940 +#, c-format +msgid "fwrite: temporary file %s: %s" +msgstr "fwrite:暫存檔 %s:%s" + +#: src/main.c:2095 +#, c-format +msgid "warning: -j%d forced in makefile: resetting jobserver mode." +msgstr "警告: å­ make 中強制 -j%d: é‡è¨­ jobserver 模å¼ã€‚" + +#: src/main.c:2191 +#, c-format +msgid "Parallel jobs (-j) are not supported on this platform." +msgstr "本平å°ä¸æ”¯æ´ä¸¦è¡Œä½œæ¥­ (-j)。" + +#: src/main.c:2192 +#, c-format +msgid "Resetting to single job (-j1) mode." +msgstr "é‡è¨­ç‚ºå–®ä½œæ¥­æ¨¡å¼ (-j1)。" + +#: src/main.c:2248 +#, fuzzy, c-format +msgid "Using jobserver controller %s\n" +msgstr "jobserver èªè­‰é¢¨æ ¼ “%s†未知" + +#: src/main.c:2250 +#, fuzzy, c-format +msgid "Using output-sync mutex %s\n" +msgstr "ç„¡æ•ˆçš„è¼¸å‡ºåŒæ­¥éŽ– (mutex):%s" + +#: src/main.c:2255 +#, c-format +msgid "Symbolic links not supported: disabling -L." +msgstr "䏿”¯æ´ç¬¦è™Ÿé€£çµï¼šåœç”¨ -L。" + +#: src/main.c:2327 +#, fuzzy, c-format +msgid "Enabled shuffle mode: %s\n" +msgstr "ç„¡æ•ˆçš„é‡æ–°æŽ’åºæ¨¡å¼ï¼š%s:「%sã€" + +#: src/main.c:2339 +#, c-format +msgid "Updating makefiles....\n" +msgstr "正在更新 makefile....\n" + +#: src/main.c:2397 +#, c-format +msgid "Makefile '%s' might loop; not remaking it.\n" +msgstr "Makefile「%sã€å¯èƒ½å¾ªç’°ï¼›ä¸æœƒé‡æ–°åŸ·è¡Œå®ƒã€‚\n" + +#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: src/main.c:2476 src/read.c:970 +#, c-format +msgid "%s: failed to load" +msgstr "%s: 載入失敗" + +#: src/main.c:2528 +#, c-format +msgid "Failed to remake makefile '%s'." +msgstr "釿–°åŸ·è¡Œ makefile「%sã€å¤±æ•—。" + +#: src/main.c:2548 +#, c-format +msgid "Included makefile '%s' was not found." +msgstr "找ä¸åˆ°è¢«å¼•入的 makefile「%sã€ã€‚" + +#: src/main.c:2552 +#, c-format +msgid "Makefile '%s' was not found" +msgstr "找ä¸åˆ° makefile「%sã€" + +#: src/main.c:2700 +#, c-format +msgid "Couldn't change back to original directory" +msgstr "無法切回原始目錄" + +#: src/main.c:2708 +#, c-format +msgid "Re-executing[%u]:" +msgstr "釿–°åŸ·è¡Œ[%u]:" + +#: src/main.c:2863 +#, c-format +msgid ".DEFAULT_GOAL contains more than one target" +msgstr ".DEFAULT_GOAL 包å«å¤šé¤˜ä¸€å€‹ç›®æ¨™" + +#: src/main.c:2887 +#, c-format +msgid "No targets" +msgstr "無目標" + +#: src/main.c:2889 +#, c-format +msgid "No targets specified and no makefile found" +msgstr "沒有指明目標並且找ä¸åˆ° makefile" + +#: src/main.c:2898 +#, c-format +msgid "Updating goal targets....\n" +msgstr "更新目標....\n" + +#: src/main.c:2922 +#, c-format +msgid "warning: Clock skew detected. Your build may be incomplete." +msgstr "警告:檢測到時é˜éŒ¯èª¤ã€‚您的構建版本å¯èƒ½æ˜¯ä¸å®Œæ•´çš„。" + +#: src/main.c:3186 +#, c-format +msgid "the '%s%s' option requires a non-empty string argument" +msgstr "「%s%sã€é¸é …需è¦éžç©ºå­—ä¸²åƒæ•¸" + +#: src/main.c:3267 +#, c-format +msgid "the '-%c' option requires a positive integer argument" +msgstr "「-%cã€é¸é …éœ€è¦æ­£æ•´æ•¸åƒæ•¸" + +#: src/main.c:3652 +#, c-format +msgid "%sBuilt for %s\n" +msgstr "%s為 %s 編譯\n" + +#: src/main.c:3654 +#, c-format +msgid "%sBuilt for %s (%s)\n" +msgstr "%s為 %s (%s) 編譯\n" + +#: src/main.c:3665 +#, c-format +msgid "" +"%sLicense GPLv3+: GNU GPL version 3 or later \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 "" +"%sGPLv3+ æŽˆæ¬Šæ¢æ¬¾ï¼šGNU é€šç”¨å…¬å…±æŽˆæ¬Šæ¢æ¬¾ç¬¬ 3 版或更新版本 。\n" +"%s本軟體是自由軟體:您å¯ä»¥è‡ªç”±å°å…¶ä¿®æ”¹å’Œé‡æ–°ç™¼å¸ƒã€‚\n" +"%s在法律å…許的範åœå…§æ²’有其他ä¿è­‰ã€‚\n" + +#: src/main.c:3682 +#, c-format +msgid "" +"\n" +"# Make data base, printed on %s" +msgstr "" +"\n" +"# make 資料基礎,輸出在 %s" + +#: src/main.c:3692 +#, c-format +msgid "" +"\n" +"# Finished Make data base on %s\n" +msgstr "" +"\n" +"# 在 %s ä¸Šå®Œæˆ make 資料基礎\n" + +#: src/misc.c:602 +#, fuzzy, c-format +msgid "%s value %s: %s" +msgstr "%s%s: %s" + +#: src/misc.c:605 +#, c-format +msgid "%s value %s: not a directory" +msgstr "" + +#: src/misc.c:613 +#, fuzzy, c-format +msgid "using default temporary directory '%s'" +msgstr "使用「%sã€çš„é è¨­æ–¹æ¡ˆã€‚\n" + +#: src/misc.c:698 +#, fuzzy, c-format +msgid "create temporary file %s: %s" +msgstr "fwrite:暫存檔 %s:%s" + +#: src/misc.c:708 +#, fuzzy, c-format +msgid "unlink temporary file %s: %s" +msgstr "刪除 (暫存檔):" + +#: src/misc.c:733 +#, fuzzy, c-format +msgid "fdopen: temporary file %s: %s" +msgstr "fopen:暫存檔 %s:%s" + +#: src/misc.c:747 +#, c-format +msgid "fopen: temporary file %s: %s" +msgstr "fopen:暫存檔 %s:%s" + +#: src/output.c:95 +#, c-format +msgid "%s: Entering an unknown directory\n" +msgstr "%s: 進入一個未知的目錄\n" + +#: src/output.c:97 +#, c-format +msgid "%s: Leaving an unknown directory\n" +msgstr "%s: 離開一個未知的目錄\n" + +#: src/output.c:100 +#, c-format +msgid "%s: Entering directory '%s'\n" +msgstr "%s: 進入目錄「%sã€\n" + +#: src/output.c:102 +#, c-format +msgid "%s: Leaving directory '%s'\n" +msgstr "%s: 離開目錄「%sã€\n" + +#: src/output.c:106 +#, c-format +msgid "%s[%u]: Entering an unknown directory\n" +msgstr "%s[%u]: 進入一個未知的目錄\n" + +#: src/output.c:108 +#, c-format +msgid "%s[%u]: Leaving an unknown directory\n" +msgstr "%s[%u]: 離開一個未知的目錄\n" + +#: src/output.c:111 +#, c-format +msgid "%s[%u]: Entering directory '%s'\n" +msgstr "%s[%u]: 進入目錄「%sã€\n" + +#: src/output.c:113 +#, c-format +msgid "%s[%u]: Leaving directory '%s'\n" +msgstr "%s[%u]: 離開目錄「%sã€\n" + +#: src/output.c:280 +#, c-format +msgid "warning: Cannot acquire output lock, disabling output sync." +msgstr "警告:無法索å–輸出鎖,åœç”¨è¼¸å‡ºåŒæ­¥ã€‚" + +#: src/output.c:475 +msgid ". Stop.\n" +msgstr "。 åœæ­¢ã€‚\n" + +#: src/output.c:510 +#, c-format +msgid "%s%s: %s" +msgstr "%s%s: %s" + +#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#, c-format +msgid "Cannot open jobserver %s: %s" +msgstr "無法開啟 %s jobserver:%s" + +#: src/posixos.c:186 src/w32/w32os.c:219 +#, c-format +msgid "Unknown jobserver auth style '%s'" +msgstr "jobserver èªè­‰é¢¨æ ¼ “%s†未知" + +#: src/posixos.c:190 +msgid "creating jobs pipe" +msgstr "正在建立作業管é“" + +#: src/posixos.c:201 src/posixos.c:434 +msgid "duping jobs pipe" +msgstr "正在複製作業管é“" + +#: src/posixos.c:207 +msgid "init jobserver pipe" +msgstr "創始化作業伺æœå™¨ç®¡é“" + +#: src/posixos.c:261 +#, c-format +msgid "invalid --jobserver-auth string '%s'" +msgstr "--jobserver-auth 字串「%sã€ç„¡æ•ˆ" + +#: src/posixos.c:363 +msgid "write jobserver" +msgstr "寫入作業伺æœå™¨" + +#: src/posixos.c:483 +#, c-format +msgid "job server shut down" +msgstr "作業伺æœå™¨é—œé–‰" + +# , fuzzy +#: src/posixos.c:486 +msgid "pselect jobs pipe" +msgstr "pselect 作業管é“" + +#: src/posixos.c:502 src/posixos.c:616 +msgid "read jobs pipe" +msgstr "讀å–作業管é“" + +#: src/posixos.c:672 +#, c-format +msgid "invalid --sync-mutex string '%s'" +msgstr "--sync-mutex 字串「%sã€ç„¡æ•ˆ" + +#: src/posixos.c:681 +#, c-format +msgid "cannot open output sync mutex %s: %s" +msgstr "ç„¡æ³•é–‹å•Ÿè¼¸å‡ºåŒæ­¥éŽ– (mutex) %s:%s" + +#: src/posixos.c:855 +#, c-format +msgid "Cannot open '%s' with O_TMPFILE: %s.\n" +msgstr "" + +#: src/read.c:184 +#, c-format +msgid "Reading makefiles...\n" +msgstr "正在讀入 makefile...\n" + +#: src/read.c:330 +#, c-format +msgid "Reading makefile '%s'" +msgstr "正在讀入 makefile「%sã€" + +#: src/read.c:332 +#, c-format +msgid " (no default goal)" +msgstr " (沒有é è¨­ç›®æ¨™)" + +#: src/read.c:334 +#, c-format +msgid " (search path)" +msgstr " (æœå°‹è·¯å¾‘)" + +#: src/read.c:336 +#, c-format +msgid " (don't care)" +msgstr " (ä¸ç”¨ç†)" + +#: src/read.c:338 +#, c-format +msgid " (no ~ expansion)" +msgstr " (沒有 ~ 展開)" + +#: src/read.c:663 +#, c-format +msgid "Skipping UTF-8 BOM in makefile '%s'\n" +msgstr "è·³éŽ Makefile「%sã€ä¸­çš„ UTF-8 BOM\n" + +#: src/read.c:666 +#, c-format +msgid "Skipping UTF-8 BOM in makefile buffer\n" +msgstr "è·³éŽ Makefile ç·©è¡å€ä¸­çš„ UTF-8 BOM\n" + +#: src/read.c:795 +#, c-format +msgid "invalid syntax in conditional" +msgstr "æ¢ä»¶ä¸­å«æœ‰ç„¡æ•ˆèªžæ³•" + +#: src/read.c:1002 +#, c-format +msgid "recipe commences before first target" +msgstr "方案在第一個目標å‰é–‹å§‹" + +#: src/read.c:1053 +#, c-format +msgid "missing rule before recipe" +msgstr "方案之å‰éºæ¼äº†è¦å‰‡" + +#: src/read.c:1154 +#, c-format +msgid "missing separator (did you mean TAB instead of 8 spaces?)" +msgstr "缺少分隔符 (你大概想用 TABï¼Œè€Œä¸æ˜¯å…«å€‹ç©ºæ ¼)" + +#: src/read.c:1156 +#, c-format +msgid "missing separator" +msgstr "缺少分隔符" + +#: src/read.c:1300 +#, c-format +msgid "missing target pattern" +msgstr "無目標符åˆ" + +#: src/read.c:1302 +#, c-format +msgid "multiple target patterns" +msgstr "多個目標符åˆ" + +#: src/read.c:1306 +#, c-format +msgid "target pattern contains no '%%'" +msgstr "目標模å¼ä¸å«æœ‰ã€Œ%%ã€" + +#: src/read.c:1349 +#, c-format +msgid "missing 'endif'" +msgstr "éºæ¼ã€Œendifã€" + +#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#, c-format +msgid "empty variable name" +msgstr "空變數å" + +#: src/read.c:1423 +#, c-format +msgid "extraneous text after 'define' directive" +msgstr "「endefã€æŒ‡ä»¤å¾Œå«æœ‰ä¸è©²å‡ºç¾çš„æ–‡å­—" + +#: src/read.c:1448 +#, c-format +msgid "missing 'endef', unterminated 'define'" +msgstr "éºæ¼ã€Œendefã€ï¼Œæœªçµ‚止的「defineã€" + +#: src/read.c:1476 +#, c-format +msgid "extraneous text after 'endef' directive" +msgstr "「endefã€æŒ‡ä»¤å¾Œå«æœ‰ä¸è©²å‡ºç¾çš„æ–‡å­—" + +#: src/read.c:1548 +#, c-format +msgid "extraneous text after '%s' directive" +msgstr "在「%sã€æŒ‡ä»¤ä¹‹å¾Œå«æœ‰ä¸è©²å‡ºç¾çš„æ–‡å­—" + +#: src/read.c:1549 +#, c-format +msgid "extraneous '%s'" +msgstr "ä¸è©²å‡ºç¾çš„「%sã€" + +#: src/read.c:1577 +#, c-format +msgid "only one 'else' per conditional" +msgstr "æ¯å€‹æ¢ä»¶åªèƒ½æœ‰ä¸€å€‹ã€Œelseã€" + +#: src/read.c:1853 +#, c-format +msgid "Malformed target-specific variable definition" +msgstr "é‡å°ç›®æ¨™çš„ç´”é‡å®šç¾©æ ¼å¼éŒ¯èª¤" + +#: src/read.c:1995 +#, c-format +msgid ".WAIT should not have prerequisites" +msgstr ".WAIT 䏿‡‰æœ‰å‰æ" + +#: src/read.c:2001 +#, c-format +msgid ".WAIT should not have commands" +msgstr ".WAIT 䏿‡‰æœ‰å‘½ä»¤" + +#: src/read.c:2039 +#, c-format +msgid "prerequisites cannot be defined in recipes" +msgstr "ä¾è³´ç„¡æ³•在方案腳本中定義" + +#: src/read.c:2057 +#, c-format +msgid "grouped targets must provide a recipe" +msgstr "æˆçµ„的目標必須æä¾›ä¸€å€‹æ–¹æ¡ˆ" + +#: src/read.c:2100 +#, c-format +msgid "mixed implicit and static pattern rules" +msgstr "æ··åˆçš„éš±å«å’Œéœæ…‹æ¨¡å¼è¦å‰‡" + +#: src/read.c:2123 +#, c-format +msgid "mixed implicit and normal rules" +msgstr "æ··åˆçš„éš±å«å’Œæ™®é€šè¦å‰‡" + +#: src/read.c:2155 +#, c-format +msgid "target '%s' doesn't match the target pattern" +msgstr "目標「%sã€ä¸ç¬¦åˆç›®æ¨™æ¨¡å¼" + +#: src/read.c:2170 src/read.c:2221 +#, c-format +msgid "target file '%s' has both : and :: entries" +msgstr "目標檔案「%sã€å«æœ‰ : å’Œ :: 兩種æ¢ç›®" + +#: src/read.c:2176 +#, c-format +msgid "target '%s' given more than once in the same rule" +msgstr "目標「%sã€åœ¨åŒä¸€å€‹è¦å‰‡ä¸­çµ¦å‡ºäº†å¤šæ¬¡" + +#: src/read.c:2186 +#, c-format +msgid "warning: overriding recipe for target '%s'" +msgstr "警告:覆蓋關於目標「%sã€çš„æ–¹æ¡ˆ" + +#: src/read.c:2189 +#, c-format +msgid "warning: ignoring old recipe for target '%s'" +msgstr "警告:忽略關於目標「%sã€çš„舊方案" + +#: src/read.c:2308 +#, c-format +msgid "*** mixed implicit and normal rules: deprecated syntax" +msgstr "*** éš±å«å’Œæ™®é€šè¦å‰‡æ··åˆï¼šå·²æ£„用的語法" + +#: src/read.c:2325 +#, c-format +msgid "warning: overriding group membership for target '%s'" +msgstr "警告:覆蓋關於目標「%sã€çš„組æˆå“¡" + +#: src/read.c:2683 +#, c-format +msgid "warning: NUL character seen; rest of line ignored" +msgstr "警告:é‡åˆ°äº† NUL 字元;忽略行的剩餘部分" + +#: src/remake.c:97 +#, fuzzy, c-format +msgid "warning: pattern recipe did not update peer target '%s'." +msgstr "警告:覆蓋關於目標「%sã€çš„æ–¹æ¡ˆ" + +#: src/remake.c:254 +#, c-format +msgid "Nothing to be done for '%s'." +msgstr "å°ã€Œ%sã€ç„¡éœ€åšä»»ä½•事。" + +#: src/remake.c:255 +#, c-format +msgid "'%s' is up to date." +msgstr "「%sã€å·²æ˜¯æœ€æ–°ã€‚" + +#: src/remake.c:350 +#, c-format +msgid "Pruning file '%s'.\n" +msgstr "正刪除檔案「%sã€ã€‚\n" + +#: src/remake.c:416 +#, c-format +msgid "%sNo rule to make target '%s', needed by '%s'%s" +msgstr "%s沒有è¦å‰‡å¯è£½ä½œç›®æ¨™ã€Œ%sã€ï¼Œç”±ã€Œ%sã€%s 需求" + +#: src/remake.c:426 +#, c-format +msgid "%sNo rule to make target '%s'%s" +msgstr "%s沒有è¦å‰‡å¯è£½ä½œç›®æ¨™ã€Œ%sã€%s" + +#: src/remake.c:452 +#, c-format +msgid "Considering target file '%s'.\n" +msgstr "正在考慮目標檔案「%sã€ã€‚\n" + +#: src/remake.c:459 +#, c-format +msgid "Recently tried and failed to update file '%s'.\n" +msgstr "æœ€è¿‘å·²å˜—è©¦éŽæ›´æ–°æª”案「%sã€ä¸¦å¤±æ•—。\n" + +#: src/remake.c:471 +#, c-format +msgid "File '%s' was considered already.\n" +msgstr "å·²è€ƒæ…®éŽæª”案「%sã€ã€‚\n" + +#: src/remake.c:481 +#, c-format +msgid "Still updating file '%s'.\n" +msgstr "ä»ç„¶åœ¨æ›´æ–°æª”案「%sã€ã€‚\n" + +#: src/remake.c:484 +#, c-format +msgid "Finished updating file '%s'.\n" +msgstr "更新檔案「%sã€å®Œæˆã€‚\n" + +#: src/remake.c:513 +#, c-format +msgid "File '%s' does not exist.\n" +msgstr "檔案「%sã€ä¸å­˜åœ¨ã€‚\n" + +#: src/remake.c:520 +#, c-format +msgid "" +"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" +msgstr "*** 警告: .LOW_RESOLUTION_TIME 檔案 `%s' 有一個高精度的的時間標誌" + +#: src/remake.c:538 +#, c-format +msgid "Grouped target peer '%s' of file '%s' does not exist.\n" +msgstr "「%2$sã€æª”案的目的å°ç«¯ç¾¤çµ„「%1$sã€ä¸å­˜åœ¨ã€‚\n" + +#: src/remake.c:558 +#, c-format +msgid "Using default recipe for '%s'.\n" +msgstr "使用「%sã€çš„é è¨­æ–¹æ¡ˆã€‚\n" + +#: src/remake.c:603 src/remake.c:1165 +#, c-format +msgid "Circular %s <- %s dependency dropped." +msgstr "放棄循環ä¾è³´ %s <- %s 。" + +#: src/remake.c:737 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "目標檔案「%sã€çš„å‰æå·²å®Œæˆã€‚\n" + +#: src/remake.c:743 +#, c-format +msgid "The prerequisites of '%s' are being made.\n" +msgstr "正在製作「%sã€çš„å‰æã€‚\n" + +#: src/remake.c:757 +#, c-format +msgid "Giving up on target file '%s'.\n" +msgstr "放棄目標檔案「%sã€ã€‚\n" + +#: src/remake.c:762 +#, c-format +msgid "Target '%s' not remade because of errors." +msgstr "由於錯誤目標「%sã€ä¸¦æœªé‡æ–°è£½ä½œã€‚" + +#: src/remake.c:814 +#, c-format +msgid "Prerequisite '%s' is order-only for target '%s'.\n" +msgstr "å‰æã€Œ%sã€å°ç›®æ¨™ã€Œ%sã€ä¾†èªªåƒ…ç”¨æ–¼æŒ‡å®šåŸ·è¡Œé †åº (order-only) 。\n" + +#: src/remake.c:819 +#, c-format +msgid "Prerequisite '%s' of target '%s' does not exist.\n" +msgstr "目標「%2$sã€çš„å‰æã€Œ%1$sã€ä¸å­˜åœ¨ã€‚\n" + +#: src/remake.c:824 +#, c-format +msgid "Prerequisite '%s' is newer than target '%s'.\n" +msgstr "å‰æã€Œ%sã€æ¯”目標「%sã€æ–°ã€‚\n" + +#: src/remake.c:827 +#, c-format +msgid "Prerequisite '%s' is older than target '%s'.\n" +msgstr "å‰æã€Œ%sã€æ¯”目標「%sã€èˆŠã€‚\n" + +#: src/remake.c:845 +#, c-format +msgid "Target '%s' is double-colon and has no prerequisites.\n" +msgstr "目標「%sã€æ˜¯é›™å†’è™Ÿç›®æ¨™ä¸¦ä¸”æ²’æœ‰å‰æã€‚\n" + +#: src/remake.c:852 +#, c-format +msgid "No recipe for '%s' and no prerequisites actually changed.\n" +msgstr "沒有關於「%sã€çš„æ–¹æ¡ˆï¼Œä¸¦ä¸”æ²’æœ‰å¯¦éš›æ”¹è®Šçš„å‰æã€‚\n" + +#: src/remake.c:857 +#, c-format +msgid "Making '%s' due to always-make flag.\n" +msgstr "由於 always-make 標誌所以製作「%sã€ã€‚\n" + +#: src/remake.c:865 +#, c-format +msgid "No need to remake target '%s'" +msgstr "ä¸éœ€è¦é‡æ–°è£½ä½œç›®æ¨™ã€Œ%sã€" + +#: src/remake.c:867 +#, c-format +msgid "; using VPATH name '%s'" +msgstr ";使用 VPATH å稱「%sã€" + +#: src/remake.c:891 +#, c-format +msgid "Must remake target '%s'.\n" +msgstr "å¿…é ˆé‡æ–°è£½ä½œç›®æ¨™ã€Œ%sã€ã€‚\n" + +#: src/remake.c:897 +#, c-format +msgid " Ignoring VPATH name '%s'.\n" +msgstr " 忽略 VPATH å稱「%sã€ã€‚\n" + +#: src/remake.c:906 +#, c-format +msgid "Recipe of '%s' is being run.\n" +msgstr "「%sã€çš„æŒ‡ä»¤æ–¹æ¡ˆæ­£åœ¨è¢«åŸ·è¡Œã€‚\n" + +#: src/remake.c:913 +#, c-format +msgid "Failed to remake target file '%s'.\n" +msgstr "釿–°è£½ä½œç›®æ¨™æª”案「%sã€å¤±æ•—。\n" + +#: src/remake.c:916 +#, c-format +msgid "Successfully remade target file '%s'.\n" +msgstr "釿–°è£½ä½œç›®æ¨™æª”案「%sã€æˆåŠŸã€‚\n" + +#: src/remake.c:919 +#, c-format +msgid "Target file '%s' needs to be remade under -q.\n" +msgstr "目標檔案「%sã€éœ€è¦ä»¥ -q é¸é …釿–°è£½ä½œã€‚\n" + +#: src/remake.c:1118 +#, c-format +msgid "Using default commands for '%s'.\n" +msgstr "使用關於「%sã€çš„é è¨­æŒ‡ä»¤ã€‚\n" + +#: src/remake.c:1499 +#, c-format +msgid "Warning: File '%s' has modification time %s s in the future" +msgstr "警告:檔案「%sã€çš„修改時間在未來 %s 秒後" + +#: src/remake.c:1747 +#, c-format +msgid ".LIBPATTERNS element '%s' is not a pattern" +msgstr ".LIBPATTERNS 的元素「%sã€ä¸æ˜¯ä¸€å€‹æ¨¡å¼" + +#: src/remote-cstms.c:118 +#, c-format +msgid "Customs won't export: %s\n" +msgstr "使用者ä¸å¸Œæœ›åŒ¯å‡ºï¼š%s\n" + +#: src/rule.c:357 +msgid "warning: ignoring prerequisites on suffix rule definition" +msgstr "警告:忽略後綴è¦å‰‡å®šç¾©çš„剿" + +#: src/rule.c:592 +msgid "" +"\n" +"# Implicit Rules" +msgstr "" +"\n" +"# éš±å«è¦å‰‡" + +#: src/rule.c:607 +msgid "" +"\n" +"# No implicit rules." +msgstr "" +"\n" +"# 沒有隱å«è¦å‰‡ã€‚" + +#: src/rule.c:610 +#, c-format +msgid "" +"\n" +"# %u implicit rules, %u (%.1f%%) terminal." +msgstr "" +"\n" +"# %u æ¢éš±å«è¦å‰‡ï¼Œ%u (%.1f%%) 為末端。" + +#: src/rule.c:619 +#, c-format +msgid "BUG: num_pattern_rules is wrong! %u != %u" +msgstr "BUG:num_pattern_rules 出錯ï¼%u != %u" + +#: src/shuffle.c:93 +#, c-format +msgid "invalid shuffle mode: %s: '%s'" +msgstr "ç„¡æ•ˆçš„é‡æ–°æŽ’åºæ¨¡å¼ï¼š%s:「%sã€" + +#: src/signame.c:84 +msgid "unknown signal" +msgstr "未知的訊號" + +#: src/signame.c:92 +msgid "Hangup" +msgstr "掛斷" + +#: src/signame.c:95 +msgid "Interrupt" +msgstr "中止" + +#: src/signame.c:98 +msgid "Quit" +msgstr "çµæŸ" + +#: src/signame.c:101 +msgid "Illegal Instruction" +msgstr "無效指令" + +#: src/signame.c:104 +msgid "Trace/breakpoint trap" +msgstr "追蹤 / 斷點陷阱" + +#: src/signame.c:109 +msgid "Aborted" +msgstr "å–æ¶ˆ" + +#: src/signame.c:112 +msgid "IOT trap" +msgstr "IOT 陷阱" + +#: src/signame.c:115 +msgid "EMT trap" +msgstr "EMT 陷阱" + +#: src/signame.c:118 +msgid "Floating point exception" +msgstr "期望浮點數" + +#: src/signame.c:121 +msgid "Killed" +msgstr "å¼·åˆ¶çµæŸ" + +#: src/signame.c:124 +msgid "Bus error" +msgstr "åŒ¯æµæŽ’éŒ¯èª¤" + +#: src/signame.c:127 +msgid "Segmentation fault" +msgstr "分割錯誤" + +#: src/signame.c:130 +msgid "Bad system call" +msgstr "無效系統呼å«" + +#: src/signame.c:133 +msgid "Broken pipe" +msgstr "管線æå£ž" + +#: src/signame.c:136 +msgid "Alarm clock" +msgstr "鬧é˜" + +#: src/signame.c:139 +msgid "Terminated" +msgstr "終止" + +#: src/signame.c:142 +msgid "User defined signal 1" +msgstr "使用者定義信號 1" + +#: src/signame.c:145 +msgid "User defined signal 2" +msgstr "使用者定義信號 2" + +#: src/signame.c:150 src/signame.c:153 +msgid "Child exited" +msgstr "å­ç¨‹åºé€€å‡º" + +#: src/signame.c:156 +msgid "Power failure" +msgstr "é›»æºéŒ¯èª¤" + +#: src/signame.c:159 +msgid "Stopped" +msgstr "åœæ­¢" + +#: src/signame.c:162 +msgid "Stopped (tty input)" +msgstr "åœæ­¢ï¼ˆtty 輸入)" + +#: src/signame.c:165 +msgid "Stopped (tty output)" +msgstr "åœæ­¢ï¼ˆtty 輸出)" + +#: src/signame.c:168 +msgid "Stopped (signal)" +msgstr "åœæ­¢ï¼ˆä¿¡è™Ÿï¼‰" + +#: src/signame.c:171 +msgid "CPU time limit exceeded" +msgstr "åˆ°é” CPU 時間上é™" + +#: src/signame.c:174 +msgid "File size limit exceeded" +msgstr "åˆ°é”æª”案大å°ä¸Šé™" + +#: src/signame.c:177 +msgid "Virtual timer expired" +msgstr "è™›æ“¬è¨ˆæ™‚å™¨éŽæœŸ" + +#: src/signame.c:180 +msgid "Profiling timer expired" +msgstr "分æžè¨ˆæ™‚å™¨éŽæœŸ" + +#: src/signame.c:186 +msgid "Window changed" +msgstr "已變更視窗" + +#: src/signame.c:189 +msgid "Continued" +msgstr "繼續" + +#: src/signame.c:192 +msgid "Urgent I/O condition" +msgstr "緊急 I/O æ¢ä»¶" + +#: src/signame.c:199 src/signame.c:208 +msgid "I/O possible" +msgstr "å¯èƒ½ I/O" + +#: src/signame.c:202 +msgid "SIGWIND" +msgstr "SIGWIND" + +#: src/signame.c:205 +msgid "SIGPHONE" +msgstr "SIGPHONE" + +#: src/signame.c:211 +msgid "Resource lost" +msgstr "資æºéºå¤±" + +#: src/signame.c:214 +msgid "Danger signal" +msgstr "å±éšªè¨Šè™Ÿ" + +#: src/signame.c:217 +msgid "Information request" +msgstr "資訊請求" + +#: src/signame.c:220 +msgid "Floating point co-processor not available" +msgstr "浮點數å”處ç†å™¨ä¸å¯ç”¨" + +#: src/strcache.c:274 +#, c-format +msgid "" +"\n" +"%s No strcache buffers\n" +msgstr "" +"\n" +"%s 沒有 strcache ç·©è¡å€\n" + +#: src/strcache.c:304 +#, c-format +msgid "" +"\n" +"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu " +"B\n" +msgstr "" +"\n" +"%s strcache ç·©è¡: %lu (%lu) / 字串 = %lu / 空間 = %lu B / å¹³å‡ = %lu B\n" + +#: src/strcache.c:308 +#, c-format +msgid "" +"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n" +msgstr "%s ç›®å‰ç·©è¡: 尺寸 = %hu B / 已用 = %hu B / æ•¸é‡ = %hu / å¹³å‡ = %u B\n" + +#: src/strcache.c:319 +#, c-format +msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n" +msgstr "%s 其他已用: 總共 = %lu B / æ•¸é‡ = %lu / å¹³å‡ = %lu B\n" + +#: src/strcache.c:322 +#, c-format +msgid "" +"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n" +msgstr "" +"%s 其他空餘: 總共 = %lu B / 最大 = %lu B / æœ€å° = %lu B / å¹³å‡ = %hu B\n" + +#: src/strcache.c:326 +#, c-format +msgid "" +"\n" +"%s strcache performance: lookups = %lu / hit rate = %lu%%\n" +msgstr "" +"\n" +"%s strcache 性能:尋找 = %lu / 命中率 = %lu%%\n" + +#: src/strcache.c:328 +msgid "" +"# hash-table stats:\n" +"# " +msgstr "" +"# 雜湊表統計資料:\n" +"# " + +#: src/variable.c:1786 +msgid "automatic" +msgstr "自動" + +#: src/variable.c:1789 +msgid "default" +msgstr "é è¨­" + +#: src/variable.c:1792 +msgid "environment" +msgstr "環境" + +#: src/variable.c:1795 +msgid "makefile" +msgstr "makefile" + +#: src/variable.c:1798 +msgid "environment under -e" +msgstr "-e 指定的環境變數" + +#: src/variable.c:1801 +msgid "command line" +msgstr "指令列" + +#: src/variable.c:1804 +msgid "'override' directive" +msgstr "「overrideã€æŒ‡ä»¤" + +#: src/variable.c:1814 +#, c-format +msgid " (from '%s', line %lu)" +msgstr " (從「%sã€ï¼Œè¡Œ %lu)" + +#: src/variable.c:1877 +msgid "# variable set hash-table stats:\n" +msgstr "# 變數的雜湊表狀態:\n" + +#: src/variable.c:1888 +msgid "" +"\n" +"# Variables\n" +msgstr "" +"\n" +"# 變數\n" + +#: src/variable.c:1892 +msgid "" +"\n" +"# Pattern-specific Variable Values" +msgstr "" +"\n" +"# Pattern-specific 變數值" + +#: src/variable.c:1906 +msgid "" +"\n" +"# No pattern-specific variable values." +msgstr "" +"\n" +"# 沒有 pattern-specific 變數的值。" + +#: src/variable.c:1908 +#, c-format +msgid "" +"\n" +"# %u pattern-specific variable values" +msgstr "" +"\n" +"# %u 個 pattern-specific 變數的值" + +#: src/variable.h:237 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "警告:未定義的變數「%.*sã€" + +#: src/vmsfunctions.c:91 +#, c-format +msgid "sys$search() failed with %d\n" +msgstr "sys$search() 失敗並返回 %d\n" + +#: src/vmsjobs.c:244 +#, c-format +msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n" +msgstr "-警告, ä½ å¯èƒ½å¿…須從 DCL 釿–°å•Ÿç”¨ CTRL-Y 處ç†ã€‚\n" + +#: src/vmsjobs.c:681 +#, c-format +msgid "BUILTIN CD %s\n" +msgstr "BUILTIN CD %s\n" + +#: src/vmsjobs.c:1224 +#, c-format +msgid "DCL: %s\n" +msgstr "DCL:%s\n" + +#: src/vmsjobs.c:1281 +#, c-format +msgid "Append output to %s\n" +msgstr "將輸出追加到 %s\n" + +#: src/vmsjobs.c:1306 +#, c-format +msgid "Append %.*s and cleanup\n" +msgstr "追加 %.*s 並清ç†\n" + +#: src/vmsjobs.c:1319 +#, c-format +msgid "Executing %s instead\n" +msgstr "執行 %s 作為替代\n" + +#: src/vpath.c:600 +msgid "" +"\n" +"# VPATH Search Paths\n" +msgstr "" +"\n" +"# VPATH æœå°‹è·¯å¾‘\n" + +#: src/vpath.c:617 +msgid "# No 'vpath' search paths." +msgstr "# 沒有「vpathã€æœå°‹è·¯å¾‘。" + +#: src/vpath.c:619 +#, c-format +msgid "" +"\n" +"# %u 'vpath' search paths.\n" +msgstr "" +"\n" +"# %u「vpathã€æœå°‹è·¯å¾‘。\n" + +#: src/vpath.c:622 +msgid "" +"\n" +"# No general ('VPATH' variable) search path." +msgstr "" +"\n" +"# 沒有通用æœå°‹è·¯å¾‘(「VPATHã€è®Šæ•¸)。" + +#: src/vpath.c:628 +msgid "" +"\n" +"# General ('VPATH' variable) search path:\n" +"# " +msgstr "" +"\n" +"# 通用æœå°‹è·¯å¾‘ (「VPATHã€è®Šæ•¸):\n" +"# " + +#: src/w32/w32os.c:224 +#, c-format +msgid "Jobserver slots limited to %d\n" +msgstr "Jobserver æ§½ä½æ•¸é™åˆ¶ç‚º %d\n" + +#: src/w32/w32os.c:240 +#, c-format +msgid "creating jobserver semaphore: (Error %ld: %s)" +msgstr "正建立 jobserver 訊號é‡ï¼šï¼ˆéŒ¯èª¤ %ld:%s)" + +#: src/w32/w32os.c:259 +#, c-format +msgid "" +"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "內部錯誤:無法打開 jobserver 訊號é‡ã€Œ%sã€ï¼šï¼ˆéŒ¯èª¤ %ld:%s)" + +#: src/w32/w32os.c:262 +#, c-format +msgid "Jobserver client (semaphore %s)\n" +msgstr "Jobserver å®¢æˆ¶ç«¯ï¼ˆè¨Šè™Ÿé‡ %s)\n" + +#: src/w32/w32os.c:310 +#, c-format +msgid "release jobserver semaphore: (Error %ld: %s)" +msgstr "釋放 jobserver 訊號é‡ï¼šï¼ˆéŒ¯èª¤ %ld:%s)" + +#: src/w32/w32os.c:381 +#, c-format +msgid "semaphore or child process wait: (Error %ld: %s)" +msgstr "è¨Šè™Ÿé‡æˆ–å­ç¨‹åºç­‰å¾…:(錯誤 %ld:%s)" + +#: src/w32/w32os.c:449 +#, c-format +msgid "cannot parse output sync mutex %s: %s" +msgstr "無法解æžè¼¸å‡ºåŒæ­¥éŽ– (mutex) %s:%s" + +#: src/w32/w32os.c:452 +#, c-format +msgid "invalid output sync mutex: %s" +msgstr "ç„¡æ•ˆçš„è¼¸å‡ºåŒæ­¥éŽ– (mutex):%s" + +#~ msgid "Jobserver setup (fifo %s)\n" +#~ msgstr "Jobserver é…ç½® (fifo %s)\n" + +#~ msgid "Jobserver setup (fds %d,%d)\n" +#~ msgstr "Jobserver é…ç½® (fds %d,%d)\n" + +#~ msgid "Jobserver client (fds %d,%d)\n" +#~ msgstr "Jobserver 客戶端(檔案æè¿°ç¬¦ %d,%d)\n" + +#~ msgid "fopen (temporary file)" +#~ msgstr "fopen (暫存檔)" + +#~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" +#~ msgstr "%s: 使用者 %lu (真實使用者 %lu), 組 %lu (真實組 %lu)\n" + +#~ msgid "Initialized access" +#~ msgstr "åˆå§‹åŒ–æˆåŠŸ" + +#~ msgid "User access" +#~ msgstr "使用者權é™" + +#~ msgid "Make access" +#~ msgstr "Make 權é™" + +#~ msgid "Child access" +#~ msgstr "å­ç¨‹åº 權é™" + +#~ msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build." +#~ msgstr "-O[類型] (--output-sync[=類型]) 並未設定入此 make 構建。" + +#~ msgid "jobserver pipeline" +#~ msgstr "作業伺æœå™¨ç®¡é“" + +#~ msgid "write error" +#~ msgstr "寫入時發生錯誤" diff --git a/local/recipes/dev/gnu-make/source/src/amiga.c b/local/recipes/dev/gnu-make/source/src/amiga.c new file mode 100644 index 0000000000..2304716e84 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/amiga.c @@ -0,0 +1,113 @@ +/* Running commands on Amiga +Copyright (C) 1995-2022 Free Software 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 . */ + +#include "makeint.h" +#include "variable.h" +#include "amiga.h" +#include +#include +#include +#include +#include + +static const char Amiga_version[] = "$VER: Make 3.74.3 (12.05.96) \n" + "Amiga Port by A. Digulla (digulla@home.lake.de)"; + +int +MyExecute (char **argv) +{ + char * buffer, * ptr; + char ** aptr; + int len = 0; + int status; + + for (aptr=argv; *aptr; aptr++) + { + len += strlen (*aptr) + 4; + } + + buffer = AllocMem (len, MEMF_ANY); + + if (!buffer) + O (fatal, NILF, "MyExecute: Cannot allocate space for calling a command"); + + ptr = buffer; + + for (aptr=argv; *aptr; aptr++) + { + if (((*aptr)[0] == ';' && !(*aptr)[1])) + { + *ptr ++ = '"'; + ptr = stpcpy (ptr, *aptr); + *(ptr++) = '"'; + } + else if ((*aptr)[0] == '@' && (*aptr)[1] == '@' && !(*aptr)[2]) + { + *ptr ++ = '\n'; + continue; + } + else + ptr = stpcpy (ptr, *aptr); + *ptr ++ = ' '; + *ptr = 0; + } + + ptr[-1] = '\n'; + + status = SystemTags (buffer, + SYS_UserShell, TRUE, + TAG_END); + + FreeMem (buffer, len); + + if (SetSignal (0L,0L) & SIGBREAKF_CTRL_C) + status = 20; + + /* Warnings don't count */ + if (status == 5) + status = 0; + + return status; +} + +char * +wildcard_expansion (char *wc, char *o) +{ +# define PATH_SIZE 1024 + struct AnchorPath * apath; + + if ( (apath = AllocMem (sizeof (struct AnchorPath) + PATH_SIZE, + 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); + } + + return o; +} diff --git a/local/recipes/dev/gnu-make/source/src/amiga.h b/local/recipes/dev/gnu-make/source/src/amiga.h new file mode 100644 index 0000000000..bef5087ffd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/amiga.h @@ -0,0 +1,18 @@ +/* Definitions for amiga specific things +Copyright (C) 1995-2022 Free Software 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 . */ + +int MyExecute (char ** argv); +char * wildcard_expansion (char * wc, char * o); diff --git a/local/recipes/dev/gnu-make/source/src/ar.c b/local/recipes/dev/gnu-make/source/src/ar.c new file mode 100644 index 0000000000..7b607dcdf5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/ar.c @@ -0,0 +1,332 @@ +/* Interface to 'ar' archives for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" + +#ifndef NO_ARCHIVES + +#include "filedef.h" +#include "dep.h" +#include +#include + +/* Return nonzero if NAME is an archive-member reference, zero if not. An + archive-member reference is a name like 'lib(member)' where member is a + non-empty string. + If a name like 'lib((entry))' is used, a fatal error is signaled at + the attempt to use this unsupported feature. */ + +int +ar_name (const char *name) +{ + const char *p = strchr (name, '('); + const char *end; + + if (p == NULL || p == name) + return 0; + + end = p + strlen (p) - 1; + if (*end != ')' || end == p + 1) + return 0; + + if (p[1] == '(' && end[-1] == ')') + OS (fatal, NILF, _("attempt to use unsupported feature: '%s'"), name); + + return 1; +} + + +/* Parse the archive-member reference NAME into the archive and member names. + Creates one allocated string containing both names, pointed to by ARNAME_P. + MEMNAME_P points to the member. */ + +void +ar_parse_name (const char *name, char **arname_p, char **memname_p) +{ + char *p; + + *arname_p = xstrdup (name); + p = strchr (*arname_p, '('); + /* This is never called unless ar_name() is true so p cannot be NULL. */ + if (!p) + OS (fatal, NILF, "Internal: ar_parse_name: bad name '%s'", *arname_p); + *(p++) = '\0'; + p[strlen (p) - 1] = '\0'; + *memname_p = p; +} + + +/* This function is called by 'ar_scan' to find which member to look at. */ + +/* ARGSUSED */ +static intmax_t +ar_member_date_1 (int desc UNUSED, const char *mem, int truncated, + long int hdrpos UNUSED, long int datapos UNUSED, + long int size UNUSED, intmax_t date, + int uid UNUSED, int gid UNUSED, unsigned int mode UNUSED, + const void *name) +{ + return ar_name_equal (name, mem, truncated) ? date : 0; +} + +/* Return the modtime of NAME. */ + +time_t +ar_member_date (const char *name) +{ + char *arname; + char *memname; + intmax_t val; + + ar_parse_name (name, &arname, &memname); + + /* Make sure we know the modtime of the archive itself because we are + likely to be called just before commands to remake a member are run, + and they will change the archive itself. + + But we must be careful not to enter_file the archive itself if it does + not exist, because pattern_search assumes that files found in the data + base exist or can be made. */ + { + struct file *arfile; + arfile = lookup_file (arname); + if (arfile == 0 && file_exists_p (arname)) + arfile = enter_file (strcache_add (arname)); + + if (arfile != 0) + (void) f_mtime (arfile, 0); + } + + val = ar_scan (arname, ar_member_date_1, memname); + + free (arname); + + return 0 < val && val <= TYPE_MAXIMUM (time_t) ? val : -1; +} + +/* Set the archive-member NAME's modtime to now. */ + +#ifdef VMS +int +ar_touch (const char *name) +{ + O (error, NILF, _("touch archive member is not available on VMS")); + return -1; +} +#else +int +ar_touch (const char *name) +{ + char *arname, *memname; + int val; + + ar_parse_name (name, &arname, &memname); + + /* Make sure we know the modtime of the archive itself before we + touch the member, since this will change the archive modtime. */ + { + struct file *arfile; + arfile = enter_file (strcache_add (arname)); + f_mtime (arfile, 0); + } + + val = 1; + switch (ar_member_touch (arname, memname)) + { + case -1: + OS (error, NILF, _("touch: Archive '%s' does not exist"), arname); + break; + case -2: + OS (error, NILF, _("touch: '%s' is not a valid archive"), arname); + break; + case -3: + perror_with_name ("touch: ", arname); + break; + case 1: + OSS (error, NILF, + _("touch: Member '%s' does not exist in '%s'"), memname, arname); + break; + case 0: + val = 0; + break; + default: + OS (error, NILF, + _("touch: Bad return code from ar_member_touch on '%s'"), name); + } + + free (arname); + + return val; +} +#endif /* !VMS */ + +/* State of an 'ar_glob' run, passed to 'ar_glob_match'. */ + +/* On VMS, (object) modules in libraries do not have suffixes. That is, to + find a match for a pattern, the pattern must not have any suffix. So the + suffix of the pattern is saved and the pattern is stripped (ar_glob). + If there is a match and the match, which is a module name, is added to + the chain, the saved suffix is added back to construct a source filename + (ar_glob_match). */ + +struct ar_glob_state + { + const char *arname; + const char *pattern; +#ifdef VMS + char *suffix; +#endif + size_t size; + struct nameseq *chain; + unsigned int n; + }; + +/* This function is called by 'ar_scan' to match one archive + element against the pattern in STATE. */ + +static intmax_t +ar_glob_match (int desc UNUSED, const char *mem, int truncated UNUSED, + long int hdrpos UNUSED, long int datapos UNUSED, + long int size UNUSED, intmax_t date UNUSED, int uid UNUSED, + int gid UNUSED, unsigned int mode UNUSED, const void *arg) +{ + struct ar_glob_state *state = (struct ar_glob_state *)arg; + + if (fnmatch (state->pattern, mem, FNM_PATHNAME|FNM_PERIOD) == 0) + { + /* We have a match. Add it to the chain. */ + struct nameseq *new = xcalloc (state->size); +#ifdef VMS + if (state->suffix) + new->name = strcache_add( + concat(5, state->arname, "(", mem, state->suffix, ")")); + else +#endif + new->name = strcache_add(concat(4, state->arname, "(", mem, ")")); + new->next = state->chain; + state->chain = new; + ++state->n; + } + + return 0; +} + +/* Return nonzero if PATTERN contains any metacharacters. + Metacharacters can be quoted with backslashes if QUOTE is nonzero. */ +static int +ar_glob_pattern_p (const char *pattern, int quote) +{ + const char *p; + int opened = 0; + + for (p = pattern; *p != '\0'; ++p) + switch (*p) + { + case '?': + case '*': + return 1; + + case '\\': + if (quote) + ++p; + break; + + case '[': + opened = 1; + break; + + case ']': + if (opened) + return 1; + break; + } + + return 0; +} + +/* Glob for MEMBER_PATTERN in archive ARNAME. + Return a malloc'd chain of matching elements (or nil if none). */ + +struct nameseq * +ar_glob (const char *arname, const char *member_pattern, size_t size) +{ + struct ar_glob_state state; + struct nameseq *n; + const char **names; + unsigned int i; +#ifdef VMS + char *vms_member_pattern; +#endif + if (! ar_glob_pattern_p (member_pattern, 1)) + return 0; + + /* Scan the archive for matches. + ar_glob_match will accumulate them in STATE.chain. */ + state.arname = arname; + state.pattern = member_pattern; +#ifdef VMS + { + /* In a copy of the pattern, find the suffix, save it and remove it from + the pattern */ + char *lastdot; + vms_member_pattern = xstrdup(member_pattern); + lastdot = strrchr(vms_member_pattern, '.'); + state.suffix = lastdot; + if (lastdot) + { + state.suffix = xstrdup(lastdot); + *lastdot = 0; + } + state.pattern = vms_member_pattern; + } +#endif + state.size = size; + state.chain = 0; + state.n = 0; + ar_scan (arname, ar_glob_match, &state); + +#ifdef VMS + /* Deallocate any duplicated string */ + free(vms_member_pattern); + if (state.suffix) + { + free(state.suffix); + } +#endif + + if (state.chain == 0) + return 0; + + /* Now put the names into a vector for sorting. */ + names = alloca (state.n * sizeof (const char *)); + i = 0; + for (n = state.chain; n != 0; n = n->next) + names[i++] = n->name; + + /* Sort them alphabetically. */ + /* MSVC erroneously warns without a cast here. */ + qsort ((void *)names, i, sizeof (*names), alpha_compare); + + /* Put them back into the chain in the sorted order. */ + i = 0; + for (n = state.chain; n != 0; n = n->next) + n->name = names[i++]; + + return state.chain; +} + +#endif /* Not NO_ARCHIVES. */ diff --git a/local/recipes/dev/gnu-make/source/src/arscan.c b/local/recipes/dev/gnu-make/source/src/arscan.c new file mode 100644 index 0000000000..208bf84c9f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/arscan.c @@ -0,0 +1,1013 @@ +/* Library function for scanning an archive file. +Copyright (C) 1987-2022 Free Software 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 . */ + +#include "makeint.h" + +#ifdef TEST +/* Hack, the real error() routine eventually pulls in die from main.c */ +#define error(a, b, c, d) +#endif + +#ifdef HAVE_FCNTL_H +#include +#else +#include +#endif + +#ifndef NO_ARCHIVES + +#ifdef VMS +#include +#include +#include +#include +#include +#include +#include +#include + +/* This symbol should be present in lbrdef.h. */ +#if !defined LBR$_HDRTRUNC +#pragma extern_model save +#pragma extern_model globalvalue +extern unsigned int LBR$_HDRTRUNC; +#pragma extern_model restore +#endif + +#include +#include + +const char * +vmsify (const char *name, int type); + +/* Time conversion from VMS to Unix + Conversion from local time (stored in library) to GMT (needed for gmake) + Note: The tm_gmtoff element is a VMS extension to the ANSI standard. */ +static time_t +vms_time_to_unix(void *vms_time) +{ + struct tm *tmp; + time_t unix_time; + + unix_time = decc$fix_time(vms_time); + tmp = localtime(&unix_time); + unix_time -= tmp->tm_gmtoff; + + return unix_time; +} + + +/* VMS library routines need static variables for callback */ +static void *VMS_lib_idx; + +static const void *VMS_saved_arg; + +static intmax_t (*VMS_function) (); + +static intmax_t VMS_function_ret; + + +/* This is a callback procedure for lib$get_index */ +static int +VMS_get_member_info(struct dsc$descriptor_s *module, unsigned long *rfa) +{ + int status, i; + const int truncated = 0; /* Member name may be truncated */ + time_t member_date; /* Member date */ + char *filename; + unsigned int buffer_length; /* Actual buffer length */ + + /* Unused constants - Make does not actually use most of these */ + const int file_desc = -1; /* archive file descriptor for reading the data */ + const int header_position = 0; /* Header position */ + const int data_position = 0; /* Data position in file */ + const int data_size = 0; /* Data size */ + const int uid = 0; /* member gid */ + const int gid = 0; /* member gid */ + const int mode = 0; /* member protection mode */ + /* End of unused constants */ + + static struct dsc$descriptor_s bufdesc = + { 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL }; + + /* Only need the module definition */ + struct mhddef *mhd; + + /* If a previous callback is non-zero, just return that status */ + if (VMS_function_ret) + { + return SS$_NORMAL; + } + + /* lbr_set_module returns more than just the module header. So allocate + a buffer which is big enough: the maximum LBR$C_MAXHDRSIZ. That's at + least bigger than the size of struct mhddef. + If the request is too small, a buffer truncated warning is issued so + it can be reissued with a larger buffer. + We do not care if the buffer is truncated, so that is still a success. */ + mhd = xmalloc(LBR$C_MAXHDRSIZ); + bufdesc.dsc$a_pointer = (char *) mhd; + bufdesc.dsc$w_length = LBR$C_MAXHDRSIZ; + + status = lbr$set_module(&VMS_lib_idx, rfa, &bufdesc, &buffer_length, 0); + + if ((status != LBR$_HDRTRUNC) && !$VMS_STATUS_SUCCESS(status)) + { + ON(error, NILF, + _("lbr$set_module() failed to extract module info, status = %d"), + status); + + lbr$close(&VMS_lib_idx); + + return status; + } + +#ifdef TEST + /* When testing this code, it is useful to know the length returned */ + printf ("Input length = %d, actual = %u\n", + bufdesc.dsc$w_length, buffer_length); +#endif + + /* Conversion from VMS time to C time. + VMS defectlet - mhddef is sub-optimal, for the time, it has a 32 bit + longword, mhd$l_datim, and a 32 bit fill instead of two longwords, or + equivalent. */ + member_date = vms_time_to_unix(&mhd->mhd$l_datim); + free(mhd); + + /* Here we have a problem. The module name on VMS does not have + a file type, but the filename pattern in the "VMS_saved_arg" + may have one. + But only the method being called knows how to interpret the + filename pattern. + There are currently two different formats being used. + This means that we need a VMS specific code in those methods + to handle it. */ + filename = xmalloc(module->dsc$w_length + 1); + + /* TODO: We may need an option to preserve the case of the module + For now force the module name to lower case */ + for (i = 0; i < module->dsc$w_length; i++) + filename[i] = _tolower((unsigned char )module->dsc$a_pointer[i]); + + filename[i] = '\0'; + + VMS_function_ret = (*VMS_function)(file_desc, filename, truncated, + header_position, data_position, data_size, member_date, uid, gid, mode, + VMS_saved_arg); + + free(filename); + return SS$_NORMAL; +} + + +/* Takes three arguments ARCHIVE, FUNCTION and ARG. + + Open the archive named ARCHIVE, find its members one by one, + and for each one call FUNCTION with the following arguments: + archive file descriptor for reading the data, + member name, + member name might be truncated flag, + member header position in file, + member data position in file, + member data size, + member date, + member uid, + member gid, + member protection mode, + ARG. + + NOTE: on VMS systems, only name, date, and arg are meaningful! + + The descriptor is poised to read the data of the member + when FUNCTION is called. It does not matter how much + data FUNCTION reads. + + If FUNCTION returns nonzero, we immediately return + what FUNCTION returned. + + Returns -1 if archive does not exist, + Returns -2 if archive has invalid format. + Returns 0 if have scanned successfully. */ + +intmax_t +ar_scan (const char *archive, ar_member_func_t function, const void *varg) +{ + char *vms_archive; + + static struct dsc$descriptor_s libdesc = + { 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL }; + + const unsigned long func = LBR$C_READ; + const unsigned long type = LBR$C_TYP_UNK; + const unsigned long index = 1; + unsigned long lib_idx; + int status; + + VMS_saved_arg = varg; + + /* Null archive string can show up in test and cause an access violation */ + if (archive == NULL) + { + /* Null filenames do not exist */ + return -1; + } + + /* archive path name must be in VMS format */ + vms_archive = (char *) vmsify(archive, 0); + + status = lbr$ini_control(&VMS_lib_idx, &func, &type, 0); + + if (!$VMS_STATUS_SUCCESS(status)) + { + ON(error, NILF, _("lbr$ini_control() failed with status = %d"), status); + return -2; + } + + libdesc.dsc$a_pointer = vms_archive; + libdesc.dsc$w_length = strlen(vms_archive); + + status = lbr$open(&VMS_lib_idx, &libdesc, 0, NULL, 0, NULL, 0); + + if (!$VMS_STATUS_SUCCESS(status)) + { + + /* TODO: A library format failure could mean that this is a file + generated by the GNU AR utility and in that case, we need to + take the UNIX codepath. This will also take a change to the + GNV AR wrapper program. */ + + switch (status) + { + case RMS$_FNF: + /* Archive does not exist */ + return -1; + default: +#ifndef TEST + OSN(error, NILF, + _("unable to open library '%s' to lookup member status %d"), + archive, status); +#endif + /* For library format errors, specification says to return -2 */ + return -2; + } + } + + VMS_function = function; + + /* Clear the return status, as we are supposed to stop calling the + callback function if it becomes non-zero, and this is a static + variable. */ + VMS_function_ret = 0; + + status = lbr$get_index(&VMS_lib_idx, &index, VMS_get_member_info, NULL, 0); + + lbr$close(&VMS_lib_idx); + + /* Unless a failure occurred in the lbr$ routines, return the + the status from the 'function' routine. */ + if ($VMS_STATUS_SUCCESS(status)) + { + return VMS_function_ret; + } + + /* This must be something wrong with the library and an error + message should already have been printed. */ + return -2; +} + +#else /* !VMS */ + +/* SCO Unix's compiler defines both of these. */ +#ifdef M_UNIX +#undef M_XENIX +#endif + +/* On the sun386i and in System V rel 3, ar.h defines two different archive + formats depending upon whether you have defined PORTAR (normal) or PORT5AR + (System V Release 1). There is no default, one or the other must be defined + to have a nonzero value. */ + +#if (!defined (PORTAR) || PORTAR == 0) && (!defined (PORT5AR) || PORT5AR == 0) +#undef PORTAR +#ifdef M_XENIX +/* According to Jim Sievert , for SCO XENIX defining + PORTAR to 1 gets the wrong archive format, and defining it to 0 gets the + right one. */ +#define PORTAR 0 +#else +#define PORTAR 1 +#endif +#endif + +/* On AIX, define these symbols to be sure to get both archive formats. + AIX 4.3 introduced the "big" archive format to support 64-bit object + files, so on AIX 4.3 systems we need to support both the "normal" and + "big" archive formats. An archive's format is indicated in the + "fl_magic" field of the "FL_HDR" structure. For a normal archive, + this field will be the string defined by the AIAMAG symbol. For a + "big" archive, it will be the string defined by the AIAMAGBIG symbol + (at least on AIX it works this way). + + Note: we'll define these symbols regardless of which AIX version + we're compiling on, but this is okay since we'll use the new symbols + only if they're present. */ +#ifdef _AIX +# define __AR_SMALL__ +# define __AR_BIG__ +#endif + +#ifndef WINDOWS32 +# if 0 +# include +# else + /* These platforms don't have but have archives in the same format + * as many other Unices. This was taken from GNU binutils for BeOS. + */ +# define ARMAG "!\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. */ + }; +# endif +# define TOCHAR(_m) (_m) +#else +/* These should allow us to read Windows (VC++) libraries (according to Frank + * Libbrecht ) + */ +# include +# include +# include +# define ARMAG IMAGE_ARCHIVE_START +# define SARMAG IMAGE_ARCHIVE_START_SIZE +# define ar_hdr _IMAGE_ARCHIVE_MEMBER_HEADER +# define ar_name Name +# define ar_mode Mode +# define ar_size Size +# define ar_date Date +# define ar_uid UserID +# define ar_gid GroupID +/* In Windows the member names have type BYTE so we must cast them. */ +# define TOCHAR(_m) ((char *)(_m)) +#endif + +/* Cray's apparently defines this. */ +#ifndef AR_HDR_SIZE +# define AR_HDR_SIZE (sizeof (struct ar_hdr)) +#endif + +#include "intprops.h" + +#include "output.h" + + +static uintmax_t +parse_int (const char *ptr, const size_t len, const int base, uintmax_t max, + const char *type, const char *archive, const char *name) +{ + const char *const ep = ptr + len; + const int maxchar = '0' + base - 1; + uintmax_t val = 0; + + /* In all the versions I know of the spaces come last, but be safe. */ + while (ptr < ep && *ptr == ' ') + ++ptr; + + while (ptr < ep && *ptr != ' ') + { + uintmax_t nv; + + if (*ptr < '0' || *ptr > maxchar) + OSSS (fatal, NILF, + _("Invalid %s for archive %s member %s"), type, archive, name); + nv = (val * base) + (*ptr - '0'); + if (nv < val || nv > max) + OSSS (fatal, NILF, + _("Invalid %s for archive %s member %s"), type, archive, name); + val = nv; + ++ptr; + } + + return val; +} + +/* Takes three arguments ARCHIVE, FUNCTION and ARG. + + Open the archive named ARCHIVE, find its members one by one, + and for each one call FUNCTION with the following arguments: + archive file descriptor for reading the data, + member name, + member name might be truncated flag, + member header position in file, + member data position in file, + member data size, + member date, + member uid, + member gid, + member protection mode, + ARG. + + The descriptor is poised to read the data of the member + when FUNCTION is called. It does not matter how much + data FUNCTION reads. + + If FUNCTION returns nonzero, we immediately return + what FUNCTION returned. + + Returns -1 if archive does not exist, + Returns -2 if archive has invalid format. + Returns 0 if have scanned successfully. */ + +intmax_t +ar_scan (const char *archive, ar_member_func_t function, const void *arg) +{ +#ifdef AIAMAG + FL_HDR fl_header; +# ifdef AIAMAGBIG + int big_archive = 0; + FL_HDR_BIG fl_header_big; +# endif +#endif + char *namemap = 0; + unsigned int namemap_size = 0; + int desc = open (archive, O_RDONLY, 0); + if (desc < 0) + return -1; + +#ifdef SARMAG + { + char buf[SARMAG]; + int nread; + nread = readbuf (desc, buf, SARMAG); + if (nread != SARMAG || memcmp (buf, ARMAG, SARMAG)) + goto invalid; + } +#else +#ifdef AIAMAG + { + int nread; + nread = readbuf (desc, &fl_header, FL_HSZ); + if (nread != FL_HSZ) + goto invalid; + +#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)) + { + off_t o; + + big_archive = 1; + + /* seek back to beginning of archive */ + EINTRLOOP (o, lseek (desc, 0, 0)); + if (o < 0) + goto invalid; + + /* re-read the header into the "big" structure */ + nread = readbuf (desc, &fl_header_big, FL_HSZ_BIG); + if (nread != FL_HSZ_BIG) + goto invalid; + } + else +#endif + /* Check to make sure this is a "normal" archive. */ + if (memcmp (fl_header.fl_magic, AIAMAG, SAIAMAG)) + goto invalid; + } +#else + { +#ifndef M_XENIX + int buf; +#else + unsigned short int buf; +#endif + int nread; + nread = readbuf (desc, &buf, sizeof (buf)); + if (nread != sizeof (buf) || buf != ARMAG) + goto invalid; + } +#endif +#endif + + /* Now find the members one by one. */ + { +#ifdef SARMAG + long int member_offset = SARMAG; +#else +#ifdef AIAMAG + long int member_offset; + long int last_member_offset; + +#ifdef AIAMAGBIG + if ( big_archive ) + { + 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); + } + + if (member_offset == 0) + { + /* Empty archive. */ + close (desc); + return 0; + } +#else +#ifndef M_XENIX + long int member_offset = sizeof (int); +#else /* Xenix. */ + long int member_offset = sizeof (unsigned short int); +#endif /* Not Xenix. */ +#endif +#endif + + while (1) + { + ssize_t nread; + struct ar_hdr member_header; +#ifdef AIAMAGBIG + struct ar_hdr_big member_header_big; +#endif +#ifdef AIAMAG +# define ARNAME_MAX 255 + char name[ARNAME_MAX + 1]; + int name_len; + intmax_t dateval; + int uidval, gidval; + long int data_offset; +#else +# define ARNAME_MAX (int)sizeof(member_header.ar_name) + char namebuf[ARNAME_MAX + 1]; + char *name; + int is_namemap; /* Nonzero if this entry maps long names. */ + int long_name = 0; +#endif + long int eltsize; + unsigned int eltmode; + intmax_t eltdate; + int eltuid, eltgid; + intmax_t fnval; + off_t o; + + memset(&member_header, '\0', sizeof (member_header)); + + EINTRLOOP (o, lseek (desc, member_offset, 0)); + if (o < 0) + goto invalid; + +#ifdef AIAMAG +#define AR_MEMHDR_SZ(x) (sizeof(x) - sizeof (x._ar_name)) + +#ifdef AIAMAGBIG + if (big_archive) + { + nread = readbuf (desc, &member_header_big, + AR_MEMHDR_SZ(member_header_big)); + + if (nread != AR_MEMHDR_SZ(member_header_big)) + goto invalid; + + sscanf (member_header_big.ar_namlen, "%4d", &name_len); + if (name_len < 1 || name_len > ARNAME_MAX) + goto invalid; + + nread = readbuf (desc, name, name_len); + if (nread != name_len) + goto invalid; + + name[name_len] = '\0'; + + sscanf (member_header_big.ar_date, "%12" SCNdMAX, &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 = readbuf (desc, &member_header, + AR_MEMHDR_SZ(member_header)); + + if (nread != AR_MEMHDR_SZ(member_header)) + goto invalid; + + sscanf (member_header.ar_namlen, "%4d", &name_len); + if (name_len < 1 || name_len > ARNAME_MAX) + goto invalid; + + nread = readbuf (desc, name, name_len); + if (nread != name_len) + goto invalid; + + name[name_len] = '\0'; + + sscanf (member_header.ar_date, "%12" SCNdMAX, &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 = readbuf (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 + 1 +# endif + && +# ifdef ARFZMAG + memcmp (member_header.ar_fmag, ARFZMAG, 2) +# else + 1 +# endif + ) +#endif + ) + goto invalid; + + name = namebuf; + memcpy (name, member_header.ar_name, sizeof member_header.ar_name); + { + 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'; + +#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) + { + const char* err; + unsigned int name_off = make_toui (name + 1, &err); + size_t name_len; + + if (err|| name_off >= namemap_size) + goto invalid; + + name = namemap + name_off; + name_len = strlen (name); + if (name_len < 1) + goto invalid; + long_name = 1; + } + else if (name[0] == '#' + && name[1] == '1' + && name[2] == '/') + { + const char* err; + unsigned int name_len = make_toui (name + 3, &err); + + if (err || name_len == 0 || name_len >= MIN (PATH_MAX, INT_MAX)) + goto invalid; + + name = alloca (name_len + 1); + nread = readbuf (desc, name, name_len); + if (nread < 0 || (unsigned int) nread != name_len) + goto invalid; + + name[name_len] = '\0'; + + long_name = 1; + } +#endif /* Not AIAMAG. */ + } + +#ifndef M_XENIX +#define PARSE_INT(_m, _t, _b, _n) \ + (_t) parse_int (TOCHAR (member_header._m), sizeof (member_header._m), \ + _b, TYPE_MAXIMUM (_t), _n, archive, name) + + eltmode = PARSE_INT (ar_mode, unsigned int, 8, "mode"); + eltsize = PARSE_INT (ar_size, long, 10, "size"); + eltdate = PARSE_INT (ar_date, intmax_t, 10, "date"); + eltuid = PARSE_INT (ar_uid, int, 10, "uid"); + eltgid = PARSE_INT (ar_gid, int, 10, "gid"); +#undef PARSE_INT +#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 + eltdate, eltuid, eltgid, +#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; + } + +#ifdef AIAMAG + if (member_offset == last_member_offset) + /* End of the chain. */ + break; + +#ifdef AIAMAGBIG + if (big_archive) + sscanf (member_header_big.ar_nxtmem, "%20ld", &member_offset); + else +#endif + sscanf (member_header.ar_nxtmem, "%12ld", &member_offset); + + if (lseek (desc, member_offset, 0) != member_offset) + goto invalid; +#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; + + if (eltsize > INT_MAX) + goto invalid; + namemap = alloca (eltsize + 1); + nread = readbuf (desc, namemap, eltsize); + if (nread != eltsize) + goto invalid; + namemap_size = eltsize; + + /* 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'; + } + } + *limit = '\0'; + + is_namemap = 0; + } + + member_offset += AR_HDR_SIZE + eltsize; + if (member_offset % 2 != 0) + member_offset++; +#endif + } + } + + close (desc); + return 0; + + invalid: + close (desc); + return -2; +} +#endif /* !VMS */ + +/* Return nonzero iff NAME matches MEM. + If TRUNCATED is nonzero, MEM may be truncated to + sizeof (struct ar_hdr.ar_name) - 1. */ + +int +ar_name_equal (const char *name, const char *mem, int truncated) +{ + const char *p; + + p = strrchr (name, '/'); + if (p != 0) + name = p + 1; + +#ifndef VMS + if (truncated) + { +#ifdef AIAMAG + /* TRUNCATED should never be set on this system. */ + abort (); +#else + struct ar_hdr hdr; +#if !defined (__hpux) && !defined (cray) + return strneq (name, mem, sizeof (hdr.ar_name) - 1); +#else + return strneq (name, mem, sizeof (hdr.ar_name) - 2); +#endif /* !__hpux && !cray */ +#endif /* !AIAMAG */ + } + + return !strcmp (name, mem); +#else + /* VMS members do not have suffixes, but the filenames usually + have. + Do we need to strip VMS disk/directory format paths? + + Most VMS compilers etc. by default are case insensitive + but produce uppercase external names, incl. module names. + However the VMS librarian (ar) and the linker by default + are case sensitive: they take what they get, usually + uppercase names. So for the non-default settings of the + compilers etc. there is a need to have a case sensitive + mode. */ + { + int len; + len = strlen(mem); + int match; + char *dot; + if ((dot=strrchr(name,'.'))) + match = (len == dot - name) && !strncasecmp(name, mem, len); + else + match = !strcasecmp (name, mem); + return match; + } +#endif /* !VMS */ +} + +#ifndef VMS +/* ARGSUSED */ +static intmax_t +ar_member_pos (int desc UNUSED, const char *mem, int truncated, + long int hdrpos, long int datapos UNUSED, long int size UNUSED, + intmax_t date UNUSED, int uid UNUSED, int gid UNUSED, + unsigned int mode UNUSED, const void *name) +{ + if (!ar_name_equal (name, mem, truncated)) + return 0; + return hdrpos; +} + +/* Set date of member MEMNAME in archive ARNAME to current time. + Returns 0 if successful, + -1 if file ARNAME does not exist, + -2 if not a valid archive, + -3 if other random system call error (including file read-only), + 1 if valid but member MEMNAME does not exist. */ + +int +ar_member_touch (const char *arname, const char *memname) +{ + intmax_t pos = ar_scan (arname, ar_member_pos, memname); + off_t opos; + int fd; + struct ar_hdr ar_hdr; + off_t o; + int r; + int datelen; + struct stat statbuf; + + if (pos < 0) + return (int) pos; + if (!pos) + return 1; + + opos = (off_t) pos; + + EINTRLOOP (fd, open (arname, O_RDWR, 0666)); + if (fd < 0) + return -3; + /* Read in this member's header */ + EINTRLOOP (o, lseek (fd, opos, 0)); + if (o < 0) + goto lose; + r = readbuf (fd, &ar_hdr, AR_HDR_SIZE); + if (r != AR_HDR_SIZE) + goto lose; + /* The file's mtime is the time we we want. */ + EINTRLOOP (r, fstat (fd, &statbuf)); + if (r < 0) + goto lose; + /* Advance member's time to that time */ +#if defined(ARFMAG) || defined(ARFZMAG) || defined(AIAMAG) || defined(WINDOWS32) + datelen = snprintf (TOCHAR (ar_hdr.ar_date), sizeof ar_hdr.ar_date, + "%" PRIdMAX, (intmax_t) statbuf.st_mtime); + if (! (0 <= datelen && datelen < (int) sizeof ar_hdr.ar_date)) + goto lose; + memset (ar_hdr.ar_date + datelen, ' ', sizeof ar_hdr.ar_date - datelen); +#else + ar_hdr.ar_date = statbuf.st_mtime; +#endif + /* Write back this member's header */ + EINTRLOOP (o, lseek (fd, opos, 0)); + if (o < 0) + goto lose; + r = writebuf (fd, &ar_hdr, AR_HDR_SIZE); + if (r != AR_HDR_SIZE) + goto lose; + close (fd); + return 0; + + lose: + r = errno; + close (fd); + errno = r; + return -3; +} +#endif + +#ifdef TEST + +intmax_t +describe_member (int desc, const char *name, int truncated, + long int hdrpos, long int datapos, long int size, + intmax_t date, int uid, int gid, unsigned int mode, + const void *arg) +{ + extern char *ctime (); + time_t d = date; + char const *ds; + + printf (_("Member '%s'%s: %ld bytes at %ld (%ld).\n"), + name, truncated ? _(" (name might be truncated)") : "", + size, hdrpos, datapos); + ds = ctime (&d); + printf (_(" Date %s"), ds ? ds : "?"); + printf (_(" uid = %d, gid = %d, mode = 0%o.\n"), uid, gid, mode); + + return 0; +} + +int +main (int argc, char **argv) +{ + ar_scan (argv[1], describe_member, NULL); + return 0; +} + +#endif /* TEST. */ +#endif /* NO_ARCHIVES. */ diff --git a/local/recipes/dev/gnu-make/source/src/commands.c b/local/recipes/dev/gnu-make/source/src/commands.c new file mode 100644 index 0000000000..9bb4eb6e8b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/commands.c @@ -0,0 +1,712 @@ +/* Command processing for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" +#include "filedef.h" +#include "os.h" +#include "dep.h" +#include "variable.h" +#include "job.h" +#include "commands.h" +#ifdef WINDOWS32 +#include +#include "w32err.h" +#endif + +#if VMS +# define FILE_LIST_SEPARATOR (vms_comma_separator ? ',' : ' ') +#else +# define FILE_LIST_SEPARATOR ' ' +#endif + + +static unsigned long +dep_hash_1 (const void *key) +{ + const struct dep *d = key; + return_STRING_HASH_1 (dep_name (d)); +} + +static unsigned long +dep_hash_2 (const void *key) +{ + const struct dep *d = key; + return_STRING_HASH_2 (dep_name (d)); +} + +static int +dep_hash_cmp (const void *x, const void *y) +{ + const struct dep *dx = x; + const struct dep *dy = y; + return strcmp (dep_name (dx), dep_name (dy)); +} + +/* Set FILE's automatic variables up. + * Use STEM to set $*. + * If STEM is 0, then set FILE->STEM and $* to the target name with any + * suffix in the .SUFFIXES list stripped off. */ + +void +set_file_variables (struct file *file, const char *stem) +{ + 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'. */ + + if (ar_name (file->name)) + { + size_t len; + const char *cp; + char *p; + + cp = strchr (file->name, '('); + p = alloca (cp - file->name + 1); + memcpy (p, file->name, cp - file->name); + p[cp - file->name] = '\0'; + at = p; + len = strlen (cp + 1); + p = alloca (len); + memcpy (p, cp + 1, len - 1); + p[len - 1] = '\0'; + percent = p; + } + else +#endif /* NO_ARCHIVES. */ + { + at = file->name; + percent = ""; + } + + /* $* is the stem from an implicit or static pattern rule. */ + if (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. */ + const char *name; + size_t len; + +#ifndef NO_ARCHIVES + if (ar_name (file->name)) + { + name = strchr (file->name, '(') + 1; + len = strlen (name) - 1; + } + else +#endif + { + name = file->name; + len = strlen (name); + } + + for (d = enter_file (strcache_add (".SUFFIXES"))->deps; d ; d = d->next) + { + const char *dn = dep_name (d); + size_t slen = strlen (dn); + if (len > slen && memcmp (dn, name + (len - slen), slen) == 0) + { + file->stem = stem = strcache_add_len (name, len - slen); + break; + } + } + if (d == 0) + file->stem = stem = ""; + } + star = stem; + + /* $< is the first not order-only dependency. */ + less = ""; + for (d = file->deps; d != 0; d = d->next) + if (!d->ignore_mtime && !d->ignore_automatic_vars && !d->need_2nd_expansion) + { + less = dep_name (d); + break; + } + + if (file->cmds != 0 && file->cmds == default_file->cmds) + /* This file got its commands from .DEFAULT. + In this case $< is the same as $@. */ + less = at; + +#define DEFINE_VARIABLE(name, len, value) \ + (void) define_variable_for_file (name,len,value,o_automatic,0,file) + + /* Define the variables. */ + + DEFINE_VARIABLE ("<", 1, less); + DEFINE_VARIABLE ("*", 1, star); + DEFINE_VARIABLE ("@", 1, at); + DEFINE_VARIABLE ("%", 1, percent); + + /* Compute the values for $^, $+, $?, and $|. */ + + { + static char *plus_value=0, *bar_value=0, *qmark_value=0; + static size_t plus_max=0, bar_max=0, qmark_max=0; + + size_t qmark_len, plus_len, bar_len; + char *cp; + char *caret_value; + char *qp; + char *bp; + size_t len; + + struct hash_table dep_hash; + void **slot; + + /* Compute first the value for $+, which is supposed to contain + duplicate dependencies as they were listed in the makefile. */ + + plus_len = 0; + bar_len = 0; + for (d = file->deps; d != 0; d = d->next) + { + if (!d->need_2nd_expansion && !d->ignore_automatic_vars) + { + if (d->ignore_mtime) + bar_len += strlen (dep_name (d)) + 1; + else + plus_len += strlen (dep_name (d)) + 1; + } + } + + if (bar_len == 0) + bar_len++; + + if (plus_len == 0) + plus_len++; + + if (plus_len > plus_max) + plus_value = xrealloc (plus_value, plus_max = plus_len); + + cp = plus_value; + + qmark_len = plus_len + 1; /* Will be this or less. */ + for (d = file->deps; d != 0; d = d->next) + if (! d->ignore_mtime && ! d->need_2nd_expansion && ! d->ignore_automatic_vars) + { + const char *c = dep_name (d); + +#ifndef NO_ARCHIVES + if (ar_name (c)) + { + c = strchr (c, '(') + 1; + len = strlen (c) - 1; + } + else +#endif + len = strlen (c); + + cp = mempcpy (cp, c, len); + *cp++ = FILE_LIST_SEPARATOR; + if (! (d->changed || always_make_flag)) + qmark_len -= len + 1; /* Don't space in $? for this one. */ + } + + /* Kill the last space and define the variable. */ + + cp[cp > plus_value ? -1 : 0] = '\0'; + DEFINE_VARIABLE ("+", 1, plus_value); + + /* Compute the values for $^, $?, and $|. */ + + cp = caret_value = plus_value; /* Reuse the buffer; it's big enough. */ + + if (qmark_len > qmark_max) + qmark_value = xrealloc (qmark_value, qmark_max = qmark_len); + qp = qmark_value; + + if (bar_len > bar_max) + bar_value = xrealloc (bar_value, bar_max = bar_len); + bp = bar_value; + + /* Make sure that no dependencies are repeated in $^, $?, and $|. It + would be natural to combine the next two loops but we can't do it + because of a situation where we have two dep entries, the first + is order-only and the second is normal (see below). */ + + hash_init (&dep_hash, 500, dep_hash_1, dep_hash_2, dep_hash_cmp); + + for (d = file->deps; d != 0; d = d->next) + { + if (d->need_2nd_expansion || d->ignore_automatic_vars) + continue; + + slot = hash_find_slot (&dep_hash, d); + if (HASH_VACANT (*slot)) + hash_insert_at (&dep_hash, d, slot); + else + { + /* Check if the two prerequisites have different ignore_mtime. + If so then we need to "upgrade" one that is order-only. */ + + struct dep* hd = (struct dep*) *slot; + + if (d->ignore_mtime != hd->ignore_mtime) + d->ignore_mtime = hd->ignore_mtime = 0; + } + } + + for (d = file->deps; d != 0; d = d->next) + { + const char *c; + + if (d->need_2nd_expansion || d->ignore_automatic_vars || hash_find_item (&dep_hash, d) != d) + continue; + + c = dep_name (d); +#ifndef NO_ARCHIVES + if (ar_name (c)) + { + c = strchr (c, '(') + 1; + len = strlen (c) - 1; + } + else +#endif + len = strlen (c); + + if (d->ignore_mtime) + { + bp = mempcpy (bp, c, len); + *bp++ = FILE_LIST_SEPARATOR; + } + else + { + cp = mempcpy (cp, c, len); + *cp++ = FILE_LIST_SEPARATOR; + if (d->changed || always_make_flag) + { + qp = mempcpy (qp, c, len); + *qp++ = FILE_LIST_SEPARATOR; + } + } + } + + hash_free (&dep_hash, 0); + + /* Kill the last spaces and define the variables. */ + + cp[cp > caret_value ? -1 : 0] = '\0'; + DEFINE_VARIABLE ("^", 1, caret_value); + + qp[qp > qmark_value ? -1 : 0] = '\0'; + DEFINE_VARIABLE ("?", 1, qmark_value); + + bp[bp > bar_value ? -1 : 0] = '\0'; + DEFINE_VARIABLE ("|", 1, bar_value); + } + +#undef DEFINE_VARIABLE +} + +/* Chop CMDS up into individual command lines if necessary. + Also set the 'lines_flags' and 'any_recurse' members. */ + +void +chop_commands (struct commands *cmds) +{ + unsigned short nlines; + unsigned short i; + char **lines; + + /* If we don't have any commands, or we already parsed them, never mind. */ + if (!cmds || cmds->command_lines != NULL) + return; + + /* Chop CMDS->commands up into lines in CMDS->command_lines. */ + + if (one_shell) + { + size_t l = strlen (cmds->commands); + + nlines = 1; + lines = xmalloc (nlines * sizeof (char *)); + lines[0] = xstrdup (cmds->commands); + + /* Strip the trailing newline. */ + if (l > 0 && lines[0][l-1] == '\n') + lines[0][l-1] = '\0'; + } + else + { + const char *p = cmds->commands; + size_t max = 5; + + nlines = 0; + lines = xmalloc (max * sizeof (char *)); + while (*p != '\0') + { + const char *end = p; + find_end:; + end = strchr (end, '\n'); + if (end == NULL) + end = p + strlen (p); + else if (end > p && end[-1] == '\\') + { + int backslash = 1; + if (end > p + 1) + { + const char *b; + for (b = end - 2; b >= p && *b == '\\'; --b) + backslash = !backslash; + } + if (backslash) + { + ++end; + goto find_end; + } + } + + if (nlines == USHRT_MAX) + ON (fatal, &cmds->fileinfo, + _("Recipe has too many lines (limit %hu)"), nlines); + + if (nlines == max) + { + max += 2; + lines = xrealloc (lines, max * sizeof (char *)); + } + + lines[nlines++] = xstrndup (p, (size_t) (end - p)); + p = end; + if (*p != '\0') + ++p; + } + } + + /* Finally, set the corresponding CMDS->lines_flags elements and the + CMDS->any_recurse flag. */ + + cmds->ncommand_lines = nlines; + cmds->command_lines = lines; + + cmds->any_recurse = 0; + cmds->lines_flags = xmalloc (nlines); + + for (i = 0; i < nlines; ++i) + { + unsigned char flags = 0; + const char *p = lines[i]; + + while (ISBLANK (*p) || *p == '-' || *p == '@' || *p == '+') + switch (*(p++)) + { + case '+': + flags |= COMMANDS_RECURSE; + break; + case '@': + flags |= COMMANDS_SILENT; + break; + case '-': + flags |= COMMANDS_NOERROR; + break; + } + + /* If no explicit '+' was given, look for MAKE variable references. */ + if (! ANY_SET (flags, COMMANDS_RECURSE) + && (strstr (p, "$(MAKE)") != 0 || strstr (p, "${MAKE}") != 0)) + flags |= COMMANDS_RECURSE; + + cmds->lines_flags[i] = flags; + cmds->any_recurse |= ANY_SET (flags, COMMANDS_RECURSE) ? 1 : 0; + } +} + +/* Execute the commands to remake FILE. If they are currently executing, + return or have already finished executing, just return. Otherwise, + fork off a child process to run the first command line in the sequence. */ + +void +execute_file_commands (struct file *file) +{ + const char *p; + + /* Don't go through all the preparations if + the commands are nothing but whitespace. */ + + for (p = file->cmds->commands; *p != '\0'; ++p) + if (!ISSPACE (*p) && *p != '-' && *p != '@' && *p != '+') + break; + if (*p == '\0') + { + /* If there are no commands, assume everything worked. */ + set_command_state (file, cs_running); + file->update_status = us_success; + notice_finished_file (file); + return; + } + + /* First set the automatic variables according to this file. */ + + initialize_file_variables (file, 0); + + set_file_variables (file, file->stem); + + /* Some systems don't support overwriting a loaded object so if this one + unload it before remaking. Keep its name in .LOADED: it will be rebuilt + and loaded again. If rebuilding or loading again fail, then we'll exit + anyway and it won't matter. */ + if (file->loaded && unload_file (file->name) == 0) + { + file->loaded = 0; + file->unloaded = 1; + } + + /* Start the commands running. */ + new_job (file); +} + +/* This is set while we are inside fatal_error_signal, + so things can avoid nonreentrant operations. */ + +volatile sig_atomic_t handling_fatal_signal = 0; + +/* Handle fatal signals. */ + +void +fatal_error_signal (int sig) +{ +#ifdef __MSDOS__ + extern int dos_status, dos_command_running; + + if (dos_command_running) + { + /* That was the child who got the signal, not us. */ + dos_status |= (sig << 8); + return; + } + remove_intermediates (1); + exit (EXIT_FAILURE); +#else /* not __MSDOS__ */ +#ifdef _AMIGA + remove_intermediates (1); + if (sig == SIGINT) + fputs (_("*** Break.\n"), stderr); + + exit (10); +#else /* not Amiga */ +#ifdef WINDOWS32 + extern HANDLE main_thread; + + /* Windows creates a separate thread for handling Ctrl+C, so we need + to suspend the main thread, or else we will have race conditions + when both threads call reap_children. */ + if (main_thread) + { + DWORD susp_count = SuspendThread (main_thread); + + if (susp_count != 0) + fprintf (stderr, "SuspendThread: suspend count = %lu\n", susp_count); + else if (susp_count == (DWORD)-1) + { + DWORD ierr = GetLastError (); + + fprintf (stderr, "SuspendThread: error %lu: %s\n", + ierr, map_windows32_error_to_string (ierr)); + } + } +#endif + handling_fatal_signal = 1; + + /* Set the handling for this signal to the default. + It is blocked now while we run this handler. */ + signal (sig, SIG_DFL); + + temp_stdin_unlink (); + osync_clear (); + jobserver_clear (); + + /* A termination signal won't be sent to the entire + process group, but it means we want to kill the children. */ + + if (sig == SIGTERM) + { + struct child *c; + for (c = children; c != 0; c = c->next) + if (!c->remote && c->pid > 0) + (void) kill (c->pid, SIGTERM); + } + + /* If we got a signal that means the user + wanted to kill make, remove pending targets. */ + + if (sig == SIGTERM || sig == SIGINT +#ifdef SIGHUP + || sig == SIGHUP +#endif +#ifdef SIGQUIT + || sig == SIGQUIT +#endif + ) + { + struct child *c; + + /* Remote children won't automatically get signals sent + to the process group, so we must send them. */ + for (c = children; c != 0; c = c->next) + if (c->remote && c->pid > 0) + (void) remote_kill (c->pid, sig); + + for (c = children; c != 0; c = c->next) + 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. */ + while (job_slots_used > 0) + reap_children (1, 0); + } + else + /* Wait for our children to die. */ + while (job_slots_used > 0) + reap_children (1, 1); + + /* Delete any non-precious intermediate files that were made. */ + + remove_intermediates (1); + +#ifdef SIGQUIT + if (sig == SIGQUIT) + /* We don't want to send ourselves SIGQUIT, because it will + cause a core dump. Just exit instead. */ + exit (MAKE_TROUBLE); +#endif + +#ifdef WINDOWS32 + if (main_thread) + CloseHandle (main_thread); + /* Cannot call W32_kill with a pid (it needs a handle). The exit + status of 130 emulates what happens in Bash. */ + exit (130); +#else + /* Signal the same code; this time it will really be fatal. The signal + will be unblocked when we return and arrive then to kill us. */ + if (kill (make_pid (), sig) < 0) + pfatal_with_name ("kill"); +#endif /* not WINDOWS32 */ +#endif /* not Amiga */ +#endif /* not __MSDOS__ */ +} + +/* Delete FILE unless it's precious or not actually a file (phony), + and it has changed on disk since we last stat'd it. */ + +static void +delete_target (struct file *file, const char *on_behalf_of) +{ + struct stat st; + int e; + + if (file->precious || file->phony) + return; + +#ifndef NO_ARCHIVES + 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)); + if (ar_member_date (file->name) != file_date) + { + if (on_behalf_of) + OSS (error, NILF, + _("*** [%s] Archive member '%s' may be bogus; not deleted"), + on_behalf_of, file->name); + else + OS (error, NILF, + _("*** Archive member '%s' may be bogus; not deleted"), + file->name); + } + return; + } +#endif + + EINTRLOOP (e, stat (file->name, &st)); + if (e == 0 + && S_ISREG (st.st_mode) + && FILE_TIMESTAMP_STAT_MODTIME (file->name, st) != file->last_mtime) + { + if (on_behalf_of) + OSS (error, NILF, + _("*** [%s] Deleting file '%s'"), on_behalf_of, file->name); + else + OS (error, NILF, _("*** Deleting file '%s'"), file->name); + if (unlink (file->name) < 0 + && errno != ENOENT) /* It disappeared; so what. */ + perror_with_name ("unlink: ", file->name); + } +} + + +/* Delete all non-precious targets of CHILD unless they were already deleted. + Set the flag in CHILD to say they've been deleted. */ + +void +delete_child_targets (struct child *child) +{ + struct dep *d; + + if (child->deleted || child->pid < 0) + return; + + /* Delete the target file if it changed. */ + delete_target (child->file, NULL); + + /* Also remove any non-precious targets listed in the 'also_make' member. */ + for (d = child->file->also_make; d != 0; d = d->next) + delete_target (d->file, child->file->name); + + child->deleted = 1; +} + +/* Print out the commands in CMDS. */ + +void +print_commands (const struct commands *cmds) +{ + const char *s; + + fputs (_("# recipe to execute"), stdout); + + if (cmds->fileinfo.filenm == 0) + puts (_(" (built-in):")); + else + printf (_(" (from '%s', line %lu):\n"), + cmds->fileinfo.filenm, cmds->fileinfo.lineno); + + s = cmds->commands; + while (*s != '\0') + { + const char *end; + int bs; + + /* 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); + + s = end + (end[0] == '\n'); + } +} diff --git a/local/recipes/dev/gnu-make/source/src/commands.h b/local/recipes/dev/gnu-make/source/src/commands.h new file mode 100644 index 0000000000..1a717516e9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/commands.h @@ -0,0 +1,45 @@ +/* Definition of data structures describing shell commands for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +/* Structure that gives the commands to make a file + and information about where these commands came from. */ + +struct commands + { + floc fileinfo; /* Where commands were defined. */ + char *commands; /* Commands text. */ + char **command_lines; /* Commands chopped up into lines. */ + unsigned 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: -. */ + +struct file; +struct child; + +void fatal_error_signal (int sig); +void execute_file_commands (struct file *file); +void print_commands (const struct commands *cmds); +void delete_child_targets (struct child *child); +void chop_commands (struct commands *cmds); +void set_file_variables (struct file *file, const char *stem); diff --git a/local/recipes/dev/gnu-make/source/src/config.ami b/local/recipes/dev/gnu-make/source/src/config.ami new file mode 100644 index 0000000000..775a4d71fe --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/config.ami @@ -0,0 +1,331 @@ +/* config.h -- hand-massaged for Amiga -*-C-*- +Copyright (C) 1995-2022 Free Software 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 . */ + +#include "mkconfig.h" + +#define MK_AMIGAOS 1 + +/* Define if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* #undef _ALL_SOURCE */ +#endif + +/* Define if using alloca.c. */ +#define C_ALLOCA + +/* Define if the closedir function returns void instead of int. */ +/* #undef CLOSEDIR_VOID */ + +/* Define to empty if the keyword does not work. */ +/* #undef const */ + +/* 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 for DGUX with . */ +/* #undef DGUX */ + +/* Define to the widest signed integer type if and do + not define. */ +#define intmax_t long + +/* Define to 'unsigned long' or 'unsigned long long' + if doesn't define. */ +#define uintmax_t unsigned long + +/* Define to 'int' if doesn't define. */ +#define gid_t int + +/* Define if you have alloca, as a function or macro. */ +/* #undef HAVE_ALLOCA */ + +/* Define if you have and it should be used (not on Ultrix). */ +/* #undef HAVE_ALLOCA_H */ + +/* Define to 1 if you have the declaration of 'getloadavg'. */ +/* #undef HAVE_DECL_GETLOADAVG */ + +/* Define if your system has a working fnmatch function. */ +/* #undef HAVE_FNMATCH */ + +/* Define if you have the getmntent function. */ +/* #undef HAVE_GETMNTENT */ + +/* 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 HAVE_LONG_FILE_NAMES 1 + +/* Define if you have a working 'mmap' system call. */ +/* #undef HAVE_MMAP */ + +/* Define if system calls automatically restart after interruption + by a signal. */ +/* #undef HAVE_RESTARTABLE_SYSCALLS */ + +/* Define if your struct stat has st_blksize. */ +/* #undef HAVE_ST_BLKSIZE */ + +/* 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 HAVE_STRCOLL 1 + +/* Define if your struct stat has st_rdev. */ +#define HAVE_ST_RDEV 1 + +/* Define if you have the strftime function. */ +#define HAVE_STRFTIME 1 + +/* Define if you have 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. */ +#define HAVE_TZNAME 1 + +/* Define if you have . */ +#define HAVE_UNISTD_H 1 + +/* Define if utime(file, NULL) sets file's timestamp to the present. */ +/* #undef HAVE_UTIME_NULL */ + +/* Define if you have the wait3 system call. */ +/* #undef HAVE_WAIT3 */ + +/* Define if on MINIX. */ +/* #undef _MINIX */ + +/* Define if your struct nlist has an n_un member. */ +/* #undef NLIST_NAME_UNION */ + +/* Define if you have . */ +/* #undef NLIST_STRUCT */ + +/* Define if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Define to 'int' if doesn't define. */ +#define pid_t int + +/* Define if the system does not provide POSIX.1 features except + with this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define if you need to in order for stat and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* 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 + */ +#define STACK_DIRECTION -1 + +/* Define if the 'S_IS*' macros in do not work properly. */ +/* #undef STAT_MACROS_BROKEN */ + +/* 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 . */ +/* #undef SYS_SIGLIST_DECLARED */ + +/* Define to 'int' if doesn't define. */ +#define uid_t int + +/* Define for Encore UMAX. */ +/* #undef UMAX */ + +/* Define for Encore UMAX 4.3 that has + instead of . */ +/* #undef UMAX4_3 */ + +/* Define to the name of the SCCS 'get' command. */ +#define SCCS_GET "get" + +/* Define this if the SCCS 'get' command understands the '-G' option. */ +/* #undef SCCS_GET_MINUS_G */ + +/* Define this to enable job server support in GNU make. */ +/* #undef MAKE_JOBSERVER */ + +/* Define to be the nanoseconds member of struct stat's st_mtim, + if it exists. */ +/* #undef ST_MTIM_NSEC */ + +/* 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'. */ +/* #undef HAVE__SYS_SIGLIST */ + +/* Define this if you have the 'union wait' type in . */ +/* #undef HAVE_UNION_WAIT */ + +/* Define if you have the dup2 function. */ +/* #undef HAVE_DUP2 */ + +/* Define if you have the getcwd function. */ +#define HAVE_GETCWD 1 + +/* Define if you have the getgroups function. */ +/* #undef HAVE_GETGROUPS */ + +/* Define if you have the gethostbyname function. */ +/* #undef HAVE_GETHOSTBYNAME */ + +/* Define if you have the gethostname function. */ +/* #undef HAVE_GETHOSTNAME */ + +/* Define if you have the memmove function. */ +#define HAVE_MEMMOVE 1 + +/* Define if you have the mktemp function. */ +#define HAVE_MKTEMP 1 + +/* Define if you have the psignal function. */ +/* #undef HAVE_PSIGNAL */ + +/* Define if you have the pstat_getdynamic function. */ +/* #undef HAVE_PSTAT_GETDYNAMIC */ + +/* Define if you have the setegid function. */ +/* #undef HAVE_SETEGID */ + +/* Define if you have the seteuid function. */ +/* #undef HAVE_SETEUID */ + +/* Define if you have the setlinebuf function. */ +/* #undef HAVE_SETLINEBUF */ + +/* Define if you have the setregid function. */ +/* #undef HAVE_SETREGID */ + +/* Define if you have the setreuid function. */ +/* #undef HAVE_SETREUID */ + +/* Define if you have the sigsetmask function. */ +/* #undef HAVE_SIGSETMASK */ + +/* Define if you have the socket function. */ +/* #undef HAVE_SOCKET */ + +/* Define to 1 if you have the strcasecmp function. */ +/* #undef HAVE_STRCASECMP */ + +/* Define to 1 if you have the strcmpi function. */ +/* #undef HAVE_STRCMPI */ + +/* Define to 1 if you have the stricmp function. */ +/* #undef HAVE_STRICMP */ + +/* Define if you have the strsignal function. */ +/* #undef HAVE_STRSIGNAL */ + +/* Define if you have the strtoll function. */ +/* #undef HAVE_STRTOLL */ + +/* Define if you have the wait3 function. */ +/* #undef HAVE_WAIT3 */ + +/* Define if you have the waitpid function. */ +/* #undef HAVE_WAITPID */ + +/* Define if you have the header file. */ +#define HAVE_DIRENT_H 1 + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_MACH_MACH_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_MEMORY_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_NDIR_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_STDLIB_H */ + +/* Define if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_DIR_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_NDIR_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_PARAM_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_TIMEB_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if you have the dgc library (-ldgc). */ +/* #undef HAVE_LIBDGC */ + +/* Define if you have the kstat library (-lkstat). */ +/* #undef HAVE_LIBKSTAT */ + +/* Define to 1 if you have the `isatty' function. */ +/* #undef HAVE_ISATTY */ + +/* Define to 1 if you have the `ttyname' function. */ +/* #undef HAVE_TTYNAME */ + +/* Define if you have the sun library (-lsun). */ +/* #undef HAVE_LIBSUN */ + +/* Output sync support */ +#define NO_OUTPUT_SYNC + +/* Define for Case Insensitive behavior */ +#define HAVE_CASE_INSENSITIVE_FS + +/* Build host information. */ +#define MAKE_HOST "Amiga" + +/* Define to `int' if does not define. */ +#define ssize_t int diff --git a/local/recipes/dev/gnu-make/source/src/config.h-vms b/local/recipes/dev/gnu-make/source/src/config.h-vms new file mode 100644 index 0000000000..53e6b90ac0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/config.h-vms @@ -0,0 +1,430 @@ +/* config.h-vms. Generated by hand by Klaus Kämpf -*-C-*- + +Copyright (C) 1996-2022 Free Software 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 . */ + +#include "mkconfig.h" + +#define MK_VMS 1 + +/* Pull in types.h here to get __CRTL_VER defined for old versions of the + compiler which don't define it. */ +#ifdef __DECC +# include +#endif + +/* Define to 1 if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* #undef _ALL_SOURCE */ +#endif + +/* Define to 1 if NLS is requested. */ +/* #undef ENABLE_NLS */ + +/* Define as 1 if you have dcgettext. */ +/* #undef HAVE_DCGETTEXT */ + +/* 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 */ + +/* Define to the installation directory for locales. */ +#define LOCALEDIR "" + +/* Define as 1 if you have the stpcpy function. */ +/* #undef HAVE_STPCPY */ + +/* Define to 1 if the closedir function returns void instead of int. */ +/* #undef CLOSEDIR_VOID */ + +/* Define to empty if the keyword does not work. */ +/* #undef const */ + +/* 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 for DGUX with . */ +/* #undef DGUX */ + +/* Define to the widest signed integer type if and do + not define. */ +#define intmax_t unsigned long + +/* Define to 'unsigned long' or 'unsigned long long' + if doesn't define. */ +#define uintmax_t unsigned long + +/* Define to 'int' if doesn't define. */ +/* #undef gid_t */ + +/* Define to 1 if you have alloca, as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). */ +/* #undef HAVE_ALLOCA_H */ + +/* Define to 1 if you have the declaration of 'getloadavg'. */ +/* #undef HAVE_DECL_GETLOADAVG */ + +/* 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 you have the getmntent function. */ +/* #undef HAVE_GETMNTENT */ + +/* 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. */ +/* #undef HAVE_MMAP */ + +/* Define to 1 if system calls automatically restart after interruption + by a signal. */ +/* #undef HAVE_RESTARTABLE_SYSCALLS */ + +/* Define to 1 if your struct stat has st_blksize. */ +/* #undef HAVE_ST_BLKSIZE */ + +/* Define to 1 if your struct stat has st_blocks. */ +/* #undef HAVE_ST_BLOCKS */ + +/* 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 */ + +/* Define to 1 if you have the strftime function. */ +/* #undef HAVE_STRFTIME */ + +/* Define to 1 if you have that is POSIX.1 compatible. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define to 1 if your struct tm has tm_zone. */ +/* #undef HAVE_TM_ZONE */ + +/* Define to 1 if you don't have tm_zone but do have the external array + tzname. */ +/* #undef HAVE_TZNAME */ + +/* Define to 1 if you have . */ +#ifdef __DECC +#define HAVE_UNISTD_H 1 +#endif + +/* Define to 1 if utime(file, NULL) sets file's timestamp to the present. */ +/* #undef HAVE_UTIME_NULL */ + +/* Define to 1 if you have the wait3 system call. */ +/* #undef HAVE_WAIT3 */ + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 1 if your struct nlist has an n_un member. */ +/* #undef NLIST_NAME_UNION */ + +/* Define to 1 if you have . */ +/* #undef NLIST_STRUCT */ + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Define to 'int' if doesn't define. */ +/* I assume types.h is available for all 5.0 cc/cxx compilers */ +#if __DECC_VER < 50090000 +#define pid_t int +#endif + +/* Define to 1 if the system does not provide POSIX.1 features except + with this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for stat and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown + */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if the 'S_IS*' macros in do not work properly. */ +/* #undef STAT_MACROS_BROKEN */ + +/* Define to 1 if you have the ANSI C header files. */ +/* #undef STDC_HEADERS */ + +/* Define on System V Release 4. */ +/* #undef SVR4 */ + +/* Define to 1 if 'sys_siglist' is declared by . */ +/* #undef SYS_SIGLIST_DECLARED */ + +/* Define to 'int' if doesn't define. */ +#if __DECC_VER < 50090000 +#define uid_t int +#endif + +/* Define for Encore UMAX. */ +/* #undef UMAX */ + +/* Define for Encore UMAX 4.3 that has + instead of . */ +/* #undef UMAX4_3 */ + +/* Define to the name of the SCCS 'get' command. */ +/* #undef SCCS_GET */ + +/* Define this if the SCCS 'get' command understands the '-G' option. */ +/* #undef SCCS_GET_MINUS_G */ + +/* Define this to enable job server support in GNU make. */ +/* #undef MAKE_JOBSERVER */ + +/* Define to be the nanoseconds member of struct stat's st_mtim, + if it exists. */ +/* #undef ST_MTIM_NSEC */ + +/* 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'. */ +/* #undef HAVE__SYS_SIGLIST */ + +/* Define to 1 if you have the 'union wait' type in . */ +/* #undef HAVE_UNION_WAIT */ + +/* Define to 1 if you have the dup2 function. */ +#define HAVE_DUP2 1 + +/* Define to 1 if you have the getcwd function. */ +#define HAVE_GETCWD 1 + +/* Define to 1 if you have the getgroups function. */ +/* #undef HAVE_GETGROUPS */ + +/* Define to 1 if you have the gethostbyname function. */ +/* #undef HAVE_GETHOSTBYNAME */ + +/* Define to 1 if you have the gethostname function. */ +/* #undef HAVE_GETHOSTNAME */ + +/* Define to 1 if you have the memmove function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the 'mkfifo' function. */ +/* #undef HAVE_MKFIFO */ + +/* Define to 1 if you have the mktemp function. */ +#define HAVE_MKTEMP 1 + +/* Define to 1 if you have the psignal function. */ +/* #undef HAVE_PSIGNAL */ + +/* Define to 1 if you have the pstat_getdynamic function. */ +/* #undef HAVE_PSTAT_GETDYNAMIC */ + +/* Define to 1 if you have the setegid function. */ +/* #undef HAVE_SETEGID */ + +/* Define to 1 if you have the seteuid function. */ +/* #undef HAVE_SETEUID */ + +/* Define to 1 if you have the setlinebuf function. */ +/* #undef HAVE_SETLINEBUF */ + +/* Define to 1 if you have the setregid function. */ +/* #undefine HAVE_SETREGID */ + +/* Define to 1 if you have the setreuid function. */ +/* #define HAVE_SETREUID */ + +/* Define to 1 if you have the sigsetmask function. */ +#define HAVE_SIGSETMASK 1 + +/* Define to 1 if you have the socket function. */ +/* #undef HAVE_SOCKET */ + +/* Define to 1 if you have the strcasecmp function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the strcmpi function. */ +/* #undef HAVE_STRCMPI */ + +/* Define to 1 if you have the stricmp function. */ +/* #undef HAVE_STRICMP */ + +/* Define to 1 if you have the strsignal function. */ +/* #undef HAVE_STRSIGNAL */ + +/* Define to 1 if you have the `strtoll' function. */ +#define HAVE_STRTOLL 1 + +/* Define to 1 if you have the wait3 function. */ +/* #undef HAVE_WAIT3 */ + +/* Define to 1 if you have the waitpid function. */ +/* #undef HAVE_WAITPID */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DIRENT_H 1 + +/* Define to 1 if you have the header file. */ +#ifdef __DECC +#define HAVE_FCNTL_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MEMORY_H */ + +/* Define to 1 if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NDIR_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_DIR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_NDIR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PARAM_H */ + +/* Define to 1 if you have the header file. */ +#ifndef __GNUC__ +#define HAVE_SYS_TIMEB_H 1 +#endif + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define to 1 if you have the dgc library (-ldgc). */ +/* #undef HAVE_LIBDGC */ + +/* Define to 1 if you have the kstat library (-lkstat). */ +/* #undef HAVE_LIBKSTAT * + +/* Define to 1 if you have the sun library (-lsun). */ +/* #undef HAVE_LIBSUN */ + +/* Define to 1 if you have the `isatty' function. */ +/* #undef HAVE_ISATTY */ + +/* Define to 1 if you have the `ttyname' function. */ +/* #undef HAVE_TTYNAME */ + +/* Use high resolution file timestamps if nonzero. */ +#define FILE_TIMESTAMP_HI_RES 0 + +/* Define for case insensitve filenames */ +#define HAVE_CASE_INSENSITIVE_FS 1 + +/* VMS specific, define it if you want to use case sensitive targets */ +/* #undef WANT_CASE_SENSITIVE_TARGETS */ + +/* VMS specific, V7.0 has opendir() and friends, so it's undefined */ +/* If you want to use non-VMS code for opendir() etc. on V7.0 and greater + define the first or both macros AND change the compile command to get the + non-VMS versions linked: (prefix=(all,except=(opendir,... */ +/* #undef HAVE_VMSDIR_H */ +/* #undef _DIRENT_HAVE_D_NAMLEN */ + +/* On older systems without 7.0 backport of CRTL use non-VMS code for opendir() etc. */ +#if __CRTL_VER < 70000000 +# define HAVE_VMSDIR_H 1 +#endif + +#if defined(HAVE_VMSDIR_H) && defined(HAVE_DIRENT_H) +#undef HAVE_DIRENT_H +#endif + +#define HAVE_STDLIB_H 1 +#define INCLUDEDIR "sys$sysroot:[syslib]" +#define LIBDIR "sys$sysroot:[syslib]" + +/* Don't use RTL functions of OpenVMS */ +#ifdef __DECC +#include +#include +#define getopt gnu_getopt +#define optarg gnu_optarg +#define optopt gnu_optopt +#define optind gnu_optind +#define opterr gnu_opterr +#define globfree gnu_globfree +#define glob gnu_glob +#endif + +/* Define if using alloca.c. */ +/* #undef C_ALLOCA */ +/* maybe this should be placed into makeint.h */ +#if defined(__VAX) && defined(__DECC) +#define alloca(n) __ALLOCA(n) +#endif + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +/* # undef WORDS_BIGENDIAN */ + +/* Output sync sypport */ +#define NO_OUTPUT_SYNC + +/* Define to 1 to write even short single-line actions into a VMS/DCL command + file; this also enables exporting make environment variables into the + (sub-)process, which executes the action. + The usual make rules apply whether a shell variable - here a DCL symbol or + VMS logical [see CRTL getenv()] - is added to the make environment and + is exported. */ +#define USE_DCL_COM_FILE 1 + +/* Build host information. */ +#define MAKE_HOST "VMS" diff --git a/local/recipes/dev/gnu-make/source/src/config.h.W32 b/local/recipes/dev/gnu-make/source/src/config.h.W32 new file mode 100644 index 0000000000..1a03a0413b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/config.h.W32 @@ -0,0 +1,623 @@ +/* config.h.W32 -- hand-massaged config.h file for Windows builds -*-C-*- + +Copyright (C) 1996-2022 Free Software 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 . */ + +#include "mkconfig.h" + +#define MK_W32 1 + +/* Build for the WINDOWS32 API. */ +#define WINDOWS32 1 + +/* Suppress some Visual C++ warnings. + Maybe after the code cleanup for ISO C we can remove some/all of these. */ +#if _MSC_VER > 1000 +# pragma warning(disable:4100) /* unreferenced formal parameter */ +# pragma warning(disable:4130) /* logical operation on address of string constant */ +# pragma warning(disable:4131) /* uses old-style declarator */ +# pragma warning(disable:4702) /* unreachable code */ +# define _CRT_SECURE_NO_WARNINGS 1 /* function or variable may be unsafe */ +# define _CRT_NONSTDC_NO_WARNINGS 1 /* functions w/o a leading underscore */ +#endif + +/* Define to 1 if the 'closedir' function returns void instead of 'int'. */ +/* #undef CLOSEDIR_VOID */ + +/* Define to 1 if using 'alloca.c'. */ +/* #undef C_ALLOCA */ + +/* Define to 1 for DGUX with . */ +/* #undef DGUX */ + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +/* #undef ENABLE_NLS */ + +/* Use high resolution file timestamps if nonzero. */ +#define FILE_TIMESTAMP_HI_RES 0 + +/* Define to 1 if you have 'alloca' after including , a header that + may be supplied by this distribution. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if works. */ +/* #undef HAVE_ALLOCA_H */ + +/* Define to 1 if you have the 'atexit' function. */ +#define HAVE_ATEXIT 1 + +/* Use case insensitive file names */ +/* #undef HAVE_CASE_INSENSITIVE_FS */ + +/* Define to 1 if you have the clock_gettime function. */ +/* #undef HAVE_CLOCK_GETTIME */ + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +/* #undef HAVE_DCGETTEXT */ + +/* Define to 1 if you have the declaration of 'bsd_signal', and to 0 if you + don't. */ +#define HAVE_DECL_BSD_SIGNAL 0 + +/* Define to 1 if you have the declaration of `dlerror', and to 0 if you + don't. */ +#define HAVE_DECL_DLERROR 0 + +/* Define to 1 if you have the declaration of `dlopen', and to 0 if you don't. + */ +#define HAVE_DECL_DLOPEN 0 + +/* Define to 1 if you have the declaration of `dlsym', and to 0 if you don't. + */ +#define HAVE_DECL_DLSYM 0 + +/* Define to 1 if you have the declaration of 'getloadavg'. */ +/* #undef HAVE_DECL_GETLOADAVG */ + +/* 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 header file, and it defines 'DIR'. + */ +#define HAVE_DIRENT_H 1 + +/* Define to 1 if you have the header file, and it defines getcwd() + and chdir(). + */ +#if (defined(_MSC_VER) || defined(__BORLANDC__) || defined(__TINYC__)) && !defined(__INTERIX) +# define HAVE_DIRECT_H 1 +#endif + +/* Support DOS-style pathnames. */ +#define HAVE_DOS_PATHS 1 + +/* Define to 1 if you have the 'dup' function. */ +#define HAVE_DUP 1 + +/* Define to 1 if you have the 'dup2' function. */ +#define HAVE_DUP2 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 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 'getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define to 1 if you have the 'getgroups' function. */ +/* #undef HAVE_GETGROUPS */ + +/* Define to 1 if you have the 'gethostbyname' function. */ +/* #undef HAVE_GETHOSTBYNAME */ + +/* Define to 1 if you have the 'gethostname' function. */ +/* #undef HAVE_GETHOSTNAME */ + +/* Define to 1 if you have the 'getrlimit' function. */ +/* #undef HAVE_GETRLIMIT */ + +/* Define if the GNU gettext() function is already present or preinstalled. */ +/* #undef HAVE_GETTEXT */ + +/* Define to 1 if you have a standard gettimeofday function */ +#ifdef __MINGW32__ +#define HAVE_GETTIMEOFDAY 1 +#endif + +/* Embed GNU Guile support. Windows build sets this on the + compilation command line. */ +/* #undef HAVE_GUILE */ + +/* Define if you have the iconv() function. */ +/* #undef HAVE_ICONV */ + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_INTTYPES_H 1 +#endif + +/* Define to 1 if you have the `isatty' function. */ +#define HAVE_ISATTY 1 + +/* Define to 1 if you have the 'dgc' library (-ldgc). */ +/* #undef HAVE_LIBDGC */ + +/* Define to 1 if you have the 'kstat' library (-lkstat). */ +/* #undef HAVE_LIBKSTAT */ + +/* Define to 1 if you have the `perfstat' library (-lperfstat). */ +/* #undef HAVE_LIBPERFSTAT */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LOCALE_H */ + +/* Define to 1 if the system has the type 'long long int'. */ +#define HAVE_LONG_LONG_INT 1 + +/* Define to 1 if you have the 'lstat' function. */ +/* #undef HAVE_LSTAT */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + +/* Define to 1 if you have the `memrchr' function. */ +/* #undef HAVE_MEMRCHR */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MINIX_CONFIG_H */ + +/* Define to 1 if you have the 'mkfifo' function. */ +/* #undef HAVE_MKFIFO */ + +/* Define to 1 if you have the 'mkstemp' function. */ +/* #undef HAVE_MKSTEMP */ + +/* Define to 1 if you have the `mkstemp' function. */ +/* #undef HAVE_MKSTEMP */ + +/* Define to 1 if you have the 'mktemp' function. */ +#define HAVE_MKTEMP 1 + +/* Define to 1 if you have the header file, and it defines 'DIR'. */ +/* #undef HAVE_NDIR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NLIST_H */ + +/* Define to 1 if you have the 'pipe' function. */ +/* #undef HAVE_PIPE */ + +/* Define to 1 if you have the `posix_spawn' function. */ +/* #undef HAVE_POSIX_SPAWN */ + +/* Define to 1 if you have the `posix_spawnattr_setsigmask' function. */ +/* #undef HAVE_POSIX_SPAWNATTR_SETSIGMASK */ + +/* Define to 1 if you have the `pselect' function. */ +/* #undef HAVE_PSELECT */ + +/* Define to 1 if you have the 'pstat_getdynamic' function. */ +/* #undef HAVE_PSTAT_GETDYNAMIC */ + +/* Define to 1 if you have the 'readlink' function. */ +/* #undef HAVE_READLINK */ + +/* Define to 1 if you have the 'realpath' function. */ +/* #undef HAVE_REALPATH */ + +/* Define to 1 if defines the SA_RESTART constant. */ +/* #undef HAVE_SA_RESTART */ + +/* Define to 1 if you have the 'setegid' function. */ +/* #undef HAVE_SETEGID */ + +/* Define to 1 if you have the 'seteuid' function. */ +/* #undef HAVE_SETEUID */ + +/* Define to 1 if you have the 'setlinebuf' function. */ +/* #undef HAVE_SETLINEBUF */ + +/* Define to 1 if you have the 'setregid' function. */ +/* #undef HAVE_SETREGID */ + +/* Define to 1 if you have the 'setreuid' function. */ +/* #undef HAVE_SETREUID */ + +/* Define to 1 if you have the 'setrlimit' function. */ +/* #undef HAVE_SETRLIMIT */ + +/* Define to 1 if you have the 'setvbuf' function. */ +#define HAVE_SETVBUF 1 + +/* Define to 1 if you have the 'sigaction' function. */ +/* #undef HAVE_SIGACTION */ + +/* Define to 1 if you have the 'sigsetmask' function. */ +/* #undef HAVE_SIGSETMASK */ + +/* Define to 1 if you have the 'socket' function. */ +/* #undef HAVE_SOCKET */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SPAWN_H */ + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_STDINT_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `stpcpy' function. */ +/* #undef HAVE_STPCPY */ + +/* Define to 1 if you have the 'strcasecmp' function. */ +#if defined(__MINGW32__) || defined(__TINYC__) +#define HAVE_STRCASECMP 1 +#endif + +/* 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 HAVE_STRCOLL 1 + +/* Define to 1 if you have the 'strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the 'stricmp' function. */ +#define HAVE_STRICMP 1 + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_STRINGS_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the 'strncasecmp' function. */ +#if defined(__MINGW32__) || defined(__TINYC__) +#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 you have the `strtoll' function. */ +#define HAVE_STRTOLL 1 + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* SV 57152: MinGW64 version of dirent doesn't support d_type. */ +#ifndef __MINGW64__ +# define HAVE_STRUCT_DIRENT_D_TYPE 1 +#endif + +/* 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 header file, and it defines 'DIR'. + */ +/* #undef HAVE_SYS_DIR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FILE_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_LOADAVG_H */ + +/* Define to 1 if you have the header file, and it defines 'DIR'. + */ +/* #undef HAVE_SYS_NDIR_H */ + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_SYS_PARAM_H 1 +#endif + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_RESOURCE_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SELECT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMEB_H 1 + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_SYS_TIME_H 1 +#endif + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define to 1 if you have the `ttyname' function. */ +#define HAVE_TTYNAME 1 +char *ttyname (int); + +/* Define to 1 if the system has the type `intmax_t'. */ +#define HAVE_INTMAX_T 1 + +/* Define to 1 if the system has the type `uintmax_t'. */ +#define HAVE_UINTMAX_T 1 + +/* Define to 1 if you have the `umask' function. */ +#if defined(__MINGW32__) || defined(__TINYC__) +# define HAVE_UMASK 1 +#endif + +/* Define to 1 if you have the \'union wait' type in . */ +/* #undef HAVE_UNION_WAIT */ + +/* Define to 1 if you have the header file. */ +#ifdef __MINGW32__ +#define HAVE_UNISTD_H 1 +#endif + +/* Define to 1 if the system has the type 'unsigned long long int'. */ +#define HAVE_UNSIGNED_LONG_LONG_INT 1 + +/* Define to 1 if you have the `vfork' function. */ +/* #undef HAVE_VFORK */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_VFORK_H */ + +/* 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 you have the header file. */ +/* #undef HAVE_WCHAR_H */ + +/* Define to 1 if `fork' works. */ +/* #undef HAVE_WORKING_FORK */ + +/* Define to 1 if `vfork' works. */ +/* #undef HAVE_WORKING_VFORK */ + +/* Define to 1 if the system has the type `_Bool'. */ +/* #undef HAVE__BOOL */ + +/* Build host information. */ +#define MAKE_HOST "Windows32" + +/* 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 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 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. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Define to the character that separates directories in PATH. */ +#define PATH_SEPARATOR_CHAR ';' + +/* Define to the name of the SCCS 'get' command. */ +#define SCCS_GET "echo no sccs get" + +/* Define this if the SCCS 'get' command understands the '-G' option. */ +/* #undef SCCS_GET_MINUS_G */ + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if the 'S_IS*' macros in do not work properly. */ +/* #undef STAT_MACROS_BROKEN */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if struct stat contains a nanoseconds field */ +/* #undef ST_MTIM_NSEC */ + +/* Define to 1 on System V Release 4. */ +/* #undef SVR4 */ + +/* Define to 1 for Encore UMAX. */ +/* #undef UMAX */ + +/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +/* #undef UMAX4_3 */ + +/* Define if using the dmalloc debugging malloc package */ +/* #undef WITH_DMALLOC */ + +/* Define to 1 if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +/* # undef _ALL_SOURCE */ +#endif + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +/* # undef WORDS_BIGENDIAN */ + +/* Number of bits in a file offset, on hosts where this is settable. */ +/* #undef _FILE_OFFSET_BITS */ + +/* Define for large files, on AIX-style hosts. */ +/* #undef _LARGE_FILES */ + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for 'stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Define to empty if 'const' does not conform to ANSI C. */ +/* #undef const */ + +#ifdef __MINGW32__ +# undef __USE_MINGW_ANSI_STDIO +# define __USE_MINGW_ANSI_STDIO 1 +#endif + +/* Number of bits in a timestamp, on hosts where this is settable. */ +/* #undef _TIME_BITS */ + +/* For 64-bit time_t on 32-bit mingw. */ +#ifdef __MINGW32__ +# define __MINGW_USE_VC2005_COMPAT 1 +#endif + +#include + +/* Define to 'int' if doesn't define. */ +#define gid_t int + +/* Define to 'int' if does not define. */ +/* GCC 4.x reportedly defines pid_t. */ +#ifndef _PID_T_ +#ifdef _WIN64 +#define pid_t __int64 +#else +#define pid_t int +#endif +#endif + +/* Define to `int' if does not define. */ +#define ssize_t int + +/* Define to 'int' if doesn't define. */ +#define uid_t int + +/* Define {u,}intmax_t if not defined in or . */ +#if !HAVE_STDINT_H && !HAVE_INTTYPES_H +#define intmax_t long long +#define uintmax_t unsigned long long +#endif + +/* Define if you have that is POSIX.1 compatible. */ +/* #undef HAVE_SYS_WAIT_H */ + +/* Define to the installation directory for locales. */ +#define LOCALEDIR "" + +/* + * Refer to README.W32 for info on the following settings + */ + + +/* + * If you have a shell that does not grok 'sh -c quoted-command-line' + * correctly, you need this setting; it is the default for tcc. + * Please see below for specific shell support. + */ +#if defined(__TINYC__) +#define BATCH_MODE_ONLY_SHELL 1 +#else +/*#define BATCH_MODE_ONLY_SHELL 1 */ +#endif + +/* + * Define if you have the Cygnus "Cygwin" GNU Windows32 tool set. + * Do NOT define BATCH_MODE_ONLY_SHELL if you define HAVE_CYGWIN_SHELL + */ +/*#define HAVE_CYGWIN_SHELL 1 */ + +/* + * Define if you have the MKS tool set or shell. Do NOT define + * BATCH_MODE_ONLY_SHELL if you define HAVE_MKS_SHELL + */ +/*#define HAVE_MKS_SHELL 1 */ + +/* + * Enforce the mutual exclusivity restriction. + */ +#ifdef HAVE_MKS_SHELL +#undef BATCH_MODE_ONLY_SHELL +#endif + +#ifdef HAVE_CYGWIN_SHELL +#undef BATCH_MODE_ONLY_SHELL +#endif diff --git a/local/recipes/dev/gnu-make/source/src/config.h.in b/local/recipes/dev/gnu-make/source/src/config.h.in new file mode 100644 index 0000000000..f975627027 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/config.h.in @@ -0,0 +1,1218 @@ +/* src/config.h.in. Generated from configure.ac by autoheader. */ + +/* CPU and C ABI indicator */ +#ifndef __i386__ +#undef __i386__ +#endif +#ifndef __x86_64_x32__ +#undef __x86_64_x32__ +#endif +#ifndef __x86_64__ +#undef __x86_64__ +#endif +#ifndef __alpha__ +#undef __alpha__ +#endif +#ifndef __arm__ +#undef __arm__ +#endif +#ifndef __armhf__ +#undef __armhf__ +#endif +#ifndef __arm64_ilp32__ +#undef __arm64_ilp32__ +#endif +#ifndef __arm64__ +#undef __arm64__ +#endif +#ifndef __hppa__ +#undef __hppa__ +#endif +#ifndef __hppa64__ +#undef __hppa64__ +#endif +#ifndef __ia64_ilp32__ +#undef __ia64_ilp32__ +#endif +#ifndef __ia64__ +#undef __ia64__ +#endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif +#ifndef __m68k__ +#undef __m68k__ +#endif +#ifndef __mips__ +#undef __mips__ +#endif +#ifndef __mipsn32__ +#undef __mipsn32__ +#endif +#ifndef __mips64__ +#undef __mips64__ +#endif +#ifndef __powerpc__ +#undef __powerpc__ +#endif +#ifndef __powerpc64__ +#undef __powerpc64__ +#endif +#ifndef __powerpc64_elfv2__ +#undef __powerpc64_elfv2__ +#endif +#ifndef __riscv32__ +#undef __riscv32__ +#endif +#ifndef __riscv64__ +#undef __riscv64__ +#endif +#ifndef __riscv32_ilp32__ +#undef __riscv32_ilp32__ +#endif +#ifndef __riscv32_ilp32f__ +#undef __riscv32_ilp32f__ +#endif +#ifndef __riscv32_ilp32d__ +#undef __riscv32_ilp32d__ +#endif +#ifndef __riscv64_ilp32__ +#undef __riscv64_ilp32__ +#endif +#ifndef __riscv64_ilp32f__ +#undef __riscv64_ilp32f__ +#endif +#ifndef __riscv64_ilp32d__ +#undef __riscv64_ilp32d__ +#endif +#ifndef __riscv64_lp64__ +#undef __riscv64_lp64__ +#endif +#ifndef __riscv64_lp64f__ +#undef __riscv64_lp64f__ +#endif +#ifndef __riscv64_lp64d__ +#undef __riscv64_lp64d__ +#endif +#ifndef __s390__ +#undef __s390__ +#endif +#ifndef __s390x__ +#undef __s390x__ +#endif +#ifndef __sh__ +#undef __sh__ +#endif +#ifndef __sparc__ +#undef __sparc__ +#endif +#ifndef __sparc64__ +#undef __sparc64__ +#endif + + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define to 1 if the 'closedir' function returns void instead of int. */ +#undef CLOSEDIR_VOID + +/* Define to 1 if using 'alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 for DGUX with . */ +#undef DGUX + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Use high resolution file timestamps if nonzero. */ +#undef FILE_TIMESTAMP_HI_RES + +/* Define to 1 when the gnulib module getloadavg should be tested. */ +#undef GNULIB_TEST_GETLOADAVG + +/* Define to 1 if you have 'alloca' after including , a header that + may be supplied by this distribution. */ +#undef HAVE_ALLOCA + +/* Define to 1 if works. */ +#undef HAVE_ALLOCA_H + +/* 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 Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define to 1 if you have the clock_gettime function. */ +#undef HAVE_CLOCK_GETTIME + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the declaration of 'bsd_signal', and to 0 if you + don't. */ +#undef HAVE_DECL_BSD_SIGNAL + +/* Define to 1 if you have the declaration of '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 'getloadavg'. */ +#undef HAVE_DECL_GETLOADAVG + +/* Define to 1 if you have the declaration of 'sys_siglist', and to 0 if you + don't. */ +#undef HAVE_DECL_SYS_SIGLIST + +/* Define to 1 if you have the declaration of '_sys_siglist', and to 0 if you + don't. */ +#undef HAVE_DECL__SYS_SIGLIST + +/* Define to 1 if you have the declaration of '__sys_siglist', and to 0 if you + don't. */ +#undef HAVE_DECL___SYS_SIGLIST + +/* Define to 1 if you have the header file, and it defines 'DIR'. + */ +#undef HAVE_DIRENT_H + +/* Support DOS-style pathnames. */ +#undef HAVE_DOS_PATHS + +/* Define to 1 if you have the 'dup' function. */ +#undef HAVE_DUP + +/* Define to 1 if you have the 'dup2' function. */ +#undef HAVE_DUP2 + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the 'fdopen' function. */ +#undef HAVE_FDOPEN + +/* Define to 1 if you have the 'fork' function. */ +#undef HAVE_FORK + +/* Define to 1 if you have the 'getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the 'getgroups' function. */ +#undef HAVE_GETGROUPS + +/* Define to 1 if you have the 'gethostbyname' function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define to 1 if you have the 'gethostname' function. */ +#undef HAVE_GETHOSTNAME + +/* Define to 1 if you have the 'getrlimit' function. */ +#undef HAVE_GETRLIMIT + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have a standard gettimeofday function */ +#undef HAVE_GETTIMEOFDAY + +/* Embed GNU Guile support */ +#undef HAVE_GUILE + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV + +/* Define to 1 if the system has the type 'intmax_t'. */ +#undef HAVE_INTMAX_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the 'isatty' function. */ +#undef HAVE_ISATTY + +/* Define to 1 if you have the 'dgc' library (-ldgc). */ +#undef HAVE_LIBDGC + +/* Define to 1 if you have the 'kstat' library (-lkstat). */ +#undef HAVE_LIBKSTAT + +/* Define to 1 if you have the 'perfstat' library (-lperfstat). */ +#undef HAVE_LIBPERFSTAT + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if the system has the type 'long long int'. */ +#undef HAVE_LONG_LONG_INT + +/* Define to 1 if you have the 'lstat' function. */ +#undef HAVE_LSTAT + +/* Define to 1 if you have the header file. */ +#undef HAVE_MACH_MACH_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the 'mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define to 1 if you have the 'memrchr' function. */ +#undef HAVE_MEMRCHR + +/* Define to 1 if you have the header file. */ +#undef HAVE_MINIX_CONFIG_H + +/* Define to 1 if you have the 'mkfifo' function. */ +#undef HAVE_MKFIFO + +/* Define to 1 if you have the 'mkstemp' function. */ +#undef HAVE_MKSTEMP + +/* Define to 1 if you have the 'mktemp' function. */ +#undef HAVE_MKTEMP + +/* Define to 1 if you have the header file, and it defines 'DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NLIST_H + +/* Define to 1 if you have the 'pipe' function. */ +#undef HAVE_PIPE + +/* Define to 1 if you have the 'posix_spawn' function. */ +#undef HAVE_POSIX_SPAWN + +/* Define to 1 if you have the 'posix_spawnattr_setsigmask' function. */ +#undef HAVE_POSIX_SPAWNATTR_SETSIGMASK + +/* Define to 1 if you have the 'pselect' function. */ +#undef HAVE_PSELECT + +/* Define to 1 if you have the 'pstat_getdynamic' function. */ +#undef HAVE_PSTAT_GETDYNAMIC + +/* Define to 1 if you have the 'readlink' function. */ +#undef HAVE_READLINK + +/* Define to 1 if you have the 'realpath' function. */ +#undef HAVE_REALPATH + +/* Define to 1 if defines the SA_RESTART constant. */ +#undef HAVE_SA_RESTART + +/* Define to 1 if you have the 'setegid' function. */ +#undef HAVE_SETEGID + +/* Define to 1 if you have the 'seteuid' function. */ +#undef HAVE_SETEUID + +/* Define to 1 if you have the 'setlinebuf' function. */ +#undef HAVE_SETLINEBUF + +/* Define to 1 if you have the 'setregid' function. */ +#undef HAVE_SETREGID + +/* Define to 1 if you have the 'setreuid' function. */ +#undef HAVE_SETREUID + +/* Define to 1 if you have the 'setrlimit' function. */ +#undef HAVE_SETRLIMIT + +/* Define to 1 if you have the 'setvbuf' function. */ +#undef HAVE_SETVBUF + +/* Define to 1 if you have the 'sigaction' function. */ +#undef HAVE_SIGACTION + +/* Define to 1 if you have the 'sigsetmask' function. */ +#undef HAVE_SIGSETMASK + +/* Define to 1 if the system has the type 'sig_atomic_t'. */ +#undef HAVE_SIG_ATOMIC_T + +/* Define to 1 if you have the 'socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_SPAWN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the 'stpcpy' function. */ +#undef HAVE_STPCPY + +/* 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 'strcoll' function and it is properly defined. + */ +#undef HAVE_STRCOLL + +/* Define to 1 if you have the 'strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the 'strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the 'stricmp' function. */ +#undef HAVE_STRICMP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the 'strncasecmp' function. */ +#undef HAVE_STRNCASECMP + +/* Define to 1 if you have the 'strncmpi' function. */ +#undef HAVE_STRNCMPI + +/* Define to 1 if you have the 'strndup' function. */ +#undef HAVE_STRNDUP + +/* Define to 1 if you have the 'strnicmp' function. */ +#undef HAVE_STRNICMP + +/* Define to 1 if you have the 'strsignal' function. */ +#undef HAVE_STRSIGNAL + +/* Define to 1 if you have the 'strtoll' function. */ +#undef HAVE_STRTOLL + +/* Define to 1 if 'd_type' is a member of 'struct dirent'. */ +#undef HAVE_STRUCT_DIRENT_D_TYPE + +/* 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 header file, and it defines 'DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_FILE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_LOADAVG_H + +/* Define to 1 if you have the header file, and it defines 'DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIMEB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_WAIT_H + +/* Define to 1 if you have the 'ttyname' function. */ +#undef HAVE_TTYNAME + +/* Define to 1 if the system has the type 'uintmax_t'. */ +#undef HAVE_UINTMAX_T + +/* Define to 1 if you have the 'umask' function. */ +#undef HAVE_UMASK + +/* Define to 1 if you have the 'union wait' type in . */ +#undef HAVE_UNION_WAIT + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if the system has the type 'unsigned long long int'. */ +#undef HAVE_UNSIGNED_LONG_LONG_INT + +/* Define to 1 if you have the 'vfork' function. */ +#undef HAVE_VFORK + +/* Define to 1 if you have the header file. */ +#undef HAVE_VFORK_H + +/* 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 you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define to 1 if 'fork' works. */ +#undef HAVE_WORKING_FORK + +/* Define to 1 if 'vfork' works. */ +#undef HAVE_WORKING_VFORK + +/* Define to 1 if the system has the type '_Bool'. */ +#undef HAVE__BOOL + +/* Build host information. */ +#undef MAKE_HOST + +/* Define to 1 to enable job server support in GNU make. */ +#undef MAKE_JOBSERVER + +/* Define to 1 to enable 'load' support in GNU make. */ +#undef MAKE_LOAD + +/* Define to 1 to enable symbolic link timestamp checking. */ +#undef MAKE_SYMLINKS + +/* Define to 1 if config.h is generated by running the configure script. */ +#undef MK_CONFIGURE + +/* Define to 1 if the nlist n_name member is a pointer */ +#undef N_NAME_POINTER + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to the character that separates directories in PATH. */ +#undef PATH_SEPARATOR_CHAR + +/* Define to the name of the SCCS 'get' command. */ +#undef SCCS_GET + +/* Define to 1 if the SCCS 'get' command understands the '-G' option. */ +#undef SCCS_GET_MINUS_G + +/* 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 runtime. + 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 do not work properly. */ +#undef STAT_MACROS_BROKEN + +/* Define to 1 if all of the C89 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ +#undef STDC_HEADERS + +/* Define if struct stat contains a nanoseconds field */ +#undef ST_MTIM_NSEC + +/* Define to 1 on System V Release 4. */ +#undef SVR4 + +/* Define to 1 for Encore UMAX. */ +#undef UMAX + +/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +#undef UMAX4_3 + +/* Define to 1 to use posix_spawn(). */ +#undef USE_POSIX_SPAWN + +/* Enable extensions on AIX, Interix, z/OS. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable extensions on Cosmopolitan Libc. */ +#ifndef _COSMO_SOURCE +# undef _COSMO_SOURCE +#endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif + + +/* Version number of package */ +#undef VERSION + +/* Build for the WINDOWS32 API. */ +#undef WINDOWS32 + +/* Define if using the dmalloc debugging malloc package */ +#undef WITH_DMALLOC + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ +#if defined __GNUC__ && defined __GNUC_MINOR__ +# define _GL_GNUC_PREREQ(major, minor) \ + ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) +#else +# define _GL_GNUC_PREREQ(major, minor) 0 +#endif + + +/* Define to enable the declarations of ISO C 11 types and functions. */ +#undef _ISOC11_SOURCE + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* The _Noreturn keyword of C11. */ +#ifndef _Noreturn +# if (defined __cplusplus \ + && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ + || (defined _MSC_VER && 1900 <= _MSC_VER)) \ + && 0) + /* [[noreturn]] is not practically usable, because with it the syntax + extern _Noreturn void func (...); + would not be valid; such a declaration would only be valid with 'extern' + and '_Noreturn' swapped, or without the 'extern' keyword. However, some + AIX system header files and several gnulib header files use precisely + this syntax with 'extern'. */ +# define _Noreturn [[noreturn]] +# elif ((!defined __cplusplus || defined __clang__) \ + && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ + || (!defined __STRICT_ANSI__ \ + && (_GL_GNUC_PREREQ (4, 7) \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))))) + /* _Noreturn works as-is. */ +# elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C +# define _Noreturn __attribute__ ((__noreturn__)) +# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn +# endif +#endif + + +/* Number of bits in a timestamp, on hosts where this is settable. */ +#undef _TIME_BITS + +/* For 64-bit time_t on 32-bit mingw. */ +#undef __MINGW_USE_VC2005_COMPAT + +/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked 'volatile'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable 'signal_occurred' is not declared 'volatile'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE + + +/* Attributes. */ +#if (defined __has_attribute \ + && (!defined __clang_minor__ \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) +# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) +#else +# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr +# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) +# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) +# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_diagnose_if 0 +# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) +# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) +# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) +# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) +# ifdef _ICC +# define _GL_ATTR_may_alias 0 +# else +# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) +# endif +# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) +# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) +# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) +# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) +# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) +#endif + +#ifdef __has_c_attribute +# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \ + && _GL_GNUC_PREREQ (4, 6)) +# pragma GCC diagnostic ignored "-Wpedantic" +# endif +# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) +#else +# define _GL_HAS_C_ATTRIBUTE(attr) 0 +#endif + + +/* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function + is the size of the returned memory block. + _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied + by the Nth argument of the function is the size of the returned memory block. + */ +/* Applies to: function, pointer to function, function types. */ +#if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +#else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +#endif + +/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the + function and report an error if it cannot do so. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +#else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +#endif + +/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show + in stack traces when debugging. The compiler should omit the function from + stack traces. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +#else +# define _GL_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via 'free'; it can be used only after declaring 'free'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib's or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following 'case' or + 'default' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a 'switch' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with '__'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type '[[un]signed] char'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don't use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + + +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif + + +/* Define to empty if 'const' does not conform to ANSI C. */ +#undef const + +/* Define as 'access' if you don't have the eaccess() function. */ +#undef eaccess + +/* Define as 'int' if doesn't define. */ +#undef gid_t + +/* Define to the widest signed integer type if and do + not define. */ +#undef intmax_t + +/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif + +/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) + + +/* Define to 'long int' if does not define. */ +#undef off_t + +/* Define as a signed integer type capable of holding a process identifier. */ +#undef pid_t + +/* Define as an integer type suitable for memory locations that can be + accessed atomically even in the presence of asynchronous signals. */ +#undef sig_atomic_t + +/* Define as 'unsigned int' if doesn't define. */ +#undef size_t + +/* Define as 'int' if doesn't define. */ +#undef ssize_t + +/* Define as 'int' if doesn't define. */ +#undef uid_t + +/* Define to the widest unsigned integer type if and + do not define. */ +#undef uintmax_t + +/* Define as 'fork' if 'vfork' does not work. */ +#undef vfork diff --git a/local/recipes/dev/gnu-make/source/src/config.h.in~ b/local/recipes/dev/gnu-make/source/src/config.h.in~ new file mode 100644 index 0000000000..7085a40a2e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/config.h.in~ @@ -0,0 +1,1210 @@ +/* src/config.h.in. Generated from configure.ac by autoheader. */ + +/* CPU and C ABI indicator */ +#ifndef __i386__ +#undef __i386__ +#endif +#ifndef __x86_64_x32__ +#undef __x86_64_x32__ +#endif +#ifndef __x86_64__ +#undef __x86_64__ +#endif +#ifndef __alpha__ +#undef __alpha__ +#endif +#ifndef __arm__ +#undef __arm__ +#endif +#ifndef __armhf__ +#undef __armhf__ +#endif +#ifndef __arm64_ilp32__ +#undef __arm64_ilp32__ +#endif +#ifndef __arm64__ +#undef __arm64__ +#endif +#ifndef __hppa__ +#undef __hppa__ +#endif +#ifndef __hppa64__ +#undef __hppa64__ +#endif +#ifndef __ia64_ilp32__ +#undef __ia64_ilp32__ +#endif +#ifndef __ia64__ +#undef __ia64__ +#endif +#ifndef __loongarch64__ +#undef __loongarch64__ +#endif +#ifndef __m68k__ +#undef __m68k__ +#endif +#ifndef __mips__ +#undef __mips__ +#endif +#ifndef __mipsn32__ +#undef __mipsn32__ +#endif +#ifndef __mips64__ +#undef __mips64__ +#endif +#ifndef __powerpc__ +#undef __powerpc__ +#endif +#ifndef __powerpc64__ +#undef __powerpc64__ +#endif +#ifndef __powerpc64_elfv2__ +#undef __powerpc64_elfv2__ +#endif +#ifndef __riscv32__ +#undef __riscv32__ +#endif +#ifndef __riscv64__ +#undef __riscv64__ +#endif +#ifndef __riscv32_ilp32__ +#undef __riscv32_ilp32__ +#endif +#ifndef __riscv32_ilp32f__ +#undef __riscv32_ilp32f__ +#endif +#ifndef __riscv32_ilp32d__ +#undef __riscv32_ilp32d__ +#endif +#ifndef __riscv64_ilp32__ +#undef __riscv64_ilp32__ +#endif +#ifndef __riscv64_ilp32f__ +#undef __riscv64_ilp32f__ +#endif +#ifndef __riscv64_ilp32d__ +#undef __riscv64_ilp32d__ +#endif +#ifndef __riscv64_lp64__ +#undef __riscv64_lp64__ +#endif +#ifndef __riscv64_lp64f__ +#undef __riscv64_lp64f__ +#endif +#ifndef __riscv64_lp64d__ +#undef __riscv64_lp64d__ +#endif +#ifndef __s390__ +#undef __s390__ +#endif +#ifndef __s390x__ +#undef __s390x__ +#endif +#ifndef __sh__ +#undef __sh__ +#endif +#ifndef __sparc__ +#undef __sparc__ +#endif +#ifndef __sparc64__ +#undef __sparc64__ +#endif + + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define to 1 if the `closedir' function returns void instead of int. */ +#undef CLOSEDIR_VOID + +/* Define to 1 if using 'alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 for DGUX with . */ +#undef DGUX + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Use high resolution file timestamps if nonzero. */ +#undef FILE_TIMESTAMP_HI_RES + +/* Define to 1 when the gnulib module getloadavg should be tested. */ +#undef GNULIB_TEST_GETLOADAVG + +/* Define to 1 if you have 'alloca' after including , a header that + may be supplied by this distribution. */ +#undef HAVE_ALLOCA + +/* Define to 1 if works. */ +#undef HAVE_ALLOCA_H + +/* 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 Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define to 1 if you have the clock_gettime function. */ +#undef HAVE_CLOCK_GETTIME + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the declaration of `bsd_signal', and to 0 if you + don't. */ +#undef HAVE_DECL_BSD_SIGNAL + +/* Define to 1 if you have the declaration of `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 'getloadavg'. */ +#undef HAVE_DECL_GETLOADAVG + +/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you + don't. */ +#undef HAVE_DECL_SYS_SIGLIST + +/* Define to 1 if you have the declaration of `_sys_siglist', and to 0 if you + don't. */ +#undef HAVE_DECL__SYS_SIGLIST + +/* Define to 1 if you have the declaration of `__sys_siglist', and to 0 if you + don't. */ +#undef HAVE_DECL___SYS_SIGLIST + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_DIRENT_H + +/* Support DOS-style pathnames. */ +#undef HAVE_DOS_PATHS + +/* Define to 1 if you have the `dup' function. */ +#undef HAVE_DUP + +/* Define to 1 if you have the `dup2' function. */ +#undef HAVE_DUP2 + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `fdopen' function. */ +#undef HAVE_FDOPEN + +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + +/* Define to 1 if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the `getgroups' function. */ +#undef HAVE_GETGROUPS + +/* Define to 1 if you have the `gethostbyname' function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define to 1 if you have the `gethostname' function. */ +#undef HAVE_GETHOSTNAME + +/* Define to 1 if you have the `getrlimit' function. */ +#undef HAVE_GETRLIMIT + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have a standard gettimeofday function */ +#undef HAVE_GETTIMEOFDAY + +/* Embed GNU Guile support */ +#undef HAVE_GUILE + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV + +/* Define to 1 if the system has the type `intmax_t'. */ +#undef HAVE_INTMAX_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `isatty' function. */ +#undef HAVE_ISATTY + +/* Define to 1 if you have the `dgc' library (-ldgc). */ +#undef HAVE_LIBDGC + +/* Define to 1 if you have the `kstat' library (-lkstat). */ +#undef HAVE_LIBKSTAT + +/* Define to 1 if you have the `perfstat' library (-lperfstat). */ +#undef HAVE_LIBPERFSTAT + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if the system has the type 'long long int'. */ +#undef HAVE_LONG_LONG_INT + +/* Define to 1 if you have the `lstat' function. */ +#undef HAVE_LSTAT + +/* Define to 1 if you have the header file. */ +#undef HAVE_MACH_MACH_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define to 1 if you have the `memrchr' function. */ +#undef HAVE_MEMRCHR + +/* Define to 1 if you have the header file. */ +#undef HAVE_MINIX_CONFIG_H + +/* Define to 1 if you have the `mkfifo' function. */ +#undef HAVE_MKFIFO + +/* Define to 1 if you have the `mkstemp' function. */ +#undef HAVE_MKSTEMP + +/* Define to 1 if you have the `mktemp' function. */ +#undef HAVE_MKTEMP + +/* Define to 1 if you have the header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NLIST_H + +/* Define to 1 if you have the `pipe' function. */ +#undef HAVE_PIPE + +/* Define to 1 if you have the `posix_spawn' function. */ +#undef HAVE_POSIX_SPAWN + +/* Define to 1 if you have the `posix_spawnattr_setsigmask' function. */ +#undef HAVE_POSIX_SPAWNATTR_SETSIGMASK + +/* Define to 1 if you have the `pselect' function. */ +#undef HAVE_PSELECT + +/* Define to 1 if you have the `pstat_getdynamic' function. */ +#undef HAVE_PSTAT_GETDYNAMIC + +/* Define to 1 if you have the `readlink' function. */ +#undef HAVE_READLINK + +/* Define to 1 if you have the `realpath' function. */ +#undef HAVE_REALPATH + +/* Define to 1 if defines the SA_RESTART constant. */ +#undef HAVE_SA_RESTART + +/* Define to 1 if you have the `setegid' function. */ +#undef HAVE_SETEGID + +/* Define to 1 if you have the `seteuid' function. */ +#undef HAVE_SETEUID + +/* Define to 1 if you have the `setlinebuf' function. */ +#undef HAVE_SETLINEBUF + +/* Define to 1 if you have the `setregid' function. */ +#undef HAVE_SETREGID + +/* Define to 1 if you have the `setreuid' function. */ +#undef HAVE_SETREUID + +/* Define to 1 if you have the `setrlimit' function. */ +#undef HAVE_SETRLIMIT + +/* Define to 1 if you have the `setvbuf' function. */ +#undef HAVE_SETVBUF + +/* Define to 1 if you have the `sigaction' function. */ +#undef HAVE_SIGACTION + +/* Define to 1 if you have the `sigsetmask' function. */ +#undef HAVE_SIGSETMASK + +/* Define to 1 if the system has the type `sig_atomic_t'. */ +#undef HAVE_SIG_ATOMIC_T + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_SPAWN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* 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 `strcoll' function and it is properly defined. + */ +#undef HAVE_STRCOLL + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the `stricmp' function. */ +#undef HAVE_STRICMP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strncasecmp' function. */ +#undef HAVE_STRNCASECMP + +/* Define to 1 if you have the `strncmpi' function. */ +#undef HAVE_STRNCMPI + +/* Define to 1 if you have the `strndup' function. */ +#undef HAVE_STRNDUP + +/* Define to 1 if you have the `strnicmp' function. */ +#undef HAVE_STRNICMP + +/* Define to 1 if you have the `strsignal' function. */ +#undef HAVE_STRSIGNAL + +/* Define to 1 if you have the `strtoll' function. */ +#undef HAVE_STRTOLL + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +#undef HAVE_STRUCT_DIRENT_D_TYPE + +/* 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 header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_FILE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_LOADAVG_H + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIMEB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_WAIT_H + +/* Define to 1 if you have the `ttyname' function. */ +#undef HAVE_TTYNAME + +/* Define to 1 if the system has the type `uintmax_t'. */ +#undef HAVE_UINTMAX_T + +/* Define to 1 if you have the `umask' function. */ +#undef HAVE_UMASK + +/* Define to 1 if you have the 'union wait' type in . */ +#undef HAVE_UNION_WAIT + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if the system has the type 'unsigned long long int'. */ +#undef HAVE_UNSIGNED_LONG_LONG_INT + +/* Define to 1 if you have the `vfork' function. */ +#undef HAVE_VFORK + +/* Define to 1 if you have the header file. */ +#undef HAVE_VFORK_H + +/* 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 you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define to 1 if `fork' works. */ +#undef HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#undef HAVE_WORKING_VFORK + +/* Define to 1 if the system has the type `_Bool'. */ +#undef HAVE__BOOL + +/* Build host information. */ +#undef MAKE_HOST + +/* Define to 1 to enable job server support in GNU make. */ +#undef MAKE_JOBSERVER + +/* Define to 1 to enable 'load' support in GNU make. */ +#undef MAKE_LOAD + +/* Define to 1 to enable symbolic link timestamp checking. */ +#undef MAKE_SYMLINKS + +/* Define to 1 if config.h is generated by running the configure script. */ +#undef MK_CONFIGURE + +/* Define to 1 if the nlist n_name member is a pointer */ +#undef N_NAME_POINTER + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to the character that separates directories in PATH. */ +#undef PATH_SEPARATOR_CHAR + +/* Define to the name of the SCCS 'get' command. */ +#undef SCCS_GET + +/* Define to 1 if the SCCS 'get' command understands the '-G' option. */ +#undef SCCS_GET_MINUS_G + +/* 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 runtime. + 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 do not work properly. */ +#undef STAT_MACROS_BROKEN + +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ +#undef STDC_HEADERS + +/* Define if struct stat contains a nanoseconds field */ +#undef ST_MTIM_NSEC + +/* Define to 1 on System V Release 4. */ +#undef SVR4 + +/* Define to 1 for Encore UMAX. */ +#undef UMAX + +/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +#undef UMAX4_3 + +/* Define to 1 to use posix_spawn(). */ +#undef USE_POSIX_SPAWN + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE +#endif + + +/* Version number of package */ +#undef VERSION + +/* Build for the WINDOWS32 API. */ +#undef WINDOWS32 + +/* Define if using the dmalloc debugging malloc package */ +#undef WITH_DMALLOC + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ +#if defined __GNUC__ && defined __GNUC_MINOR__ +# define _GL_GNUC_PREREQ(major, minor) \ + ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) +#else +# define _GL_GNUC_PREREQ(major, minor) 0 +#endif + + +/* Define to enable the declarations of ISO C 11 types and functions. */ +#undef _ISOC11_SOURCE + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* The _Noreturn keyword of C11. */ +#ifndef _Noreturn +# if (defined __cplusplus \ + && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ + || (defined _MSC_VER && 1900 <= _MSC_VER)) \ + && 0) + /* [[noreturn]] is not practically usable, because with it the syntax + extern _Noreturn void func (...); + would not be valid; such a declaration would only be valid with 'extern' + and '_Noreturn' swapped, or without the 'extern' keyword. However, some + AIX system header files and several gnulib header files use precisely + this syntax with 'extern'. */ +# define _Noreturn [[noreturn]] +# elif ((!defined __cplusplus || defined __clang__) \ + && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ + || (!defined __STRICT_ANSI__ \ + && (_GL_GNUC_PREREQ (4, 7) \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))))) + /* _Noreturn works as-is. */ +# elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C +# define _Noreturn __attribute__ ((__noreturn__)) +# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn +# endif +#endif + + +/* Number of bits in a timestamp, on hosts where this is settable. */ +#undef _TIME_BITS + +/* For 64-bit time_t on 32-bit mingw. */ +#undef __MINGW_USE_VC2005_COMPAT + +/* The _GL_ASYNC_SAFE marker should be attached to functions that are + signal handlers (for signals other than SIGABRT, SIGPIPE) or can be + invoked from such signal handlers. Such functions have some restrictions: + * All functions that it calls should be marked _GL_ASYNC_SAFE as well, + or should be listed as async-signal-safe in POSIX + + section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in + particular, are NOT async-signal-safe. + * All memory locations (variables and struct fields) that these functions + access must be marked 'volatile'. This holds for both read and write + accesses. Otherwise the compiler might optimize away stores to and + reads from such locations that occur in the program, depending on its + data flow analysis. For example, when the program contains a loop + that is intended to inspect a variable set from within a signal handler + while (!signal_occurred) + ; + the compiler is allowed to transform this into an endless loop if the + variable 'signal_occurred' is not declared 'volatile'. + Additionally, recall that: + * A signal handler should not modify errno (except if it is a handler + for a fatal signal and ends by raising the same signal again, thus + provoking the termination of the process). If it invokes a function + that may clobber errno, it needs to save and restore the value of + errno. */ +#define _GL_ASYNC_SAFE + + +/* Attributes. */ +#if (defined __has_attribute \ + && (!defined __clang_minor__ \ + || (defined __apple_build_version__ \ + ? 6000000 <= __apple_build_version__ \ + : 3 < __clang_major__ + (5 <= __clang_minor__)))) +# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) +#else +# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr +# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) +# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) +# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_diagnose_if 0 +# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) +# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) +# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) +# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) +# ifdef _ICC +# define _GL_ATTR_may_alias 0 +# else +# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) +# endif +# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) +# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) +# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) +# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) +# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) +#endif + +#ifdef __has_c_attribute +# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \ + && _GL_GNUC_PREREQ (4, 6)) +# pragma GCC diagnostic ignored "-Wpedantic" +# endif +# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) +#else +# define _GL_HAS_C_ATTRIBUTE(attr) 0 +#endif + + +/* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function + is the size of the returned memory block. + _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied + by the Nth argument of the function is the size of the returned memory block. + */ +/* Applies to: function, pointer to function, function types. */ +#if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +#else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +#endif + +/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the + function and report an error if it cannot do so. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +#else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +#endif + +/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show + in stack traces when debugging. The compiler should omit the function from + stack traces. */ +/* Applies to: function. */ +#if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +#else +# define _GL_ATTRIBUTE_ARTIFICIAL +#endif + +/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ +/* Applies to: functions. */ +/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at + . + Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ +#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif +#else +# define _GL_ATTRIBUTE_COLD +#endif + +/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate + calls to the function with the same arguments. + This attribute is safe for a function that neither depends on nor affects + observable state, and always returns exactly once - e.g., does not loop + forever, and does not call longjmp. + (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST +#endif + +/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers + that can be freed by passing them as the Ith argument to the + function F. + _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that + can be freed via 'free'; it can be used only after declaring 'free'. */ +/* Applies to: functions. Cannot be used on inline functions. */ +#if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +#else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +#endif +/* If gnulib's or has already defined this macro, continue + to use this earlier definition, since may not have been included + yet. */ +#ifndef _GL_ATTRIBUTE_DEALLOC_FREE +# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +#endif + +/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. + The compiler may warn if the entity is used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: namespace, class, template specialization. */ +#if _GL_HAS_C_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +#elif _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GL_ATTRIBUTE_DEPRECATED +#endif + +/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and + the function call is not optimized away. + _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and + the function call is not optimized away. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +#elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +#else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +#endif + +/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain + visible to debuggers etc., even with '-fwhole-program'. */ +/* Applies to: functions, variables. */ +#if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +#else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#endif + +/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if + the control flow falls through to the immediately following 'case' or + 'default' label. The compiler should not warn in this case. */ +/* Applies to: Empty statement (;), inside a 'switch' statement. */ +/* Always expands to something. */ +#if _GL_HAS_C_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +#elif _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +#else +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#endif + +/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) + declares that the STRING-INDEXth function argument is a format string of + style ARCHETYPE, which is one of: + printf, gnu_printf + scanf, gnu_scanf, + strftime, gnu_strftime, + strfmon, + or the same thing prefixed and suffixed with '__'. + If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK + are suitable for the format string. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) +#endif + +/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other + compilation unit, it executes code from that unit only by return or by + exception handling. This declaration lets the compiler optimize that unit + more aggressively. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +#else +# define _GL_ATTRIBUTE_LEAF +#endif + +/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly + allocated memory. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +#else +# define _GL_ATTRIBUTE_MALLOC +#endif + +/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the + same storage as pointers to other types. Thus this declaration disables + strict aliasing optimization. */ +/* Applies to: types. */ +/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ +#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +#else +# define _GL_ATTRIBUTE_MAY_ALIAS +#endif + +/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if + the entity is not used. The compiler should not warn if the entity is not + used. */ +/* Applies to: + - function, variable, + - struct, union, struct/union member, + - enumeration, enumeration item, + - typedef, + in C++ also: class. */ +/* In C++ and C2x, this is spelled [[__maybe_unused__]]. + GCC's syntax is __attribute__ ((__unused__)). + clang supports both syntaxes. */ +#if _GL_HAS_C_ATTRIBUTE (maybe_unused) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +#else +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +#endif +/* Alternative spelling of this macro, for convenience and for + compatibility with glibc/include/libc-symbols.h. */ +#define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED +/* Earlier spellings of this macro. */ +#define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED + +/* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not + discard the return value. The compiler may warn if the caller does not use + the return value, unless the caller uses something like ignore_value. */ +/* Applies to: function, enumeration, class. */ +#if _GL_HAS_C_ATTRIBUTE (nodiscard) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +#elif _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +#else +# define _GL_ATTRIBUTE_NODISCARD +#endif + +/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the + function. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +#else +# define _GL_ATTRIBUTE_NOINLINE +#endif + +/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... + must not be NULL. + _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be + null. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +#else +# define _GL_ATTRIBUTE_NONNULL(args) +#endif + +/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is + not meant to be NUL-terminated. */ +/* Applies to: struct/union members and variables that are arrays of element + type '[[un]signed] char'. */ +#if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +#else +# define _GL_ATTRIBUTE_NONSTRING +#endif + +/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ + +/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. + */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +#else +# define _GL_ATTRIBUTE_NOTHROW +#endif + +/* _GL_ATTRIBUTE_PACKED declares: + For struct members: The member has the smallest possible alignment. + For struct, union, class: All members have the smallest possible alignment, + minimizing the memory required. */ +/* Applies to: struct members, struct, union, + in C++ also: class. */ +#if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +#else +# define _GL_ATTRIBUTE_PACKED +#endif + +/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate + calls to the function with the same arguments if observable state is not + changed between calls. + This attribute is safe for a function that does not affect + observable state, and always returns exactly once. + (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE +#endif + +/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is + a non-NULL pointer. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +#else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +#endif + +/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a + trailing NULL argument. + _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). + _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ +/* Applies to: functions. */ +#if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +#else +# define _GL_ATTRIBUTE_SENTINEL(pos) +#endif + +/* A helper macro. Don't use it directly. */ +#if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_ATTRIBUTE_UNUSED +#endif + + +/* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the + immediately preceding label is not used. The compiler should not warn + if the label is not used. */ +/* Applies to: label (both in C and C++). */ +/* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' + syntax. But clang does. */ +#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif + + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define as 'access' if you don't have the eaccess() function. */ +#undef eaccess + +/* Define to `int' if doesn't define. */ +#undef gid_t + +/* Define to the widest signed integer type if and do + not define. */ +#undef intmax_t + +/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports + the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of + earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. + __APPLE__ && __MACH__ test for Mac OS X. + __APPLE_CC__ tests for the Apple compiler and its version. + __STDC_VERSION__ tests for the C99 mode. */ +#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ +# define __GNUC_STDC_INLINE__ 1 +#endif + +/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where + n1 and n2 are expressions without side effects, that evaluate to real + numbers (excluding NaN). + It returns + 1 if n1 > n2 + 0 if n1 == n2 + -1 if n1 < n2 + The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional + jump with nearly all GCC versions up to GCC 10. + This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many + GCC versions up to GCC 9. + The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 + avoids conditional jumps in all GCC versions >= 3.4. */ +#define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) + + +/* Define to `long int' if does not define. */ +#undef off_t + +/* Define as a signed integer type capable of holding a process identifier. */ +#undef pid_t + +/* Define as an integer type suitable for memory locations that can be + accessed atomically even in the presence of asynchronous signals. */ +#undef sig_atomic_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to `int' if does not define. */ +#undef ssize_t + +/* Define to `int' if doesn't define. */ +#undef uid_t + +/* Define to the widest unsigned integer type if and + do not define. */ +#undef uintmax_t + +/* Define as `fork' if `vfork' does not work. */ +#undef vfork diff --git a/local/recipes/dev/gnu-make/source/src/configh.dos b/local/recipes/dev/gnu-make/source/src/configh.dos new file mode 100644 index 0000000000..5e20616eda --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/configh.dos @@ -0,0 +1,111 @@ +/* configh.dos -- hand-massaged config.h file for MS-DOS builds -*-C-*- + +Copyright (C) 1994-2022 Free Software 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 . */ + +#include "mkconfig.h" + +#define MK_DJGPP 1 + +/* Include this header to make __DJGPP_MINOR__ available because DJGPP ports + of GCC 4.3.0 and later no longer do it automatically. */ +#include + +/* Many things are defined already by a system header. */ +#include + +#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 1 + +/* Define to 1 if 'sys_siglist' is declared by or . */ +# define SYS_SIGLIST_DECLARED 1 + +/* Define to 1 if the C library defines the variable '_sys_siglist'. */ +# define HAVE_DECL_SYS_SIGLIST 1 + +#else + +/* Define NSIG. */ +# define NSIG SIGMAX + +#endif + +/* 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 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 HAVE_GETGROUPS 1 + +/* Define to 1 if the system has the type 'long long int'. */ +#define HAVE_LONG_LONG_INT 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the mkstemp function. */ +#define HAVE_MKSTEMP 1 + +/* Define to 1 if you have the 'mktemp' function. */ +#define HAVE_MKTEMP 1 + +/* Define to 1 if you have the 'setlinebuf' function. */ +#define HAVE_SETLINEBUF 1 + +/* Define to 1 if you have the 'setvbuf' function. */ +#define HAVE_SETVBUF 1 + +#define SCCS_GET "get" + +/* Define to 1 if you have the select function. */ +#define HAVE_SELECT 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 + +/* Define to 1 if you have the `strtoll' function. */ +#define HAVE_STRTOLL 1 + +/* Output sync support */ +#define NO_OUTPUT_SYNC 1 + +/* Build host information. */ +#define MAKE_HOST "i386-pc-msdosdjgpp" + +/* Grok DOS paths (drive specs and backslash path element separators) */ +#define HAVE_DOS_PATHS 1 + +/* Define the type of the first arg to select(). */ +#define fd_set_size_t int + +/* Define to the widest signed integer type if and do + not define. */ +#define intmax_t long long + +/* Define to `int' if does not define. */ +#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 5 +#define ssize_t int +#endif + +/* Define to 'unsigned long' or 'unsigned long long' + if doesn't define. */ +#define uintmax_t unsigned long long diff --git a/local/recipes/dev/gnu-make/source/src/debug.h b/local/recipes/dev/gnu-make/source/src/debug.h new file mode 100644 index 0000000000..63cc4b5dc9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/debug.h @@ -0,0 +1,41 @@ +/* Debugging macros and interface. +Copyright (C) 1999-2022 Free Software 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 . */ + +#define DB_NONE (0x000) +#define DB_BASIC (0x001) +#define DB_VERBOSE (0x002) +#define DB_JOBS (0x004) +#define DB_IMPLICIT (0x008) +#define DB_PRINT (0x010) +#define DB_WHY (0x020) +#define DB_MAKEFILES (0x100) + +#define DB_ALL (0xfff) + +extern int db_level; + +#define ISDB(_l) ((_l)&db_level) + +/* When adding macros to this list be sure to update the value of + XGETTEXT_OPTIONS in the po/Makevars file. */ +#define DBS(_l,_x) do{ if(ISDB(_l)) {print_spaces (depth); \ + printf _x; fflush (stdout);} }while(0) + +#define DBF(_l,_x) do{ if(ISDB(_l)) {print_spaces (depth); \ + printf (_x, file->name); \ + fflush (stdout);} }while(0) + +#define DB(_l,_x) do{ if(ISDB(_l)) {printf _x; fflush (stdout);} }while(0) diff --git a/local/recipes/dev/gnu-make/source/src/default.c b/local/recipes/dev/gnu-make/source/src/default.c new file mode 100644 index 0000000000..b4cfdf7154 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/default.c @@ -0,0 +1,762 @@ +/* Data base of default implicit rules for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" + +#include + +#include "filedef.h" +#include "variable.h" +#include "rule.h" +#include "dep.h" +#include "job.h" +#include "commands.h" + +/* Define GCC_IS_NATIVE if gcc is the native development environment on + your system (gcc/bison/flex vs cc/yacc/lex). */ +#if defined(__MSDOS__) || defined(__EMX__) +# define GCC_IS_NATIVE +#endif + + +/* 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. */ + +static char default_suffixes[] +#ifdef VMS + /* VMS should include all UNIX/POSIX + some VMS extensions */ + = ".out .exe .a .olb .hlb .tlb .mlb .ln .o .obj .c .cxx .cc .cpp .pas .p \ +.for .f .r .y .l .ym .yl .mar .s .ss .i .ii .mod .sym .def .h .info .dvi \ +.tex .texinfo .texi .txinfo .mem .hlp .brn .rnh .rno .rnt .rnx .w .ch .cweb \ +.web .com .sh .elc .el"; +#elif defined(__EMX__) + = ".out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S \ +.mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \ +.w .ch .web .sh .elc .el .obj .exe .dll .lib"; +#else + = ".out .a .ln .o .c .cc .C .cpp .p .f .F .m .r .y .l .ym .yl .s .S \ +.mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo \ +.w .ch .web .sh .elc .el"; +#endif + +static struct pspec default_pattern_rules[] = + { +#ifdef VMS + { "(%)", "%", + "@if f$$search(\"$@\") .eqs. \"\" then $(LIBRARY)/CREATE/" + "$(or " + "$(patsubst %,TEXT,$(filter %.tlb %.TLB,$@))," + "$(patsubst %,HELP,$(filter %.hlb %.HLB,$@))," + "$(patsubst %,MACRO,$(filter %.mlb %.MLB,$@))," + "$(and " + "$(patsubst %,SHARE,$(filter %.olb %.OLB,$@))," + "$(patsubst %,SHARE,$(filter %.exe %.EXE,$<)))," + "OBJECT)" + " $@\n" + "$(AR) $(ARFLAGS) $@ $<" }, + +#else + { "(%)", "%", + "$(AR) $(ARFLAGS) $@ $<" }, +#endif + /* 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. */ +#ifdef VMS + { "%.exe", "%", + "$(CP) $< $@" }, + +#endif + { "%.out", "%", + "@rm -f $@ \n cp $< $@" }, + + /* Syntax is "ctangle foo.w foo.ch foo.c". */ + { "%.c", "%.w %.ch", + "$(CTANGLE) $^ $@" }, + { "%.tex", "%.w %.ch", + "$(CWEAVE) $^ $@" }, + + { 0, 0, 0 } + }; + +static struct pspec default_terminal_rules[] = + { +#ifdef VMS + + /* RCS. */ + { "%", "%$$5lv", /* Multinet style */ + "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, + { "%", "[.$$rcs]%$$5lv", /* Multinet style */ + "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, + { "%", "%_v", /* Normal style */ + "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, + { "%", "[.rcs]%_v", /* Normal style */ + "if f$$search(\"$@\") .nes. \"\" then +$(CHECKOUT,v)" }, + + /* SCCS. */ + /* ain't no SCCS on vms */ + +#else + /* RCS. */ + { "%", "%,v", + "$(CHECKOUT,v)" }, + { "%", "RCS/%,v", + "$(CHECKOUT,v)" }, + { "%", "RCS/%", + "$(CHECKOUT,v)" }, + + /* SCCS. */ + { "%", "s.%", + "$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" }, + { "%", "SCCS/s.%", + "$(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<" }, +#endif /* !VMS */ + { 0, 0, 0 } + }; + +static const char *default_suffix_rules[] = + { +#ifdef VMS + ".o", + "$(LINK.obj) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".obj", + "$(LINK.obj) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".s", + "$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".S", + "$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".c", + "$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".cc", + "$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".C", + "$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".cpp", + "$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".f", + "$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".m", + "$(LINK.m) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".p", + "$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".F", + "$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".r", + "$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".mod", + "$(COMPILE.mod) -o $@ -e $@ $^", + + ".def.sym", + "$(COMPILE.def) -o $@ $<", + + ".sh", + "copy $< >$@", + + ".obj.exe", + "$(LINK.obj) $^ $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@", + ".mar.exe", + "$(COMPILE.mar) $^ \n $(LINK.obj) $(subst .mar,.obj,$^) $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@", + ".s.o", + "$(COMPILE.s) -o $@ $<", + ".s.exe", + "$(COMPILE.s) $^ \n $(LINK.obj) $(subst .s,.obj,$^) $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@", + ".c.exe", + "$(COMPILE.c) $^ \n $(LINK.obj) $(subst .c,.obj,$^) $(LOADLIBES) $(LDLIBS) $(CRT0) /exe=$@", + ".cc.exe", +#ifdef GCC_IS_NATIVE + "$(COMPILE.cc) $^ \n $(LINK.obj) $(CXXSTARTUP),sys$$disk:[]$(subst .cc,.obj,$^) $(LOADLIBES) $(LXLIBS) $(LDLIBS) $(CXXRT0) /exe=$@", +#else + "$(COMPILE.cc) $^ \n $(CXXLINK.obj) $(subst .cc,.obj,$^) $(LOADLIBES) $(LXLIBS) $(LDLIBS) $(CXXRT0) /exe=$@", + ".cxx.exe", + "$(COMPILE.cxx) $^ \n $(CXXLINK.obj) $(subst .cxx,.obj,$^) $(LOADLIBES) $(LXLIBS) $(LDLIBS) $(CXXRT0) /exe=$@", +#endif + ".for.exe", + "$(COMPILE.for) $^ \n $(LINK.obj) $(subst .for,.obj,$^) $(LOADLIBES) $(LDLIBS) /exe=$@", + ".pas.exe", + "$(COMPILE.pas) $^ \n $(LINK.obj) $(subst .pas,.obj,$^) $(LOADLIBES) $(LDLIBS) /exe=$@", + + ".com", + "copy $< >$@", + + ".mar.obj", + "$(COMPILE.mar) /obj=$@ $<", + ".s.obj", + "$(COMPILE.s) /obj=$@ $<", + ".ss.obj", + "$(COMPILE.s) /obj=$@ $<", + ".c.i", + "$(COMPILE.c)/prep /list=$@ $<", + ".c.s", + "$(COMPILE.c)/noobj/machine /list=$@ $<", + ".i.s", + "$(COMPILE.c)/noprep/noobj/machine /list=$@ $<", + ".c.obj", + "$(COMPILE.c) /obj=$@ $<", + ".c.o", + "$(COMPILE.c) /obj=$@ $<", + ".cc.ii", + "$(COMPILE.cc)/prep /list=$@ $<", + ".cc.ss", + "$(COMPILE.cc)/noobj/machine /list=$@ $<", + ".ii.ss", + "$(COMPILE.cc)/noprep/noobj/machine /list=$@ $<", + ".cc.obj", + "$(COMPILE.cc) /obj=$@ $<", + ".cc.o", + "$(COMPILE.cc) /obj=$@ $<", + ".cxx.obj", + "$(COMPILE.cxx) /obj=$@ $<", + ".cxx.o", + "$(COMPILE.cxx) /obj=$@ $<", + ".for.obj", + "$(COMPILE.for) /obj=$@ $<", + ".for.o", + "$(COMPILE.for) /obj=$@ $<", + ".pas.obj", + "$(COMPILE.pas) /obj=$@ $<", + ".pas.o", + "$(COMPILE.pas) /obj=$@ $<", + + ".y.c", + "$(YACC.y) $< \n rename y_tab.c $@", + ".l.c", + "$(LEX.l) $< \n rename lexyy.c $@", + + ".texinfo.info", + "$(MAKEINFO) $<", + + ".tex.dvi", + "$(TEX) $<", + + ".cpp.o", + "$(COMPILE.cpp) $(OUTPUT_OPTION) $<", + ".f.o", + "$(COMPILE.f) $(OUTPUT_OPTION) $<", + ".m.o", + "$(COMPILE.m) $(OUTPUT_OPTION) $<", + ".p.o", + "$(COMPILE.p) $(OUTPUT_OPTION) $<", + ".r.o", + "$(COMPILE.r) $(OUTPUT_OPTION) $<", + ".mod.o", + "$(COMPILE.mod) -o $@ $<", + + ".c.ln", + "$(LINT.c) -C$* $<", + ".y.ln", + "$(YACC.y) $< \n rename y_tab.c $@", + + ".l.ln", + "@$(RM) $*.c\n $(LEX.l) $< > $*.c\n$(LINT.c) -i $*.c -o $@\n $(RM) $*.c", + +#else /* ! VMS */ + + ".o", + "$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".s", + "$(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".S", + "$(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".c", + "$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".cc", + "$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".C", + "$(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".cpp", + "$(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".f", + "$(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".m", + "$(LINK.m) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".p", + "$(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".F", + "$(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".r", + "$(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@", + ".mod", + "$(COMPILE.mod) -o $@ -e $@ $^", + + ".def.sym", + "$(COMPILE.def) -o $@ $<", + + ".sh", + "cat $< >$@ \n chmod a+x $@", + + ".s.o", + "$(COMPILE.s) -o $@ $<", + ".S.o", + "$(COMPILE.S) -o $@ $<", + ".c.o", + "$(COMPILE.c) $(OUTPUT_OPTION) $<", + ".cc.o", + "$(COMPILE.cc) $(OUTPUT_OPTION) $<", + ".C.o", + "$(COMPILE.C) $(OUTPUT_OPTION) $<", + ".cpp.o", + "$(COMPILE.cpp) $(OUTPUT_OPTION) $<", + ".f.o", + "$(COMPILE.f) $(OUTPUT_OPTION) $<", + ".m.o", + "$(COMPILE.m) $(OUTPUT_OPTION) $<", + ".p.o", + "$(COMPILE.p) $(OUTPUT_OPTION) $<", + ".F.o", + "$(COMPILE.F) $(OUTPUT_OPTION) $<", + ".r.o", + "$(COMPILE.r) $(OUTPUT_OPTION) $<", + ".mod.o", + "$(COMPILE.mod) -o $@ $<", + + ".c.ln", + "$(LINT.c) -C$* $<", + ".y.ln", +#ifndef __MSDOS__ + "$(YACC.y) $< \n $(LINT.c) -C$* y.tab.c \n $(RM) y.tab.c", +#else + "$(YACC.y) $< \n $(LINT.c) -C$* y_tab.c \n $(RM) y_tab.c", +#endif + ".l.ln", + "@$(RM) $*.c\n $(LEX.l) $< > $*.c\n$(LINT.c) -i $*.c -o $@\n $(RM) $*.c", + + ".y.c", +#ifndef __MSDOS__ + "$(YACC.y) $< \n mv -f y.tab.c $@", +#else + "$(YACC.y) $< \n mv -f y_tab.c $@", +#endif + ".l.c", + "@$(RM) $@ \n $(LEX.l) $< > $@", + ".ym.m", + "$(YACC.m) $< \n mv -f y.tab.c $@", + ".lm.m", + "@$(RM) $@ \n $(LEX.m) $< > $@", + + ".F.f", + "$(PREPROCESS.F) $(OUTPUT_OPTION) $<", + ".r.f", + "$(PREPROCESS.r) $(OUTPUT_OPTION) $<", + + /* This might actually make lex.yy.c if there's no %R% directive in $*.l, + but in that case why were you trying to make $*.r anyway? */ + ".l.r", + "$(LEX.l) $< > $@ \n mv -f lex.yy.r $@", + + ".S.s", + "$(PREPROCESS.S) $< > $@", + + ".texinfo.info", + "$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@", + + ".texi.info", + "$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@", + + ".txinfo.info", + "$(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@", + + ".tex.dvi", + "$(TEX) $<", + + ".texinfo.dvi", + "$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<", + + ".texi.dvi", + "$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<", + + ".txinfo.dvi", + "$(TEXI2DVI) $(TEXI2DVI_FLAGS) $<", + + ".w.c", + "$(CTANGLE) $< - $@", /* The '-' says there is no '.ch' file. */ + + ".web.p", + "$(TANGLE) $<", + + ".w.tex", + "$(CWEAVE) $< - $@", /* The '-' says there is no '.ch' file. */ + + ".web.tex", + "$(WEAVE) $<", + +#endif /* !VMS */ + + 0, 0, + }; + +static const char *default_variables[] = + { +#ifdef VMS +#ifdef __ALPHA + "ARCH", "ALPHA", +#endif +#ifdef __ia64 + "ARCH", "IA64", +#endif +#ifdef __VAX + "ARCH", "VAX", +#endif + "AR", "library", + "LIBRARY", "library", + "ARFLAGS", "/replace", + "AS", "macro", + "MACRO", "macro", +#ifdef GCC_IS_NATIVE + "CC", "gcc", +#else + "CC", "cc", +#endif + "CD", "builtin_cd", + "ECHO", "builtin_echo", +#ifdef GCC_IS_NATIVE + "C++", "gcc/plus", + "CXX", "gcc/plus", +#else + "C++", "cxx", + "CXX", "cxx", +#ifndef __ia64 + "CXXLD", "cxxlink", + "CXXLINK", "cxxlink", +#else + /* CXXLINK is not used on VMS/IA64 */ + "CXXLD", "link", + "CXXLINK", "link", +#endif +#endif + "CO", "co", + "CPP", "$(CC) /preprocess_only", + "FC", "fortran", + /* System V uses these, so explicit rules using them should work. + However, there is no way to make implicit rules use them and FC. */ + "F77", "$(FC)", + "F77FLAGS", "$(FFLAGS)", + "LD", "link", + "LEX", "lex", + "PC", "pascal", + "YACC", "bison/yacc", + "YFLAGS", "/Define/Verbose", + "BISON", "bison", + "MAKEINFO", "makeinfo", + "TEX", "tex", + "TEXINDEX", "texindex", + + "RM", "delete/nolog", + + "CSTARTUP", "", +#ifdef GCC_IS_NATIVE + "CRT0", ",sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crt0.obj", + "CXXSTARTUP", "gnu_cc_library:crtbegin.obj", + "CXXRT0", ",sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crtend.obj,gnu_cc_library:gxx_main.obj", + "LXLIBS", ",gnu_cc_library:libstdcxx.olb/lib,gnu_cc_library:libgccplus.olb/lib", + "LDLIBS", ",gnu_cc_library:libgcc.olb/lib", +#else + "CRT0", "", + "CXXSTARTUP", "", + "CXXRT0", "", + "LXLIBS", "", + "LDLIBS", "", +#endif + + "LINK.o", "$(LD) $(LDFLAGS)", + "LINK.obj", "$(LD) $(LDFLAGS)", +#ifndef GCC_IS_NATIVE + "CXXLINK.obj", "$(CXXLD) $(LDFLAGS)", + "COMPILE.cxx", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", +#endif + "COMPILE.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", + "LINK.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", + "COMPILE.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", + "COMPILE.C", "$(COMPILE.cc)", + "COMPILE.cpp", "$(COMPILE.cc)", + "LINK.C", "$(LINK.cc)", + "LINK.cpp", "$(LINK.cc)", + "YACC.y", "$(YACC) $(YFLAGS)", + "LEX.l", "$(LEX) $(LFLAGS)", + "YACC.m", "$(YACC) $(YFLAGS)", + "LEX.m", "$(LEX) $(LFLAGS) -t", + "COMPILE.for", "$(FC) $(FFLAGS) $(TARGET_ARCH)", + "COMPILE.f", "$(FC) $(FFLAGS) $(TARGET_ARCH) -c", + "LINK.f", "$(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c", + "LINK.r", "$(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.pas", "$(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", + "COMPILE.def", "$(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)", + "COMPILE.mod", "$(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)", + "COMPILE.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.mar", "$(MACRO) $(MACROFLAGS)", + "COMPILE.s", "$(AS) $(ASFLAGS) $(TARGET_MACH)", + "LINK.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)", + "COMPILE.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c", + "PREPROCESS.S", "$(CPP) $(CPPFLAGS)", + "PREPROCESS.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F", + "PREPROCESS.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F", + "LINT.c", "$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", + + "MV", "rename/new_version", + "CP", "copy", + ".LIBPATTERNS", "%.olb lib%.a", + +#else /* !VMS */ + + "AR", "ar", +#ifdef _AIX + /* AIX requires object file format specification: choose -Xany. */ + "ARFLAGS", "-Xany -rv", +#else + "ARFLAGS", "-rv", +#endif + "AS", "as", +#ifdef GCC_IS_NATIVE + "CC", "gcc", +# ifdef __MSDOS__ + "CXX", "gpp", /* g++ is an invalid name on MSDOS */ +# else + "CXX", "gcc", +# endif /* __MSDOS__ */ + "OBJC", "gcc", +#else + "CC", "cc", + "CXX", "g++", + "OBJC", "cc", +#endif + + /* This expands to $(CO) $(COFLAGS) $< $@ if $@ does not exist, + and to the empty string if $@ does exist. */ + "CHECKOUT,v", "+$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)", + "CO", "co", + "COFLAGS", "", + + "CPP", "$(CC) -E", +#ifdef CRAY + "CF77PPFLAGS", "-P", + "CF77PP", "/lib/cpp", + "CFT", "cft77", + "CF", "cf77", + "FC", "$(CF)", +#else /* Not CRAY. */ +#ifdef _IBMR2 + "FC", "xlf", +#else +#ifdef __convex__ + "FC", "fc", +#else + "FC", "f77", +#endif /* __convex__ */ +#endif /* _IBMR2 */ + /* System V uses these, so explicit rules using them should work. + However, there is no way to make implicit rules use them and FC. */ + "F77", "$(FC)", + "F77FLAGS", "$(FFLAGS)", +#endif /* Cray. */ + "GET", SCCS_GET, + "LD", "ld", +#ifdef GCC_IS_NATIVE + "LEX", "flex", +#else + "LEX", "lex", +#endif + "LINT", "lint", + "M2C", "m2c", +#ifdef pyr + "PC", "pascal", +#else +#ifdef CRAY + "PC", "PASCAL", + "SEGLDR", "segldr", +#else + "PC", "pc", +#endif /* CRAY. */ +#endif /* pyr. */ +#ifdef GCC_IS_NATIVE + "YACC", "bison -y", +#else + "YACC", "yacc", /* Or "bison -y" */ +#endif + "MAKEINFO", "makeinfo", + "TEX", "tex", + "TEXI2DVI", "texi2dvi", + "WEAVE", "weave", + "CWEAVE", "cweave", + "TANGLE", "tangle", + "CTANGLE", "ctangle", + + "RM", "rm -f", + + "LINK.o", "$(CC) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.c", "$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.m", "$(OBJC) $(OBJCFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", +#ifndef HAVE_CASE_INSENSITIVE_FS + /* On case-insensitive filesystems, treat *.C files as *.c files, + to avoid erroneously compiling C sources as C++, which will + probably fail. */ + "COMPILE.C", "$(COMPILE.cc)", +#else + "COMPILE.C", "$(COMPILE.c)", +#endif + "COMPILE.cpp", "$(COMPILE.cc)", + "LINK.cc", "$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", +#ifndef HAVE_CASE_INSENSITIVE_FS + "LINK.C", "$(LINK.cc)", +#else + "LINK.C", "$(LINK.c)", +#endif + "LINK.cpp", "$(LINK.cc)", + "YACC.y", "$(YACC) $(YFLAGS)", + "LEX.l", "$(LEX) $(LFLAGS) -t", + "YACC.m", "$(YACC) $(YFLAGS)", + "LEX.m", "$(LEX) $(LFLAGS) -t", + "COMPILE.f", "$(FC) $(FFLAGS) $(TARGET_ARCH) -c", + "LINK.f", "$(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c", + "LINK.r", "$(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "COMPILE.def", "$(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)", + "COMPILE.mod", "$(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)", + "COMPILE.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c", + "LINK.p", "$(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)", + "LINK.s", "$(CC) $(ASFLAGS) $(LDFLAGS) $(TARGET_MACH)", + "COMPILE.s", "$(AS) $(ASFLAGS) $(TARGET_MACH)", + "LINK.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)", + "COMPILE.S", "$(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c", + "PREPROCESS.S", "$(CPP) $(CPPFLAGS)", + "PREPROCESS.F", "$(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F", + "PREPROCESS.r", "$(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F", + "LINT.c", "$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)", + +#ifndef NO_MINUS_C_MINUS_O + "OUTPUT_OPTION", "-o $@", +#endif + +#ifdef SCCS_GET_MINUS_G + "SCCS_OUTPUT_OPTION", "-G$@", +#endif + +#if defined(_AMIGA) + ".LIBPATTERNS", "%.lib", +#elif defined(__MSDOS__) + ".LIBPATTERNS", "lib%.a $(DJDIR)/lib/lib%.a", +#elif defined(__APPLE__) + ".LIBPATTERNS", "lib%.dylib lib%.a", +#elif defined(__CYGWIN__) || defined(WINDOWS32) + ".LIBPATTERNS", "lib%.dll.a %.dll.a lib%.a %.lib lib%.dll %.dll", +#else + ".LIBPATTERNS", "lib%.so lib%.a", +#endif + +#endif /* !VMS */ + /* Make this assignment to avoid undefined variable warnings. */ + GNUMAKEFLAGS_NAME, "", + 0, 0 + }; + +/* Set up the default .SUFFIXES list. */ + +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; + const char *p = default_suffixes; + suffix_file->deps = enter_prereqs (PARSE_SIMPLE_SEQ ((char **)&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); + } +} + +/* Enter the default suffix rules as file rules. This used to be done in + install_default_implicit_rules, but that loses because we want the + suffix rules installed before reading makefiles, and the pattern rules + installed after. */ + +void +install_default_suffix_rules (void) +{ + const char **s; + + if (no_builtin_rules_flag) + return; + + for (s = default_suffix_rules; *s != 0; s += 2) + { + struct file *f = enter_file (strcache_add (s[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 = xstrdup (s[1]); + f->cmds->command_lines = 0; + f->cmds->recipe_prefix = RECIPEPREFIX_DEFAULT; + f->builtin = 1; + } +} + + +/* Install the default pattern rules. */ + +void +install_default_implicit_rules (void) +{ + struct pspec *p; + + if (no_builtin_rules_flag) + return; + + for (p = default_pattern_rules; p->target != 0; ++p) + install_pattern_rule (p, 0); + + for (p = default_terminal_rules; p->target != 0; ++p) + install_pattern_rule (p, 1); +} + +void +define_default_variables (void) +{ + const char **s; + + if (no_builtin_variables_flag) + return; + + for (s = default_variables; *s != 0; s += 2) + define_variable (s[0], strlen (s[0]), s[1], o_default, 1); +} + +void +undefine_default_variables (void) +{ + const char **s; + + for (s = default_variables; *s != 0; s += 2) + undefine_variable_global (s[0], strlen (s[0]), o_default); +} diff --git a/local/recipes/dev/gnu-make/source/src/dep.h b/local/recipes/dev/gnu-make/source/src/dep.h new file mode 100644 index 0000000000..89c8639e8a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/dep.h @@ -0,0 +1,139 @@ +/* Definitions of dependency data structures for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + + +/* Structure used in chains of names, for parsing and globbing. */ + +#define NAMESEQ(_t) \ + _t *next; \ + const char *name + +struct nameseq + { + NAMESEQ (struct nameseq); + }; + +/* Flag bits for the second argument to 'read_makefile'. + These flags are saved in the 'flags' field of each + 'struct goaldep' in the chain returned by 'read_all_makefiles'. */ + +#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. */ + +/* Structure representing one dependency of a file. + Each struct file's 'deps' points to a chain of these, through 'next'. + 'stem' is the stem for this dep line of static pattern rule or NULL. + explicit is set when implicit rule search is performed and the prerequisite + does not contain %. When explicit is set the file is not intermediate. */ + + +#define DEP(_t) \ + NAMESEQ (_t); \ + struct file *file; \ + _t *shuf; \ + const char *stem; \ + unsigned int flags : 8; \ + unsigned int changed : 1; \ + unsigned int ignore_mtime : 1; \ + unsigned int staticpattern : 1; \ + unsigned int need_2nd_expansion : 1; \ + unsigned int ignore_automatic_vars : 1; \ + unsigned int is_explicit : 1; \ + unsigned int wait_here : 1 + +struct dep + { + DEP (struct dep); + }; + +/* Structure representing one goal. + The goals to be built constitute a chain of these, chained through 'next'. + 'stem' is not used, but it's simpler to include and ignore it. */ + +struct goaldep + { + DEP (struct goaldep); + int error; + floc floc; + }; + +/* Options for parsing lists of filenames. */ + +#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_ONEWORD 0x0020 +#define PARSEFS_WAIT 0x0040 + +#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, size_t size, + int stopmap, const char *prefix, int flags); +#endif + +char *tilde_expand (const char *name); + +#ifndef NO_ARCHIVES +struct nameseq *ar_glob (const char *arname, const char *member_pattern, size_t size); +#endif + +#define dep_name(d) ((d)->name ? (d)->name : (d)->file->name) + +#define alloc_seq_elt(_t) xcalloc (sizeof (_t)) +void free_ns_chain (struct nameseq *n); + +#if defined(MAKE_MAINTAINER_MODE) && defined(__GNUC__) && !defined(__STRICT_ANSI__) +/* Use inline to get real type-checking. */ +#define SI static inline +SI struct nameseq *alloc_ns (void) { return alloc_seq_elt (struct nameseq); } +SI struct dep *alloc_dep (void) { return alloc_seq_elt (struct dep); } +SI struct goaldep *alloc_goaldep (void) { return alloc_seq_elt (struct goaldep); } + +SI void free_ns (struct nameseq *n) { free (n); } +SI void free_dep (struct dep *d) { free_ns ((struct nameseq *)d); } +SI void free_goaldep (struct goaldep *g) { free_dep ((struct dep *)g); } +SI void free_dep_chain (struct dep *d) { free_ns_chain((struct nameseq *)d); } +SI void free_goal_chain (struct goaldep *g) { free_dep_chain((struct dep *)g); } +#else +# define alloc_ns() alloc_seq_elt (struct nameseq) +# define alloc_dep() alloc_seq_elt (struct dep) +# define alloc_goaldep() alloc_seq_elt (struct goaldep) + +# define free_ns(_n) free (_n) +# define free_dep(_d) free_ns (_d) +# define free_goaldep(_g) free_dep (_g) + +# define free_dep_chain(_d) free_ns_chain ((struct nameseq *)(_d)) +# define free_goal_chain(_g) free_ns_chain ((struct nameseq *)(_g)) +#endif + +struct dep *copy_dep_chain (const struct dep *d); + +struct goaldep *read_all_makefiles (const char **makefiles); +void eval_buffer (char *buffer, const floc *floc); +enum update_status update_goal_chain (struct goaldep *goals); diff --git a/local/recipes/dev/gnu-make/source/src/dir.c b/local/recipes/dev/gnu-make/source/src/dir.c new file mode 100644 index 0000000000..b47e94fed3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/dir.c @@ -0,0 +1,1376 @@ +/* Directory hashing for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" +#include "hash.h" +#include "filedef.h" +#include "dep.h" +#include "debug.h" + +#ifdef HAVE_DIRENT_H +# include +# define NAMLEN(dirent) strlen((dirent)->d_name) +# ifdef VMS +/* its prototype is in vmsdir.h, which is not needed for HAVE_DIRENT_H */ +const char *vmsify (const char *name, int type); +# endif +#else +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +# ifdef HAVE_VMSDIR_H +# include "vmsdir.h" +# endif /* HAVE_VMSDIR_H */ +#endif + +/* In GNU systems, defines this macro for us. */ +#ifdef _D_NAMLEN +# undef NAMLEN +# define NAMLEN(d) _D_NAMLEN(d) +#endif + +#if (defined (POSIX) || defined (VMS) || defined (WINDOWS32)) && !defined (__GNU_LIBRARY__) +/* Posix does not require that the d_ino field be present, and some + systems do not provide it. */ +# define REAL_DIR_ENTRY(dp) 1 +# define FAKE_DIR_ENTRY(dp) +#else +# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0) +# define FAKE_DIR_ENTRY(dp) (dp->d_ino = 1) +#endif /* POSIX */ + +#ifdef __MSDOS__ +#include +#include + +/* If it's MSDOS that doesn't have _USE_LFN, disable LFN support. */ +#ifndef _USE_LFN +#define _USE_LFN 0 +#endif + +static const char * +dosify (const char *filename) +{ + static char dos_filename[14]; + char *df; + int i; + + if (filename == 0 || _USE_LFN) + return filename; + + /* FIXME: what about filenames which violate + 8+3 constraints, like "config.h.in", or ".emacs"? */ + if (strpbrk (filename, "\"*+,;<=>?[\\]|") != 0) + return filename; + + df = dos_filename; + + /* First, transform the name part. */ + 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 (! STOP_SET (*filename, MAP_DOT|MAP_NUL)) + ++filename; + if (*filename != '\0') + { + *df++ = *filename++; + for (i = 0; i < 3 && ! STOP_SET (*filename, MAP_DOT|MAP_NUL); ++i) + *df++ = tolower ((unsigned char)*filename++); + } + + /* Look for more dots. */ + while (! STOP_SET (*filename, MAP_DOT|MAP_NUL)) + ++filename; + if (*filename == '.') + return filename; + *df = 0; + return dos_filename; +} +#endif /* __MSDOS__ */ + +#ifdef WINDOWS32 +#include "pathstuff.h" +#endif + +#ifdef _AMIGA +#include +#endif + +#ifdef HAVE_CASE_INSENSITIVE_FS +static const char * +downcase (const char *filename) +{ + static PATH_VAR (new_filename); + char *df; + + if (filename == 0) + return 0; + + df = new_filename; + while (*filename != '\0') + { + *df++ = tolower ((unsigned char)*filename); + ++filename; + } + + *df = 0; + + return new_filename; +} +#endif /* HAVE_CASE_INSENSITIVE_FS */ + +#ifdef VMS + +static char * +downcase_inplace(char *filename) +{ + char *name; + name = filename; + while (*name != '\0') + { + *name = tolower ((unsigned char)*name); + ++name; + } + return filename; +} + +#ifndef _USE_STD_STAT +/* VMS 8.2 fixed the VMS stat output to have unique st_dev and st_ino + when _USE_STD_STAT is used on the compile line. + + Prior to _USE_STD_STAT support, the st_dev is a pointer to thread + static memory containing the device of the last filename looked up. + + Todo: find out if the ino_t still needs to be faked on a directory. + */ + +/* Define this if the older VMS_INO_T is needed */ +#define VMS_INO_T 1 + +static int +vms_hash (const char *name) +{ + int h = 0; + + while (*name) + { + unsigned char uc = (unsigned char) *name; + int g; +#ifdef HAVE_CASE_INSENSITIVE_FS + h = (h << 4) + (isupper (uc) ? tolower (uc) : uc); +#else + h = (h << 4) + uc; +#endif + name++; + g = h & 0xf0000000; + if (g) + { + h = h ^ (g >> 24); + h = h ^ g; + } + } + return h; +} + +/* fake stat entry for a directory */ +static int +vmsstat_dir (const char *name, struct stat *st) +{ + char *s; + int h; + DIR *dir; + + dir = opendir (name); + if (dir == 0) + return -1; + closedir (dir); + s = strchr (name, ':'); /* find device */ + if (s) + { + /* to keep the compiler happy we said "const char *name", now we cheat */ + *s++ = 0; + st->st_dev = (char *)vms_hash (name); + h = vms_hash (s); + *(s-1) = ':'; + } + else + { + st->st_dev = 0; + h = vms_hash (name); + } + + st->st_ino[0] = h & 0xff; + st->st_ino[1] = h & 0xff00; + st->st_ino[2] = h >> 16; + + return 0; +} + +# define stat(__path, __sbuf) vmsstat_dir (__path, __sbuf) + +#endif /* _USE_STD_STAT */ +#endif /* VMS */ + +/* Never have more than this many directories open at once. */ + +#define MAX_OPEN_DIRECTORIES 10 + +static unsigned int open_directories = 0; + +/* Hash table of directories. */ + +#ifndef DIRECTORY_BUCKETS +#define DIRECTORY_BUCKETS 199 +#endif + +struct directory_contents + { + dev_t dev; /* Device and inode numbers of this dir. */ +#ifdef WINDOWS32 + /* Inode means nothing on WINDOWS32. Even file key information is + * unreliable because it is random per file open and undefined for remote + * filesystems. The most unique attribute I can come up with is the fully + * qualified name of the directory. Beware though, this is also + * unreliable. I'm open to suggestion on a better way to emulate inode. */ + char *path_key; + time_t ctime; + time_t mtime; /* controls check for stale directory cache */ + int fs_flags; /* FS_FAT, FS_NTFS, ... */ +# define FS_FAT 0x1 +# define FS_NTFS 0x2 +# define FS_UNKNOWN 0x4 +#else +# ifdef VMS_INO_T + ino_t ino[3]; +# else + ino_t ino; +# endif +#endif /* WINDOWS32 */ + struct hash_table dirfiles; /* Files in this directory. */ + unsigned long counter; /* command_count value when last read. */ + DIR *dirstream; /* Stream reading this directory. */ + }; + +static struct directory_contents * +clear_directory_contents (struct directory_contents *dc) +{ + dc->counter = 0; + if (dc->dirstream) + { + --open_directories; + closedir (dc->dirstream); + dc->dirstream = 0; + } + hash_free (&dc->dirfiles, 1); + + return NULL; +} + +static unsigned long +directory_contents_hash_1 (const void *key_0) +{ + const struct directory_contents *key = key_0; + unsigned long hash; + +#ifdef WINDOWS32 + hash = 0; + ISTRING_HASH_1 (key->path_key, hash); + hash ^= ((unsigned int) key->dev << 4) ^ (unsigned int) key->ctime; +#else +# ifdef VMS_INO_T + hash = (((unsigned int) key->dev << 4) + ^ ((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 +#endif /* WINDOWS32 */ + return hash; +} + +static unsigned long +directory_contents_hash_2 (const void *key_0) +{ + const struct directory_contents *key = key_0; + unsigned long hash; + +#ifdef WINDOWS32 + hash = 0; + ISTRING_HASH_2 (key->path_key, hash); + hash ^= ((unsigned int) key->dev << 4) ^ (unsigned int) ~key->ctime; +#else +# ifdef VMS_INO_T + hash = (((unsigned int) key->dev << 4) + ^ ~((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 +#endif /* WINDOWS32 */ + + return hash; +} + +/* Sometimes it's OK to use subtraction to get this value: + result = X - Y; + But, if we're not sure of the type of X and Y they may be too large for an + int (on a 64-bit system for example). So, use ?: instead. + See Savannah bug #15534. + + NOTE! This macro has side-effects! +*/ + +#define MAKECMP(_x,_y) ((_x)<(_y)?-1:((_x)==(_y)?0:1)) + +static int +directory_contents_hash_cmp (const void *xv, const void *yv) +{ + const struct directory_contents *x = xv; + const struct directory_contents *y = yv; + int result; + +#ifdef WINDOWS32 + ISTRING_COMPARE (x->path_key, y->path_key, result); + if (result) + return result; + result = MAKECMP(x->ctime, y->ctime); + if (result) + return result; +#else +# ifdef VMS_INO_T + result = MAKECMP(x->ino[0], y->ino[0]); + if (result) + return result; + result = MAKECMP(x->ino[1], y->ino[1]); + if (result) + return result; + result = MAKECMP(x->ino[2], y->ino[2]); + if (result) + return result; +# else + result = MAKECMP(x->ino, y->ino); + if (result) + return result; +# endif +#endif /* WINDOWS32 */ + + return MAKECMP(x->dev, y->dev); +} + +/* Table of directory contents hashed by device and inode number. */ +static struct hash_table directory_contents; + +struct directory + { + const char *name; /* Name of the directory. */ + unsigned long counter; /* command_count value when last read. + Used for non-existent directories. */ + + /* 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. */ + struct directory_contents *contents; + }; + +static unsigned long +directory_hash_1 (const void *key) +{ + return_ISTRING_HASH_1 (((const struct directory *) key)->name); +} + +static unsigned long +directory_hash_2 (const void *key) +{ + return_ISTRING_HASH_2 (((const struct directory *) key)->name); +} + +static int +directory_hash_cmp (const void *x, const void *y) +{ + return_ISTRING_COMPARE (((const struct directory *) x)->name, + ((const struct directory *) y)->name); +} + +/* Table of directories hashed by name. */ +static struct hash_table directories; + + +/* Hash table of files in each directory. */ + +struct dirfile + { + const char *name; /* Name of the file. */ + size_t length; + short impossible; /* This file is impossible. */ + unsigned char type; + }; + +static unsigned long +dirfile_hash_1 (const void *key) +{ + return_ISTRING_HASH_1 (((struct dirfile const *) key)->name); +} + +static unsigned long +dirfile_hash_2 (const void *key) +{ + return_ISTRING_HASH_2 (((struct dirfile const *) key)->name); +} + +static int +dirfile_hash_cmp (const void *xv, const void *yv) +{ + const struct dirfile *x = xv; + const struct dirfile *y = yv; + int result = (int) (x->length - y->length); + if (result) + return result; + return_ISTRING_COMPARE (x->name, y->name); +} + +#ifndef DIRFILE_BUCKETS +#define DIRFILE_BUCKETS 107 +#endif + +static int dir_contents_file_exists_p (struct directory_contents *dir, + const char *filename); +static struct directory *find_directory (const char *name); + +/* Find the directory named NAME and return its 'struct directory'. */ + +static struct directory * +find_directory (const char *name) +{ + struct directory *dir; + struct directory **dir_slot; + struct directory dir_key; + struct directory_contents *dc; + struct directory_contents **dc_slot; + struct directory_contents dc_key; + + struct stat st; + int r; +#ifdef WINDOWS32 + char *w32_path; +#endif + + dir_key.name = name; + dir_slot = (struct directory **) hash_find_slot (&directories, &dir_key); + dir = *dir_slot; + + if (!HASH_VACANT (dir)) + { + unsigned long ctr = dir->contents ? dir->contents->counter : dir->counter; + + /* No commands have run since we parsed this directory so it's good. */ + if (ctr == command_count) + return dir; + + DB (DB_VERBOSE, ("Directory %s cache invalidated (count %lu != command %lu)\n", + name, ctr, command_count)); + + if (dir->contents) + clear_directory_contents (dir->contents); + } + else + { + /* The directory was not found. Create a new entry for it. */ + size_t len = strlen (name); + + dir = xmalloc (sizeof (struct directory)); +#if defined(HAVE_CASE_INSENSITIVE_FS) && defined(VMS) + /* Todo: Why is this only needed on VMS? */ + { + char *lname = downcase_inplace (xstrdup (name)); + dir->name = strcache_add_len (lname, len); + free (lname); + } +#else + dir->name = strcache_add_len (name, len); +#endif + hash_insert_at (&directories, dir, dir_slot); + } + + dir->contents = NULL; + dir->counter = command_count; + + /* See if the directory exists. */ +#if defined(WINDOWS32) + { + char tem[MAX_PATH+1], *tstart, *tend; + size_t len = strlen (name); + + /* Remove any trailing slashes. Windows32 stat fails even on + valid directories if they end in a slash. */ + memcpy (tem, name, len + 1); + tstart = tem; + if (tstart[1] == ':') + tstart += 2; + for (tend = tem + (len - 1); tend > tstart && ISDIRSEP (*tend); tend--) + *tend = '\0'; + + r = stat (tem, &st); + } +#else + EINTRLOOP (r, stat (name, &st)); +#endif + + if (r < 0) + /* Couldn't stat the directory; nothing else to do. */ + return dir; + + /* Search the contents hash table; device and inode are the key. */ + + memset (&dc_key, '\0', sizeof (dc_key)); + dc_key.dev = st.st_dev; +#ifdef WINDOWS32 + dc_key.path_key = w32_path = w32ify (name, 1); + dc_key.ctime = st.st_ctime; +#else +# ifdef VMS_INO_T + 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; +# endif +#endif + 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. */ +#ifdef WINDOWS32 + char fs_label[BUFSIZ]; + char fs_type[BUFSIZ]; + unsigned long fs_serno; + unsigned long fs_flags; + unsigned long fs_len; +#endif + /* Enter it in the contents hash table. */ + dc = xcalloc (sizeof (struct directory_contents)); + *dc = dc_key; + +#ifdef WINDOWS32 + dc->path_key = xstrdup (w32_path); + 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. */ + 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) + dc->fs_flags = FS_UNKNOWN; + else if (!strcmp (fs_type, "FAT")) + dc->fs_flags = FS_FAT; + else if (!strcmp (fs_type, "NTFS")) + dc->fs_flags = FS_NTFS; + else + dc->fs_flags = FS_UNKNOWN; +#endif /* WINDOWS32 */ + + hash_insert_at (&directory_contents, dc, dc_slot); + } + + /* Point the name-hashed entry for DIR at its contents data. */ + dir->contents = dc; + + /* If the contents have changed, we need to reseed. */ + if (dc->counter != command_count) + { + if (dc->counter) + clear_directory_contents (dc); + + dc->counter = command_count; + + 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. */ + 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); + } + } + + return dir; +} + +/* Return 1 if the name FILENAME is entered in DIR's hash table. + FILENAME must contain no slashes. */ + +static int +dir_contents_file_exists_p (struct directory_contents *dir, + const char *filename) +{ + struct dirfile *df; + struct dirent *d; +#ifdef WINDOWS32 + struct stat st; + int rehash = 0; +#endif + + if (dir == 0 || dir->dirfiles.ht_vec == 0) + /* The directory could not be stat'd or opened. */ + return 0; + +#ifdef __MSDOS__ + filename = dosify (filename); +#endif + +#ifdef HAVE_CASE_INSENSITIVE_FS + filename = downcase (filename); +#endif + +#ifdef __EMX__ + if (filename != 0) + _fnlwr (filename); /* lower case for FAT drives */ +#endif + if (filename != 0) + { + struct dirfile dirfile_key; + + if (*filename == '\0') + { + /* Checking if the directory exists. */ + return 1; + } + dirfile_key.name = filename; + dirfile_key.length = strlen (filename); + df = hash_find_item (&dir->dirfiles, &dirfile_key); + if (df) + return !df->impossible; + } + + /* The file was not found in the hashed list. + Try to read the directory further. */ + + if (dir->dirstream == 0) + { +#ifdef WINDOWS32 + /* + * Check to see if directory has changed since last read. FAT + * filesystems force a rehash always as mtime does not change + * 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; + } + + /* If it has been already read in, all done. */ + if (!rehash) + return 0; + + /* make sure directory can still be opened; if not return. */ + dir->dirstream = opendir (dir->path_key); + if (!dir->dirstream) + return 0; + } + else +#endif + /* The directory has been all read in. */ + return 0; + } + + while (1) + { + /* Enter the file in the hash table. */ + size_t len; + struct dirfile dirfile_key; + struct dirfile **dirfile_slot; + + ENULLLOOP (d, readdir (dir->dirstream)); + if (d == 0) + { + if (errno) + pfatal_with_name ("INTERNAL: readdir"); + break; + } + +#if defined(VMS) && defined(HAVE_DIRENT_H) + /* In VMS we get file versions too, which have to be stripped off. + Some versions of VMS return versions on Unix files even when + the feature option to strip them is set. */ + { + char *p = strrchr (d->d_name, ';'); + if (p) + *p = '\0'; + } +#endif + if (!REAL_DIR_ENTRY (d)) + continue; + + len = NAMLEN (d); + dirfile_key.name = d->d_name; + dirfile_key.length = len; + dirfile_slot = (struct dirfile **) hash_find_slot (&dir->dirfiles, &dirfile_key); +#ifdef WINDOWS32 + /* + * If re-reading a directory, don't cache files that have + * already been discovered. + */ + if (! rehash || HASH_VACANT (*dirfile_slot)) +#endif + { + df = xmalloc (sizeof (struct dirfile)); +#if defined(HAVE_CASE_INSENSITIVE_FS) && defined(VMS) + /* TODO: Why is this only needed on VMS? */ + df->name = strcache_add_len (downcase_inplace (d->d_name), len); +#else + df->name = strcache_add_len (d->d_name, len); +#endif +#ifdef HAVE_STRUCT_DIRENT_D_TYPE + df->type = d->d_type; +#endif + df->length = len; + df->impossible = 0; + hash_insert_at (&dir->dirfiles, df, dirfile_slot); + } + /* Check if the name matches the one we're searching for. */ + if (filename != 0 && patheq (d->d_name, filename)) + return 1; + } + + /* If the directory has been completely read in, + close the stream and reset the pointer to nil. */ + if (d == 0) + { + --open_directories; + closedir (dir->dirstream); + dir->dirstream = 0; + } + return 0; +} + +/* Return 1 if the name FILENAME in directory DIRNAME + is entered in the dir hash table. + FILENAME must contain no slashes. */ + +int +dir_file_exists_p (const char *dirname, const char *filename) +{ +#ifdef VMS + if ((filename != NULL) && (dirname != NULL)) + { + int want_vmsify; + want_vmsify = (strpbrk (dirname, ":<[") != NULL); + if (want_vmsify) + filename = vmsify (filename, 0); + } +#endif + return dir_contents_file_exists_p (find_directory (dirname)->contents, + filename); +} + +/* Return 1 if the file named NAME exists. */ + +int +file_exists_p (const char *name) +{ + const char *dirend; + const char *dirname; + const char *slash; + +#ifndef NO_ARCHIVES + if (ar_name (name)) + return ar_member_date (name) != (time_t) -1; +#endif + + dirend = strrchr (name, '/'); +#ifdef VMS + if (dirend == 0) + { + dirend = strrchr (name, ']'); + dirend == NULL ? dirend : dirend++; + } + if (dirend == 0) + { + dirend = strrchr (name, '>'); + dirend == NULL ? dirend : dirend++; + } + if (dirend == 0) + { + dirend = strrchr (name, ':'); + dirend == NULL ? dirend : dirend++; + } +#endif /* VMS */ +#ifdef HAVE_DOS_PATHS + /* Forward and backslashes might be mixed. We need the rightmost one. */ + { + const char *bslash = strrchr (name, '\\'); + if (!dirend || bslash > dirend) + dirend = bslash; + /* The case of "d:file". */ + if (!dirend && name[0] && name[1] == ':') + dirend = name + 1; + } +#endif /* HAVE_DOS_PATHS */ + if (dirend == 0) +#ifndef _AMIGA + return dir_file_exists_p (".", name); +#else /* !AMIGA */ + return dir_file_exists_p ("", name); +#endif /* AMIGA */ + + slash = dirend; + if (dirend == name) + dirname = "/"; + else + { + char *p; +#ifdef HAVE_DOS_PATHS + /* d:/ and d: are *very* different... */ + if (dirend < name + 3 && name[1] == ':' && + (ISDIRSEP (*dirend) || *dirend == ':')) + dirend++; +#endif + p = alloca (dirend - name + 1); + memcpy (p, name, dirend - name); + p[dirend - name] = '\0'; + dirname = p; + } +#ifdef VMS + if (*slash == '/') + slash++; +#else + slash++; +#endif + return dir_file_exists_p (dirname, slash); +} + +/* 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. */ + +void +file_impossible (const char *filename) +{ + const char *dirend; + const char *p = filename; + struct directory *dir; + struct dirfile *new; + + dirend = strrchr (p, '/'); +#ifdef VMS + if (dirend == NULL) + { + dirend = strrchr (p, ']'); + dirend == NULL ? dirend : dirend++; + } + if (dirend == NULL) + { + dirend = strrchr (p, '>'); + dirend == NULL ? dirend : dirend++; + } + if (dirend == NULL) + { + dirend = strrchr (p, ':'); + dirend == NULL ? dirend : dirend++; + } +#endif +#ifdef HAVE_DOS_PATHS + /* Forward and backslashes might be mixed. We need the rightmost one. */ + { + const char *bslash = strrchr (p, '\\'); + if (!dirend || bslash > dirend) + dirend = bslash; + /* The case of "d:file". */ + if (!dirend && p[0] && p[1] == ':') + dirend = p + 1; + } +#endif /* HAVE_DOS_PATHS */ + if (dirend == 0) +#ifdef _AMIGA + dir = find_directory (""); +#else /* !AMIGA */ + dir = find_directory ("."); +#endif /* AMIGA */ + else + { + const char *dirname; + const char *slash = dirend; + if (dirend == p) + dirname = "/"; + else + { + char *cp; +#ifdef HAVE_DOS_PATHS + /* d:/ and d: are *very* different... */ + if (dirend < p + 3 && p[1] == ':' && + (ISDIRSEP (*dirend) || *dirend == ':')) + dirend++; +#endif + cp = alloca (dirend - p + 1); + memcpy (cp, p, dirend - p); + cp[dirend - p] = '\0'; + dirname = cp; + } + dir = find_directory (dirname); +#ifdef VMS + if (*slash == '/') + filename = p = slash + 1; + else + filename = p = slash; +#else + filename = p = slash + 1; +#endif + } + + if (dir->contents == 0) + /* The directory could not be stat'd. We allocate a contents + structure for it, but leave it out of the contents hash table. */ + dir->contents = xcalloc (sizeof (struct directory_contents)); + + if (dir->contents->dirfiles.ht_vec == 0) + { + hash_init (&dir->contents->dirfiles, DIRFILE_BUCKETS, + dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp); + } + + /* Make a new entry and put it in the table. */ + + new = xmalloc (sizeof (struct dirfile)); + new->length = strlen (filename); +#if defined(HAVE_CASE_INSENSITIVE_FS) && defined(VMS) + /* todo: Why is this only needed on VMS? */ + new->name = strcache_add_len (downcase (filename), new->length); +#else + new->name = strcache_add_len (filename, new->length); +#endif + new->impossible = 1; + hash_insert (&dir->contents->dirfiles, new); +} + +/* Return nonzero if FILENAME has been marked impossible. */ + +int +file_impossible_p (const char *filename) +{ + const char *dirend; + struct directory_contents *dir; + struct dirfile *dirfile; + struct dirfile dirfile_key; +#ifdef VMS + int want_vmsify = 0; +#endif + + dirend = strrchr (filename, '/'); +#ifdef VMS + if (dirend == NULL) + { + want_vmsify = (strpbrk (filename, "]>:^") != NULL); + dirend = strrchr (filename, ']'); + } + if (dirend == NULL && want_vmsify) + dirend = strrchr (filename, '>'); + if (dirend == NULL && want_vmsify) + dirend = strrchr (filename, ':'); +#endif +#ifdef HAVE_DOS_PATHS + /* Forward and backslashes might be mixed. We need the rightmost one. */ + { + const char *bslash = strrchr (filename, '\\'); + if (!dirend || bslash > dirend) + dirend = bslash; + /* The case of "d:file". */ + if (!dirend && filename[0] && filename[1] == ':') + dirend = filename + 1; + } +#endif /* HAVE_DOS_PATHS */ + if (dirend == 0) +#ifdef _AMIGA + dir = find_directory ("")->contents; +#else /* !AMIGA */ + dir = find_directory (".")->contents; +#endif /* AMIGA */ + else + { + const char *dirname; + const char *slash = dirend; + if (dirend == filename) + dirname = "/"; + else + { + char *cp; +#ifdef HAVE_DOS_PATHS + /* d:/ and d: are *very* different... */ + if (dirend < filename + 3 && filename[1] == ':' && + (ISDIRSEP (*dirend) || *dirend == ':')) + dirend++; +#endif + cp = alloca (dirend - filename + 1); + memcpy (cp, filename, dirend - filename); + cp[dirend - filename] = '\0'; + dirname = cp; + } + dir = find_directory (dirname)->contents; +#ifdef VMS + if (*slash == '/') + filename = slash + 1; + else + filename = slash; +#else + filename = slash + 1; +#endif + } + + if (dir == 0 || dir->dirfiles.ht_vec == 0) + /* There are no files entered for this directory. */ + return 0; + +#ifdef __MSDOS__ + filename = dosify (filename); +#endif +#ifdef HAVE_CASE_INSENSITIVE_FS + filename = downcase (filename); +#endif +#ifdef VMS + if (want_vmsify) + filename = vmsify (filename, 1); +#endif + + dirfile_key.name = filename; + dirfile_key.length = strlen (filename); + dirfile = hash_find_item (&dir->dirfiles, &dirfile_key); + if (dirfile) + return dirfile->impossible; + + return 0; +} + +/* Return the already allocated name in the + directory hash table that matches DIR. */ + +const char * +dir_name (const char *dir) +{ + return find_directory (dir)->name; +} + +/* Print the data base of directories. */ + +void +print_dir_data_base (void) +{ + unsigned int files; + unsigned int impossible; + struct directory **dir_slot; + struct directory **dir_end; +#ifdef WINDOWS32 + char buf[INTSTR_LENGTH + 1]; +#endif + + puts (_("\n# Directories\n")); + + files = impossible = 0; + + dir_slot = (struct directory **) directories.ht_vec; + dir_end = dir_slot + directories.ht_size; + for ( ; dir_slot < dir_end; dir_slot++) + { + 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) +#ifdef WINDOWS32 + printf (_("# %s (key %s, mtime %s): could not be opened.\n"), + dir->name, dir->contents->path_key, + make_ulltoa ((unsigned long long)dir->contents->mtime, buf)); +#elif defined(VMS_INO_T) + 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) dir->contents->dev, (long) dir->contents->ino); +#endif + 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 %s): "), + dir->name, dir->contents->path_key, + make_ulltoa ((unsigned long long)dir->contents->mtime, buf)); +#elif defined(VMS_INO_T) + 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); +#endif + 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); + if (files == 0) + fputs (_("No"), stdout); + else + printf ("%u", files); + fputs (_(" files, "), stdout); + if (impossible == 0) + fputs (_("no"), stdout); + else + printf ("%u", impossible); + printf (_(" impossibilities in %lu directories.\n"), directories.ht_fill); +} + +/* Hooks for globbing. */ + +/* Structure describing state of iterating through a directory hash table. */ + +struct dirstream + { + struct directory_contents *contents; /* The directory being read. */ + struct dirfile **dirfile_slot; /* Current slot in table. */ + }; + +/* Forward declarations. */ +static __ptr_t open_dirstream (const char *); +static struct dirent *read_dirstream (__ptr_t); + +static __ptr_t +open_dirstream (const char *directory) +{ + struct dirstream *new; + struct directory *dir = find_directory (directory); + + if (dir->contents == 0 || dir->contents->dirfiles.ht_vec == 0) + /* DIR->contents is nil if the directory could not be stat'd. + DIR->contents->dirfiles is nil if it could not be opened. */ + return 0; + + /* Read all the contents of the directory now. There is no benefit + in being lazy, since glob will want to see every file anyway. */ + + dir_contents_file_exists_p (dir->contents, 0); + + new = xmalloc (sizeof (struct dirstream)); + new->contents = dir->contents; + new->dirfile_slot = (struct dirfile **) new->contents->dirfiles.ht_vec; + + return (__ptr_t) new; +} + +static struct dirent * +read_dirstream (__ptr_t stream) +{ + static char *buf; + static size_t bufsz; + + struct dirstream *const ds = (struct dirstream *) stream; + struct directory_contents *dc = ds->contents; + struct dirfile **dirfile_end = (struct dirfile **) dc->dirfiles.ht_vec + dc->dirfiles.ht_size; + + while (ds->dirfile_slot < dirfile_end) + { + 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; + size_t len = df->length + 1; + size_t 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; +#ifdef __MINGW32__ +# if __MINGW32_MAJOR_VERSION < 3 || (__MINGW32_MAJOR_VERSION == 3 && \ + __MINGW32_MINOR_VERSION == 0) + d->d_name = xmalloc (len); +# endif +#endif + FAKE_DIR_ENTRY (d); +#ifdef _DIRENT_HAVE_D_NAMLEN + d->d_namlen = len - 1; +#endif +#ifdef HAVE_STRUCT_DIRENT_D_TYPE + d->d_type = df->type; +#endif + memcpy (d->d_name, df->name, len); + return d; + } + } + + return 0; +} + +/* 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. + */ +#if !defined(stat) && !defined(WINDOWS32) || defined(VMS) +# ifndef VMS +# ifndef HAVE_SYS_STAT_H +int stat (const char *path, struct stat *sbuf); +# endif +# else + /* We are done with the fake stat. Go back to the real stat */ +# ifdef stat +# undef stat +# endif +# endif +# define local_stat stat +#else +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 > 2 && path[plen - 1] == '.' && ISDIRSEP (path[plen - 2])) + { + char parent[MAX_PATH+1]; + + strncpy (parent, path, MAX_PATH); + parent[MIN(plen - 2, MAX_PATH)] = '\0'; + if (stat (parent, buf) < 0 || !_S_ISDIR (buf->st_mode)) + return -1; + } +#endif + + EINTRLOOP (e, stat (path, buf)); + return e; +} +#endif + +/* Similarly for lstat. */ +#if !defined(lstat) && !defined(WINDOWS32) || defined(VMS) +# ifndef VMS +# ifndef HAVE_SYS_STAT_H +int lstat (const char *path, struct stat *sbuf); +# endif +# else + /* We are done with the fake lstat. Go back to the real lstat */ +# ifdef lstat +# undef lstat +# endif +# endif +# define local_lstat lstat +#elif defined(WINDOWS32) +/* Windows doesn't support lstat(). */ +# define local_lstat local_stat +#else +static int +local_lstat (const char *path, struct stat *buf) +{ + int e; + EINTRLOOP (e, lstat (path, buf)); + return e; +} +#endif + +void +dir_setup_glob (glob_t *gl) +{ + gl->gl_offs = 0; + gl->gl_opendir = open_dirstream; + gl->gl_readdir = read_dirstream; + gl->gl_closedir = free; + gl->gl_lstat = local_lstat; + gl->gl_stat = local_stat; +} + +void +hash_init_directories (void) +{ + hash_init (&directories, DIRECTORY_BUCKETS, + directory_hash_1, directory_hash_2, directory_hash_cmp); + hash_init (&directory_contents, DIRECTORY_BUCKETS, + directory_contents_hash_1, directory_contents_hash_2, + directory_contents_hash_cmp); +} diff --git a/local/recipes/dev/gnu-make/source/src/expand.c b/local/recipes/dev/gnu-make/source/src/expand.c new file mode 100644 index 0000000000..2509009e6f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/expand.c @@ -0,0 +1,621 @@ +/* Variable expansion functions for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" + +#include + +#include "commands.h" +#include "debug.h" +#include "filedef.h" +#include "job.h" +#include "variable.h" +#include "rule.h" + +/* Initially, any errors reported when expanding strings will be reported + against the file where the error appears. */ +const 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 + makefile. It is made bigger with realloc whenever it is too small. + variable_buffer_length is the size currently allocated. + variable_buffer is the address of the buffer. + + For efficiency, it's guaranteed that the buffer will always have + VARIABLE_BUFFER_ZONE extra bytes allocated. This allows you to add a few + extra chars without having to call a function. Note you should never use + these bytes unless you're _sure_ you have room (you know when the buffer + length was last checked. */ + +#define VARIABLE_BUFFER_ZONE 5 + +static size_t variable_buffer_length; +char *variable_buffer; + +/* Subroutine of variable_expand and friends: + The text to add is LENGTH chars starting at STRING to the variable_buffer. + The text is added to the buffer at PTR, and the updated pointer into + the buffer is returned as the value. Thus, the value returned by + each call to variable_buffer_output should be the first argument to + the following call. */ + +char * +variable_buffer_output (char *ptr, const char *string, size_t length) +{ + size_t newlen = length + (ptr - variable_buffer); + + if ((newlen + VARIABLE_BUFFER_ZONE) > variable_buffer_length) + { + size_t offset = ptr - variable_buffer; + 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; + } + + return mempcpy (ptr, string, length); +} + +/* Return a pointer to the beginning of the variable buffer. + This is called from main() and it should never be null afterward. */ + +char * +initialize_variable_output () +{ + /* If we don't have a variable output buffer yet, get one. */ + + if (variable_buffer == 0) + { + variable_buffer_length = 200; + variable_buffer = xmalloc (variable_buffer_length); + variable_buffer[0] = '\0'; + } + + return variable_buffer; +} + +/* Recursively expand V. The returned string is malloc'd. */ + +static char *allocated_variable_append (const struct variable *v); + +char * +recursively_expand_for_file (struct variable *v, struct file *file) +{ + char *value; + const floc *this_var; + const floc **saved_varp; + struct variable_set_list *save = 0; + int set_reading = 0; + + /* If we're expanding to put into the environment of a shell function then + ignore any recursion issues: for backward-compatibility we will use + the value of the environment variable we were started with. */ + if (v->expanding && env_recursion) + { + size_t nl = strlen (v->name); + char **ep; + DB (DB_VERBOSE, + (_("%s:%lu: not recursively expanding %s to export to shell function\n"), + v->fileinfo.filenm, v->fileinfo.lineno, v->name)); + + /* We could create a hash for the original environment for speed, but a + reasonably written makefile shouldn't hit this situation... */ + for (ep = environ; *ep != 0; ++ep) + if ((*ep)[nl] == '=' && strncmp (*ep, v->name, nl) == 0) + return xstrdup ((*ep) + nl + 1); + + /* If there's nothing in the parent environment, use the empty string. + This isn't quite correct since the variable should not exist at all, + but getting that to work would be involved. */ + return xstrdup (""); + } + + /* Don't install a new location if this location is empty. + This can happen for command-line variables, builtin variables, etc. */ + saved_varp = expanding_var; + if (v->fileinfo.filenm) + { + this_var = &v->fileinfo; + expanding_var = &this_var; + } + + /* If we have no other file-reading context, use the variable's context. */ + if (!reading_file) + { + set_reading = 1; + reading_file = &v->fileinfo; + } + + if (v->expanding) + { + if (!v->exp_count) + /* Expanding V causes infinite recursion. Lose. */ + OS (fatal, *expanding_var, + _("Recursive variable '%s' references itself (eventually)"), + v->name); + --v->exp_count; + } + + if (file) + { + save = current_variable_set_list; + current_variable_set_list = file->variables; + } + + v->expanding = 1; + if (v->append) + value = allocated_variable_append (v); + else + value = allocated_variable_expand (v->value); + v->expanding = 0; + + if (set_reading) + reading_file = 0; + + if (file) + current_variable_set_list = save; + + expanding_var = saved_varp; + + return value; +} + +/* Expand a simple reference to variable NAME, which is LENGTH chars long. */ + +#ifdef __GNUC__ +__inline +#endif +static char * +reference_variable (char *o, const char *name, size_t length) +{ + struct variable *v; + char *value; + + v = lookup_variable (name, length); + + if (v == 0) + warn_undefined (name, length); + + /* If there's no variable by that name or it has no value, stop now. */ + if (v == 0 || (*v->value == '\0' && !v->append)) + return o; + + value = (v->recursive ? recursively_expand (v) : v->value); + + o = variable_buffer_output (o, value, strlen (value)); + + if (v->recursive) + free (value); + + return o; +} + +/* Scan STRING for variable references and expansion-function calls. Only + 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 + 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. + */ +char * +variable_expand_string (char *line, const char *string, size_t length) +{ + struct variable *v; + const char *p, *p1; + char *save; + char *o; + size_t line_offset; + + if (!line) + line = initialize_variable_output (); + o = line; + line_offset = line - variable_buffer; + + if (length == 0) + { + variable_buffer_output (o, "", 1); + return variable_buffer; + } + + /* 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 == SIZE_MAX ? 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. */ + + p1 = strchr (p, '$'); + + o = variable_buffer_output (o, p, p1 != 0 ? (size_t) (p1 - p) : strlen (p) + 1); + + if (p1 == 0) + break; + p = p1 + 1; + + /* Dispatch on the char that follows the $. */ + + switch (*p) + { + case '$': + case '\0': + /* $$ or $ at the end of the string means output one $ to the + variable output buffer. */ + o = variable_buffer_output (o, p1, 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; + 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) + /* Unterminated variable reference. */ + O (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 + 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 = 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 + ? recursively_expand (v) + : v->value); + + /* Copy the pattern and the replacement. Add in an + extra % at the beginning to use in case there + isn't one in the pattern. */ + pattern = alloca (subst_end - subst_beg + 2); + *(pattern++) = '%'; + memcpy (pattern, subst_beg, subst_end - subst_beg); + pattern[subst_end - subst_beg] = '\0'; + + replace = alloca (replace_end - replace_beg + 2); + *(replace++) = '%'; + memcpy (replace, replace_beg, + replace_end - replace_beg); + replace[replace_end - replace_beg] = '\0'; + + /* Look for %. Set the percent pointers properly + based on whether we find one or not. */ + ppercent = find_percent (pattern); + if (ppercent) + { + ++ppercent; + rpercent = find_percent (replace); + if (rpercent) + ++rpercent; + } + else + { + ppercent = pattern; + rpercent = replace; + --pattern; + --replace; + } + + o = patsubst_expand_pat (o, value, pattern, replace, + ppercent, rpercent); + + 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); + + free (abeg); + } + break; + + default: + if (ISSPACE (p[-1])) + break; + + /* A $ followed by a random char is a variable reference: + $a is equivalent to $(a). */ + o = reference_variable (o, p, 1); + + break; + } + + if (*p == '\0') + break; + + ++p; + } + + 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. + 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, SIZE_MAX); +} + +/* 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 + variable-expansion that is in progress. */ + +char * +expand_argument (const char *str, const char *end) +{ + char *tmp, *alloc = NULL; + char *r; + + if (str == end) + return xstrdup (""); + + if (!end || *end == '\0') + return allocated_variable_expand (str); + + if (end - str + 1 > 1000) + tmp = alloc = xmalloc (end - str + 1); + else + tmp = alloca (end - str + 1); + + memcpy (tmp, str, end - str); + tmp[end - str] = '\0'; + + r = allocated_variable_expand (tmp); + + free (alloc); + + return r; +} + +/* Expand LINE for FILE. Error messages refer to the file and line where + FILE's commands were found. Expansion uses FILE's variable set list. */ + +char * +variable_expand_for_file (const char *line, struct file *file) +{ + char *result; + struct variable_set_list *savev; + const floc *savef; + + if (file == 0) + return variable_expand (line); + + savev = current_variable_set_list; + current_variable_set_list = file->variables; + + savef = reading_file; + if (file->cmds && file->cmds->fileinfo.filenm) + reading_file = &file->cmds->fileinfo; + else + reading_file = 0; + + result = variable_expand (line); + + current_variable_set_list = savev; + reading_file = savef; + + return result; +} + +/* Like allocated_variable_expand, but for += target-specific variables. + First recursively construct the variable value from its appended parts in + any upper variable sets. Then expand the resulting value. */ + +static char * +variable_append (const char *name, size_t length, + const struct variable_set_list *set, int local) +{ + const struct variable *v; + char *buf = 0; + int nextlocal; + + /* If there's nothing left to check, return the empty buffer. */ + if (!set) + return initialize_variable_output (); + + /* If this set is local and the next is not a parent, then next is local. */ + nextlocal = local && set->next_is_parent == 0; + + /* Try to find the variable in this variable set. */ + v = lookup_variable_in_set (name, length, set->set); + + /* 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, nextlocal); + else + buf = initialize_variable_output (); + + /* Append this value to the buffer, and return it. + If we already have a value, first add a space. */ + if (buf > variable_buffer) + buf = variable_buffer_output (buf, " ", 1); + + /* Either expand it or copy it, depending. */ + if (! v->recursive) + return variable_buffer_output (buf, v->value, strlen (v->value)); + + buf = variable_expand_string (buf, v->value, strlen (v->value)); + return (buf + strlen (buf)); +} + + +static char * +allocated_variable_append (const struct variable *v) +{ + char *val; + + /* Construct the appended variable value. */ + + char *obuf = variable_buffer; + size_t olen = variable_buffer_length; + + variable_buffer = 0; + + val = variable_append (v->name, strlen (v->name), + current_variable_set_list, 1); + variable_buffer_output (val, "", 1); + val = variable_buffer; + + variable_buffer = obuf; + variable_buffer_length = olen; + + return val; +} + +/* Like variable_expand_for_file, but the returned string is malloc'd. + This function is called a lot. It wants to be efficient. */ + +char * +allocated_variable_expand_for_file (const char *line, struct file *file) +{ + char *value; + + char *obuf = variable_buffer; + size_t olen = variable_buffer_length; + + variable_buffer = 0; + + value = variable_expand_for_file (line, file); + + variable_buffer = obuf; + variable_buffer_length = olen; + + return value; +} + +/* Install a new variable_buffer context, returning the current one for + safe-keeping. */ + +void +install_variable_buffer (char **bufp, size_t *lenp) +{ + *bufp = variable_buffer; + *lenp = variable_buffer_length; + + variable_buffer = 0; + initialize_variable_output (); +} + +/* Restore a previously-saved variable_buffer setting (free the current one). + */ + +void +restore_variable_buffer (char *buf, size_t len) +{ + free (variable_buffer); + + variable_buffer = buf; + variable_buffer_length = len; +} diff --git a/local/recipes/dev/gnu-make/source/src/file.c b/local/recipes/dev/gnu-make/source/src/file.c new file mode 100644 index 0000000000..226af61f44 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/file.c @@ -0,0 +1,1278 @@ +/* Target file management for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" + +#include + +#include "filedef.h" +#include "dep.h" +#include "job.h" +#include "commands.h" +#include "variable.h" +#include "debug.h" +#include "hash.h" +#include "shuffle.h" + + +/* Remember whether snap_deps has been invoked: we need this to be sure we + don't add new rules (via $(eval ...)) afterwards. In the future it would + be nice to support this, but it means we'd need to re-run snap_deps() or + at least its functionality... it might mean changing snap_deps() to be run + per-file, so we can invoke it after the eval... or remembering which files + in the hash have been snapped (a new boolean flag?) and having snap_deps() + only work on files which have not yet been snapped. */ +int snapped_deps = 0; + +/* Hash table of files the makefile knows how to make. */ + +static unsigned long +file_hash_1 (const void *key) +{ + return_ISTRING_HASH_1 (((struct file const *) key)->hname); +} + +static unsigned long +file_hash_2 (const void *key) +{ + return_ISTRING_HASH_2 (((struct file const *) key)->hname); +} + +static int +file_hash_cmp (const void *x, const void *y) +{ + return_ISTRING_COMPARE (((struct file const *) x)->hname, + ((struct file const *) y)->hname); +} + +static struct hash_table files; + +/* Whether or not .SECONDARY with no prerequisites was given. */ +static int all_secondary = 0; + +/* Whether or not .NOTINTERMEDIATE with no prerequisites was given. */ +static int no_intermediates = 0; + +/* Access the hash table of all file records. + lookup_file given a name, return the struct file * for that name, + or nil if there is none. +*/ + +struct file * +lookup_file (const char *name) +{ + struct file *f; + struct file file_key; +#ifdef VMS + int want_vmsify; +#ifndef WANT_CASE_SENSITIVE_TARGETS + char *lname; +#endif +#endif + + assert (*name != '\0'); + + /* This is also done in parse_file_seq, so this is redundant + for names read from makefiles. It is here for names passed + on the command line. */ +#ifdef VMS + want_vmsify = (strpbrk (name, "]>:^") != NULL); +# ifndef WANT_CASE_SENSITIVE_TARGETS + if (*name != '.') + { + const char *n; + char *ln; + lname = xstrdup (name); + for (n = name, ln = lname; *n != '\0'; ++n, ++ln) + *ln = isupper ((unsigned char)*n) ? tolower ((unsigned char)*n) : *n; + *ln = '\0'; + name = lname; + } +# endif + + while (name[0] == '[' && name[1] == ']' && name[2] != '\0') + name += 2; + while (name[0] == '<' && name[1] == '>' && name[2] != '\0') + name += 2; +#endif + while (name[0] == '.' && ISDIRSEP (name[1]) && name[2] != '\0') + { + name += 2; + while (ISDIRSEP (*name)) + /* Skip following slashes: ".//foo" is "foo", not "/foo". */ + ++name; + } + + if (*name == '\0') + { + /* It was all slashes after a dot. */ +#if defined(_AMIGA) + name = ""; +#else + name = "./"; +#endif +#if defined(VMS) + /* TODO - This section is probably not needed. */ + if (want_vmsify) + name = "[]"; +#endif + } + file_key.hname = name; + f = hash_find_item (&files, &file_key); +#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS) + if (*name != '.') + free (lname); +#endif + + return f; +} + +/* Look up a file record for file NAME and return it. + Create a new record if one doesn't exist. NAME will be stored in the + new record so it should be constant or in the strcache etc. + */ + +struct file * +enter_file (const char *name) +{ + struct file *f; + struct file *new; + struct file **file_slot; + struct file file_key; + + assert (*name != '\0'); + assert (! verify_flag || strcache_iscached (name)); + +#if defined(VMS) && !defined(WANT_CASE_SENSITIVE_TARGETS) + if (*name != '.') + { + const char *n; + char *lname, *ln; + lname = xstrdup (name); + for (n = name, ln = lname; *n != '\0'; ++n, ++ln) + if (isupper ((unsigned char)*n)) + *ln = tolower ((unsigned char)*n); + else + *ln = *n; + + *ln = '\0'; + name = strcache_add (lname); + free (lname); + } +#endif + + file_key.hname = name; + file_slot = (struct file **) hash_find_slot (&files, &file_key); + f = *file_slot; + if (! HASH_VACANT (f) && !f->double_colon) + { + f->builtin = 0; + return f; + } + + new = xcalloc (sizeof (struct file)); + new->name = new->hname = name; + new->update_status = us_none; + + if (HASH_VACANT (f)) + { + new->last = new; + hash_insert_at (&files, new, file_slot); + } + else + { + /* There is already a double-colon entry for this file. */ + new->double_colon = f; + f->last->prev = new; + f->last = new; + } + + return new; +} + +/* Rehash FILE to NAME. This is not as simple as resetting + the 'hname' member, since it must be put in a new hash bucket, + and possibly merged with an existing file called NAME. */ + +void +rehash_file (struct file *from_file, const char *to_hname) +{ + struct file file_key; + struct file **file_slot; + struct file *to_file; + struct file *deleted_file; + 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; + + /* Find the end of the renamed list for the "from" file. */ + file_key.hname = from_file->hname; + while (from_file->renamed != 0) + from_file = from_file->renamed; + if (file_hash_cmp (from_file, &file_key)) + /* hname changed unexpectedly!! */ + abort (); + + /* Remove the "from" file from the hash. */ + deleted_file = hash_delete (&files, from_file); + if (deleted_file != from_file) + /* from_file isn't the one stored in files */ + abort (); + + /* Find where the newly renamed file will go in the hash. */ + file_key.hname = to_hname; + file_slot = (struct file **) hash_find_slot (&files, &file_key); + to_file = *file_slot; + + /* Change the hash name for this file. */ + from_file->hname = to_hname; + for (f = from_file->double_colon; f != 0; f = f->prev) + f->hname = to_hname; + + /* If the new name doesn't exist yet just set it to the renamed file. */ + if (HASH_VACANT (to_file)) + { + hash_insert_at (&files, from_file, file_slot); + return; + } + + /* TO_FILE already exists under TO_HNAME. + We must retain TO_FILE and merge FROM_FILE into it. */ + + if (from_file->cmds != 0) + { + if (to_file->cmds == 0) + to_file->cmds = from_file->cmds; + else if (from_file->cmds != to_file->cmds) + { + size_t l = strlen (from_file->name); + /* We have two sets of commands. We will go with the + one given in the rule found through directory search, + 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, + l + strlen (to_file->cmds->fileinfo.filenm) + INTSTR_LENGTH, + _("Recipe was specified for file '%s' at %s:%lu,"), + from_file->name, from_file->cmds->fileinfo.filenm, + from_file->cmds->fileinfo.lineno); + else + error (&from_file->cmds->fileinfo, l, + _("Recipe for file '%s' was found by implicit rule search,"), + from_file->name); + l += strlen (to_hname); + error (&from_file->cmds->fileinfo, l, + _("but '%s' is now considered the same file as '%s'."), + from_file->name, to_hname); + error (&from_file->cmds->fileinfo, l, + _("Recipe for '%s' will be ignored in favor of the one for '%s'."), + from_file->name, to_hname); + } + } + + /* Merge the dependencies of the two files. */ + + if (to_file->deps == 0) + to_file->deps = from_file->deps; + else + { + struct dep *deps = to_file->deps; + while (deps->next != 0) + deps = deps->next; + deps->next = from_file->deps; + } + + merge_variable_set_lists (&to_file->variables, from_file->variables); + + if (to_file->double_colon && from_file->is_target && !from_file->double_colon) + OSS (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) + OSS (fatal, NILF, + _("can't rename double-colon '%s' to single-colon '%s'"), + from_file->name, to_hname); + else + to_file->double_colon = from_file->double_colon; + } + + if (from_file->last_mtime > to_file->last_mtime) + /* %%% Kludge so -W wins on a file that gets vpathized. */ + to_file->last_mtime = from_file->last_mtime; + + to_file->mtime_before_update = from_file->mtime_before_update; + +#define MERGE(field) to_file->field |= from_file->field + MERGE (precious); + MERGE (loaded); + MERGE (tried_implicit); + MERGE (updating); + MERGE (updated); + MERGE (is_target); + MERGE (cmd_target); + MERGE (phony); + /* Don't merge intermediate because this file might be pre-existing */ + MERGE (is_explicit); + MERGE (secondary); + MERGE (notintermediate); + MERGE (ignore_vpath); + MERGE (snapped); +#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, + and possibly merged with an existing file called NAME. */ + +void +rename_file (struct file *from_file, const char *to_hname) +{ + rehash_file (from_file, to_hname); + while (from_file) + { + from_file->name = from_file->hname; + from_file = from_file->prev; + } +} + +/* Remove all nonprecious intermediate files. + If SIG is nonzero, this was caused by a fatal signal, + meaning that a different message will be printed, and + the message will go to stderr rather than stdout. */ + +void +remove_intermediates (int sig) +{ + struct file **file_slot; + struct file **file_end; + int doneany = 0; + + /* If there's no way we will ever remove anything anyway, punt early. */ + if (question_flag || touch_flag || all_secondary) + return; + + if (sig && just_print_flag) + return; + + file_slot = (struct file **) files.ht_vec; + file_end = file_slot + files.ht_size; + for ( ; file_slot < file_end; file_slot++) + if (! HASH_VACANT (*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->notintermediate && !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) + OS (error, NILF, + _("*** Deleting intermediate file '%s'"), f->name); + else + { + if (! doneany) + DB (DB_BASIC, (_("Removing intermediate files...\n"))); + if (!run_silent) + { + if (! doneany) + { + fputs ("rm ", stdout); + doneany = 1; + } + else + putchar (' '); + fputs (f->name, stdout); + fflush (stdout); + } + } + if (status < 0) + { + perror_with_name ("\nunlink: ", f->name); + /* Start printing over. */ + doneany = 0; + } + } + } + } + + if (doneany && !sig) + { + putchar ('\n'); + fflush (stdout); + } +} + +/* Given a string containing prerequisites (fully expanded), break it up into + a struct dep list. Enter each of these prereqs into the file database. + */ +struct dep * +split_prereqs (char *p) +{ + struct dep *new = PARSE_FILE_SEQ (&p, struct dep, MAP_PIPE, NULL, PARSEFS_WAIT); + + if (*p) + { + /* Files that follow '|' are "order-only" prerequisites that satisfy the + dependency by existing: their modification times are irrelevant. */ + struct dep *ood; + + ++p; + ood = PARSE_FILE_SEQ (&p, struct dep, MAP_NUL, NULL, PARSEFS_WAIT); + + if (! new) + new = ood; + else + { + struct dep *dp; + for (dp = new; dp->next != NULL; dp = dp->next) + ; + dp->next = ood; + } + + for (; ood != NULL; ood = ood->next) + ood->ignore_mtime = 1; + } + + return new; +} + +/* Given a list of prerequisites, enter them into the file database. + If STEM is set then first expand patterns using STEM. */ +struct dep * +enter_prereqs (struct dep *deps, const char *stem) +{ + struct dep *d1; + + if (deps == 0) + return 0; + + /* If we have a stem, expand the %'s. We use patsubst_expand to translate + the prerequisites' patterns into plain prerequisite names. */ + if (stem) + { + const char *pattern = "%"; + struct dep *dp = deps, *dl = 0; + + while (dp != 0) + { + char *percent; + size_t nl = strlen (dp->name) + 1; + char *nm = alloca (nl); + memcpy (nm, dp->name, nl); + percent = find_percent (nm); + if (percent) + { + char *o; + + /* We have to handle empty stems specially, because that + would be equivalent to $(patsubst %,dp->name,) which + will always be empty. */ + if (stem[0] == '\0') + { + memmove (percent, percent+1, strlen (percent)); + o = variable_buffer_output (variable_buffer, nm, + strlen (nm) + 1); + } + else + o = patsubst_expand_pat (variable_buffer, stem, pattern, nm, + pattern+1, percent+1); + + /* If the name expanded to the empty string, ignore it. */ + if (variable_buffer[0] == '\0') + { + struct dep *df = dp; + if (dp == deps) + dp = deps = deps->next; + else + dp = dl->next = dp->next; + free_dep (df); + continue; + } + + /* Save the name. */ + dp->name = strcache_add_len (variable_buffer, + o - variable_buffer); + } + dp->stem = stem; + dp->staticpattern = 1; + dl = dp; + dp = dp->next; + } + } + + /* Enter them as files, unless they need a 2nd expansion. */ + for (d1 = deps; d1 != 0; d1 = d1->next) + { + if (d1->need_2nd_expansion) + continue; + + d1->file = lookup_file (d1->name); + if (d1->file == 0) + d1->file = enter_file (d1->name); + d1->staticpattern = 0; + d1->name = 0; + if (!stem) + /* This file is explicitly mentioned as a prereq. */ + d1->file->is_explicit = 1; + } + + return deps; +} + +/* Expand and parse each dependency line. + For each dependency of the file, make the 'struct dep' point + at the appropriate 'struct file' (which may have to be created). */ +void +expand_deps (struct file *f) +{ + struct dep *d; + struct dep **dp; + const char *fstem; + int initialized = 0; + int changed_dep = 0; + + if (f->snapped) + return; + f->snapped = 1; + + /* Walk through the dependencies. For any dependency that needs 2nd + expansion, expand it then insert the result into the list. */ + dp = &f->deps; + d = f->deps; + while (d != 0) + { + char *p; + struct dep *new, *next; + + if (! d->name || ! d->need_2nd_expansion) + { + /* This one is all set already. */ + dp = &d->next; + d = d->next; + continue; + } + + /* If it's from a static pattern rule, convert the initial pattern in + each word to "$*" so they'll expand properly. */ + if (d->staticpattern) + { + const char *cs = d->name; + size_t nperc = 0; + + /* Count the number of % in the string. */ + while ((cs = strchr (cs, '%')) != NULL) + { + ++nperc; + ++cs; + } + + if (nperc) + { + /* Allocate enough space to replace all % with $*. */ + size_t slen = strlen (d->name) + nperc + 1; + const char *pcs = d->name; + char *name = xmalloc (slen); + char *s = name; + + /* Substitute the first % in each word. */ + cs = strchr (pcs, '%'); + + while (cs) + { + s = mempcpy (s, pcs, cs - pcs); + *(s++) = '$'; + *(s++) = '*'; + pcs = ++cs; + + /* Find the first % after the next whitespace. */ + cs = strchr (end_of_token (cs), '%'); + } + strcpy (s, pcs); + + free ((char*)d->name); + d->name = name; + } + } + + /* We're going to do second expansion so initialize file variables for + the file. Since the stem for static pattern rules comes from + individual dep lines, we will temporarily set f->stem to d->stem. */ + if (!initialized) + { + initialize_file_variables (f, 0); + initialized = 1; + } + + set_file_variables (f, d->stem ? d->stem : f->stem); + + /* Perform second expansion. */ + p = variable_expand_for_file (d->name, f); + + /* Free the un-expanded name. */ + free ((char*)d->name); + + /* Parse the prerequisites and enter them into the file database. */ + new = split_prereqs (p); + + /* If there were no prereqs here (blank!) then throw this one out. */ + if (new == 0) + { + *dp = d->next; + changed_dep = 1; + free_dep (d); + d = *dp; + continue; + } + + /* Add newly parsed prerequisites. */ + fstem = d->stem; + next = d->next; + changed_dep = 1; + free_dep (d); + *dp = new; + for (dp = &new, d = new; d != 0; dp = &d->next, d = d->next) + { + d->file = lookup_file (d->name); + if (d->file == 0) + d->file = enter_file (d->name); + d->name = 0; + d->stem = fstem; + if (!fstem) + /* This file is explicitly mentioned as a prereq. */ + d->file->is_explicit = 1; + } + *dp = next; + d = *dp; + } + + /* Shuffle mode assumes '->next' and '->shuf' links both traverse the same + dependencies (in different sequences). Regenerate '->shuf' so we don't + refer to stale data. */ + if (changed_dep) + shuffle_deps_recursive (f->deps); +} + +/* Add extra prereqs to the file in question. */ + +struct dep * +expand_extra_prereqs (const struct variable *extra) +{ + struct dep *d; + struct dep *prereqs = extra ? split_prereqs (variable_expand (extra->value)) : NULL; + + for (d = prereqs; d; d = d->next) + { + d->file = lookup_file (d->name); + if (!d->file) + d->file = enter_file (d->name); + d->name = NULL; + d->ignore_automatic_vars = 1; + } + + return prereqs; +} + +/* Perform per-file snap operations. */ + +static void +snap_file (const void *item, void *arg) +{ + struct file *f = (struct file*)item; + struct dep *prereqs = NULL; + + /* If we're not doing second expansion then reset updating. */ + if (!second_expansion) + f->updating = 0; + + /* More specific setting has priority. */ + + /* If .SECONDARY is set with no deps, mark all targets as intermediate, + unless the target is a prereq of .NOTINTERMEDIATE. */ + if (all_secondary && !f->notintermediate) + f->intermediate = 1; + + /* If .NOTINTERMEDIATE is set with no deps, mark all targets as + notintermediate, unless the target is a prereq of .INTERMEDIATE. */ + if (no_intermediates && !f->intermediate && !f->secondary) + f->notintermediate = 1; + + /* If .EXTRA_PREREQS is set, add them as ignored by automatic variables. */ + if (f->variables) + prereqs = expand_extra_prereqs (lookup_variable_in_set (STRING_SIZE_TUPLE(".EXTRA_PREREQS"), f->variables->set)); + + else if (f->is_target) + prereqs = copy_dep_chain (arg); + + if (prereqs) + { + struct dep *d; + for (d = prereqs; d; d = d->next) + if (streq (f->name, dep_name (d))) + /* Skip circular dependencies. */ + break; + + if (d) + /* We broke early: must have found a circular dependency. */ + free_dep_chain (prereqs); + else if (!f->deps) + f->deps = prereqs; + else + { + d = f->deps; + while (d->next) + d = d->next; + d->next = prereqs; + } + } +} + +/* Mark the files depended on by .PRECIOUS, .PHONY, .SILENT, + and various other special targets. */ + +void +snap_deps (void) +{ + struct file *f; + struct file *f2; + struct dep *d; + + /* Remember that we've done this. Once we start snapping deps we can no + longer define new targets. */ + snapped_deps = 1; + + /* Now manage all the special targets. */ + + for (f = lookup_file (".PRECIOUS"); f != 0; f = f->prev) + for (d = f->deps; d != 0; d = d->next) + for (f2 = d->file; f2 != 0; f2 = f2->prev) + 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; + + 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; + f2->is_target = 1; + f2->last_mtime = NONEXISTENT_MTIME; + f2->mtime_before_update = NONEXISTENT_MTIME; + } + + for (f = lookup_file (".NOTINTERMEDIATE"); f != 0; f = f->prev) + /* Mark .NOTINTERMEDIATE deps as notintermediate files. */ + if (f->deps) + for (d = f->deps; d != 0; d = d->next) + for (f2 = d->file; f2 != 0; f2 = f2->prev) + f2->notintermediate = 1; + /* .NOTINTERMEDIATE with no deps marks all files as notintermediate. */ + else + no_intermediates = 1; + + /* The same file connot be both .INTERMEDIATE and .NOTINTERMEDIATE. + However, it is possible for a file to be .INTERMEDIATE and also match a + .NOTINTERMEDIATE pattern. In that case, the intermediate file has + priority over the notintermediate pattern. This priority is enforced by + pattern_search. */ + + for (f = lookup_file (".INTERMEDIATE"); f != 0; f = f->prev) + /* Mark .INTERMEDIATE deps as intermediate files. */ + for (d = f->deps; d != 0; d = d->next) + for (f2 = d->file; f2 != 0; f2 = f2->prev) + if (f2->notintermediate) + OS (fatal, NILF, + _("%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE"), + f2->name); + else + f2->intermediate = 1; + /* .INTERMEDIATE with no deps does nothing. + Marking all files as intermediates is useless since the goal targets + would be deleted after they are built. */ + + for (f = lookup_file (".SECONDARY"); f != 0; f = f->prev) + /* Mark .SECONDARY deps as both intermediate and secondary. */ + if (f->deps) + for (d = f->deps; d != 0; d = d->next) + for (f2 = d->file; f2 != 0; f2 = f2->prev) + if (f2->notintermediate) + OS (fatal, NILF, + _("%s cannot be both .NOTINTERMEDIATE and .SECONDARY"), + f2->name); + else + f2->intermediate = f2->secondary = 1; + /* .SECONDARY with no deps listed marks *all* files that way. */ + else + all_secondary = 1; + + if (no_intermediates && all_secondary) + O (fatal, NILF, + _(".NOTINTERMEDIATE and .SECONDARY are mutually exclusive")); + + f = lookup_file (".EXPORT_ALL_VARIABLES"); + if (f != 0 && f->is_target) + export_all_variables = 1; + + f = lookup_file (".IGNORE"); + if (f != 0 && f->is_target) + { + if (f->deps == 0) + 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; + } + + f = lookup_file (".SILENT"); + if (f != 0 && f->is_target) + { + if (f->deps == 0) + run_silent = 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; + } + + f = lookup_file (".NOTPARALLEL"); + if (f != 0 && f->is_target) + { + struct dep *d2; + + if (!f->deps) + not_parallel = 1; + else + /* Set a wait point between every prerequisite of each target. */ + for (d = f->deps; d != NULL; d = d->next) + for (f2 = d->file; f2 != NULL; f2 = f2->prev) + if (f2->deps) + for (d2 = f2->deps->next; d2 != NULL; d2 = d2->next) + d2->wait_here = 1; + } + + { + struct dep *prereqs = expand_extra_prereqs (lookup_variable (STRING_SIZE_TUPLE(".EXTRA_PREREQS"))); + + /* Perform per-file snap operations. */ + hash_map_arg(&files, snap_file, prereqs); + + free_dep_chain (prereqs); + } + +#ifndef NO_MINUS_C_MINUS_O + /* If .POSIX was defined, remove OUTPUT_OPTION to comply. */ + /* This needs more work: what if the user sets this in the makefile? + if (posix_pedantic) + define_variable_cname ("OUTPUT_OPTION", "", o_default, 1); + */ +#endif +} + +/* Set the 'command_state' member of FILE and all its 'also_make's. + Don't decrease the state of also_make's (e.g., don't downgrade a 'running' + also_make to a 'deps_running' also_make). */ + +void +set_command_state (struct file *file, enum cmd_state state) +{ + struct dep *d; + + file->command_state = state; + + for (d = file->also_make; d != 0; d = d->next) + if (state > d->file->command_state) + d->file->command_state = state; +} + +/* Convert an external file timestamp to internal form. */ + +FILE_TIMESTAMP +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)) + { + char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1]; + const char *f = fname ? fname : _("Current time"); + ts = s <= OLD_MTIME ? ORDINARY_MTIME_MIN : ORDINARY_MTIME_MAX; + file_timestamp_sprintf (buf, ts); + OSS (error, NILF, + _("%s: Timestamp out of range; substituting %s"), f, buf); + } + + return ts; +} + +/* Return the current time as a file timestamp, setting *RESOLUTION to + its resolution. */ +FILE_TIMESTAMP +file_timestamp_now (int *resolution) +{ + int r; + time_t s; + int ns; + + /* Don't bother with high-resolution clocks if file timestamps have + only one-second resolution. The code below should work, but it's + not worth the hassle of debugging it on hosts where it fails. */ +#if FILE_TIMESTAMP_HI_RES +# if HAVE_CLOCK_GETTIME && defined CLOCK_REALTIME + { + struct timespec timespec; + if (clock_gettime (CLOCK_REALTIME, ×pec) == 0) + { + r = 1; + s = timespec.tv_sec; + ns = timespec.tv_nsec; + goto got_time; + } + } +# endif +# if HAVE_GETTIMEOFDAY + { + struct timeval timeval; + if (gettimeofday (&timeval, 0) == 0) + { + r = 1000; + s = timeval.tv_sec; + ns = timeval.tv_usec * 1000; + goto got_time; + } + } +# endif +#endif + + r = 1000000000; + s = time ((time_t *) 0); + ns = 0; + +#if FILE_TIMESTAMP_HI_RES + got_time: +#endif + *resolution = r; + return file_timestamp_cons (0, s, ns); +} + +/* Place into the buffer P a printable representation of the file + timestamp TS. */ +void +file_timestamp_sprintf (char *p, FILE_TIMESTAMP ts) +{ + time_t t = FILE_TIMESTAMP_S (ts); + struct tm *tm = localtime (&t); + + if (tm) + { + intmax_t year = tm->tm_year; + sprintf (p, "%04" PRIdMAX "-%02d-%02d %02d:%02d:%02d", + year + 1900, tm->tm_mon + 1, tm->tm_mday, + tm->tm_hour, tm->tm_min, tm->tm_sec); + } + else if (t < 0) + sprintf (p, "%" PRIdMAX, (intmax_t) t); + else + sprintf (p, "%" PRIuMAX, (uintmax_t) t); + p += strlen (p); + + /* Append nanoseconds as a fraction, but remove trailing zeros. We don't + know the actual timestamp resolution, since clock_getres applies only to + local times, whereas this timestamp might come from a remote filesystem. + So removing trailing zeros is the best guess that we can do. */ + sprintf (p, ".%09d", FILE_TIMESTAMP_NS (ts)); + p += strlen (p) - 1; + while (*p == '0') + p--; + p += *p != '.'; + + *p = '\0'; +} + +/* Print the data base of files. */ + +void +print_prereqs (const struct dep *deps) +{ + const struct dep *ood = 0; + + /* Print all normal dependencies; note any order-only deps. */ + for (; deps != 0; deps = deps->next) + if (! deps->ignore_mtime) + printf (" %s%s", deps->wait_here ? ".WAIT " : "", dep_name (deps)); + else if (! ood) + ood = deps; + + /* Print order-only deps, if we have any. */ + if (ood) + { + printf (" | %s%s", ood->wait_here ? ".WAIT " : "", dep_name (ood)); + for (ood = ood->next; ood != 0; ood = ood->next) + if (ood->ignore_mtime) + printf (" %s%s", ood->wait_here ? ".WAIT " : "", dep_name (ood)); + } + + putchar ('\n'); +} + +static void +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 ? ":" : ""); + print_prereqs (f->deps); + + if (f->precious) + puts (_("# Precious file (prerequisite of .PRECIOUS).")); + if (f->phony) + puts (_("# Phony target (prerequisite of .PHONY).")); + if (f->cmd_target) + puts (_("# Command line target.")); + 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); + if (f->intermediate) + puts (_("# File is an intermediate prerequisite.")); + if (f->notintermediate) + puts (_("# File is a prerequisite of .NOTINTERMEDIATE.")); + if (f->secondary) + puts (_("# File is secondary (prerequisite of .SECONDARY).")); + if (f->also_make != 0) + { + const struct dep *d; + fputs (_("# Also makes:"), stdout); + for (d = f->also_make; d != 0; d = d->next) + printf (" %s", dep_name (d)); + putchar ('\n'); + } + if (f->last_mtime == UNKNOWN_MTIME) + puts (_("# Modification time never checked.")); + else if (f->last_mtime == NONEXISTENT_MTIME) + puts (_("# File does not exist.")); + else if (f->last_mtime == OLD_MTIME) + puts (_("# File is very old.")); + else + { + char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1]; + file_timestamp_sprintf (buf, f->last_mtime); + printf (_("# Last modified %s\n"), buf); + } + puts (f->updated + ? _("# File has been updated.") : _("# File has not been updated.")); + switch (f->command_state) + { + case cs_running: + puts (_("# Recipe currently running (THIS IS A BUG).")); + break; + case cs_deps_running: + puts (_("# Dependencies recipe running (THIS IS A BUG).")); + break; + case cs_not_started: + case cs_finished: + switch (f->update_status) + { + 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!")); + fflush (stdout); + fflush (stderr); + abort (); + } + + if (f->variables != 0) + print_file_variables (f); + + if (f->cmds != 0) + print_commands (f->cmds); + + if (f->prev) + print_file ((const void *) f->prev); +} + +void +print_file_data_base (void) +{ + puts (_("\n# Files")); + + hash_map (&files, print_file); + + fputs (_("\n# files hash-table stats:\n# "), stdout); + hash_print_stats (&files, stdout); +} + +/* Verify the integrity of the data base of files. */ + +#define VERIFY_CACHED(_p,_n) \ + do{ \ + if (_p->_n && _p->_n[0] && !strcache_iscached (_p->_n)) \ + error (NULL, strlen (_p->name) + CSTRLEN (# _n) + strlen (_p->_n), \ + _("%s: Field '%s' not cached: %s"), _p->name, # _n, _p->_n); \ + }while(0) + +static void +verify_file (const void *item) +{ + const struct file *f = item; + const struct dep *d; + + VERIFY_CACHED (f, name); + VERIFY_CACHED (f, hname); + VERIFY_CACHED (f, vpath); + VERIFY_CACHED (f, stem); + + /* Check the deps. */ + for (d = f->deps; d != 0; d = d->next) + { + if (! d->need_2nd_expansion) + VERIFY_CACHED (d, name); + VERIFY_CACHED (d, stem); + } +} + +void +verify_file_data_base (void) +{ + hash_map (&files, verify_file); +} + +#define EXPANSION_INCREMENT(_l) ((((_l) / 500) + 1) * 500) + +char * +build_target_list (char *value) +{ + static unsigned long last_targ_count = 0; + + if (files.ht_fill != last_targ_count) + { + size_t max = EXPANSION_INCREMENT (strlen (value)); + size_t len; + char *p; + struct file **fp = (struct file **) files.ht_vec; + struct file **end = &fp[files.ht_size]; + + /* Make sure we have at least MAX bytes in the allocated buffer. */ + value = xrealloc (value, max); + + p = value; + len = 0; + for (; fp < end; ++fp) + if (!HASH_VACANT (*fp) && (*fp)->is_target) + { + struct file *f = *fp; + size_t l = strlen (f->name); + + len += l + 1; + if (len > max) + { + size_t off = p - value; + + max += EXPANSION_INCREMENT (l + 1); + value = xrealloc (value, max); + p = &value[off]; + } + + p = mempcpy (p, f->name, l); + *(p++) = ' '; + } + *(p-1) = '\0'; + + last_targ_count = files.ht_fill; + } + + return value; +} + +void +init_hash_files (void) +{ + hash_init (&files, 1000, file_hash_1, file_hash_2, file_hash_cmp); +} + +/* EOF */ diff --git a/local/recipes/dev/gnu-make/source/src/filedef.h b/local/recipes/dev/gnu-make/source/src/filedef.h new file mode 100644 index 0000000000..ae2f26ddad --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/filedef.h @@ -0,0 +1,229 @@ +/* Definition of target file data structures for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + + +/* Structure that represents the info on one file + that the makefile says how to make. + All of these are chained together through 'next'. */ + +#include "hash.h" + +struct commands; +struct dep; +struct variable; +struct variable_set_list; + +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. */ + const char *stem; /* Implicit stem, if an implicit + rule has been used */ + 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). */ + struct file *renamed; + + /* List of variable sets used for this file. */ + struct variable_set_list *variables; + + /* Pattern-specific variable reference for this target, or null if there + isn't one. Also see the pat_searched flag, below. */ + struct variable_set_list *pat_variables; + + /* Immediate dependent that caused this target to be remade, + or nil if there isn't one. */ + struct file *parent; + + /* For a double-colon entry, this is the first double-colon entry for + the same file. Otherwise this is null. */ + struct file *double_colon; + + FILE_TIMESTAMP last_mtime; /* File's modtime, if already known. */ + FILE_TIMESTAMP mtime_before_update; /* File's modtime before any updating + has been performed. */ + unsigned int considered; /* equal to 'considered' if file has been + considered on current scan of goal chain */ + 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 commands. ORDER IS IMPORTANT! */ + { + 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 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 unloaded:1; /* True if this loaded object was unloaded. */ + 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. */ + unsigned int intermediate:1;/* Nonzero if this is an intermediate file. */ + unsigned int is_explicit:1; /* Nonzero if explicitly mentioned. */ + unsigned int secondary:1; /* Nonzero means remove_intermediates should + not delete it. */ + unsigned int notintermediate:1; /* Nonzero means a file is a prereq to + .NOTINTERMEDIATE. */ + 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. */ + unsigned int no_diag:1; /* True if the file failed to update and no + diagnostics has been issued (dontcare). */ + unsigned int was_shuffled:1; /* Did we already shuffle 'deps'? used when + --shuffle passes through the graph. */ + unsigned int snapped:1; /* True if the deps of this file have been + secondary expanded. */ + }; + + +extern struct file *default_file; + + +struct file *lookup_file (const char *name); +struct file *enter_file (const char *name); +struct dep *split_prereqs (char *prereqstr); +struct dep *enter_prereqs (struct dep *prereqs, const char *stem); +void expand_deps (struct file *f); +struct dep *expand_extra_prereqs (const struct variable *extra); +void remove_intermediates (int sig); +void snap_deps (void); +void rename_file (struct file *file, const char *name); +void rehash_file (struct file *file, const char *name); +void set_command_state (struct file *file, enum cmd_state state); +void notice_finished_file (struct file *file); +void init_hash_files (void); +void verify_file_data_base (void); +char *build_target_list (char *old_list); +void print_prereqs (const struct dep *deps); +void print_file_data_base (void); +int try_implicit_rule (struct file *file, unsigned int depth); +int stemlen_compare (const void *v1, const void *v2); + +#if FILE_TIMESTAMP_HI_RES +# define FILE_TIMESTAMP_STAT_MODTIME(fname, st) \ + 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) +#endif + +/* If FILE_TIMESTAMP is 64 bits (or more), use nanosecond resolution. + (Multiply by 2**30 instead of by 10**9 to save time at the cost of + slightly decreasing the number of available timestamps.) With + 64-bit FILE_TIMESTAMP, this stops working on 2514-05-30 01:53:04 + UTC, but by then uintmax_t should be larger than 64 bits. */ +#define FILE_TIMESTAMPS_PER_S (FILE_TIMESTAMP_HI_RES ? 1000000000 : 1) +#define FILE_TIMESTAMP_LO_BITS (FILE_TIMESTAMP_HI_RES ? 30 : 0) + +#define FILE_TIMESTAMP_S(ts) (((ts) - ORDINARY_MTIME_MIN) \ + >> FILE_TIMESTAMP_LO_BITS) +#define FILE_TIMESTAMP_NS(ts) ((int) (((ts) - ORDINARY_MTIME_MIN) \ + & ((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 29, + since the year might be less than -999 or greater than 9999. + + Subtract one for the sign bit if in case file timestamps can be negative; + subtract FLOOR_LOG2_SECONDS_PER_YEAR to yield an upper bound on how many + file timestamp bits might affect the year; + 302 / 1000 is log10 (2) rounded up; + add one for integer division truncation; + add one more for a minus sign if file timestamps can be negative; + add 4 to allow for any 4-digit epoch year (e.g. 1970); + add 25 to allow for "-MM-DD HH:MM:SS.NNNNNNNNN". */ +#define FLOOR_LOG2_SECONDS_PER_YEAR 24 +#define FILE_TIMESTAMP_PRINT_LEN_BOUND \ + (((sizeof (FILE_TIMESTAMP) * CHAR_BIT - 1 - FLOOR_LOG2_SECONDS_PER_YEAR) \ + * 302 / 1000) \ + + 1 + 1 + 4 + 25) + +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); + +/* Return the mtime of file F (a struct file *), caching it. + The value is NONEXISTENT_MTIME if the file does not exist. */ +#define file_mtime(f) file_mtime_1 ((f), 1) +/* Return the mtime of file F (a struct file *), caching it. + Don't search using vpath for the file--if it doesn't actually exist, + we don't find it. + The value is NONEXISTENT_MTIME if the file does not exist. */ +#define file_mtime_no_search(f) file_mtime_1 ((f), 0) +FILE_TIMESTAMP f_mtime (struct file *file, int search); +#define file_mtime_1(f, v) \ + ((f)->last_mtime == UNKNOWN_MTIME ? f_mtime ((f), v) : (f)->last_mtime) + +/* Special timestamp values. */ + +/* The file's timestamp is not yet known. */ +#define UNKNOWN_MTIME 0 + +/* The file does not exist. */ +#define NONEXISTENT_MTIME 1 + +/* The file does not exist, and we assume that it is older than any + actual file. */ +#define OLD_MTIME 2 + +/* 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) + +#define is_ordinary_mtime(_t) ((_t) >= ORDINARY_MTIME_MIN && (_t) <= ORDINARY_MTIME_MAX) + +/* 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' + 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) + +#define check_renamed(file) \ + while ((file)->renamed != 0) (file) = (file)->renamed /* No ; here. */ + +/* Have we snapped deps yet? */ +extern int snapped_deps; diff --git a/local/recipes/dev/gnu-make/source/src/function.c b/local/recipes/dev/gnu-make/source/src/function.c new file mode 100644 index 0000000000..f0ef34348d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/function.c @@ -0,0 +1,2826 @@ +/* Builtin function expansion for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" +#include "filedef.h" +#include "variable.h" +#include "dep.h" +#include "job.h" +#include "os.h" +#include "commands.h" +#include "debug.h" + +#ifdef _AMIGA +#include "amiga.h" +#endif + + +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; + unsigned int expand_args:1; + unsigned int alloc_fn:1; + unsigned int adds_command:1; + }; + +static unsigned long +function_table_entry_hash_1 (const void *keyv) +{ + const struct function_table_entry *key = keyv; + return_STRING_N_HASH_1 (key->name, key->len); +} + +static unsigned long +function_table_entry_hash_2 (const void *keyv) +{ + const struct function_table_entry *key = keyv; + return_STRING_N_HASH_2 (key->name, key->len); +} + +static int +function_table_entry_hash_cmp (const void *xv, const void *yv) +{ + const struct function_table_entry *x = xv; + const struct function_table_entry *y = yv; + int result = x->len - y->len; + if (result) + return result; + return_STRING_N_COMPARE (x->name, y->name, x->len); +} + +static struct hash_table function_table; + + +/* Store into VARIABLE_BUFFER at O the result of scanning TEXT and replacing + each occurrence of SUBST with REPLACE. TEXT is null-terminated. SLEN is + the length of SUBST and RLEN is the length of REPLACE. If BY_WORD is + nonzero, substitutions are done only on matches which are complete + whitespace-delimited words. */ + +char * +subst_expand (char *o, const char *text, const char *subst, const char *replace, + size_t slen, size_t rlen, int by_word) +{ + const char *t = text; + const char *p; + + if (slen == 0 && !by_word) + { + /* 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); + 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)); + 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; + } + } + + /* Output everything before this occurrence of the string to replace. */ + if (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. */ + if (by_word + && ((p > text && !ISSPACE (p[-1])) + || ! STOP_SET (p[slen], MAP_SPACE|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); + + /* Advance T past the string to be replaced. */ + t = p + slen; + } while (*t != '\0'); + + return o; +} + + +/* Store into VARIABLE_BUFFER at O the result of scanning TEXT + and replacing strings matching PATTERN with REPLACE. + If PATTERN_PERCENT is not nil, PATTERN has already been + run through find_percent, and PATTERN_PERCENT is the result. + If REPLACE_PERCENT is not nil, REPLACE has already been + run through find_percent, and REPLACE_PERCENT is the result. + Note that we expect PATTERN_PERCENT and REPLACE_PERCENT to point to the + character _AFTER_ the %, not to the % itself. +*/ + +char * +patsubst_expand_pat (char *o, const char *text, + const char *pattern, const char *replace, + const char *pattern_percent, const char *replace_percent) +{ + size_t pattern_prepercent_len, pattern_postpercent_len; + size_t replace_prepercent_len, replace_postpercent_len; + const char *t; + size_t len; + int doneany = 0; + + /* Record the length of REPLACE before and after the % so we don't have to + compute these lengths more than once. */ + if (replace_percent) + { + replace_prepercent_len = replace_percent - replace - 1; + replace_postpercent_len = strlen (replace_percent); + } + else + { + replace_prepercent_len = strlen (replace); + replace_postpercent_len = 0; + } + + 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); + + /* Record the length of PATTERN before and after the % + so we don't have to compute it more than once. */ + pattern_prepercent_len = pattern_percent - pattern - 1; + pattern_postpercent_len = strlen (pattern_percent); + + while ((t = find_next_token (&text, &len)) != 0) + { + int fail = 0; + + /* Is it big enough to match? */ + if (len < pattern_prepercent_len + pattern_postpercent_len) + 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; + + /* 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; + + if (fail) + /* 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); + } + } + + /* 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; + } + } + if (doneany) + /* Kill the last space. */ + --o; + + return o; +} + +/* Store into VARIABLE_BUFFER at O the result of scanning TEXT + and replacing strings matching PATTERN with REPLACE. + If PATTERN_PERCENT is not nil, PATTERN has already been + run through find_percent, and PATTERN_PERCENT is the result. + If REPLACE_PERCENT is not nil, REPLACE has already been + run through find_percent, and REPLACE_PERCENT is the result. + Note that we expect PATTERN_PERCENT and REPLACE_PERCENT to point to the + character _AFTER_ the %, not to the % itself. +*/ + +char * +patsubst_expand (char *o, const char *text, char *pattern, char *replace) +{ + const char *pattern_percent = find_percent (pattern); + const char *replace_percent = find_percent (replace); + + /* If there's a percent in the pattern or replacement skip it. */ + if (replace_percent) + ++replace_percent; + if (pattern_percent) + ++pattern_percent; + + return patsubst_expand_pat (o, text, pattern, replace, + pattern_percent, replace_percent); +} + + +/* Look up a function by name. */ + +static const struct function_table_entry * +lookup_function (const char *s) +{ + struct function_table_entry function_table_entry_key; + const char *e = s; + + while (STOP_SET (*e, MAP_USERFUNC)) + e++; + + if (e == s || !STOP_SET(*e, MAP_NUL|MAP_SPACE)) + return NULL; + + function_table_entry_key.name = s; + function_table_entry_key.len = (unsigned char) (e - s); + + return hash_find_item (&function_table, &function_table_entry_key); +} + + +/* Return 1 if PATTERN matches STR, 0 if not. */ + +int +pattern_matches (const char *pattern, const char *percent, const char *str) +{ + size_t sfxlen, strlength; + + if (percent == 0) + { + size_t len = strlen (pattern) + 1; + char *new_chars = alloca (len); + memcpy (new_chars, pattern, len); + percent = find_percent (new_chars); + if (percent == 0) + return streq (new_chars, str); + pattern = new_chars; + } + + sfxlen = strlen (percent + 1); + strlength = strlen (str); + + if (strlength < (percent - pattern) + sfxlen + || !strneq (pattern, str, percent - pattern)) + return 0; + + return !strcmp (percent + 1, str + (strlength - sfxlen)); +} + + +/* Find the next comma or ENDPAREN (counting nested STARTPAREN and + ENDPARENtheses), starting at PTR before END. Return a pointer to + next character. + + If no next argument is found, return NULL. +*/ + +static char * +find_next_argument (char startparen, char endparen, + const char *ptr, const char *end) +{ + int count = 0; + + for (; ptr < end; ++ptr) + if (!STOP_SET (*ptr, MAP_VARSEP|MAP_COMMA)) + continue; + + else if (*ptr == startparen) + ++count; + + else if (*ptr == endparen) + { + --count; + if (count < 0) + return NULL; + } + + else if (*ptr == ',' && !count) + return (char *)ptr; + + /* We didn't find anything. */ + return NULL; +} + + +/* Glob-expand LINE. The returned pointer is + only good until the next call to string_glob. */ + +static char * +string_glob (char *line) +{ + static char *result = 0; + static size_t length; + struct nameseq *chain; + size_t idx; + + 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); + + if (result == 0) + { + length = 100; + result = xmalloc (100); + } + + idx = 0; + while (chain != 0) + { + struct nameseq *next = chain->next; + size_t len = strlen (chain->name); + + if (idx + len + 1 > length) + { + length += (len + 1) * 2; + result = xrealloc (result, length); + } + memcpy (&result[idx], chain->name, len); + idx += len; + result[idx++] = ' '; + + /* Because we used PARSEFS_NOCACHE above, we have to free() NAME. */ + free ((char *)chain->name); + free (chain); + chain = next; + } + + /* Kill the last space and terminate the string. */ + if (idx == 0) + result[0] = '\0'; + else + result[idx - 1] = '\0'; + + return result; +} + +/* + Builtin functions + */ + +static char * +func_patsubst (char *o, char **argv, const char *funcname UNUSED) +{ + o = patsubst_expand (o, argv[2], argv[0], argv[1]); + return o; +} + + +static char * +func_join (char *o, char **argv, const char *funcname UNUSED) +{ + int doneany = 0; + + /* Write each word of the first argument directly followed + by the corresponding word of the second argument. + If the two arguments have a different number of words, + the excess words are just output separated by blanks. */ + const char *tp; + const char *pp; + const char *list1_iterator = argv[0]; + const char *list2_iterator = argv[1]; + do + { + size_t len1, len2; + + tp = find_next_token (&list1_iterator, &len1); + if (tp != 0) + o = variable_buffer_output (o, tp, len1); + + pp = find_next_token (&list2_iterator, &len2); + if (pp != 0) + o = variable_buffer_output (o, pp, len2); + + if (tp != 0 || pp != 0) + { + o = variable_buffer_output (o, " ", 1); + doneany = 1; + } + } + while (tp != 0 || pp != 0); + if (doneany) + /* Kill the last blank. */ + --o; + + return o; +} + + +static char * +func_origin (char *o, char **argv, const char *funcname UNUSED) +{ + /* Expand the argument. */ + struct variable *v = lookup_variable (argv[0], strlen (argv[0])); + if (v == 0) + o = variable_buffer_output (o, "undefined", 9); + else + switch (v->origin) + { + case o_invalid: + abort (); + break; + case o_default: + o = variable_buffer_output (o, "default", 7); + break; + case o_env: + o = variable_buffer_output (o, "environment", 11); + break; + case o_file: + o = variable_buffer_output (o, "file", 4); + break; + case o_env_override: + o = variable_buffer_output (o, "environment override", 20); + break; + case o_command: + o = variable_buffer_output (o, "command line", 12); + break; + case o_override: + o = variable_buffer_output (o, "override", 8); + break; + case o_automatic: + o = variable_buffer_output (o, "automatic", 9); + break; + } + + return o; +} + +static char * +func_flavor (char *o, char **argv, const char *funcname UNUSED) +{ + struct variable *v = lookup_variable (argv[0], strlen (argv[0])); + + if (v == 0) + o = variable_buffer_output (o, "undefined", 9); + else + if (v->recursive) + o = variable_buffer_output (o, "recursive", 9); + else + o = variable_buffer_output (o, "simple", 6); + + return o; +} + + +static char * +func_notdir_suffix (char *o, char **argv, const char *funcname) +{ + /* Expand the argument. */ + const char *list_iterator = argv[0]; + const char *p2; + int doneany =0; + size_t len=0; + + int is_suffix = funcname[0] == 's'; + int is_notdir = !is_suffix; + int stop = MAP_DIRSEP | (is_suffix ? MAP_DOT : 0); +#ifdef VMS + /* For VMS list_iterator points to a comma separated list. To use the common + [find_]next_token, create a local copy and replace the commas with + spaces. Obviously, there is a problem if there is a ',' in the VMS filename + (can only happen on ODS5), the same problem as with spaces in filenames, + which seems to be present in make on all platforms. */ + char *vms_list_iterator = alloca(strlen(list_iterator) + 1); + int i; + for (i = 0; list_iterator[i]; i++) + if (list_iterator[i] == ',') + vms_list_iterator[i] = ' '; + else + vms_list_iterator[i] = list_iterator[i]; + vms_list_iterator[i] = list_iterator[i]; + while ((p2 = find_next_token((const char**) &vms_list_iterator, &len)) != 0) +#else + while ((p2 = find_next_token (&list_iterator, &len)) != 0) +#endif + { + const char *p = p2 + len - 1; + + 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)); + } +#ifdef HAVE_DOS_PATHS + /* Handle the case of "d:foo/bar". */ + 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); + + if (is_notdir || p >= p2) + { +#ifdef VMS + if (vms_comma_separator) + o = variable_buffer_output (o, ",", 1); + else +#endif + o = variable_buffer_output (o, " ", 1); + + doneany = 1; + } + } + + if (doneany) + /* Kill last space. */ + --o; + + return o; +} + + +static char * +func_basename_dir (char *o, char **argv, const char *funcname) +{ + /* Expand the argument. */ + const char *p3 = argv[0]; + const char *p2; + int doneany = 0; + size_t len = 0; + + int is_basename = funcname[0] == 'b'; + int is_dir = !is_basename; + int stop = MAP_DIRSEP | (is_basename ? MAP_DOT : 0) | MAP_NUL; +#ifdef VMS + /* As in func_notdir_suffix ... */ + char *vms_p3 = alloca (strlen(p3) + 1); + int i; + for (i = 0; p3[i]; i++) + if (p3[i] == ',') + vms_p3[i] = ' '; + else + vms_p3[i] = p3[i]; + vms_p3[i] = p3[i]; + while ((p2 = find_next_token((const char**) &vms_p3, &len)) != 0) +#else + while ((p2 = find_next_token (&p3, &len)) != 0) +#endif + { + 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); + else if (p >= p2 && (*p == '.')) + o = variable_buffer_output (o, p2, p - p2); +#ifdef HAVE_DOS_PATHS + /* Handle the "d:foobar" case */ + else if (p2[0] && p2[1] == ':' && is_dir) + o = variable_buffer_output (o, p2, 2); +#endif + else if (is_dir) +#ifdef VMS + { + extern int vms_report_unix_paths; + if (vms_report_unix_paths) + o = variable_buffer_output (o, "./", 2); + else + o = variable_buffer_output (o, "[]", 2); + } +#else +#ifndef _AMIGA + o = variable_buffer_output (o, "./", 2); +#else + ; /* Just a nop... */ +#endif /* AMIGA */ +#endif /* !VMS */ + else + /* The entire name is the basename. */ + o = variable_buffer_output (o, p2, len); + +#ifdef VMS + if (vms_comma_separator) + o = variable_buffer_output (o, ",", 1); + else +#endif + o = variable_buffer_output (o, " ", 1); + + doneany = 1; + } + + if (doneany) + /* Kill last space. */ + --o; + + return o; +} + +static char * +func_addsuffix_addprefix (char *o, char **argv, const char *funcname) +{ + size_t fixlen = strlen (argv[0]); + const char *list_iterator = argv[1]; + int is_addprefix = funcname[3] == 'p'; + int is_addsuffix = !is_addprefix; + + int doneany = 0; + const char *p; + size_t len; + + 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, p, len); + if (is_addsuffix) + o = variable_buffer_output (o, argv[0], fixlen); + o = variable_buffer_output (o, " ", 1); + doneany = 1; + } + + if (doneany) + /* Kill last space. */ + --o; + + return o; +} + +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); + + return o; +} + + +static char * +func_firstword (char *o, char **argv, const char *funcname UNUSED) +{ + size_t i; + const char *words = argv[0]; /* Use a temp variable for find_next_token */ + const char *p = find_next_token (&words, &i); + + if (p != 0) + o = variable_buffer_output (o, p, i); + + return o; +} + +static char * +func_lastword (char *o, char **argv, const char *funcname UNUSED) +{ + size_t i; + const char *words = argv[0]; /* Use a temp variable for find_next_token */ + const char *p = NULL; + const char *t; + + while ((t = find_next_token (&words, &i)) != NULL) + p = t; + + if (p != 0) + o = variable_buffer_output (o, p, i); + + return o; +} + +static char * +func_words (char *o, char **argv, const char *funcname UNUSED) +{ + unsigned int i = 0; + const char *word_iterator = argv[0]; + char buf[INTSTR_LENGTH]; + + while (find_next_token (&word_iterator, NULL) != 0) + ++i; + + sprintf (buf, "%u", i); + o = variable_buffer_output (o, buf, strlen (buf)); + + return o; +} + +/* Set begpp to point to the first non-whitespace character of the string, + * and endpp to point to the last non-whitespace character of the string. + * If the string is empty or contains nothing but whitespace, endpp will be + * begpp-1. + */ +char * +strip_whitespace (const char **begpp, const char **endpp) +{ + while (*begpp <= *endpp && ISSPACE (**begpp)) + (*begpp) ++; + while (*endpp >= *begpp && ISSPACE (**endpp)) + (*endpp) --; + return (char *)*begpp; +} + +static long long +parse_numeric (const char *s, const char *msg) +{ + const char *beg = s; + const char *end = s + strlen (s) - 1; + char *endp; + long long num; + strip_whitespace (&beg, &end); + + if (beg > end) + OS (fatal, *expanding_var, _("%s: empty value"), msg); + + errno = 0; + num = strtoll (beg, &endp, 10); + if (errno == ERANGE) + OSS (fatal, *expanding_var, _("%s: '%s' out of range"), msg, s); + else if (endp == beg || endp <= end) + /* Empty or non-numeric input */ + OSS (fatal, *expanding_var, "%s: '%s'", msg, s); + + return num; +} + +static char * +func_word (char *o, char **argv, const char *funcname UNUSED) +{ + const char *end_p; + const char *p; + long long i; + + i = parse_numeric (argv[0], + _("invalid first argument to 'word' function")); + if (i < 1) + O (fatal, *expanding_var, + _("first argument to 'word' function must be greater than 0")); + + end_p = argv[1]; + while ((p = find_next_token (&end_p, 0)) != 0) + if (--i == 0) + break; + + if (i == 0) + o = variable_buffer_output (o, p, end_p - p); + + return o; +} + +static char * +func_wordlist (char *o, char **argv, const char *funcname UNUSED) +{ + char buf[INTSTR_LENGTH + 1]; + long long start, stop, count; + const char* badfirst = _("invalid first argument to 'wordlist' function"); + const char* badsecond = _("invalid second argument to 'wordlist' function"); + + start = parse_numeric (argv[0], badfirst); + if (start < 1) + OSS (fatal, *expanding_var, "%s: '%s'", badfirst, make_lltoa (start, buf)); + + stop = parse_numeric (argv[1], badsecond); + if (stop < 0) + OSS (fatal, *expanding_var, "%s: '%s'", badsecond, make_lltoa (stop, buf)); + + count = stop - start + 1; + + if (count > 0) + { + const char *p; + const char *end_p = argv[2]; + + /* Find the beginning of the "start"th word. */ + while (((p = find_next_token (&end_p, 0)) != 0) && --start) + ; + + if (p) + { + /* Find the end of the "count"th word from start. */ + while (--count && (find_next_token (&end_p, 0) != 0)) + ; + + /* Return the stuff in the middle. */ + o = variable_buffer_output (o, p, end_p - p); + } + } + + return o; +} + +static char * +func_findstring (char *o, char **argv, const char *funcname UNUSED) +{ + /* Find the first occurrence of the first string in the second. */ + if (strstr (argv[1], argv[0]) != 0) + o = variable_buffer_output (o, argv[0], strlen (argv[0])); + + return o; +} + +static char * +func_foreach (char *o, char **argv, const char *funcname UNUSED) +{ + /* expand only the first two. */ + char *varname = expand_argument (argv[0], NULL); + char *list = expand_argument (argv[1], NULL); + const char *body = argv[2]; + + int doneany = 0; + const char *list_iterator = list; + const char *p; + size_t len; + struct variable *var; + + /* Clean up the variable name by removing whitespace. */ + char *vp = next_token (varname); + end_of_token (vp)[0] = '\0'; + + push_new_variable_scope (); + var = define_variable (vp, strlen (vp), "", o_automatic, 0); + + /* loop through LIST, put the value in VAR and expand BODY */ + while ((p = find_next_token (&list_iterator, &len)) != 0) + { + char *result = 0; + + free (var->value); + var->value = xstrndup (p, len); + + result = allocated_variable_expand (body); + + o = variable_buffer_output (o, result, strlen (result)); + o = variable_buffer_output (o, " ", 1); + doneany = 1; + free (result); + } + + if (doneany) + /* Kill the last space. */ + --o; + + pop_variable_scope (); + free (varname); + free (list); + + return o; +} + +static char * +func_let (char *o, char **argv, const char *funcname UNUSED) +{ + /* expand only the first two. */ + char *varnames = expand_argument (argv[0], NULL); + char *list = expand_argument (argv[1], NULL); + const char *body = argv[2]; + + const char *vp; + const char *vp_next = varnames; + const char *list_iterator = list; + char *p; + size_t len; + size_t vlen; + + push_new_variable_scope (); + + /* loop through LIST for all but the last VARNAME */ + vp = find_next_token (&vp_next, &vlen); + NEXT_TOKEN (vp_next); + while (*vp_next != '\0') + { + p = find_next_token (&list_iterator, &len); + if (*list_iterator != '\0') + { + ++list_iterator; + p[len] = '\0'; + } + define_variable (vp, vlen, p ? p : "", o_automatic, 0); + + vp = find_next_token (&vp_next, &vlen); + NEXT_TOKEN (vp_next); + } + + /* set the last VARNAME to the remainder of LIST */ + if (vp) + define_variable (vp, vlen, next_token (list_iterator), o_automatic, 0); + + /* Expand the body in the context of the arguments, adding the result to + the variable buffer. */ + + o = variable_expand_string (o, body, SIZE_MAX); + + pop_variable_scope (); + free (varnames); + free (list); + + return o + strlen (o); +} + +struct a_word +{ + struct a_word *chain; + char *str; + size_t length; + int matched; +}; + +static unsigned long +a_word_hash_1 (const void *key) +{ + return_STRING_HASH_1 (((struct a_word const *) key)->str); +} + +static unsigned long +a_word_hash_2 (const void *key) +{ + return_STRING_HASH_2 (((struct a_word const *) key)->str); +} + +static int +a_word_hash_cmp (const void *x, const void *y) +{ + const struct a_word *ax = x; + const struct a_word *ay = y; + + if (ax->length != ay->length) + return ax->length > ay->length ? 1 : -1; + + return_STRING_N_COMPARE (ax->str, ay->str, ax->length); +} + +struct a_pattern +{ + char *str; + char *percent; + size_t length; +}; + +static char * +func_filter_filterout (char *o, char **argv, const char *funcname) +{ + struct a_word *words; + struct a_word *word_end; + struct a_word *wp; + struct a_pattern *patterns; + struct a_pattern *pat_end; + struct a_pattern *pp; + unsigned long pat_count = 0, word_count = 0; + + struct hash_table a_word_table; + int is_filter = funcname[CSTRLEN ("filter")] == '\0'; + const char *cp; + int literals = 0; + int hashing = 0; + char *p; + size_t len; + int doneany = 0; + + /* Find the number of words and get memory for them. */ + cp = argv[1]; + while ((p = find_next_token (&cp, NULL)) != 0) + ++word_count; + + if (!word_count) + return o; + + words = xcalloc (word_count * sizeof (struct a_word)); + word_end = words + word_count; + + /* Find the number of patterns and get memory for them. */ + cp = argv[0]; + while ((p = find_next_token (&cp, NULL)) != 0) + ++pat_count; + + patterns = xcalloc (pat_count * sizeof (struct a_pattern)); + pat_end = patterns + pat_count; + + /* Chop argv[0] up into patterns to match against the words. */ + + cp = argv[0]; + pp = patterns; + while ((p = find_next_token (&cp, &len)) != 0) + { + if (*cp != '\0') + ++cp; + + p[len] = '\0'; + pp->str = p; + pp->percent = find_percent (p); + if (pp->percent == 0) + literals++; + /* find_percent() might shorten the string so LEN is wrong. */ + pp->length = strlen (pp->str); + + ++pp; + } + + /* Chop ARGV[1] up into words to match against the patterns. */ + + cp = argv[1]; + wp = words; + while ((p = find_next_token (&cp, &len)) != 0) + { + if (*cp != '\0') + ++cp; + + p[len] = '\0'; + wp->str = p; + wp->length = len; + ++wp; + } + + /* Only use a hash table if arg list lengths justifies the cost. */ + hashing = (literals > 1 && (literals * word_count) >= 10); + if (hashing) + { + hash_init (&a_word_table, word_count, a_word_hash_1, a_word_hash_2, + a_word_hash_cmp); + for (wp = words; wp < word_end; ++wp) + { + struct a_word *owp = hash_insert (&a_word_table, wp); + if (owp) + wp->chain = owp; + } + } + + /* Run each pattern through the words, killing words. */ + for (pp = patterns; pp < pat_end; ++pp) + { + if (pp->percent) + for (wp = words; wp < word_end; ++wp) + 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 = words; wp < word_end; ++wp) + wp->matched |= (wp->length == pp->length + && memcmp (pp->str, wp->str, wp->length) == 0); + } + + /* Output the words that matched (or didn't, for filter-out). */ + for (wp = words; wp < word_end; ++wp) + 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; + + if (hashing) + hash_free (&a_word_table, 0); + + free (patterns); + free (words); + + return o; +} + + +static char * +func_strip (char *o, char **argv, const char *funcname UNUSED) +{ + const char *p = argv[0]; + int doneany = 0; + + while (*p != '\0') + { + int i=0; + const char *word_start; + + NEXT_TOKEN (p); + word_start = p; + for (i=0; *p != '\0' && !ISSPACE (*p); ++p, ++i) + {} + if (!i) + break; + o = variable_buffer_output (o, word_start, i); + o = variable_buffer_output (o, " ", 1); + doneany = 1; + } + + if (doneany) + /* Kill the last space. */ + --o; + + return o; +} + +/* + Print a warning or fatal message. +*/ +static char * +func_error (char *o, char **argv, const char *funcname) +{ + switch (*funcname) + { + case 'e': + OS (fatal, reading_file, "%s", argv[0]); + + case 'w': + OS (error, reading_file, "%s", argv[0]); + break; + + case 'i': + { + size_t len = strlen (argv[0]); + char *msg = alloca (len + 2); + memcpy (msg, argv[0], len); + msg[len] = '\n'; + msg[len + 1] = '\0'; + outputs (0, msg); + break; + } + + default: + OS (fatal, *expanding_var, "Internal error: func_error: '%s'", funcname); + } + + /* The warning function expands to the empty string. */ + return o; +} + + +/* + chop argv[0] into words, and sort them. + */ +static char * +func_sort (char *o, char **argv, const char *funcname UNUSED) +{ + const char *t; + char **words; + int wordi; + char *p; + size_t len; + + /* Find the maximum number of words we'll have. */ + t = argv[0]; + wordi = 0; + while ((p = find_next_token (&t, NULL)) != 0) + { + ++t; + ++wordi; + } + + words = xmalloc ((wordi == 0 ? 1 : wordi) * sizeof (char *)); + + /* Now assign pointers to each string in the array. */ + t = argv[0]; + wordi = 0; + while ((p = find_next_token (&t, &len)) != 0) + { + ++t; + p[len] = '\0'; + words[wordi++] = p; + } + + if (wordi) + { + int i; + + /* Now sort the list of words. */ + qsort (words, wordi, sizeof (char *), alpha_compare); + + /* Now write the sorted list, uniquified. */ + for (i = 0; i < wordi; ++i) + { + len = strlen (words[i]); + if (i == wordi - 1 || strlen (words[i + 1]) != len + || memcmp (words[i], words[i + 1], len)) + { + o = variable_buffer_output (o, words[i], len); + o = variable_buffer_output (o, " ", 1); + } + } + + /* Kill the last space. */ + --o; + } + + free (words); + + return o; +} + +/* + Traverse NUMBER consisting of optional leading white space, optional + sign, digits, and optional trailing white space. + If number is not of the proper form, diagnose with MSG. Otherwise, + return the address of of the first character after NUMBER, store + into *SIGN an integer consistent with the number's sign (-1, 0, or 1) + and store into *NUMSTART the address of NUMBER's first nonzero digit + (if NUMBER contains only zero digits, store the address of the first + character after NUMBER). +*/ +static const char * +parse_textint (const char *number, const char *msg, + int *sign, const char **numstart) +{ + const char *after_sign, *after_number; + const char *p = next_token (number); + int negative = *p == '-'; + int nonzero; + + if (*p == '\0') + OS (fatal, *expanding_var, _("%s: empty value"), msg); + + p += negative || *p == '+'; + after_sign = p; + + while (*p == '0') + p++; + *numstart = p; + + while (ISDIGIT (*p)) + ++p; + after_number = p; + nonzero = *numstart != after_number; + *sign = negative ? -nonzero : nonzero; + + /* Check for extra non-whitespace stuff after the value. */ + if (after_number == after_sign || *next_token (p) != '\0') + OSS (fatal, *expanding_var, "%s: '%s'", msg, number); + + return after_number; +} + + +/* + $(intcmp lhs,rhs[,lt-part[,eq-part[,gt-part]]]) + + LHS and RHS must be integer values (leading/trailing whitespace is ignored). + If none of LT-PART, EQ-PART, or GT-PART are given then the function expands + to empty if LHS and RHS are not equal, or the numeric value if they are equal. + LT-PART is evaluated when LHS is strictly less than RHS, EQ-PART is evaluated + when LHS is equal to RHS, and GT-part is evaluated when LHS is strictly + greater than RHS. + If GT-PART is not provided, it defaults to EQ-PART. When neither EQ-PART + nor GT-PART are provided, the function expands to empty if LHS is not + strictly less than RHS. +*/ + +static char * +func_intcmp (char *o, char **argv, const char *funcname UNUSED) +{ + int lsign, rsign; + const char *lnum, *rnum; + char *lhs_str = expand_argument (argv[0], NULL); + char *rhs_str = expand_argument (argv[1], NULL); + const char *llim = parse_textint (lhs_str, _("non-numeric first argument to 'intcmp' function"), &lsign, &lnum); + const char *rlim = parse_textint (rhs_str, _("non-numeric second argument to 'intcmp' function"), &rsign, &rnum); + ptrdiff_t llen = llim - lnum; + ptrdiff_t rlen = rlim - rnum; + int cmp = lsign - rsign; + + if (cmp == 0) + { + cmp = (llen > rlen) - (llen < rlen); + if (cmp == 0) + cmp = memcmp (lnum, rnum, llen); + } + + argv += 2; + + /* Handle the special case where there are only two arguments. */ + if (!*argv && cmp == 0) + { + if (lsign < 0) + o = variable_buffer_output (o, "-", 1); + o = variable_buffer_output(o, lnum - !lsign, llen + !lsign); + } + + free (lhs_str); + free (rhs_str); + + if (*argv && cmp >= 0) + { + ++argv; + if (cmp > 0 && *argv && *(argv + 1)) + ++argv; + } + + if (*argv) + { + char *expansion = expand_argument (*argv, NULL); + + o = variable_buffer_output (o, expansion, strlen (expansion)); + + free (expansion); + } + + return o; +} + +/* + $(if condition,true-part[,false-part]) + + CONDITION is false iff it evaluates to an empty string. White + space before and after condition are stripped before evaluation. + + If CONDITION is true, then TRUE-PART is evaluated, otherwise FALSE-PART is + evaluated (if it exists). Because only one of the two PARTs is evaluated, + you can use $(if ...) to create side-effects (with $(shell ...), for + example). +*/ + +static char * +func_if (char *o, char **argv, const char *funcname UNUSED) +{ + const char *begp = argv[0]; + const char *endp = begp + strlen (argv[0]) - 1; + int result = 0; + + /* Find the result of the condition: if we have a value, and it's not + empty, the condition is true. If we don't have a value, or it's the + empty string, then it's false. */ + + strip_whitespace (&begp, &endp); + + if (begp <= endp) + { + char *expansion = expand_argument (begp, endp+1); + + result = expansion[0] != '\0'; + free (expansion); + } + + /* If the result is true (1) we want to eval the first argument, and if + it's false (0) we want to eval the second. If the argument doesn't + exist we do nothing, otherwise expand it and add to the buffer. */ + + argv += 1 + !result; + + if (*argv) + { + char *expansion = expand_argument (*argv, NULL); + + o = variable_buffer_output (o, expansion, strlen (expansion)); + + free (expansion); + } + + return o; +} + +/* + $(or condition1[,condition2[,condition3[...]]]) + + A CONDITION is false iff it evaluates to an empty string. White + space before and after CONDITION are stripped before evaluation. + + CONDITION1 is evaluated. If it's true, then this is the result of + expansion. If it's false, CONDITION2 is evaluated, and so on. If none of + the conditions are true, the expansion is the empty string. + + Once a CONDITION is true no further conditions are evaluated + (short-circuiting). +*/ + +static char * +func_or (char *o, char **argv, const char *funcname UNUSED) +{ + for ( ; *argv ; ++argv) + { + const char *begp = *argv; + const char *endp = begp + strlen (*argv) - 1; + char *expansion; + size_t result = 0; + + /* Find the result of the condition: if it's false keep going. */ + + strip_whitespace (&begp, &endp); + + if (begp > endp) + continue; + + expansion = expand_argument (begp, endp+1); + result = strlen (expansion); + + /* If the result is false keep going. */ + if (!result) + { + free (expansion); + continue; + } + + /* It's true! Keep this result and return. */ + o = variable_buffer_output (o, expansion, result); + free (expansion); + break; + } + + return o; +} + +/* + $(and condition1[,condition2[,condition3[...]]]) + + A CONDITION is false iff it evaluates to an empty string. White + space before and after CONDITION are stripped before evaluation. + + CONDITION1 is evaluated. If it's false, then this is the result of + expansion. If it's true, CONDITION2 is evaluated, and so on. If all of + the conditions are true, the expansion is the result of the last condition. + + Once a CONDITION is false no further conditions are evaluated + (short-circuiting). +*/ + +static char * +func_and (char *o, char **argv, const char *funcname UNUSED) +{ + char *expansion; + + while (1) + { + const char *begp = *argv; + const char *endp = begp + strlen (*argv) - 1; + size_t result; + + /* An empty condition is always false. */ + strip_whitespace (&begp, &endp); + if (begp > endp) + return o; + + expansion = expand_argument (begp, endp+1); + result = strlen (expansion); + + /* If the result is false, stop here: we're done. */ + if (!result) + break; + + /* Otherwise the result is true. If this is the last one, keep this + result and quit. Otherwise go on to the next one! */ + + if (*(++argv)) + free (expansion); + else + { + o = variable_buffer_output (o, expansion, result); + break; + } + } + + free (expansion); + + return o; +} + +static char * +func_wildcard (char *o, char **argv, const char *funcname UNUSED) +{ +#ifdef _AMIGA + o = wildcard_expansion (argv[0], o); +#else + char *p = string_glob (argv[0]); + o = variable_buffer_output (o, p, strlen (p)); +#endif + return o; +} + +/* + $(eval ) + + Always resolves to the empty string. + + Treat the arguments as a segment of makefile, and parse them. +*/ + +static char * +func_eval (char *o, char **argv, const char *funcname UNUSED) +{ + char *buf; + size_t len; + + /* Eval the buffer. Pop the current variable buffer setting so that the + eval'd code can use its own without conflicting. */ + + install_variable_buffer (&buf, &len); + + eval_buffer (argv[0], NULL); + + restore_variable_buffer (buf, len); + + return o; +} + + +static char * +func_value (char *o, char **argv, const char *funcname UNUSED) +{ + /* Look up the variable. */ + struct variable *v = lookup_variable (argv[0], strlen (argv[0])); + + /* Copy its value into the output buffer without expanding it. */ + if (v) + o = variable_buffer_output (o, v->value, strlen (v->value)); + + return o; +} + +/* + \r is replaced on UNIX as well. Is this desirable? + */ +static void +fold_newlines (char *buffer, size_t *length, int trim_newlines) +{ + char *dst = buffer; + char *src = buffer; + char *last_nonnl = buffer - 1; + src[*length] = 0; + for (; *src != '\0'; ++src) + { + if (src[0] == '\r' && src[1] == '\n') + continue; + if (*src == '\n') + { + *dst++ = ' '; + } + else + { + last_nonnl = dst; + *dst++ = *src; + } + } + + if (!trim_newlines && (last_nonnl < (dst - 2))) + last_nonnl = dst - 2; + + *(++last_nonnl) = '\0'; + *length = last_nonnl - buffer; +} + +pid_t shell_function_pid = 0; +static int shell_function_completed; + +void +shell_completed (int exit_code, int exit_sig) +{ + char buf[INTSTR_LENGTH]; + + shell_function_pid = 0; + if (exit_sig == 0 && exit_code == 127) + shell_function_completed = -1; + else + shell_function_completed = 1; + + if (exit_code == 0 && exit_sig > 0) + exit_code = 128 + exit_sig; + + sprintf (buf, "%d", exit_code); + define_variable_cname (".SHELLSTATUS", buf, o_override, 0); +} + +#ifdef WINDOWS32 +/*untested*/ + +#include +#include +#include "sub_proc.h" + + +int +windows32_openpipe (int *pipedes, int errfd, pid_t *pid_p, char **command_argv, char **envp) +{ + SECURITY_ATTRIBUTES saAttr; + HANDLE hIn = INVALID_HANDLE_VALUE; + HANDLE hErr = INVALID_HANDLE_VALUE; + HANDLE hChildOutRd; + HANDLE hChildOutWr; + 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; + + /* 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) + { + ON (error, NILF, + _("windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n"), e); + return -1; + } + } + tmpErr = (HANDLE)_get_osfhandle (errfd); + 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) + { + ON (error, NILF, + _("windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n"), e); + return -1; + } + } + + if (! CreatePipe (&hChildOutRd, &hChildOutWr, &saAttr, 0)) + { + ON (error, NILF, _("CreatePipe() failed (e=%lu)\n"), GetLastError()); + return -1; + } + + hProcess = process_init_fd (hIn, hChildOutWr, hErr); + + if (!hProcess) + { + O (error, NILF, _("windows32_openpipe(): process_init_fd() failed\n")); + return -1; + } + + 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 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); + return 0; + } + else + { + /* reap/cleanup the failed process */ + process_cleanup (hProcess); + + /* 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); + + return -1; + } +} +#endif + + +#ifdef __MSDOS__ +FILE * +msdos_openpipe (int* pipedes, int *pidp, char *text) +{ + FILE *fpipe=0; + /* MSDOS can't fork, but it has 'popen'. */ + struct variable *sh = lookup_variable ("SHELL", 5); + int e; + extern int dos_command_running, dos_status; + + /* Make sure not to bother processing an empty line. */ + NEXT_TOKEN (text); + if (*text == '\0') + return 0; + + if (sh) + { + char buf[PATH_MAX + 7]; + /* This makes sure $SHELL value is used by $(shell), even + though the target environment is not passed to it. */ + sprintf (buf, "SHELL=%s", sh->value); + putenv (buf); + } + + e = errno; + errno = 0; + dos_command_running = 1; + dos_status = 0; + /* If dos_status becomes non-zero, it means the child process + was interrupted by a signal, like SIGINT or SIGQUIT. See + fatal_error_signal in commands.c. */ + fpipe = popen (text, "rt"); + dos_command_running = 0; + if (!fpipe || dos_status) + { + pipedes[0] = -1; + *pidp = -1; + if (dos_status) + errno = EINTR; + else if (errno == 0) + errno = ENOMEM; + if (fpipe) + pclose (fpipe); + shell_completed (127, 0); + } + else + { + pipedes[0] = fileno (fpipe); + *pidp = 42; /* Yes, the Meaning of Life, the Universe, and Everything! */ + errno = e; + } + return fpipe; +} +#endif + +/* + Do shell spawning, with the naughty bits for different OSes. + */ + +#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 (MAKE_TROUBLE); + return NULL; +} + +#define func_shell 0 + +#else +#ifndef _AMIGA +char * +func_shell_base (char *o, char **argv, int trim_newlines) +{ + struct childbase child = {0}; + char *batch_filename = NULL; + int errfd; +#ifdef __MSDOS__ + FILE *fpipe; +#endif + char **command_argv = NULL; + int pipedes[2]; + 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) + { +#ifdef WINDOWS32 + just_print_flag = j_p_f; +#endif + return o; + } +#endif /* !__MSDOS__ */ + + /* Set up the output in case the shell writes something. */ + output_start (); + + errfd = (output_context && output_context->err >= 0 + ? output_context->err : FD_STDERR); + + child.environment = target_environment (NULL, 0); + +#if defined(__MSDOS__) + fpipe = msdos_openpipe (pipedes, &pid, argv[0]); + if (pipedes[0] < 0) + { + OS (error, reading_file, "pipe: %s", strerror (errno)); + pid = -1; + goto done; + } + +#elif defined(WINDOWS32) + windows32_openpipe (pipedes, errfd, &pid, command_argv, child.environment); + /* 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. */ + shell_completed (127, 0); + OS (error, reading_file, "pipe: %s", strerror (errno)); + pid = -1; + goto done; + } + +#else + if (pipe (pipedes) < 0) + { + OS (error, reading_file, "pipe: %s", strerror (errno)); + pid = -1; + goto done; + } + + /* Close handles that are unnecessary for the child process. */ + fd_noinherit (pipedes[1]); + fd_noinherit (pipedes[0]); + + child.output.syncout = 1; + child.output.out = pipedes[1]; + child.output.err = errfd; + + pid = child_execute_job (&child, 1, command_argv); + + if (pid < 0) + { + shell_completed (127, 0); + goto done; + } +#endif + + { + char *buffer; + size_t maxlen, i; + int cc; + + /* Record the PID for reap_children. */ + shell_function_pid = pid; +#ifndef __MSDOS__ + shell_function_completed = 0; + + /* Close the write side of the pipe. We test for -1, since + pipedes[1] is -1 on MS-Windows, and some versions of MS + libraries barf when 'close' is called with -1. */ + if (pipedes[1] >= 0) + close (pipedes[1]); +#endif + + /* Set up and read from the pipe. */ + + maxlen = 200; + buffer = xmalloc (maxlen + 1); + + /* 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; + } + buffer[i] = '\0'; + + /* Close the read side of the pipe. */ +#ifdef __MSDOS__ + if (fpipe) + { + int st = pclose (fpipe); + shell_completed (st, 0); + } +#else + (void) close (pipedes[0]); +#endif + + /* 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); + + 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; + + /* Replace all newlines in the command's 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); + } + + done: + if (command_argv) + { + /* Free the storage only the child needed. */ + free (command_argv[0]); + free (command_argv); + } + + free_childbase (&child); + + return o; +} + +#else /* _AMIGA */ + +/* Do the Amiga version of func_shell. */ + +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 + don't have an opportunity to reopen stdout to trap it. Thus, + we save our own stdout onto a new descriptor and dup a temp + file's descriptor onto our stdout temporarily. After we + spawn the shell program, we dup our own stdout back to the + stdout descriptor. The buffer reading is the same as above, + except that we're now reading from a file. */ + +#include +#include + + BPTR child_stdout; + char tmp_output[FILENAME_MAX]; + size_t maxlen = 200, i; + int cc; + char * buffer, * ptr; + char ** aptr; + size_t len = 0; + char* batch_filename = NULL; + + /* Construct the argument list. */ + command_argv = construct_command_argv (argv[0], NULL, NULL, 0, + &batch_filename); + if (command_argv == 0) + return o; + + /* Note the mktemp() is a security hole, but this only runs on Amiga. + Ideally we would use get_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"); + mktemp (tmp_output); + child_stdout = Open (tmp_output, MODE_NEWFILE); + + for (aptr=command_argv; *aptr; aptr++) + len += strlen (*aptr) + 1; + + buffer = xmalloc (len + 1); + ptr = buffer; + + for (aptr=command_argv; *aptr; aptr++) + { + strcpy (ptr, *aptr); + ptr += strlen (ptr) + 1; + *(ptr++) = ' '; + *ptr = '\0'; + } + + ptr[-1] = '\n'; + + Execute (buffer, NULL, child_stdout); + free (buffer); + + Close (child_stdout); + + child_stdout = Open (tmp_output, MODE_OLDFILE); + + buffer = xmalloc (maxlen); + i = 0; + do + { + if (i == maxlen) + { + maxlen += 512; + buffer = xrealloc (buffer, maxlen + 1); + } + + cc = Read (child_stdout, &buffer[i], maxlen - i); + if (cc > 0) + i += cc; + } while (cc > 0); + + Close (child_stdout); + + fold_newlines (buffer, &i, trim_newlines); + o = variable_buffer_output (o, buffer, i); + free (buffer); + return o; +} +#endif /* _AMIGA */ + +static 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, i.e., the empty string is false. + */ +static char * +func_eq (char *o, char **argv, char *funcname UNUSED) +{ + int result = ! strcmp (argv[0], argv[1]); + o = variable_buffer_output (o, result ? "1" : "", result); + return o; +} + + +/* + string-boolean not operator. + */ +static char * +func_not (char *o, char **argv, char *funcname UNUSED) +{ + const char *s = argv[0]; + int result = 0; + NEXT_TOKEN (s); + result = ! (*s); + o = variable_buffer_output (o, result ? "1" : "", result); + return o; +} +#endif + + +#ifdef HAVE_DOS_PATHS +# ifdef __CYGWIN__ +# define IS_ABSOLUTE(n) ((n[0] && n[1] == ':') || ISDIRSEP (n[0])) +# 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 ('/'). */ + +static char * +abspath (const char *name, char *apath) +{ + char *dest; + const char *start, *end, *apath_limit; + unsigned long root_len = ROOT_LEN; + + if (name[0] == '\0') + return NULL; + + apath_limit = apath + GET_PATH_MAX; + + if (!IS_ABSOLUTE(name)) + { + /* It is unlikely we would make it until here but just to make sure. */ + if (!starting_directory) + return NULL; + + strcpy (apath, starting_directory); + +#ifdef HAVE_DOS_PATHS + if (ISDIRSEP (name[0])) + { + if (ISDIRSEP (name[1])) + { + /* A UNC. Don't prepend a drive letter. */ + apath[0] = name[0]; + apath[1] = name[1]; + root_len = 2; + } + /* We have /foo, an absolute file name except for the drive + letter. Assume the missing drive letter is the current + drive, which we can get if we remove from starting_directory + everything past the root directory. */ + apath[root_len] = '\0'; + } +#endif + + dest = strchr (apath, '\0'); + } + else + { +#if defined(__CYGWIN__) && defined(HAVE_DOS_PATHS) + if (ISDIRSEP (name[0])) + root_len = 1; +#endif + memcpy (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 (! ISDIRSEP (apath[root_len - 1])) + { + /* 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[root_len - 1] = '/'; /* make sure it's a forward slash */ +#endif + } + + for (start = end = name; *start != '\0'; start = end) + { + size_t len; + + /* Skip sequence of multiple path-separators. */ + while (ISDIRSEP (*start)) + ++start; + + /* Find end of path component. */ + for (end = start; ! STOP_SET (*end, MAP_DIRSEP|MAP_NUL); ++end) + ; + + len = end - start; + + if (len == 0) + break; + else if (len == 1 && start[0] == '.') + /* 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; ! ISDIRSEP (dest[-1]); --dest) + ; + } + else + { + if (! ISDIRSEP (dest[-1])) + *dest++ = '/'; + + if (dest + len >= apath_limit) + return NULL; + + dest = mempcpy (dest, start, len); + *dest = '\0'; + } + } + + /* Unless it is root strip trailing separator. */ + if (dest > apath + root_len && ISDIRSEP (dest[-1])) + --dest; + + *dest = '\0'; + + return apath; +} + + +static char * +func_realpath (char *o, char **argv, const char *funcname UNUSED) +{ + /* Expand the argument. */ + const char *p = argv[0]; + const char *path = 0; + int doneany = 0; + size_t len = 0; + + 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'; + +#ifdef HAVE_REALPATH + ENULLLOOP (rp, realpath (in, out)); +# if defined _AIX + /* AIX realpath() doesn't remove trailing slashes correctly. */ + if (rp) + { + char *ep = rp + strlen (rp) - 1; + while (ep > rp && ep[0] == '/') + *(ep--) = '\0'; + } +# endif +#else + rp = abspath (in, out); +#endif + + if (rp) + { + 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; + } + } + } + } + + /* Kill last space. */ + if (doneany) + --o; + + return o; +} + +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; + } + NEXT_TOKEN (fn); + + if (fn[0] == '\0') + O (fatal, *expanding_var, _("file: missing filename")); + + ENULLLOOP (fp, fopen (fn, mode)); + if (fp == NULL) + OSS (fatal, reading_file, _("open: %s: %s"), fn, strerror (errno)); + + /* We've changed the contents of a directory, possibly. + Another option would be to look up the directory we changed and reset + its counter to 0. */ + ++command_count; + + if (argv[1]) + { + size_t l = strlen (argv[1]); + int nl = l == 0 || argv[1][l-1] != '\n'; + + if (fputs (argv[1], fp) == EOF || (nl && fputc ('\n', fp) == EOF)) + OSS (fatal, reading_file, _("write: %s: %s"), fn, strerror (errno)); + } + if (fclose (fp)) + OSS (fatal, reading_file, _("close: %s: %s"), fn, strerror (errno)); + } + else if (fn[0] == '<') + { + size_t n = 0; + FILE *fp; + + ++fn; + NEXT_TOKEN (fn); + if (fn[0] == '\0') + O (fatal, *expanding_var, _("file: missing filename")); + + if (argv[1]) + O (fatal, *expanding_var, _("file: too many arguments")); + + ENULLLOOP (fp, fopen (fn, "r")); + if (fp == NULL) + { + if (errno == ENOENT) + return o; + OSS (fatal, reading_file, _("open: %s: %s"), fn, strerror (errno)); + } + + while (1) + { + char buf[1024]; + size_t l = fread (buf, 1, sizeof (buf), fp); + if (l > 0) + { + o = variable_buffer_output (o, buf, l); + n += l; + } + if (ferror (fp)) + if (errno != EINTR) + OSS (fatal, reading_file, _("read: %s: %s"), fn, strerror (errno)); + if (feof (fp)) + break; + } + if (fclose (fp)) + OSS (fatal, reading_file, _("close: %s: %s"), fn, strerror (errno)); + + /* Remove trailing newline. */ + if (n && o[-1] == '\n') + o -= 1 + (n > 1 && o[-2] == '\r'); + } + else + OS (fatal, *expanding_var, _("file: invalid file operation: %s"), fn); + + return o; +} + +static char * +func_abspath (char *o, char **argv, const char *funcname UNUSED) +{ + /* Expand the argument. */ + const char *p = argv[0]; + const char *path = 0; + int doneany = 0; + size_t len = 0; + + 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'; + + if (abspath (in, out)) + { + o = variable_buffer_output (o, out, strlen (out)); + o = variable_buffer_output (o, " ", 1); + doneany = 1; + } + } + } + + /* Kill last space. */ + if (doneany) + --o; + + return o; +} + +/* Lookup table for builtin functions. + + This doesn't have to be sorted; we use a straight lookup. We might gain + some efficiency by moving most often used functions to the start of the + table. + + If MAXIMUM_ARGS is 0, that means there is no maximum and all + comma-separated values are treated as arguments. + + EXPAND_ARGS means that all arguments should be expanded before invocation. + Functions that do namespace tricks (foreach, let) don't automatically + expand. */ + +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, 0 } + +static struct function_table_entry function_table_init[] = +{ + /* 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 ("let", 3, 3, 0, func_let), + 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 ("intcmp", 2, 5, 0, func_intcmp), + 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 + FT_ENTRY ("eq", 2, 2, 1, func_eq), + FT_ENTRY ("not", 0, 1, 1, func_not), +#endif +}; + +#define FUNCTION_TABLE_ENTRIES (sizeof (function_table_init) / sizeof (struct function_table_entry)) + + +/* These must come after the definition of function_table. */ + +static char * +expand_builtin_function (char *o, unsigned int argc, char **argv, + const struct function_table_entry *entry_p) +{ + char *p; + + if (argc < entry_p->minimum_args) + fatal (*expanding_var, strlen (entry_p->name), + _("insufficient number of arguments (%u) to function '%s'"), + argc, entry_p->name); + + /* 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 && !entry_p->alloc_fn) + return o; + + if (!entry_p->fptr.func_ptr) + OS (fatal, *expanding_var, + _("unimplemented on this platform: function '%s'"), entry_p->name); + + if (entry_p->adds_command) + ++command_count; + + 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 + opening ( or { and is not null-terminated. If a function invocation + is found, expand it into the buffer at *OP, updating *OP, incrementing + *STRINGP past the reference and returning nonzero. If not, return zero. */ + +int +handle_function (char **op, const char **stringp) +{ + const struct function_table_entry *entry_p; + char openparen = (*stringp)[0]; + char closeparen = openparen == '(' ? ')' : '}'; + const char *beg; + const char *end; + int count = 0; + char *abeg = NULL; + char **argv, **argvp; + unsigned int nargs; + + beg = *stringp + 1; + + entry_p = lookup_function (beg); + + if (!entry_p) + return 0; + + /* We found a builtin function. Find the beginning of its arguments (skip + whitespace after the name). */ + + beg += entry_p->len; + NEXT_TOKEN (beg); + + /* Find the end of the function invocation, counting nested use of + whichever kind of parens we use. Since we're looking, count commas + to get a rough estimate of how many arguments we might have. The + count might be high, but it'll never be low. */ + + for (nargs=1, end=beg; *end != '\0'; ++end) + if (!STOP_SET (*end, MAP_VARSEP|MAP_COMMA)) + continue; + else if (*end == ',') + ++nargs; + else if (*end == openparen) + ++count; + else if (*end == closeparen && --count < 0) + break; + + if (count >= 0) + fatal (*expanding_var, strlen (entry_p->name), + _("unterminated call to function '%s': missing '%c'"), + entry_p->name, closeparen); + + *stringp = end; + + /* Get some memory to store the arg pointers. */ + argvp = argv = alloca (sizeof (char *) * (nargs + 2)); + + /* Chop the string into arguments, then a nul. As soon as we hit + MAXIMUM_ARGS (if it's >0) assume the rest of the string is part of the + last argument. + + If we're expanding, store pointers to the expansion of each one. If + not, make a duplicate of the string and point into that, nul-terminating + each argument. */ + + if (entry_p->expand_args) + { + const char *p; + for (p=beg, nargs=0; p <= end; ++argvp) + { + const char *next; + + ++nargs; + + if (nargs == entry_p->maximum_args + || ((next = find_next_argument (openparen, closeparen, p, end)) == NULL)) + next = end; + + *argvp = expand_argument (p, next); + p = next + 1; + } + } + else + { + size_t len = end - beg; + char *p, *aend; + + abeg = xmalloc (len+1); + aend = mempcpy (abeg, beg, len); + *aend = '\0'; + + for (p=abeg, nargs=0; p <= aend; ++argvp) + { + char *next; + + ++nargs; + + if (nargs == entry_p->maximum_args + || ((next = find_next_argument (openparen, closeparen, p, aend)) == NULL)) + next = aend; + + *argvp = p; + *next = '\0'; + p = next + 1; + } + } + *argvp = NULL; + + /* Finally! Run the function... */ + *op = expand_builtin_function (*op, nargs, argv, entry_p); + + /* Free memory. */ + if (entry_p->expand_args) + for (argvp=argv; *argvp != 0; ++argvp) + free (*argvp); + else + free (abeg); + + return 1; +} + + +/* User-defined functions. Expand the first argument as either a builtin + function or a make variable, in the context of the rest of the arguments + assigned to $1, $2, ... $N. $0 is the name of the function. */ + +static char * +func_call (char *o, char **argv, const char *funcname UNUSED) +{ + static unsigned int max_args = 0; + char *fname; + char *body; + size_t flen; + unsigned int i; + int saved_args; + const struct function_table_entry *entry_p; + struct variable *v; + + /* Clean up the name of the variable to be invoked. */ + fname = next_token (argv[0]); + end_of_token (fname)[0] = '\0'; + + /* Calling nothing is a no-op */ + if (*fname == '\0') + return o; + + /* Are we invoking a builtin function? */ + + entry_p = lookup_function (fname); + if (entry_p) + { + /* How many arguments do we have? */ + for (i=0; argv[i+1]; ++i) + ; + return expand_builtin_function (o, i, argv+1, entry_p); + } + + /* Not a builtin, so the first argument is the name of a variable to be + expanded and interpreted as a function. Find it. */ + flen = strlen (fname); + + v = lookup_variable (fname, flen); + + if (v == 0) + warn_undefined (fname, flen); + + if (v == 0 || *v->value == '\0') + return o; + + body = alloca (flen + 4); + body[0] = '$'; + body[1] = '('; + memcpy (body + 2, fname, flen); + body[flen+2] = ')'; + body[flen+3] = '\0'; + + /* Set up arguments $(1) .. $(N). $(0) is the function name. */ + + push_new_variable_scope (); + + for (i=0; *argv; ++i, ++argv) + { + char num[INTSTR_LENGTH]; + + sprintf (num, "%u", i); + define_variable (num, strlen (num), *argv, o_automatic, 0); + } + + /* If the number of arguments we have is < max_args, it means we're inside + a recursive invocation of $(call ...). Fill in the remaining arguments + in the new scope with the empty value, to hide them from this + invocation. */ + + for (; i < max_args; ++i) + { + char num[INTSTR_LENGTH]; + + sprintf (num, "%u", i); + define_variable (num, strlen (num), "", o_automatic, 0); + } + + /* Expand the body in the context of the arguments, adding the result to + the variable buffer. */ + + v->exp_count = EXP_COUNT_MAX; + + saved_args = max_args; + max_args = i; + o = variable_expand_string (o, body, flen+3); + max_args = saved_args; + + v->exp_count = 0; + + pop_variable_scope (); + + return o + strlen (o); +} + +void +define_new_function (const 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) + O (fatal, flocp, _("Empty function name")); + if (*name == '.' || *e != '\0') + OS (fatal, flocp, _("Invalid function name: %s"), name); + if (len > 255) + OS (fatal, flocp, _("Function name too long: %s"), name); + if (min > 255) + ONS (fatal, flocp, + _("Invalid minimum argument count (%u) for function %s"), min, name); + if (max > 255 || (max && max < min)) + ONS (fatal, flocp, + _("Invalid maximum argument count (%u) for function %s"), max, name); + + ent = xmalloc (sizeof (struct function_table_entry)); + ent->name = name; + ent->len = (unsigned char) len; + ent->minimum_args = (unsigned char) min; + ent->maximum_args = (unsigned char) max; + ent->expand_args = ANY_SET(flags, GMK_FUNC_NOEXPAND) ? 0 : 1; + ent->alloc_fn = 1; + /* We don't know what this function will do. */ + ent->adds_command = 1; + ent->fptr.alloc_func_ptr = func; + + ent = hash_insert (&function_table, ent); + free (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); + hash_load (&function_table, function_table_init, + FUNCTION_TABLE_ENTRIES, sizeof (struct function_table_entry)); +} diff --git a/local/recipes/dev/gnu-make/source/src/getopt.c b/local/recipes/dev/gnu-make/source/src/getopt.c new file mode 100644 index 0000000000..fbf9313814 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/getopt.c @@ -0,0 +1,1030 @@ +/* Getopt for GNU. +NOTE: getopt is now part of the C library, so if you don't know what +"Keep this file name-space clean" means, talk to drepper@gnu.org +before changing it! + +Copyright (C) 1987-2022 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. + +GNU Make is free software; you can 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 . */ + +/* This tells Alpha OSF/1 not to define a getopt prototype in . + Ditto for AIX 3.2 and . */ +#ifndef _NO_PROTO +# define _NO_PROTO +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if !defined __STDC__ || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +# ifndef const +# define const +# endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 +# include +# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +# define ELIDE_CODE +# endif +#endif + +#ifdef __redox__ +#define ELIDE_CODE +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +/* Don't include stdlib.h for non-GNU C libraries because some of them + contain conflicting prototypes for getopt. */ +# include +# include +#endif /* GNU C library. */ + +#ifdef VMS +# include +# if HAVE_STRING_H - 0 +# include +# endif +#endif + +/* This is for other GNU distributions with internationalized messages. + When compiling libc, the _ macro is predefined. */ +#include "gettext.h" +#define _(msgid) gettext (msgid) + + +/* 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. + + As `getopt' works, it permutes the elements of ARGV so that, + when it is done, all the options precede everything else. Thus + all application programs are extended to handle flexible argument order. + + Setting the environment variable POSIXLY_CORRECT disables permutation. + Then the behavior is completely standard. + + GNU application programs can use a third alternative mode in which + they can distinguish the relative order of options and other arguments. */ + +#include "getopt.h" + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +char *optarg = NULL; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +/* 1003.2 says this must be 1 before any call. */ +int optind = 1; + +/* Formerly, initialization of getopt depended on optind==0, which + causes problems with re-calling getopt as programs generally don't + know that. */ + +int __getopt_initialized = 0; + +/* The next char to be scanned in the option-element + in which the last option character we returned was found. + This allows us to pick up the scan where we left off. + + If this is zero, or a null string, it means resume the scan + by advancing to the next ARGV-element. */ + +static char *nextchar; + +/* Callers store zero here to inhibit the error message + for unrecognized options. */ + +int opterr = 1; + +/* Set to an option character which was unrecognized. + This must be initialized on some systems to avoid linking in the + system's own getopt implementation. */ + +int optopt = '?'; + +/* Describe how to deal with options that follow non-option ARGV-elements. + + If the caller did not specify anything, + the default is REQUIRE_ORDER if the environment variable + POSIXLY_CORRECT is defined, PERMUTE otherwise. + + REQUIRE_ORDER means don't recognize them as options; + stop option processing when the first non-option is seen. + This is what Unix does. + This mode of operation is selected by either setting the environment + variable POSIXLY_CORRECT, or using `+' as the first character + of the list of option characters. + + PERMUTE is the default. We permute the contents of ARGV as we scan, + so that eventually all the non-options are at the end. This allows options + to be given in any order, even with programs that were not written to + expect this. + + RETURN_IN_ORDER is an option available to programs that were written + to expect options and other ARGV-elements in any order and that care about + the ordering of the two. We describe each non-option ARGV-element + as if it were the argument of an option with character code 1. + Using `-' as the first character of the list of option characters + selects this mode of operation. + + The special argument `--' forces an end of option-scanning regardless + of the value of `ordering'. In the case of RETURN_IN_ORDER, only + `--' can cause `getopt' to return -1 with `optind' != ARGC. */ + +static enum +{ + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER +} ordering; + +/* Value of POSIXLY_CORRECT environment variable. */ +static char *posixly_correct; + +#ifdef __GNU_LIBRARY__ +/* We want to avoid inclusion of string.h with non-GNU libraries + because there are many ways it can cause trouble. + On some systems, it contains special magic macros that don't work + in GCC. */ +# include +# define my_index strchr +#else + +# if HAVE_STRING_H +# include +# else +# include +# endif + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +#ifndef getenv +extern char *getenv (); +#endif + +static char * +my_index (const char *str, int chr) +{ + while (*str) + { + if (*str == chr) + return (char *) str; + str++; + } + return 0; +} + +/* If using GCC, we can safely declare strlen this way. + If not using GCC, it is ok not to declare it. */ +#ifdef __GNUC__ +/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. + That was relevant to code that was here before. */ +# if (!defined __STDC__ || !__STDC__) && !defined strlen +/* gcc with -traditional declares the built-in strlen to return int, + and has done so at least since version 2.4.5. -- rms. */ +extern int strlen (const char *); +# endif /* not __STDC__ */ +#endif /* __GNUC__ */ + +#endif /* not __GNU_LIBRARY__ */ + +/* Handle permutation of arguments. */ + +/* Describe the part of ARGV that contains non-options that have + been skipped. `first_nonopt' is the index in ARGV of the first of them; + `last_nonopt' is the index after the last of them. */ + +static int first_nonopt; +static int last_nonopt; + +#ifdef _LIBC +/* Bash 2.0 gives us an environment variable containing flags + indicating ARGV elements that should not be considered arguments. */ + +/* Defined in getopt_init.c */ +extern char *__getopt_nonoption_flags; + +static int nonoption_flags_max_len; +static int nonoption_flags_len; + +static int original_argc; +static char *const *original_argv; + +/* Make sure the environment variable bash 2.0 puts in the environment + is valid for the getopt call we must make sure that the ARGV passed + to getopt is that one passed to the process. */ +static void __attribute__ ((unused)) +store_args_and_env (int argc, char *const *argv) +{ + /* XXX This is no good solution. We should rather copy the args so + that we can compare them later. But we must not use malloc(3). */ + original_argc = argc; + original_argv = argv; +} +# ifdef text_set_element +text_set_element (__libc_subinit, store_args_and_env); +# endif /* text_set_element */ + +# define SWAP_FLAGS(ch1, ch2) \ + if (nonoption_flags_len > 0) \ + { \ + char __tmp = __getopt_nonoption_flags[ch1]; \ + __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ + __getopt_nonoption_flags[ch2] = __tmp; \ + } +#else /* !_LIBC */ +# define SWAP_FLAGS(ch1, ch2) +#endif /* _LIBC */ + +/* Exchange two adjacent subsequences of ARGV. + One subsequence is elements [first_nonopt,last_nonopt) + which contains all the non-options that have been skipped so far. + The other is elements [last_nonopt,optind), which contains all + the options processed since those non-options were skipped. + + `first_nonopt' and `last_nonopt' are relocated so that they describe + the new indices of the non-options in ARGV after they are moved. */ + +#if defined __STDC__ && __STDC__ +static void exchange (char **); +#endif + +static void +exchange (char **argv) +{ + int bottom = first_nonopt; + int middle = last_nonopt; + int top = optind; + char *tem; + + /* Exchange the shorter segment with the far end of the longer segment. + That puts the shorter segment into the right place. + It leaves the longer segment in the right place overall, + but it consists of two parts that need to be swapped next. */ + +#ifdef _LIBC + /* First make sure the handling of the `__getopt_nonoption_flags' + string can work normally. Our top argument must be in the range + of the string. */ + if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) + { + /* We must extend the array. The user plays games with us and + presents new arguments. */ + char *new_str = malloc (top + 1); + if (new_str == NULL) + nonoption_flags_len = nonoption_flags_max_len = 0; + else + { + memset (__mempcpy (new_str, __getopt_nonoption_flags, + nonoption_flags_max_len), + '\0', top + 1 - nonoption_flags_max_len); + nonoption_flags_max_len = top + 1; + __getopt_nonoption_flags = new_str; + } + } +#endif + + while (top > middle && middle > bottom) + { + if (top - middle > middle - bottom) + { + /* Bottom segment is the short one. */ + int len = middle - bottom; + register int i; + + /* Swap it with the top part of the top segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[top - (middle - bottom) + i]; + argv[top - (middle - bottom) + i] = tem; + SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); + } + /* Exclude the moved bottom segment from further swapping. */ + top -= len; + } + else + { + /* Top segment is the short one. */ + int len = top - middle; + register int i; + + /* Swap it with the bottom part of the bottom segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[middle + i]; + argv[middle + i] = tem; + SWAP_FLAGS (bottom + i, middle + i); + } + /* Exclude the moved top segment from further swapping. */ + bottom += len; + } + } + + /* Update records for the slots the non-options now occupy. */ + + first_nonopt += (optind - last_nonopt); + last_nonopt = optind; +} + +/* Initialize the internal data when the first call is made. */ + +#if defined __STDC__ && __STDC__ +static const char *_getopt_initialize (int, char *const *, const char *); +#endif +static const char * +_getopt_initialize (int argc, char *const *argv, const char *optstring) +{ + /* Start processing options with ARGV-element 1 (since ARGV-element 0 + is the program name); the sequence of previously skipped + non-option ARGV-elements is empty. */ + + first_nonopt = last_nonopt = optind; + + nextchar = NULL; + + posixly_correct = getenv ("POSIXLY_CORRECT"); + + /* Determine how to handle the ordering of options and nonoptions. */ + + if (optstring[0] == '-') + { + ordering = RETURN_IN_ORDER; + ++optstring; + } + else if (optstring[0] == '+') + { + ordering = REQUIRE_ORDER; + ++optstring; + } + else if (posixly_correct != NULL) + ordering = REQUIRE_ORDER; + else + ordering = PERMUTE; + +#ifdef _LIBC + if (posixly_correct == NULL + && argc == original_argc && argv == original_argv) + { + if (nonoption_flags_max_len == 0) + { + if (__getopt_nonoption_flags == NULL + || __getopt_nonoption_flags[0] == '\0') + nonoption_flags_max_len = -1; + else + { + const char *orig_str = __getopt_nonoption_flags; + int len = nonoption_flags_max_len = strlen (orig_str); + if (nonoption_flags_max_len < argc) + nonoption_flags_max_len = argc; + __getopt_nonoption_flags = + (char *) malloc (nonoption_flags_max_len); + if (__getopt_nonoption_flags == NULL) + nonoption_flags_max_len = -1; + else + memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), + '\0', nonoption_flags_max_len - len); + } + } + nonoption_flags_len = nonoption_flags_max_len; + } + else + nonoption_flags_len = 0; +#endif + + return optstring; +} + +/* Scan elements of ARGV (whose length is ARGC) for option characters + given in OPTSTRING. + + If an element of ARGV starts with '-', and is not exactly "-" or "--", + then it is an option element. The characters of this element + (aside from the initial '-') are option characters. If `getopt' + is called repeatedly, it returns successively each of the option characters + from each of the option elements. + + If `getopt' finds another option character, it returns that character, + updating `optind' and `nextchar' so that the next call to `getopt' can + resume the scan with the following option character or ARGV-element. + + If there are no more option characters, `getopt' returns -1. + Then `optind' is the index in ARGV of the first ARGV-element + that is not an option. (The ARGV-elements have been permuted + so that those that are not options now come last.) + + OPTSTRING is a string containing the legitimate option characters. + If an option character is seen that is not listed in OPTSTRING, + return '?' after printing an error message. If you set `opterr' to + zero, the error message is suppressed but we still return '?'. + + If a char in OPTSTRING is followed by a colon, that means it wants an arg, + so the following text in the same ARGV-element, or the text of the following + ARGV-element, is returned in `optarg'. Two colons mean an option that + wants an optional arg; if there is text in the current ARGV-element, + it is returned in `optarg', otherwise `optarg' is set to zero. + + If OPTSTRING starts with `-' or `+', it requests different methods of + handling the non-option ARGV-elements. + See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. + + Long-named options begin with `--' instead of `-'. + Their names may be abbreviated as long as the abbreviation is unique + or is an exact match for some defined option. If they have an + argument, it follows the option name in the same ARGV-element, separated + from the option name by a `=', or else the in next ARGV-element. + When `getopt' finds a long-named option, it returns 0 if that option's + `flag' field is nonzero, the value of the option's `val' field + if the `flag' field is zero. + + The elements of ARGV aren't really const, because we permute them. + But we pretend they're const in the prototype to be compatible + with other systems. + + LONGOPTS is a vector of `struct option' terminated by an + element containing a name which is zero. + + LONGIND returns the index in LONGOPT of the long-named option found. + It is only valid when a long-named option has been found by the most + recent call. + + If LONG_ONLY is nonzero, '-' as well as '--' can introduce + long-named options. */ + +int +_getopt_internal (int argc, char *const *argv, const char *optstring, + const struct option *longopts, int *longind, int long_only) +{ + optarg = NULL; + + if (optind == 0 || !__getopt_initialized) + { + if (optind == 0) + optind = 1; /* Don't scan ARGV[0], the program name. */ + optstring = _getopt_initialize (argc, argv, optstring); + __getopt_initialized = 1; + } + + /* Test whether ARGV[optind] points to a non-option argument. + Either it does not have option syntax, or there is an environment flag + from the shell indicating it is not an option. The later information + is only used when the used in the GNU libc. */ +#ifdef _LIBC +# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ + || (optind < nonoption_flags_len \ + && __getopt_nonoption_flags[optind] == '1')) +#else +# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') +#endif + + if (nextchar == NULL || *nextchar == '\0') + { + /* Advance to the next ARGV-element. */ + + /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been + moved back by the user (who may also have changed the arguments). */ + if (last_nonopt > optind) + last_nonopt = optind; + if (first_nonopt > optind) + first_nonopt = optind; + + if (ordering == PERMUTE) + { + /* If we have just processed some options following some non-options, + exchange them so that the options come first. */ + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (last_nonopt != optind) + first_nonopt = optind; + + /* Skip any additional non-options + and extend the range of non-options previously skipped. */ + + while (optind < argc && NONOPTION_P) + optind++; + last_nonopt = optind; + } + + /* The special ARGV-element `--' means premature end of options. + Skip it like a null option, + then exchange with previous non-options as if it were an option, + then skip everything else like a non-option. */ + + if (optind != argc && !strcmp (argv[optind], "--")) + { + optind++; + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (first_nonopt == last_nonopt) + first_nonopt = optind; + last_nonopt = argc; + + optind = argc; + } + + /* If we have done all the ARGV-elements, stop the scan + and back over any non-options that we skipped and permuted. */ + + if (optind == argc) + { + /* Set the next-arg-index to point at the non-options + that we previously skipped, so the caller will digest them. */ + if (first_nonopt != last_nonopt) + optind = first_nonopt; + return -1; + } + + /* If we have come to a non-option and did not permute it, + either stop the scan or describe it to the caller and pass it by. */ + + if (NONOPTION_P) + { + if (ordering == REQUIRE_ORDER) + return -1; + optarg = argv[optind++]; + return 1; + } + + /* We have found another option-ARGV-element. + Skip the initial punctuation. */ + + nextchar = (argv[optind] + 1 + + (longopts != NULL && argv[optind][1] == '-')); + } + + /* Decode the current option-ARGV-element. */ + + /* Check whether the ARGV-element is a long option. + + If long_only and the ARGV-element has the form "-f", where f is + a valid short option, don't consider it an abbreviated form of + a long option that starts with f. Otherwise there would be no + way to give the -f short option. + + On the other hand, if there's a long option "fubar" and + the ARGV-element is "-fu", do consider that an abbreviation of + the long option, just like "--fu", and not "-f" with arg "u". + + This distinction seems to be the most useful approach. */ + + if (longopts != NULL + && (argv[optind][1] == '-' + || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = -1; + int option_index; + + for (nameend = nextchar; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) + == (unsigned int) strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + + if (ambig && !exact) + { + if (opterr) + fprintf (stderr, _("%s: option '%s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + optopt = 0; + return '?'; + } + + if (pfound != NULL) + { + option_index = indfound; + optind++; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + if (argv[optind - 1][1] == '-') + /* --option */ + fprintf (stderr, + _("%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"), + argv[0], argv[optind - 1][0], pfound->name); + + nextchar += strlen (nextchar); + + optopt = pfound->val; + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf (stderr, + _("%s: option '%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + optopt = pfound->val; + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + + /* Can't find it as a long option. If this is not getopt_long_only, + or the option starts with '--' or is not a valid short + option, then it's an error. + Otherwise interpret it as a short option. */ + if (!long_only || argv[optind][1] == '-' + || my_index (optstring, *nextchar) == NULL) + { + if (opterr) + { + if (argv[optind][1] == '-') + /* --option */ + fprintf (stderr, _("%s: unrecognized option '--%s'\n"), + argv[0], nextchar); + else + /* +option or -option */ + fprintf (stderr, _("%s: unrecognized option '%c%s'\n"), + argv[0], argv[optind][0], nextchar); + } + nextchar = (char *) ""; + optind++; + optopt = 0; + return '?'; + } + } + + /* Look at and handle the next short option-character. */ + + { + char c = *nextchar++; + char *temp = my_index (optstring, c); + + /* Increment `optind' when we start to process its last character. */ + if (*nextchar == '\0') + ++optind; + + if (temp == NULL || c == ':') + { + if (opterr) + { + if (posixly_correct) + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: illegal option -- %c\n"), + argv[0], c); + else + fprintf (stderr, _("%s: invalid option -- %c\n"), + argv[0], c); + } + optopt = c; + return '?'; + } + /* Convenience. Treat POSIX -W foo same as long option --foo */ + if (temp[0] == 'W' && temp[1] == ';') + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = 0; + int option_index; + + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (opterr) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + return c; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + + /* optarg is now the argument, see if it's in the + table of longopts. */ + + for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) == strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + if (ambig && !exact) + { + if (opterr) + fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + return '?'; + } + if (pfound != NULL) + { + option_index = indfound; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + fprintf (stderr, _("\ +%s: option '-W %s' doesn't allow an argument\n"), + argv[0], pfound->name); + + nextchar += strlen (nextchar); + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf (stderr, + _("%s: option '%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + nextchar = NULL; + return 'W'; /* Let the application handle it. */ + } + if (temp[1] == ':') + { + if (temp[2] == ':') + { + /* This is an option that accepts an argument optionally. */ + if (*nextchar != '\0') + { + optarg = nextchar; + optind++; + } + else + optarg = NULL; + nextchar = NULL; + } + else + { + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (opterr) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, + _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + nextchar = NULL; + } + } + return c; + } +} + +int +getopt (int argc, char *const *argv, const char *optstring) +{ + return _getopt_internal (argc, argv, optstring, + (const struct option *) 0, + (int *) 0, + 0); +} + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +/* Compile with -DTEST to make an executable for use in testing + the above definition of `getopt'. */ + +int +main (int argc, char **argv) +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + + c = getopt (argc, argv, "abc:d:0123456789"); + if (c == -1) + break; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value '%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ diff --git a/local/recipes/dev/gnu-make/source/src/getopt.h b/local/recipes/dev/gnu-make/source/src/getopt.h new file mode 100644 index 0000000000..f96172d0c5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/getopt.h @@ -0,0 +1,130 @@ +/* Declarations for getopt. +Copyright (C) 1989-2022 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. + +GNU Make is free software; you can 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 . */ + +#ifndef _GETOPT_H +#define _GETOPT_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +extern char *optarg; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +extern int optind; + +/* Callers store zero here to inhibit the error message `getopt' prints + for unrecognized options. */ + +extern int opterr; + +/* Set to an option character which was unrecognized. */ + +extern int optopt; + +/* Describe the long-named options requested by the application. + The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector + of `struct option' terminated by an element containing a name which is + zero. + + The field `has_arg' is: + no_argument (or 0) if the option does not take an argument, + required_argument (or 1) if the option requires an argument, + optional_argument (or 2) if the option takes an optional argument. + + If the field `flag' is not NULL, it points to a variable that is set + to the value given in the field `val' when the option is found, but + left unchanged if the option is not found. + + To have a long-named option do something other than set an `int' to + a compiled-in constant, such as set a value from `optarg', set the + option's `flag' field to zero and its `val' field to a nonzero + value (the equivalent single-letter option character, if there is + one). For long options that have a zero `flag' field, `getopt' + returns the contents of the `val' field. */ + +struct option +{ +#if defined (__STDC__) && __STDC__ + const char *name; +#else + char *name; +#endif + /* has_arg can't be an enum because some compilers complain about + type mismatches in all the code that assumes it is an int. */ + int has_arg; + int *flag; + int val; +}; + +/* Names for the values of the `has_arg' field of `struct option'. */ + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +#if defined (__STDC__) && __STDC__ +#ifdef __GNU_LIBRARY__ +/* Many other libraries have conflicting prototypes for getopt, with + differences in the consts, in stdlib.h. To avoid compilation + errors, only prototype getopt for the GNU C library. */ +extern int getopt (int argc, char *const *argv, const char *shortopts); +#else /* not __GNU_LIBRARY__ */ +extern int getopt (); +#endif /* __GNU_LIBRARY__ */ +extern int getopt_long (int argc, char *const *argv, const char *shortopts, + const struct option *longopts, int *longind); +extern int getopt_long_only (int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind); + +/* Internal only. Users should not call this directly. */ +extern int _getopt_internal (int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind, + int long_only); +#else /* not __STDC__ */ +extern int getopt (); +extern int getopt_long (); +extern int getopt_long_only (); + +extern int _getopt_internal (); +#endif /* __STDC__ */ + +#ifdef __cplusplus +} +#endif + +#endif /* getopt.h */ diff --git a/local/recipes/dev/gnu-make/source/src/getopt1.c b/local/recipes/dev/gnu-make/source/src/getopt1.c new file mode 100644 index 0000000000..85eefe00d2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/getopt1.c @@ -0,0 +1,180 @@ +/* getopt_long and getopt_long_only entry points for GNU getopt. +Copyright (C) 1987-1994, 1996-2022 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. + +GNU Make is free software; you can 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 . */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "getopt.h" + +#if !defined __STDC__ || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +#ifndef const +#define const +#endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 +#include +#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +#define ELIDE_CODE +#endif +#endif + +#ifdef __redox__ +#define ELIDE_CODE +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +#include +#endif + +#ifndef NULL +#define NULL 0 +#endif + +int +getopt_long (int argc, char *const *argv, const char *options, + const struct option *long_options, int *opt_index) +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 0); +} + +/* Like getopt_long, but '-' as well as '--' can indicate a long option. + If an option that starts with '-' (not '--') doesn't match a long option, + but does match a short option, it is parsed as a short option + instead. */ + +int +getopt_long_only (int argc, char *const *argv, const char *options, + const struct option *long_options, int *opt_index) +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 1); +} + + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +#include + +int +main (int argc, char **argv) +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + int option_index = 0; + static struct option long_options[] = + { + {"add", 1, 0, 0}, + {"append", 0, 0, 0}, + {"delete", 1, 0, 0}, + {"verbose", 0, 0, 0}, + {"create", 0, 0, 0}, + {"file", 1, 0, 0}, + {0, 0, 0, 0} + }; + + c = getopt_long (argc, argv, "abc:d:0123456789", + long_options, &option_index); + if (c == -1) + break; + + switch (c) + { + case 0: + printf ("option %s", long_options[option_index].name); + if (optarg) + printf (" with arg %s", optarg); + printf ("\n"); + break; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value '%s'\n", optarg); + break; + + case 'd': + printf ("option d with value '%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ diff --git a/local/recipes/dev/gnu-make/source/src/gettext.h b/local/recipes/dev/gnu-make/source/src/gettext.h new file mode 100644 index 0000000000..9498fadaf0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/gettext.h @@ -0,0 +1,57 @@ +/* Convenience header for conditional use of GNU . +Copyright (C) 1995-2022 Free Software 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 . */ + +#ifndef _LIBGETTEXT_H +#define _LIBGETTEXT_H 1 + +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +/* Get declarations of GNU message catalog functions. */ +# include + +#else + +/* Disabled NLS. + The casts to 'const char *' serve the purpose of producing warnings + for invalid uses of the value returned from these functions. + On pre-ANSI systems without 'const', the config.h file is supposed to + contain "#define const". */ +# define gettext(Msgid) ((const char *) (Msgid)) +# define dgettext(Domainname, Msgid) ((const char *) (Msgid)) +# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) +# define ngettext(Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define dngettext(Domainname, Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define textdomain(Domainname) ((const char *) (Domainname)) +# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) +# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) + +#endif + +/* A pseudo function call that serves as a marker for the automated + extraction of messages, but does not call gettext(). The run-time + translation is done at a different place in the code. + The argument, String, should be a literal string. Concatenated strings + and other string expressions won't work. + The macro's expansion is not parenthesized, so that it is suitable as + initializer for static 'char[]' or 'const char[]' variables. */ +#define gettext_noop(String) String + +#endif /* _LIBGETTEXT_H */ diff --git a/local/recipes/dev/gnu-make/source/src/gmk-default.h b/local/recipes/dev/gnu-make/source/src/gmk-default.h new file mode 100644 index 0000000000..9fa09a6e7c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/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/local/recipes/dev/gnu-make/source/src/gmk-default.scm b/local/recipes/dev/gnu-make/source/src/gmk-default.scm new file mode 100644 index 0000000000..033a32e6ce --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/gmk-default.scm @@ -0,0 +1,53 @@ +;; Contents of the (gnu make) Guile module +;; Copyright (C) 2011-2022 Free Software 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 . + +(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/local/recipes/dev/gnu-make/source/src/gnumake.h b/local/recipes/dev/gnu-make/source/src/gnumake.h new file mode 100644 index 0000000000..4e796e58da --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/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-2022 Free Software 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 . */ + +#ifndef _GNUMAKE_H_ +#define _GNUMAKE_H_ + +/* Specify the location of elements read from makefiles. */ +typedef struct + { + const char *filenm; + unsigned long lineno; + } gmk_floc; + +typedef char *(*gmk_func_ptr)(const char *nm, unsigned int argc, char **argv); + +#ifdef _WIN32 +# ifdef GMK_BUILDING_MAKE +# define GMK_EXPORT __declspec(dllexport) +# else +# define GMK_EXPORT __declspec(dllimport) +# endif +#else +# define GMK_EXPORT +#endif + +/* Free memory returned by the gmk_expand() function. */ +GMK_EXPORT void gmk_free (char *str); + +/* Allocate memory in GNU make's context. */ +GMK_EXPORT char *gmk_alloc (unsigned int len); + +/* Run $(eval ...) on the provided string BUFFER. */ +GMK_EXPORT void gmk_eval (const char *buffer, const gmk_floc *floc); + +/* Run GNU make expansion on the provided string STR. + Returns an allocated buffer that the caller must free with gmk_free(). */ +GMK_EXPORT char *gmk_expand (const char *str); + +/* Register a new GNU make function NAME (maximum of 255 chars long). + When the function is expanded in the makefile, FUNC will be invoked with + the appropriate arguments. + + The return value of FUNC must be either NULL, in which case it expands to + the empty string, or a pointer to the result of the expansion in a string + created by gmk_alloc(). GNU make will free the memory when it's done. + + MIN_ARGS is the minimum number of arguments the function requires. + MAX_ARGS is the maximum number of arguments (or 0 if there's no maximum). + MIN_ARGS and MAX_ARGS may not exceed 255. + + The FLAGS value may be GMK_FUNC_DEFAULT, or one or more of the following + flags OR'd together: + + GMK_FUNC_NOEXPAND: the arguments to the function will be not be expanded + before FUNC is called. +*/ +GMK_EXPORT void gmk_add_function (const char *name, gmk_func_ptr func, + unsigned int min_args, unsigned int max_args, + unsigned int flags); + +#define GMK_FUNC_DEFAULT 0x00 +#define GMK_FUNC_NOEXPAND 0x01 + +#endif /* _GNUMAKE_H_ */ diff --git a/local/recipes/dev/gnu-make/source/src/guile.c b/local/recipes/dev/gnu-make/source/src/guile.c new file mode 100644 index 0000000000..32f6317642 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/guile.c @@ -0,0 +1,159 @@ +/* GNU Guile interface for GNU Make. +Copyright (C) 2011-2022 Free Software 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 . */ + +#include "makeint.h" + +#ifdef HAVE_GUILE + +#include "gnumake.h" + +#include "debug.h" +#include "filedef.h" +#include "dep.h" +#include "variable.h" + +#include + +/* 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 floc *flocp UNUSED) +{ + /* Create a make function "guile". */ + gmk_add_function ("guile", func_guile, 0, 1, GMK_FUNC_DEFAULT); + + return 1; +} + +#else + +int +guile_gmake_setup (const floc *flocp UNUSED) +{ + return 1; +} + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/hash.c b/local/recipes/dev/gnu-make/source/src/hash.c new file mode 100644 index 0000000000..5d7ea81b28 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/hash.c @@ -0,0 +1,495 @@ +/* hash.c -- hash table maintenance +Copyright (C) 1995, 1999, 2002, 2010 Free Software Foundation, Inc. +Written by Greg McGary + +GNU Make is free software; you can 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 . */ + +#include "makeint.h" +#include "hash.h" +#include + +#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))) + +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 + 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 + resolution. */ + +void *hash_deleted_item = &hash_deleted_item; + +/* Force the table size to be a power of two, possibly rounding up the + given size. */ + +void +hash_init (struct hash_table *ht, unsigned long size, + hash_func_t hash_1, hash_func_t hash_2, hash_cmp_func_t hash_cmp) +{ + ht->ht_size = round_up_2 (size); + ht->ht_empty_slots = ht->ht_size; + ht->ht_vec = CALLOC (void *, ht->ht_size); + if (ht->ht_vec == 0) + { + fprintf (stderr, _("can't allocate %lu bytes for hash table: memory exhausted"), + ht->ht_size * (unsigned long) sizeof (void *)); + exit (MAKE_TROUBLE); + } + + ht->ht_capacity = ht->ht_size - (ht->ht_size / 16); /* 93.75% loading factor */ + ht->ht_fill = 0; + ht->ht_collisions = 0; + ht->ht_lookups = 0; + ht->ht_rehashes = 0; + ht->ht_hash_1 = hash_1; + ht->ht_hash_2 = hash_2; + ht->ht_compare = hash_cmp; +} + +/* Load an array of items into 'ht'. */ + +void +hash_load (struct hash_table *ht, void *item_table, + unsigned long cardinality, unsigned long size) +{ + char *items = (char *) item_table; + while (cardinality--) + { + hash_insert (ht, items); + items += size; + } +} + +/* 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 + ht_fill on insertion. */ + +void ** +hash_find_slot (struct hash_table *ht, const void *key) +{ + void **slot; + void **deleted_slot = 0; + unsigned int hash_2 = 0; + unsigned int hash_1 = (*ht->ht_hash_1) (key); + + ht->ht_lookups++; + for (;;) + { + hash_1 &= (ht->ht_size - 1); + slot = &ht->ht_vec[hash_1]; + + if (*slot == 0) + return (deleted_slot ? deleted_slot : slot); + if (*slot == hash_deleted_item) + { + if (deleted_slot == 0) + deleted_slot = slot; + } + else + { + if (key == *slot) + return slot; + if ((*ht->ht_compare) (key, *slot) == 0) + return slot; + ht->ht_collisions++; + } + if (!hash_2) + hash_2 = (*ht->ht_hash_2) (key) | 1; + hash_1 += hash_2; + } +} + +void * +hash_find_item (struct hash_table *ht, const void *key) +{ + void **slot = hash_find_slot (ht, key); + return ((HASH_VACANT (*slot)) ? 0 : *slot); +} + +void * +hash_insert (struct hash_table *ht, const void *item) +{ + void **slot = hash_find_slot (ht, item); + const void *old_item = *slot; + hash_insert_at (ht, item, slot); + return (void *)((HASH_VACANT (old_item)) ? 0 : old_item); +} + +void * +hash_insert_at (struct hash_table *ht, const void *item, const void *slot) +{ + const void *old_item = *(void **) slot; + if (HASH_VACANT (old_item)) + { + ht->ht_fill++; + if (old_item == 0) + ht->ht_empty_slots--; + old_item = item; + } + *(void const **) slot = item; + if (ht->ht_empty_slots < ht->ht_size - ht->ht_capacity) + { + hash_rehash (ht); + return (void *) hash_find_slot (ht, item); + } + else + return (void *) slot; +} + +void * +hash_delete (struct hash_table *ht, const void *item) +{ + void **slot = hash_find_slot (ht, item); + return hash_delete_at (ht, slot); +} + +void * +hash_delete_at (struct hash_table *ht, const void *slot) +{ + void *item = *(void **) slot; + if (!HASH_VACANT (item)) + { + *(void const **) slot = hash_deleted_item; + ht->ht_fill--; + return item; + } + else + return 0; +} + +void +hash_free_items (struct hash_table *ht) +{ + void **vec = ht->ht_vec; + void **end = &vec[ht->ht_size]; + for (; vec < end; vec++) + { + void *item = *vec; + if (!HASH_VACANT (item)) + free (item); + *vec = 0; + } + ht->ht_fill = 0; + ht->ht_empty_slots = ht->ht_size; +} + +void +hash_delete_items (struct hash_table *ht) +{ + void **vec = ht->ht_vec; + void **end = &vec[ht->ht_size]; + for (; vec < end; vec++) + *vec = 0; + ht->ht_fill = 0; + ht->ht_collisions = 0; + ht->ht_lookups = 0; + ht->ht_rehashes = 0; + ht->ht_empty_slots = ht->ht_size; +} + +void +hash_free (struct hash_table *ht, int free_items) +{ + if (free_items) + hash_free_items (ht); + else + { + ht->ht_fill = 0; + ht->ht_empty_slots = ht->ht_size; + } + free (ht->ht_vec); + ht->ht_vec = 0; + ht->ht_capacity = 0; +} + +void +hash_map (struct hash_table *ht, hash_map_func_t map) +{ + void **slot; + void **end = &ht->ht_vec[ht->ht_size]; + + for (slot = ht->ht_vec; slot < end; slot++) + { + if (!HASH_VACANT (*slot)) + (*map) (*slot); + } +} + +void +hash_map_arg (struct hash_table *ht, hash_map_arg_func_t map, void *arg) +{ + void **slot; + void **end = &ht->ht_vec[ht->ht_size]; + + for (slot = ht->ht_vec; slot < end; slot++) + { + if (!HASH_VACANT (*slot)) + (*map) (*slot, arg); + } +} + +/* Double the size of the hash table in the event of overflow... */ + +static void +hash_rehash (struct hash_table *ht) +{ + unsigned long old_ht_size = ht->ht_size; + void **old_vec = ht->ht_vec; + void **ovp; + + if (ht->ht_fill >= ht->ht_capacity) + { + ht->ht_size *= 2; + ht->ht_capacity = ht->ht_size - (ht->ht_size >> 4); + } + ht->ht_rehashes++; + ht->ht_vec = CALLOC (void *, ht->ht_size); + + for (ovp = old_vec; ovp < &old_vec[old_ht_size]; ovp++) + { + if (! HASH_VACANT (*ovp)) + { + void **slot = hash_find_slot (ht, *ovp); + *slot = *ovp; + } + } + ht->ht_empty_slots = ht->ht_size - ht->ht_fill; + free (old_vec); +} + +void +hash_print_stats (struct hash_table *ht, FILE *out_FILE) +{ + fprintf (out_FILE, _("Load=%lu/%lu=%.0f%%, "), ht->ht_fill, ht->ht_size, + 100.0 * (double) ht->ht_fill / (double) ht->ht_size); + fprintf (out_FILE, _("Rehash=%u, "), ht->ht_rehashes); + fprintf (out_FILE, _("Collisions=%lu/%lu=%.0f%%"), ht->ht_collisions, ht->ht_lookups, + (ht->ht_lookups + ? (100.0 * (double) ht->ht_collisions / (double) ht->ht_lookups) + : 0)); +} + +/* Dump all items into a NULL-terminated vector. Use the + user-supplied vector, or malloc one. */ + +void ** +hash_dump (struct hash_table *ht, void **vector_0, qsort_cmp_t compare) +{ + void **vector; + void **slot; + void **end = &ht->ht_vec[ht->ht_size]; + + if (vector_0 == 0) + vector_0 = MALLOC (void *, ht->ht_fill + 1); + vector = vector_0; + + for (slot = ht->ht_vec; slot < end; slot++) + if (!HASH_VACANT (*slot)) + *vector++ = *slot; + *vector = 0; + + if (compare) + qsort (vector_0, ht->ht_fill, sizeof (void *), compare); + return vector_0; +} + +/* Round a given number up to the nearest power of 2. */ + +static unsigned long +round_up_2 (unsigned long n) +{ + n |= (n >> 1); + n |= (n >> 2); + n |= (n >> 4); + n |= (n >> 8); + n |= (n >> 16); + +#if !defined(HAVE_LIMITS_H) || ULONG_MAX > 4294967295 + /* We only need this on systems where unsigned long is >32 bits. */ + n |= (n >> 32); +#endif + + return n + 1; +} + +#define rol32(v, n) \ + ((v) << (n) | ((v) >> (32 - (n)))) + +/* jhash_mix -- mix 3 32-bit values reversibly. */ +#define jhash_mix(a, b, c) \ +{ \ + a -= c; a ^= rol32(c, 4); c += b; \ + b -= a; b ^= rol32(a, 6); a += c; \ + c -= b; c ^= rol32(b, 8); b += a; \ + a -= c; a ^= rol32(c, 16); c += b; \ + b -= a; b ^= rol32(a, 19); a += c; \ + c -= b; c ^= rol32(b, 4); b += a; \ +} + +/* jhash_final - final mixing of 3 32-bit values (a,b,c) into c */ +#define jhash_final(a, b, c) \ +{ \ + c ^= b; c -= rol32(b, 14); \ + a ^= c; a -= rol32(c, 11); \ + b ^= a; b -= rol32(a, 25); \ + c ^= b; c -= rol32(b, 16); \ + a ^= c; a -= rol32(c, 4); \ + b ^= a; b -= rol32(a, 14); \ + c ^= b; c -= rol32(b, 24); \ +} + +/* An arbitrary initial parameter */ +#define JHASH_INITVAL 0xdeadbeef + +#define sum_get_unaligned_32(r, p) \ + do { \ + unsigned int val; \ + memcpy(&val, (p), 4); \ + r += val; \ + } while(0); + +unsigned int +jhash(unsigned const char *k, int length) +{ + unsigned int a, b, c; + + /* Set up the internal state */ + a = b = c = JHASH_INITVAL + length; + + /* All but the last block: affect some 32 bits of (a,b,c) */ + while (length > 12) { + sum_get_unaligned_32(a, k); + sum_get_unaligned_32(b, k + 4); + sum_get_unaligned_32(c, k + 8); + jhash_mix(a, b, c); + length -= 12; + k += 12; + } + + if (!length) + return c; + + if (length > 8) + { + sum_get_unaligned_32(a, k); + length -= 4; + k += 4; + } + if (length > 4) + { + sum_get_unaligned_32(b, k); + length -= 4; + k += 4; + } + + if (length == 4) + c += (unsigned)k[3]<<24; + if (length >= 3) + c += (unsigned)k[2]<<16; + if (length >= 2) + c += (unsigned)k[1]<<8; + c += k[0]; + jhash_final(a, b, c); + return c; +} + +#define UINTSZ sizeof (unsigned int) + +#ifdef WORDS_BIGENDIAN +/* The ifs are ordered from the first byte in memory to the last. */ +#define sum_up_to_nul(r, p, plen, flag) \ + do { \ + unsigned int val = 0; \ + size_t pn = (plen); \ + size_t n = pn < UINTSZ ? pn : UINTSZ; \ + memcpy (&val, (p), n); \ + if ((val & 0xFF000000) == 0) \ + flag = 1; \ + else if ((val & 0xFF0000) == 0) \ + r += val & ~0xFFFF, flag = 1; \ + else if ((val & 0xFF00) == 0) \ + r += val & ~0xFF, flag = 1; \ + else \ + r += val, flag = (val & 0xFF) == 0; \ + } while (0) +#else +/* First detect the presence of zeroes. If there is none, we can + sum the 4 bytes directly. Otherwise, the ifs are ordered as in the + big endian case, from the first byte in memory to the last. */ +#define sum_up_to_nul(r, p, plen, flag) \ + do { \ + unsigned int val = 0; \ + size_t pn = (plen); \ + size_t n = pn < UINTSZ ? pn : UINTSZ; \ + memcpy (&val, (p), n); \ + flag = ((val - 0x01010101) & ~val) & 0x80808080; \ + if (!flag) \ + r += val; \ + else if (val & 0xFF) \ + { \ + if ((val & 0xFF00) == 0) \ + r += val & 0xFF; \ + else if ((val & 0xFF0000) == 0) \ + r += val & 0xFFFF; \ + else \ + r += val; \ + } \ + } while (0) +#endif + +unsigned int +jhash_string(unsigned const char *k) +{ + unsigned int a, b, c; + unsigned int have_nul = 0; + unsigned const char *start = k; + size_t klen = strlen ((const char*)k); + + /* Set up the internal state */ + a = b = c = JHASH_INITVAL; + + /* All but the last block: affect some 32 bits of (a,b,c) */ + for (;;) { + sum_up_to_nul(a, k, klen, have_nul); + if (have_nul) + break; + k += UINTSZ; + assert (klen >= UINTSZ); + klen -= UINTSZ; + + sum_up_to_nul(b, k, klen, have_nul); + if (have_nul) + break; + k += UINTSZ; + assert (klen >= UINTSZ); + klen -= UINTSZ; + + sum_up_to_nul(c, k, klen, have_nul); + if (have_nul) + break; + k += UINTSZ; + assert (klen >= UINTSZ); + klen -= UINTSZ; + jhash_mix(a, b, c); + } + + jhash_final(a, b, c); + return c + (unsigned) (k - start); +} diff --git a/local/recipes/dev/gnu-make/source/src/hash.h b/local/recipes/dev/gnu-make/source/src/hash.h new file mode 100644 index 0000000000..deaceab6b6 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/hash.h @@ -0,0 +1,234 @@ +/* hash.h -- decls for hash table +Copyright (C) 1995, 1999, 2002, 2010 Free Software Foundation, Inc. +Written by Greg McGary + +GNU Make is free software; you can 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 . */ + +#ifndef _hash_h_ +#define _hash_h_ + +#include +#include + +#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 +# if !defined __GLIBC__ || !defined __P +# undef __P +# define __P(protos) protos +# endif +#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. */ +#endif /* C++ or ANSI C. */ + +typedef unsigned long (*hash_func_t) __P((void const *key)); +typedef int (*hash_cmp_func_t) __P((void const *x, void const *y)); +typedef void (*hash_map_func_t) __P((void const *item)); +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 */ + unsigned long ht_empty_slots; /* empty slots not including deleted slots */ + 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 */ +}; + +typedef int (*qsort_cmp_t) __P((void const *, void const *)); + +void hash_init __P((struct hash_table *ht, unsigned long size, + hash_func_t hash_1, hash_func_t hash_2, hash_cmp_func_t hash_cmp)); +void hash_load __P((struct hash_table *ht, void *item_table, + unsigned long cardinality, unsigned long size)); +void **hash_find_slot __P((struct hash_table *ht, void const *key)); +void *hash_find_item __P((struct hash_table *ht, void const *key)); +void *hash_insert __P((struct hash_table *ht, const void *item)); +void *hash_insert_at __P((struct hash_table *ht, const void *item, void const *slot)); +void *hash_delete __P((struct hash_table *ht, void const *item)); +void *hash_delete_at __P((struct hash_table *ht, void const *slot)); +void hash_delete_items __P((struct hash_table *ht)); +void hash_free_items __P((struct hash_table *ht)); +void hash_free __P((struct hash_table *ht, int free_items)); +void hash_map __P((struct hash_table *ht, hash_map_func_t map)); +void hash_map_arg __P((struct hash_table *ht, hash_map_arg_func_t map, void *arg)); +void hash_print_stats __P((struct hash_table *ht, FILE *out_FILE)); +void **hash_dump __P((struct hash_table *ht, void **vector_0, qsort_cmp_t compare)); + +extern unsigned jhash(unsigned char const *key, int n); +extern unsigned jhash_string(unsigned char const *key); + +extern void *hash_deleted_item; +#define HASH_VACANT(item) ((item) == 0 || (void *) (item) == hash_deleted_item) + + +/* hash and comparison macros for case-sensitive string keys. */ + +/* Due to the strcache, it's not uncommon for the string pointers to + be identical. Take advantage of that to short-circuit string compares. */ + +#define STRING_HASH_1(KEY, RESULT) do { \ + unsigned char const *_key_ = (unsigned char const *) (KEY); \ + (RESULT) += jhash_string(_key_); \ +} while (0) +#define return_STRING_HASH_1(KEY) do { \ + unsigned long _result_ = 0; \ + STRING_HASH_1 ((KEY), _result_); \ + return _result_; \ +} while (0) + +/* No need for a second hash because jhash already provides + pretty good results. However, do evaluate the arguments + to avoid warnings. */ +#define STRING_HASH_2(KEY, RESULT) do { \ + (void)(KEY); \ +} while (0) +#define return_STRING_HASH_2(KEY) do { \ + unsigned long _result_ = 0; \ + STRING_HASH_2 ((KEY), _result_); \ + return _result_; \ +} while (0) + +#define STRING_COMPARE(X, Y, RESULT) do { \ + RESULT = (X) == (Y) ? 0 : strcmp ((X), (Y)); \ +} while (0) +#define return_STRING_COMPARE(X, Y) do { \ + return (X) == (Y) ? 0 : strcmp ((X), (Y)); \ +} while (0) + + +#define STRING_N_HASH_1(KEY, N, RESULT) do { \ + unsigned char const *_key_ = (unsigned char const *) (KEY); \ + (RESULT) += jhash(_key_, N); \ +} while (0) + +#define return_STRING_N_HASH_1(KEY, N) do { \ + unsigned long _result_ = 0; \ + STRING_N_HASH_1 ((KEY), (N), _result_); \ + return _result_; \ +} while (0) + +/* No need for a second hash because jhash already provides + pretty good results. However, do evaluate the arguments + to avoid warnings. */ +#define STRING_N_HASH_2(KEY, N, RESULT) do { \ + (void)(KEY); \ + (void)(N); \ +} while (0) + +#define return_STRING_N_HASH_2(KEY, N) do { \ + unsigned long _result_ = 0; \ + STRING_N_HASH_2 ((KEY), (N), _result_); \ + return _result_; \ +} while (0) + +#define STRING_N_COMPARE(X, Y, N, RESULT) do { \ + RESULT = (X) == (Y) ? 0 : memcmp ((X), (Y), (N)); \ +} while (0) +#define return_STRING_N_COMPARE(X, Y, N) do { \ + return (X) == (Y) ? 0 : memcmp ((X), (Y), (N)); \ +} while (0) + +#ifdef HAVE_CASE_INSENSITIVE_FS + +/* hash and comparison macros for case-insensitive string _key_s. */ + +#define ISTRING_HASH_1(KEY, RESULT) do { \ + unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ + while (*++_key_) \ + (RESULT) += (tolower (*_key_) << (_key_[1] & 0xf)); \ +} while (0) +#define return_ISTRING_HASH_1(KEY) do { \ + unsigned long _result_ = 0; \ + ISTRING_HASH_1 ((KEY), _result_); \ + return _result_; \ +} while (0) + +#define ISTRING_HASH_2(KEY, RESULT) do { \ + unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ + while (*++_key_) \ + (RESULT) += (tolower (*_key_) << (_key_[1] & 0x7)); \ +} while (0) +#define return_ISTRING_HASH_2(KEY) do { \ + unsigned long _result_ = 0; \ + ISTRING_HASH_2 ((KEY), _result_); \ + return _result_; \ +} while (0) + +#define ISTRING_COMPARE(X, Y, RESULT) do { \ + RESULT = (X) == (Y) ? 0 : strcasecmp ((X), (Y)); \ +} while (0) +#define return_ISTRING_COMPARE(X, Y) do { \ + return (X) == (Y) ? 0 : strcasecmp ((X), (Y)); \ +} while (0) + +#else + +#define ISTRING_HASH_1(KEY, RESULT) STRING_HASH_1 ((KEY), (RESULT)) +#define return_ISTRING_HASH_1(KEY) return_STRING_HASH_1 (KEY) + +#define ISTRING_HASH_2(KEY, RESULT) STRING_HASH_2 ((KEY), (RESULT)) +#define return_ISTRING_HASH_2(KEY) return_STRING_HASH_2 (KEY) + +#define ISTRING_COMPARE(X, Y, RESULT) STRING_COMPARE ((X), (Y), (RESULT)) +#define return_ISTRING_COMPARE(X, Y) return_STRING_COMPARE ((X), (Y)) + +#endif + +/* hash and comparison macros for integer _key_s. */ + +#define INTEGER_HASH_1(KEY, RESULT) do { \ + (RESULT) += ((unsigned long)(KEY)); \ +} while (0) +#define return_INTEGER_HASH_1(KEY) do { \ + unsigned long _result_ = 0; \ + INTEGER_HASH_1 ((KEY), _result_); \ + return _result_; \ +} while (0) + +#define INTEGER_HASH_2(KEY, RESULT) do { \ + (RESULT) += ~((unsigned long)(KEY)); \ +} while (0) +#define return_INTEGER_HASH_2(KEY) do { \ + unsigned long _result_ = 0; \ + INTEGER_HASH_2 ((KEY), _result_); \ + return _result_; \ +} while (0) + +#define INTEGER_COMPARE(X, Y, RESULT) do { \ + (RESULT) = X - Y; \ +} while (0) +#define return_INTEGER_COMPARE(X, Y) do { \ + int _result_; \ + INTEGER_COMPARE (X, Y, _result_); \ + return _result_; \ +} while (0) + +/* hash and comparison macros for address keys. */ + +#define ADDRESS_HASH_1(KEY, RESULT) INTEGER_HASH_1 (((unsigned long)(KEY)) >> 3, (RESULT)) +#define ADDRESS_HASH_2(KEY, RESULT) INTEGER_HASH_2 (((unsigned long)(KEY)) >> 3, (RESULT)) +#define ADDRESS_COMPARE(X, Y, RESULT) INTEGER_COMPARE ((X), (Y), (RESULT)) +#define return_ADDRESS_HASH_1(KEY) return_INTEGER_HASH_1 (((unsigned long)(KEY)) >> 3) +#define return_ADDRESS_HASH_2(KEY) return_INTEGER_HASH_2 (((unsigned long)(KEY)) >> 3) +#define return_ADDRESS_COMPARE(X, Y) return_INTEGER_COMPARE ((X), (Y)) + +#endif /* not _hash_h_ */ diff --git a/local/recipes/dev/gnu-make/source/src/implicit.c b/local/recipes/dev/gnu-make/source/src/implicit.c new file mode 100644 index 0000000000..a3bd318c07 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/implicit.c @@ -0,0 +1,1159 @@ +/* Implicit rule searching for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" +#include "filedef.h" +#include "rule.h" +#include "dep.h" +#include "debug.h" +#include "variable.h" +#include "job.h" /* struct child, used inside commands.h */ +#include "commands.h" /* set_file_variables */ +#include "shuffle.h" +#include + +static int pattern_search (struct file *file, int archive, + unsigned int depth, unsigned int recursions, + int allow_compat_rules); + +/* For a FILE which has no commands specified, try to figure out some + from the implicit pattern rules. + Returns 1 if a suitable implicit rule was found, + after modifying FILE to contain the appropriate commands and deps, + or returns 0 if no implicit rule was found. */ + +int +try_implicit_rule (struct file *file, unsigned int depth) +{ + 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 + (the archive search omits the archive name), it is more specific and + should come first. */ + + if (pattern_search (file, 0, depth, 0, 0)) + return 1; + +#ifndef NO_ARCHIVES + /* If this is an archive member reference, use just the + archive member name to search for implicit rules. */ + if (ar_name (file->name)) + { + DBF (DB_IMPLICIT, + _("Looking for archive-member implicit rule for '%s'.\n")); + if (pattern_search (file, 1, depth, 0, 0)) + return 1; + DBS (DB_IMPLICIT, + (_("No archive-member implicit rule found for '%s'.\n"), + file->name)); + } +#endif + + return 0; +} + + +/* Scans the BUFFER for the next word with whitespace as a separator. + Returns the pointer to the beginning of the word. LENGTH hold the + length of the word. */ + +static const char * +get_next_word (const char *buffer, size_t *length) +{ + const char *p = buffer, *beg; + char c; + + /* Skip any leading whitespace. */ + NEXT_TOKEN (p); + + beg = p; + c = *(p++); + + if (c == '\0') + return 0; + + + /* We already found the first value of "c", above. */ + while (1) + { + char closeparen; + int count; + + switch (c) + { + case '\0': + case ' ': + case '\t': + goto done_word; + + case '$': + c = *(p++); + if (c == '$') + break; + + /* This is a variable reference, so read it to the matching + close paren. */ + + if (c == '(') + closeparen = ')'; + else if (c == '{') + closeparen = '}'; + else + /* This is a single-letter variable reference. */ + break; + + for (count = 0; *p != '\0'; ++p) + { + if (*p == c) + ++count; + else if (*p == closeparen && --count < 0) + { + ++p; + break; + } + } + break; + + case '|': + goto done; + + default: + break; + } + + c = *(p++); + } + done_word: + --p; + + done: + if (length) + *length = p - beg; + + return beg; +} + +/* This structure stores information about the expanded prerequisites for a + pattern rule. NAME is always set to the strcache'd name of the prereq. + FILE and PATTERN will be set for intermediate files only. IGNORE_MTIME is + copied from the prerequisite we expanded. + */ +struct patdeps + { + const char *name; + const char *pattern; + struct file *file; + unsigned int ignore_mtime : 1; + unsigned int ignore_automatic_vars : 1; + unsigned int is_explicit : 1; + unsigned int wait_here : 1; + }; + +/* This structure stores information about pattern rules that we need + to try. +*/ +struct tryrule + { + struct rule *rule; + + /* Stem length for this match. */ + size_t stemlen; + + /* Index of the target in this rule that matched the file. */ + unsigned int matches; + + /* Definition order of this rule. Used to implement stable sort.*/ + unsigned int order; + + /* Nonzero if the LASTSLASH logic was used in matching this rule. */ + char checked_lastslash; + }; + +int +stemlen_compare (const void *v1, const void *v2) +{ + const struct tryrule *r1 = v1; + const struct tryrule *r2 = v2; + int r = (int) (r1->stemlen - r2->stemlen); + return r != 0 ? r : (int) (r1->order - r2->order); +} + +/* Search the pattern rules for a rule with an existing dependency to make + FILE. If a rule is found, the appropriate commands and deps are put in FILE + and 1 is returned. If not, 0 is returned. + + If ARCHIVE is nonzero, FILE->name is of the form "LIB(MEMBER)". A rule for + "(MEMBER)" will be searched for, and "(MEMBER)" will not be chopped up into + directory and filename parts. + + If an intermediate file is found by pattern search, the intermediate file + is set up as a target by the recursive call and is also made a dependency + of FILE. + + DEPTH is used for debugging messages. */ + +static int +pattern_search (struct file *file, int archive, + unsigned int depth, unsigned int recursions, + int allow_compat_rules) +{ + /* Filename we are searching for a rule for. */ + const char *filename = archive ? strchr (file->name, '(') : file->name; + + /* Length of FILENAME. */ + size_t namelen = strlen (filename); + + /* The last slash in FILENAME (or nil if there is none). */ + const char *lastslash; + + /* This is a file-object used as an argument in + recursive calls. It never contains any data + except during a recursive call. */ + struct file *int_file = 0; + + /* List of dependencies found recursively. */ + unsigned int max_deps = max_pattern_deps; + struct patdeps *deplist = xmalloc (max_deps * sizeof (struct patdeps)); + struct patdeps *pat = deplist; + + /* Names of possible dependencies are constructed in this buffer. + We may replace % by $(*F) for second expansion, increasing the length. */ + size_t deplen = namelen + max_pattern_dep_length + 4; + char *depname = alloca (deplen); +#ifndef NDEBUG + char *dend = depname + deplen; +#endif + + /* The start and length of the stem of FILENAME for the current rule. */ + const char *stem = 0; + size_t stemlen = 0; + size_t fullstemlen = 0; + + /* Buffer in which we store all the rules that are possibly applicable. */ + struct tryrule *tryrules = xmalloc (num_pattern_rules * max_pattern_targets + * sizeof (struct tryrule)); + + /* Number of valid elements in TRYRULES. */ + unsigned int nrules; + + /* The index in TRYRULES of the rule we found. */ + unsigned int foundrule; + + /* Nonzero if should consider intermediate files as dependencies. */ + int intermed_ok; + + /* Nonzero if we have initialized file variables for this target. */ + int file_vars_initialized = 0; + + /* Nonzero if we have matched a pattern-rule target + that is not just '%'. */ + int specific_rule_matched = 0; + + unsigned int ri; /* uninit checks OK */ + int found_compat_rule = 0; + struct rule *rule; + + char *pathdir = NULL; + size_t pathlen; + + PATH_VAR (stem_str); /* @@ Need to get rid of stem, stemlen, etc. */ + +#ifndef NO_ARCHIVES + if (archive || ar_name (filename)) + lastslash = 0; + else +#endif + { + /* Set LASTSLASH to point at the last slash in FILENAME + but not counting any slash at the end. (foo/bar/ counts as + bar/ in directory foo/, not empty in directory foo/bar/.) */ + lastslash = memrchr (filename, '/', namelen - 1); +#ifdef VMS + if (lastslash == NULL) + lastslash = strrchr (filename, ']'); + if (lastslash == NULL) + lastslash = strrchr (filename, '>'); + if (lastslash == NULL) + lastslash = strrchr (filename, ':'); +#endif +#ifdef HAVE_DOS_PATHS + /* Handle backslashes (possibly mixed with forward slashes) + and the case of "d:file". */ + { + char *bslash = memrchr (filename, '\\', namelen - 1); + if (lastslash == 0 || bslash > lastslash) + lastslash = bslash; + if (lastslash == 0 && filename[0] && filename[1] == ':') + lastslash = filename + 1; + } +#endif + } + + pathlen = lastslash ? lastslash - filename + 1 : 0; + + /* First see which pattern rules match this target and may be considered. + Put them in TRYRULES. */ + + nrules = 0; + for (rule = pattern_rules; rule != 0; rule = rule->next) + { + unsigned int ti; + + /* If the pattern rule has deps but no commands, ignore it. + Users cancel built-in rules by redefining them without commands. */ + if (rule->deps != 0 && rule->cmds == 0) + continue; + + /* If this rule is in use by a parent pattern_search, + don't use it here. */ + if (rule->in_use) + { + DBS (DB_IMPLICIT, + (_("Avoiding implicit rule recursion for rule '%s'.\n"), + get_rule_defn (rule))); + continue; + } + + for (ti = 0; ti < rule->num; ++ti) + { + const char *target = rule->targets[ti]; + const char *suffix = rule->suffixes[ti]; + char check_lastslash; + + /* Rules that can match any filename and are not terminal + are ignored if we're recursing, so that they cannot be + intermediate files. */ + if (recursions > 0 && target[1] == '\0' && !rule->terminal) + continue; + + if (rule->lens[ti] > namelen) + /* It can't possibly match. */ + continue; + + /* From the lengths of the filename and the pattern parts, + find the stem: the part of the filename that matches the %. */ + stem = filename + (suffix - target - 1); + stemlen = namelen - rule->lens[ti] + 1; + + /* Set CHECK_LASTSLASH if FILENAME contains a directory + prefix and the target pattern does not contain a slash. */ + + check_lastslash = 0; + if (lastslash) + { +#ifdef VMS + check_lastslash = strpbrk (target, "/]>:") == NULL; +#else + check_lastslash = strchr (target, '/') == 0; +#endif +#ifdef HAVE_DOS_PATHS + /* Didn't find it yet: check for DOS-type directories. */ + if (check_lastslash) + { + char *b = strchr (target, '\\'); + check_lastslash = !(b || (target[0] && target[1] == ':')); + } +#endif + } + if (check_lastslash) + { + /* If so, don't include the directory prefix in STEM here. */ + if (pathlen > stemlen) + continue; + stemlen -= pathlen; + stem += pathlen; + } + + /* Check that the rule pattern matches the text before the stem. */ + if (check_lastslash) + { + if (stem > (lastslash + 1) + && !strneq (target, lastslash + 1, stem - lastslash - 1)) + continue; + } + else if (stem > filename + && !strneq (target, filename, stem - filename)) + continue; + + /* Check that the rule pattern matches the text after the stem. + We could test simply use streq, but this way we compare the + first two characters immediately. This saves time in the very + common case where the first character matches because it is a + period. */ + if (*suffix != stem[stemlen] + || (*suffix != '\0' && !streq (&suffix[1], &stem[stemlen + 1]))) + continue; + + /* Record if we match a rule that not all filenames will match. */ + if (target[1] != '\0') + specific_rule_matched = 1; + + /* A rule with no dependencies and no commands exists solely to set + specific_rule_matched when it matches. Don't try to use it. */ + if (rule->deps == 0 && rule->cmds == 0) + continue; + + /* Record this rule in TRYRULES and the index of the matching + target in MATCHES. If several targets of the same rule match, + that rule will be in TRYRULES more than once. */ + tryrules[nrules].rule = rule; + tryrules[nrules].matches = ti; + tryrules[nrules].stemlen = stemlen + (check_lastslash ? pathlen : 0); + tryrules[nrules].order = nrules; + tryrules[nrules].checked_lastslash = check_lastslash; + ++nrules; + } + } + + /* Bail out early if we haven't found any rules. */ + if (nrules == 0) + goto done; + + /* Sort the rules to place matches with the shortest stem first. This + way the most specific rules will be tried first. */ + if (nrules > 1) + qsort (tryrules, nrules, sizeof (struct tryrule), stemlen_compare); + + /* If we have found a matching rule that won't match all filenames, + retroactively reject any non-"terminal" rules that do always match. */ + if (specific_rule_matched) + for (ri = 0; ri < nrules; ++ri) + if (!tryrules[ri].rule->terminal) + { + unsigned int j; + for (j = 0; j < tryrules[ri].rule->num; ++j) + if (tryrules[ri].rule->targets[j][1] == '\0') + { + tryrules[ri].rule = 0; + break; + } + } + + /* Try each rule once without intermediate files, then once with them. */ + for (intermed_ok = 0; intermed_ok < 2; ++intermed_ok) + { + pat = deplist; + if (intermed_ok) + DBS (DB_IMPLICIT, (_("Trying harder.\n"))); + + /* Try each pattern rule till we find one that applies. If it does, + expand its dependencies (as substituted) and chain them in DEPS. */ + for (ri = 0; ri < nrules; ri++) + { + struct dep *dep; + char check_lastslash; + unsigned int failed = 0; + int file_variables_set = 0; + unsigned int deps_found = 0; + /* NPTR points to the part of the prereq we haven't processed. */ + const char *nptr = 0; + int order_only = 0; + unsigned int matches; + + rule = tryrules[ri].rule; + + /* RULE is nil when we discover that a rule, already placed in + TRYRULES, should not be applied. */ + if (rule == 0) + continue; + + /* Reject any terminal rules if we're looking to make intermediate + files. */ + if (intermed_ok && rule->terminal) + continue; + + /* From the lengths of the filename and the matching pattern parts, + find the stem: the part of the filename that matches the %. */ + matches = tryrules[ri].matches; + stem = filename + (rule->suffixes[matches] + - rule->targets[matches]) - 1; + stemlen = (namelen - rule->lens[matches]) + 1; + check_lastslash = tryrules[ri].checked_lastslash; + if (check_lastslash) + { + stem += pathlen; + stemlen -= pathlen; + + /* We need to add the directory prefix, so set it up. */ + if (! pathdir) + { + pathdir = alloca (pathlen + 1); + memcpy (pathdir, filename, pathlen); + pathdir[pathlen] = '\0'; + } + } + + DBS (DB_IMPLICIT, + (_("Trying pattern rule '%s' with stem '%.*s'.\n"), + get_rule_defn (rule), (int) stemlen, stem)); + + if (stemlen + (check_lastslash ? pathlen : 0) > GET_PATH_MAX) + { + DBS (DB_IMPLICIT, (_("Stem too long: '%s%.*s'.\n"), + check_lastslash ? pathdir : "", + (int) stemlen, stem)); + continue; + } + + if (!check_lastslash) + { + memcpy (stem_str, stem, stemlen); + stem_str[stemlen] = '\0'; + } + else + { + /* We want to prepend the directory from + the original FILENAME onto the stem. */ + memcpy (stem_str, filename, pathlen); + memcpy (stem_str + pathlen, stem, stemlen); + stem_str[pathlen + stemlen] = '\0'; + } + + /* If there are no prerequisites, then this rule matches. */ + if (rule->deps == 0) + break; + + /* Mark this rule as in use so a recursive pattern_search won't try + to use it. */ + rule->in_use = 1; + + /* Try each prerequisite; see if it exists or can be created. We'll + build a list of prereq info in DEPLIST. Due to 2nd expansion we + may have to process multiple prereqs for a single dep entry. */ + + pat = deplist; + dep = rule->deps; + nptr = dep_name (dep); + while (1) + { + struct dep *dl, *d; + + /* If we're out of name to parse, start the next prereq. */ + if (! nptr) + { + dep = dep->next; + if (dep == 0) + break; + nptr = dep_name (dep); + } + + /* If we don't need a second expansion, just replace the %. */ + if (! dep->need_2nd_expansion) + { + char *p; + int is_explicit = 1; + const char *cp = strchr (nptr, '%'); + if (cp == 0) + strcpy (depname, nptr); + else + { + char *o = depname; + if (check_lastslash) + o = mempcpy (o, filename, pathlen); + o = mempcpy (o, nptr, cp - nptr); + o = mempcpy (o, stem, stemlen); + strcpy (o, cp + 1); + is_explicit = 0; + } + + /* Parse the expanded string. It might have wildcards. */ + p = depname; + dl = PARSE_FILE_SEQ (&p, struct dep, MAP_NUL, NULL, + PARSEFS_ONEWORD|PARSEFS_WAIT); + for (d = dl; d != NULL; d = d->next) + { + ++deps_found; + d->ignore_mtime = dep->ignore_mtime; + d->ignore_automatic_vars = dep->ignore_automatic_vars; + d->wait_here |= dep->wait_here; + d->is_explicit = is_explicit; + } + + /* We've used up this dep, so next time get a new one. */ + nptr = 0; + } + + /* We have to perform second expansion on this prereq. In an + ideal world we would take the dependency line, substitute the + stem, re-expand the whole line and chop it into individual + prerequisites. Unfortunately this won't work because of the + "check_lastslash" twist. Instead, we will have to go word by + word, taking $()'s into account. For each word we will + substitute the stem, re-expand, chop it up, and, if + check_lastslash != 0, add the directory part to each + resulting prerequisite. */ + else + { + int add_dir = 0; + size_t len; + const char *end; + struct dep **dptr; + int is_explicit; + const char *cp; + char *p; + + nptr = get_next_word (nptr, &len); + if (nptr == 0) + continue; + end = nptr + len; + + /* See if this is a transition to order-only prereqs. */ + if (! order_only && len == 1 && nptr[0] == '|') + { + order_only = 1; + nptr = end; + continue; + } + + /* If the dependency name has %, substitute the stem. If we + just replace % with the stem value then later, when we do + the 2nd expansion, we will re-expand this stem value + again. This is not good if you have certain characters + in your stem (like $). + + Instead, we will replace % with $* or $(*F) and allow the + second expansion to take care of it for us. This way + (since $* and $(*F) are simple variables) there won't be + additional re-expansion of the stem. */ + + cp = lindex (nptr, end, '%'); + if (cp == 0) + { + memcpy (depname, nptr, len); + depname[len] = '\0'; + is_explicit = 1; + } + else + { + /* Go through all % between NPTR and END. + Copy contents of [NPTR, END) to depname, with the + first % after NPTR and then each first % after white + space replaced with $* or $(*F). depname has enough + room to substitute each % with $(*F). */ + char *o = depname; + + is_explicit = 0; + for (;;) + { + size_t i = cp - nptr; + assert (o + i < dend); + o = mempcpy (o, nptr, i); + if (check_lastslash) + { + add_dir = 1; + assert (o + 5 < dend); + o = mempcpy (o, "$(*F)", 5); + } + else + { + assert (o + 2 < dend); + o = mempcpy (o, "$*", 2); + } + assert (o < dend); + ++cp; + assert (cp <= end); + nptr = cp; + if (nptr == end) + break; + + /* Skip the rest of this word then find the next %. + No need to worry about order-only, or nested + functions: NPTR went though get_next_word. */ + while (cp < end && ! END_OF_TOKEN (*cp)) + ++cp; + cp = lindex (cp, end, '%'); + if (cp == 0) + break; + } + len = end - nptr; + memcpy (o, nptr, len); + o[len] = '\0'; + } + + /* Set up for the next word. */ + nptr = end; + + /* Initialize and set file variables if we haven't already + done so. */ + if (!file_vars_initialized) + { + initialize_file_variables (file, 0); + set_file_variables (file, stem_str); + file_vars_initialized = 1; + } + /* Update the stem value in $* for this rule. */ + else if (!file_variables_set) + { + define_variable_for_file ( + "*", 1, stem_str, o_automatic, 0, file); + file_variables_set = 1; + } + + /* Perform the 2nd expansion. */ + p = variable_expand_for_file (depname, file); + dptr = &dl; + + /* Parse the results into a deps list. */ + do + { + /* Parse the expanded string. */ + struct dep *dp = PARSE_FILE_SEQ (&p, struct dep, + order_only ? MAP_NUL : MAP_PIPE, + add_dir ? pathdir : NULL, + PARSEFS_WAIT); + *dptr = dp; + + for (d = dp; d != NULL; d = d->next) + { + ++deps_found; + if (order_only) + d->ignore_mtime = 1; + d->is_explicit = is_explicit; + 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_deps) + { + size_t 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, + max_deps * sizeof (struct patdeps)); + pat = deplist + l; + } + + /* Go through the nameseq and handle each as a prereq name. */ + for (d = dl; d != 0; d = d->next) + { + struct file *df; + int is_rule = d->name == dep_name (dep); + int explicit = 0; + struct dep *dp = 0; + + if (file_impossible_p (d->name)) + { + /* If this prereq has already been ruled "impossible", + then the rule fails. Don't bother trying it on the + second pass either since we know that will fail. */ + DBS (DB_IMPLICIT, + (is_rule + ? _("Rejecting rule '%s' due to impossible rule" + " prerequisite '%s'.\n") + : _("Rejecting rule '%s' due to impossible implicit" + " prerequisite '%s'.\n"), + get_rule_defn (rule), d->name)); + tryrules[ri].rule = 0; + + failed = 1; + break; + } + + memset (pat, '\0', sizeof (struct patdeps)); + pat->ignore_mtime = d->ignore_mtime; + pat->ignore_automatic_vars = d->ignore_automatic_vars; + pat->wait_here = d->wait_here; + pat->is_explicit = d->is_explicit; + + DBS (DB_IMPLICIT, + (is_rule + ? _("Trying rule prerequisite '%s'.\n") + : _("Trying implicit prerequisite '%s'.\n"), d->name)); + + df = lookup_file (d->name); + + if (df && df->is_explicit) + pat->is_explicit = 1; + + /* If we found a file for the dep, set its intermediate flag. + df->is_explicit is set when the dep file is mentioned + explicitly on some other rule. d->is_explicit is set when + the dep file is mentioned explicitly on this rule. E.g.: + %.x : %.y ; ... + then: + one.x: + one.y: # df->is_explicit + vs. + one.x: one.y # d->is_explicit + */ + if (df && !df->is_explicit && !d->is_explicit) + df->intermediate = 1; + + /* If the pattern prereq is also explicitly mentioned for + FILE, skip all tests below since it must be built no + matter which implicit rule we choose. */ + if (df && df->is_target) + /* This prerequisite is mentioned explicitly as a target of + some rule. */ + explicit = 1; + else + for (dp = file->deps; dp != 0; dp = dp->next) + if (streq (d->name, dep_name (dp))) + break; + + /* If dp is set, this prerequisite is mentioned explicitly as + a prerequisite of the current target. */ + + if (explicit || dp) + { + (pat++)->name = d->name; + DBS (DB_IMPLICIT, (_("'%s' ought to exist.\n"), d->name)); + continue; + } + + if (file_exists_p (d->name)) + { + (pat++)->name = d->name; + DBS (DB_IMPLICIT, (_("Found '%s'.\n"), d->name)); + continue; + } + + if (df && allow_compat_rules) + { + (pat++)->name = d->name; + DBS (DB_IMPLICIT, + (_("Using compatibility rule '%s' due to '%s'.\n"), + get_rule_defn (rule), d->name)); + continue; + } + + if (df) + { + /* This prerequisite is mentioned explicitly as a + prerequisite on some rule, but it is not a + prerequisite of the current target. Therefore, this + prerequisite does not qualify as ought-to-exist. Keep + note of this rule and continue the search. If a more + suitable rule is not found, then use this rule. */ + DBS (DB_IMPLICIT, + (_("Prerequisite '%s' of rule '%s' does not qualify" + " as ought to exist.\n"), + d->name, get_rule_defn (rule))); + found_compat_rule = 1; + } + + /* This code, given FILENAME = "lib/foo.o", dependency name + "lib/foo.c", and VPATH=src, searches for + "src/lib/foo.c". */ + { + const char *vname = vpath_search (d->name, 0, NULL, NULL); + if (vname) + { + DBS (DB_IMPLICIT, + (_("Found prerequisite '%s' as VPATH '%s'.\n"), + d->name, vname)); + (pat++)->name = d->name; + continue; + } + } + + /* We could not find the file in any place we should look. + Look for an implicit rule to make this dependency, but + only on the second pass. */ + + if (intermed_ok) + { + DBS (DB_IMPLICIT, + (d->is_explicit || (df && df->is_explicit) + ? _("Looking for a rule with explicit file '%s'.\n") + : _("Looking for a rule with intermediate file '%s'.\n"), + d->name)); + + if (int_file == 0) + int_file = alloca (sizeof (struct file)); + memset (int_file, '\0', sizeof (struct file)); + int_file->name = d->name; + + if (pattern_search (int_file, + 0, + depth + 1, + recursions + 1, + allow_compat_rules)) + { + pat->pattern = int_file->name; + int_file->name = d->name; + pat->file = int_file; + int_file = 0; + (pat++)->name = d->name; + continue; + } + + /* If we have tried to find P as an intermediate file + and failed, mark that name as impossible so we won't + go through the search again later. */ + if (int_file->variables) + free_variable_set (int_file->variables); + if (int_file->pat_variables) + free_variable_set (int_file->pat_variables); + + /* Keep prerequisites explicitly mentioned on unrelated + rules as "possible" to let compatibility search find + such prerequisites. */ + if (df == 0) + file_impossible (d->name); + } + + /* A dependency of this rule does not exist. Therefore, this + rule fails. */ + if (intermed_ok) + DBS (DB_IMPLICIT, + (_("Rejecting rule '%s' " + "due to impossible prerequisite '%s'.\n"), + get_rule_defn (rule), d->name)); + else + DBS (DB_IMPLICIT, (_("Not found '%s'.\n"), d->name)); + + failed = 1; + break; + } + + /* Free the ns chain. */ + free_dep_chain (dl); + + if (failed) + break; + } + + /* 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. Keep looking. */ + } + + /* If we found an applicable rule without intermediate files, don't try + with them. */ + if (ri < nrules) + break; + + rule = 0; + } + + /* RULE is nil if the loop went through the list but everything failed. */ + if (rule == 0) + goto done; + + foundrule = ri; + + /* If we are recursing, store the pattern that matched FILENAME in + FILE->name for use in upper levels. */ + + if (recursions > 0) + /* Kludge-o-matic */ + file->name = rule->targets[tryrules[foundrule].matches]; + + /* DEPLIST lists the prerequisites for the rule we found. This includes the + intermediate files, if any. Convert them into entries on the deps-chain + of FILE. */ + + while (pat-- > deplist) + { + struct dep *dep; + const char *s; + + if (pat->file != 0) + { + /* If we need to use an intermediate file, make sure it is entered + as a target, with the info that was found for it in the recursive + pattern_search call. We know that the intermediate file did not + already exist as a target; therefore we can assume that the deps + and cmds of F below are null before we change them. */ + + struct file *imf = pat->file; + struct file *f = lookup_file (imf->name); + + if (!f) + f = enter_file (imf->name); + + f->deps = imf->deps; + f->cmds = imf->cmds; + f->stem = imf->stem; + /* Setting target specific variables for a file causes the file to be + entered to the database as a prerequisite. Implicit search then + treats this file as explicitly mentioned. Preserve target specific + variables of this file. */ + merge_variable_set_lists(&f->variables, imf->variables); + f->pat_variables = imf->pat_variables; + f->pat_searched = imf->pat_searched; + f->also_make = imf->also_make; + f->is_target = 1; + f->is_explicit |= imf->is_explicit || pat->is_explicit; + f->notintermediate |= imf->notintermediate; + f->intermediate |= !f->is_explicit && !f->notintermediate; + f->tried_implicit = 1; + + imf = lookup_file (pat->pattern); + if (imf != 0 && imf->precious) + f->precious = 1; + + for (dep = f->deps; dep != 0; dep = dep->next) + { + dep->file = enter_file (dep->name); + dep->name = 0; + dep->file->tried_implicit |= dep->changed; + } + } + + dep = alloc_dep (); + dep->ignore_mtime = pat->ignore_mtime; + dep->is_explicit = pat->is_explicit; + dep->ignore_automatic_vars = pat->ignore_automatic_vars; + dep->wait_here = pat->wait_here; + s = strcache_add (pat->name); + if (recursions) + dep->name = s; + else + { + dep->file = lookup_file (s); + if (dep->file == 0) + dep->file = enter_file (s); + } + + if (pat->file == 0 && tryrules[foundrule].rule->terminal) + { + /* If the file actually existed (was not an intermediate file), and + the rule that found it was a terminal one, then we want to mark + the found file so that it will not have implicit rule search done + for it. If we are not entering a 'struct file' for it now, we + indicate this with the 'changed' flag. */ + if (dep->file == 0) + dep->changed = 1; + else + dep->file->tried_implicit = 1; + } + + dep->next = file->deps; + file->deps = dep; + + /* The file changed its dependencies; schedule the shuffle. */ + file->was_shuffled = 0; + } + + if (!file->was_shuffled) + shuffle_deps_recursive (file->deps); + + if (!tryrules[foundrule].checked_lastslash) + { + /* Always allocate new storage, since STEM might be on the stack for an + intermediate file. */ + file->stem = strcache_add_len (stem, stemlen); + fullstemlen = stemlen; + } + else + { + /* We want to prepend the directory from + the original FILENAME onto the stem. */ + fullstemlen = pathlen + stemlen; + memcpy (stem_str, filename, pathlen); + memcpy (stem_str + pathlen, stem, stemlen); + stem_str[fullstemlen] = '\0'; + file->stem = strcache_add (stem_str); + } + + file->cmds = rule->cmds; + file->is_target = 1; + + /* Set precious and notintermediate flags. */ + { + struct file *f = lookup_file (rule->targets[tryrules[foundrule].matches]); + if (f) + { + if (f->precious) + file->precious = 1; + if (f->notintermediate) + file->notintermediate = 1; + } + } + + /* If this rule builds other targets, too, put the others into FILE's + 'also_make' member. */ + + if (rule->num > 1) + for (ri = 0; ri < rule->num; ++ri) + if (ri != tryrules[foundrule].matches) + { + char *nm = alloca (rule->lens[ri] + fullstemlen + 1); + char *p = nm; + struct file *f; + struct dep *new = alloc_dep (); + + /* GKM FIMXE: handle '|' here too */ + p = mempcpy (p, rule->targets[ri], + rule->suffixes[ri] - rule->targets[ri] - 1); + p = mempcpy (p, file->stem, fullstemlen); + memcpy (p, rule->suffixes[ri], + rule->lens[ri] - (rule->suffixes[ri] - rule->targets[ri])+1); + new->name = strcache_add (nm); + new->file = enter_file (new->name); + new->next = file->also_make; + + /* Set precious flag. */ + f = lookup_file (rule->targets[ri]); + if (f) + { + if (f->precious) + new->file->precious = 1; + if (f->notintermediate) + new->file->notintermediate = 1; + } + + /* Set the is_target flag so that this file is not treated as + intermediate by the pattern rule search algorithm and + file_exists_p cannot pick it up yet. */ + new->file->is_target = 1; + + file->also_make = new; + } + + done: + free (tryrules); + free (deplist); + + if (rule) + { + DBS (DB_IMPLICIT, (_("Found implicit rule '%s' for '%s'.\n"), + get_rule_defn (rule), filename)); + return 1; + } + + if (found_compat_rule) + { + DBS (DB_IMPLICIT, (_("Searching for a compatibility rule for '%s'.\n"), + filename)); + assert (allow_compat_rules == 0); + return pattern_search (file, archive, depth, recursions, 1); + } + + DBS (DB_IMPLICIT, (_("No implicit rule found for '%s'.\n"), filename)); + return 0; +} diff --git a/local/recipes/dev/gnu-make/source/src/job.c b/local/recipes/dev/gnu-make/source/src/job.c new file mode 100644 index 0000000000..b78f279c5a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/job.c @@ -0,0 +1,3762 @@ +/* Job execution and handling for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" + +#include +#include + +#include "job.h" +#include "debug.h" +#include "filedef.h" +#include "commands.h" +#include "variable.h" +#include "os.h" +#include "dep.h" +#include "shuffle.h" + +/* Default shell to use. */ +#ifdef WINDOWS32 +# ifdef HAVE_STRINGS_H +# include /* for strcasecmp, strncasecmp */ +# endif +# include + +const char *default_shell = "sh.exe"; +int no_default_sh_exe = 1; +int batch_mode_shell = 1; +HANDLE main_thread; + +#elif defined (_AMIGA) + +const char *default_shell = ""; +extern int MyExecute (char **); +int batch_mode_shell = 0; + +#elif defined (__MSDOS__) + +/* The default shell is a pointer so we can change it if Makefile + says so. It is without an explicit path so we get a chance + to search the $PATH for it (since MSDOS doesn't have standard + directories we could trust). */ +const char *default_shell = "command.com"; +int batch_mode_shell = 0; + +#elif defined (__EMX__) + +const char *default_shell = "/bin/sh"; +int batch_mode_shell = 0; + +#elif defined (VMS) + +# include +# include +const char *default_shell = ""; +int batch_mode_shell = 0; + +#define strsignal vms_strsignal +char * vms_strsignal (int status); + +#ifndef C_FACILITY_NO +# define C_FACILITY_NO 0x350000 +#endif +#ifndef VMS_POSIX_EXIT_MASK +# define VMS_POSIX_EXIT_MASK (C_FACILITY_NO | 0xA000) +#endif + +#else + +const char *default_shell = "/bin/sh"; +int batch_mode_shell = 0; + +#endif + +#ifdef __MSDOS__ +# include +static int execute_by_shell; +static int dos_pid = 123; +int dos_status; +int dos_command_running; +#endif /* __MSDOS__ */ + +#ifdef _AMIGA +# include +static int amiga_pid = 123; +static int amiga_status; +static char amiga_bname[32]; +static int amiga_batch_file; +#endif /* Amiga. */ + +#ifdef VMS +# ifndef __GNUC__ +# include +# endif +# include +# include +static void vmsWaitForChildren (int *); +#endif + +#ifdef WINDOWS32 +# include +# include +# include +# include "sub_proc.h" +# include "w32err.h" +# include "pathstuff.h" +# define WAIT_NOHANG 1 +#endif /* WINDOWS32 */ + +#ifdef __EMX__ +# include +#endif + +#if defined (HAVE_FCNTL_H) +# include +#endif + +#if defined (HAVE_SYS_WAIT_H) || defined (HAVE_UNION_WAIT) +# include +#endif + +#ifdef 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) +# endif /* Have wait3. */ +#endif /* Have waitpid. */ + +#ifdef USE_POSIX_SPAWN +# include +# include "findprog.h" +#endif + +#if !defined (wait) && !defined (POSIX) +int wait (); +#endif + +#ifndef HAVE_UNION_WAIT + +# define WAIT_T int + +# ifndef WTERMSIG +# define WTERMSIG(x) ((x) & 0x7f) +# endif +# ifndef WCOREDUMP +# define WCOREDUMP(x) ((x) & 0x80) +# endif +# ifndef WEXITSTATUS +# define WEXITSTATUS(x) (((x) >> 8) & 0xff) +# endif +# ifndef WIFSIGNALED +# define WIFSIGNALED(x) (WTERMSIG (x) != 0) +# endif +# ifndef WIFEXITED +# define WIFEXITED(x) (WTERMSIG (x) == 0) +# endif + +#else /* Have 'union wait'. */ + +# define WAIT_T union wait +# ifndef WTERMSIG +# define WTERMSIG(x) ((x).w_termsig) +# endif +# ifndef WCOREDUMP +# define WCOREDUMP(x) ((x).w_coredump) +# endif +# ifndef WEXITSTATUS +# define WEXITSTATUS(x) ((x).w_retcode) +# endif +# ifndef WIFSIGNALED +# define WIFSIGNALED(x) (WTERMSIG(x) != 0) +# endif +# ifndef WIFEXITED +# define WIFEXITED(x) (WTERMSIG(x) == 0) +# endif + +#endif /* Don't have 'union wait'. */ + +#if !defined(HAVE_UNISTD_H) && !defined(WINDOWS32) +int dup2 (); +int execve (); +void _exit (); +# ifndef VMS +int geteuid (); +int getegid (); +int setgid (); +int getgid (); +# endif +#endif + +#if HAVE_SYS_LOADAVG_H +# include +#endif + +#if HAVE_DECL_GETLOADAVG == 0 +int getloadavg (double loadavg[], int nelem); +#endif + +/* Different systems have different requirements for pid_t. + Plus we have to support gettext string translation... Argh. */ +static const char * +pid2str (pid_t pid) +{ + static char pidstring[100]; +#if defined(WINDOWS32) && (__GNUC__ > 3 || _MSC_VER > 1300) + /* %Id is only needed for 64-builds, which were not supported by + older versions of Windows compilers. */ + sprintf (pidstring, "%Id", pid); +#else + sprintf (pidstring, "%lu", (unsigned long) pid); +#endif + return pidstring; +} + +static void free_child (struct child *); +static void start_job_command (struct child *child); +static int load_too_high (void); +static int job_next_command (struct child *); +static int start_waiting_job (struct child *); + +/* Chain of all live (or recently deceased) children. */ + +struct child *children = 0; + +/* Number of children currently running. */ + +unsigned int job_slots_used = 0; + +/* Nonzero if the 'good' standard input is in use. */ + +static int good_stdin_used = 0; + +/* Chain of children waiting to run until the load average goes down. */ + +static struct child *waiting_jobs = 0; + +/* Non-zero if we use a *real* shell (always so on Unix). */ + +int unixy_shell = 1; + +/* Number of jobs started in the current second. */ + +unsigned long job_counter = 0; + +/* Number of jobserver tokens this instance is currently using. */ + +unsigned int jobserver_tokens = 0; + + +#ifdef WINDOWS32 +/* + * The macro which references this function is defined in makeint.h. + */ +int +w32_kill (pid_t pid, int sig) +{ + return ((process_kill ((HANDLE)pid, sig) == TRUE) ? 0 : -1); +} + +/* This function creates a temporary file name with an extension specified + * by the unixy arg. + * Return an xmalloc'ed string of a newly created temp file and its + * file descriptor, or die. */ +static char * +create_batch_file (char const *base, int unixy, int *fd) +{ + const char *const ext = unixy ? "sh" : "bat"; + const char *error_string = NULL; + char temp_path[MAX_PATH+1]; /* need to know its length */ + 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 size_t sizemax = strlen (base) + strlen (ext) + 10; + + 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)) + { + unsigned size = sprintf (temp_path + path_size, + "%s%s-%x.%s", + temp_path[path_size - 1] == '\\' ? "" : "\\", + base, uniq, ext); + HANDLE h = CreateFile (temp_path, /* file name */ + GENERIC_READ | GENERIC_WRITE, /* desired access */ + 0, /* no share mode */ + NULL, /* default security attributes */ + CREATE_NEW, /* creation disposition */ + FILE_ATTRIBUTE_NORMAL | /* flags and attributes */ + FILE_ATTRIBUTE_TEMPORARY, /* we'll delete it */ + 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 */ + else if (path_is_dot == 0) + { + path_size = GetCurrentDirectory (sizeof temp_path, temp_path); + path_is_dot = 1; + } + + else + { + error_string = map_windows32_error_to_string (er); + break; + } + } + else + { + const unsigned final_size = path_size + size + 1; + char *const path = xmalloc (final_size); + memcpy (path, temp_path, final_size); + *fd = _open_osfhandle ((intptr_t)h, 0); + if (unixy) + { + char *p; + int ch; + for (p = path; (ch = *p) != 0; ++p) + if (ch == '\\') + *p = '/'; + } + return path; /* good return */ + } + } + + *fd = -1; + if (error_string == NULL) + error_string = _("Cannot create a temporary file"); + O (fatal, NILF, error_string); + + /* not reached */ + return NULL; +} +#endif /* WINDOWS32 */ + +#ifdef __EMX__ +/* returns whether path is assumed to be a unix like shell. */ +int +_is_unixy_shell (const char *path) +{ + /* list of non unix shells */ + const char *known_os2shells[] = { + "cmd.exe", + "cmd", + "4os2.exe", + "4os2", + "4dos.exe", + "4dos", + "command.com", + "command", + NULL + }; + + /* find the rightmost '/' or '\\' */ + const char *name = strrchr (path, '/'); + const char *p = strrchr (path, '\\'); + unsigned i; + + if (name && p) /* take the max */ + name = (name > p) ? name : p; + else if (p) /* name must be 0 */ + name = p; + else if (!name) /* name and p must be 0 */ + name = path; + + if (ISDIRSEP (*name)) + name++; + + i = 0; + 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; +} +#endif /* __EMX__ */ + +/* determines whether path looks to be a Bourne-like shell. */ +int +is_bourne_compatible_shell (const char *path) +{ + /* List of known POSIX (or POSIX-ish) shells. */ + static const char *unix_shells[] = { + "sh", + "bash", + "dash", + "ksh", + "rksh", + "zsh", + "ash", + NULL + }; + const char **s; + + /* find the last directory separator, or the beginning of the string. */ + const char *cp = path + strlen (path); + + while (cp > path && !ISDIRSEP (cp[-1])) + --cp; + + /* this should be able to deal with extensions on Windows-like systems */ + for (s = unix_shells; *s != NULL; ++s) + { +#if defined(WINDOWS32) || defined(__MSDOS__) + size_t len = strlen (*s); + if ((strlen (cp) >= len && STOP_SET (cp[len], MAP_DOT|MAP_NUL)) + && strncasecmp (cp, *s, len) == 0) +#else + if (strcmp (cp, *s) == 0) +#endif + return 1; /* a known unix-style shell */ + } + + /* if not on the list, assume it's not a Bourne-like shell */ + return 0; +} + +#ifdef POSIX +extern sigset_t fatal_signal_set; + +static void +block_sigs () +{ + sigprocmask (SIG_BLOCK, &fatal_signal_set, (sigset_t *) 0); +} + +static void +unblock_sigs () +{ + sigprocmask (SIG_UNBLOCK, &fatal_signal_set, (sigset_t *) 0); +} + +void +unblock_all_sigs () +{ + sigset_t empty; + sigemptyset (&empty); + sigprocmask (SIG_SETMASK, &empty, (sigset_t *) 0); +} + +#elif defined(HAVE_SIGSETMASK) + +extern int fatal_signal_mask; + +static void +block_sigs () +{ + sigblock (fatal_signal_mask); +} + +static void +unblock_sigs () +{ + sigsetmask (siggetmask () & ~fatal_signal_mask); +} + +void +unblock_all_sigs () +{ + sigsetmask (0); +} + +#else + +#define block_sigs() +#define unblock_sigs() + +void +unblock_all_sigs () +{ +} + +#endif + +/* Write an error message describing the exit status given in + EXIT_CODE, EXIT_SIG, and COREDUMP, for the target TARGET_NAME. + Append "(ignored)" if IGNORED is nonzero. */ + +static void +child_error (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 floc *flocp = &f->cmds->fileinfo; + const char *nm; + const char *smode; + size_t l; + + if (ignored && run_silent) + return; + + if (exit_sig && coredump) + dump = _(" (core dumped)"); + + if (ignored) + { + pre = ""; + post = _(" (ignored)"); + } + + if (! flocp->filenm) + nm = _(""); + else + { + char *a = alloca (strlen (flocp->filenm) + 6 + INTSTR_LENGTH + 1); + sprintf (a, "%s:%lu", flocp->filenm, flocp->lineno + flocp->offset); + nm = a; + } + + l = strlen (pre) + strlen (nm) + strlen (f->name) + strlen (post); + + smode = shuffle_get_mode (); + if (smode) + { +#define SHUFFLE_PREFIX " shuffle=" + char *a = alloca (CSTRLEN(SHUFFLE_PREFIX) + strlen (smode) + 1); + sprintf (a, SHUFFLE_PREFIX "%s", smode); + smode = a; + l += strlen (smode); +#undef SHUFFLE_PREFIX + } + + OUTPUT_SET (&child->output); + + show_goal_error (); + + if (exit_sig == 0) + error (NILF, l + INTSTR_LENGTH, _("%s[%s: %s] Error %d%s%s"), + pre, nm, f->name, exit_code, post, smode ? smode : ""); + else + { + const char *s = strsignal (exit_sig); + error (NILF, l + strlen (s) + strlen (dump), "%s[%s: %s] %s%s%s%s", + pre, nm, f->name, s, dump, post, smode ? smode : ""); + } + + OUTPUT_UNSET (); +} + + +/* Handle a dead child. This handler may or may not ever be installed. + + If we're using the jobserver feature without pselect(), we need it. + First, installing it ensures the read will interrupt on SIGCHLD. Second, + we close the dup'd read FD to ensure we don't enter another blocking read + without reaping all the dead children. In this case we don't need the + dead_children count. + + If we don't have either waitpid or wait3, then make is unreliable, but we + use the dead_children count to reap children as best we can. */ + +static unsigned int dead_children = 0; + +void +child_handler (int sig UNUSED) +{ + ++dead_children; + + jobserver_signal (); + +#ifdef __EMX__ + /* The signal handler must called only once! */ + signal (SIGCHLD, SIG_DFL); +#endif +} + +extern pid_t shell_function_pid; + +/* 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 + 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, + print an error message first. */ + +void +reap_children (int block, int err) +{ +#ifndef WINDOWS32 + WAIT_T status; +#endif + /* Initially, assume we have some. */ + int reap_more = 1; + +#ifdef WAIT_NOHANG +# define REAP_MORE reap_more +#else +# define REAP_MORE dead_children +#endif + + /* As long as: + + We have at least one child outstanding OR a shell function in progress, + AND + We're blocking for a complete child OR there are more children to reap + + we'll keep reaping children. */ + + while ((children != 0 || shell_function_pid != 0) + && (block || REAP_MORE)) + { + unsigned int remote = 0; + pid_t pid; + int exit_code, exit_sig, coredump; + 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. + Only print this message once no matter how many jobs are left. */ + fflush (stdout); + if (!printed) + O (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. */ + + if (dead_children > 0) + --dead_children; + + any_remote = 0; + any_local = shell_function_pid != 0; + lastc = 0; + for (c = children; c != 0; lastc = c, c = c->next) + { + any_remote |= c->remote; + any_local |= ! c->remote; + + /* If pid < 0, this child never even started. Handle it. */ + if (c->pid < 0) + { + exit_sig = 0; + coredump = 0; + /* According to POSIX, 127 is used for command not found. */ + exit_code = 127; + goto process_child; + } + + DB (DB_JOBS, (_("Live child %p (%s) PID %s %s\n"), + c, c->file->name, pid2str (c->pid), + c->remote ? _(" (remote)") : "")); +#ifdef VMS + break; +#endif + } + + /* First, check for remote children. */ + if (any_remote) + pid = remote_status (&exit_code, &exit_sig, &coredump, 0); + else + pid = 0; + + if (pid > 0) + /* We got a remote child. */ + remote = 1; + else if (pid < 0) + { + /* A remote status command failed miserably. Punt. */ + pfatal_with_name ("remote_status"); + } + else + { + /* No remote children. Check for local children. */ +#if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32) + if (any_local) + { +#ifdef VMS + /* Todo: This needs more untangling multi-process support */ + /* Just do single child process support now */ + vmsWaitForChildren (&status); + pid = c->pid; + + /* VMS failure status can not be fully translated */ + status = $VMS_STATUS_SUCCESS (c->cstatus) ? 0 : (1 << 8); + + /* A Posix failure can be exactly translated */ + if ((c->cstatus & VMS_POSIX_EXIT_MASK) == VMS_POSIX_EXIT_MASK) + status = (c->cstatus >> 3 & 255) << 8; +#else +#ifdef WAIT_NOHANG + if (!block) + pid = WAIT_NOHANG (&status); + else +#endif + EINTRLOOP (pid, wait (&status)); +#endif /* !VMS */ + } + else + 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); + } + else + { + /* No local children are dead. */ + reap_more = 0; + + if (!block || !any_remote) + break; + + /* Now try a blocking wait for a remote child. */ + pid = remote_status (&exit_code, &exit_sig, &coredump, 1); + if (pid < 0) + pfatal_with_name ("remote_status"); + + if (pid == 0) + /* No remote children either. Finally give up. */ + break; + + /* 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; +#endif /* __MSDOS__ */ +#ifdef _AMIGA + /* 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; + HANDLE hcTID, hcPID; + DWORD dwWaitStatus = 0; + exit_code = 0; + exit_sig = 0; + coredump = 0; + + /* Record the thread ID of the main process, so that we + could suspend it in the signal handler. */ + if (!main_thread) + { + hcTID = GetCurrentThread (); + hcPID = GetCurrentProcess (); + if (!DuplicateHandle (hcPID, hcTID, hcPID, &main_thread, 0, + FALSE, DUPLICATE_SAME_ACCESS)) + { + DWORD e = GetLastError (); + fprintf (stderr, + "Determine main thread ID (Error %ld: %s)\n", + e, map_windows32_error_to_string (e)); + } + else + DB (DB_VERBOSE, ("Main thread handle = %p\n", main_thread)); + } + + /* wait for anything to finish */ + hPID = process_wait_for_any (block, &dwWaitStatus); + if (hPID) + { + /* was an error found on this process? */ + int werr = process_last_err (hPID); + + /* get exit data */ + exit_code = process_exit_code (hPID); + + /* the extra tests of exit_code are here to prevent + map_windows32_error_to_string from calling 'fatal', + which will then call reap_children again */ + if (werr && exit_code > 0 && exit_code < WSABASEERR) + fprintf (stderr, "make (e=%d): %s", exit_code, + map_windows32_error_to_string (exit_code)); + + /* signal */ + exit_sig = process_signal (hPID); + + /* cleanup process */ + 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 */ + } + + /* Some child finished: increment the command count. */ + ++command_count; + + /* Check if this is the child of the 'shell' function. */ + if (!remote && pid == shell_function_pid) + { + shell_completed (exit_code, exit_sig); + break; + } + + /* Search for a child matching the deceased one. */ + lastc = 0; + for (c = children; c != 0; lastc = c, c = c->next) + if (c->pid == pid && c->remote == remote) + break; + + if (c == 0) + /* An unknown child died. + Ignore it; it was inherited from our invoker. */ + continue; + + DB (DB_JOBS, (exit_sig == 0 && exit_code == 0 + ? _("Reaping winning child %p PID %s %s\n") + : _("Reaping losing child %p PID %s %s\n"), + c, pid2str (c->pid), c->remote ? _(" (remote)") : "")); + + /* If we have started jobs in this second, remove one. */ + if (job_counter) + --job_counter; + + process_child: + +#if defined(USE_POSIX_SPAWN) + /* Some versions of posix_spawn() do not detect errors such as command + not found until after they fork. In that case they will exit with a + code of 127. Try to detect that and provide a useful error message. + Otherwise we'll just show the error below, as normal. */ + if (exit_sig == 0 && exit_code == 127 && c->cmd_name) + { + const char *e = NULL; + struct stat st; + int r; + + /* There are various ways that this will show a different error than + fork/exec. To really get the right error we'd have to fall back + to fork/exec but I don't want to bother with that. Just do the + best we can. */ + + EINTRLOOP(r, stat (c->cmd_name, &st)); + if (r < 0) + e = strerror (errno); + else if (S_ISDIR(st.st_mode) || !(st.st_mode & S_IXUSR)) + e = strerror (EACCES); + else if (st.st_size == 0) + e = strerror (ENOEXEC); + + if (e) + OSS(error, NILF, "%s: %s", c->cmd_name, e); + } +#endif + + /* Determine the failure status: 0 for success, 1 for updating target in + question mode, 2 for anything else. */ + if (exit_sig == 0 && exit_code == 0) + child_failed = MAKE_SUCCESS; + else if (exit_sig == 0 && exit_code == 1 && question_flag && c->recursive) + child_failed = MAKE_TROUBLE; + else + child_failed = MAKE_FAILURE; + + if (c->sh_batch_file) + { + int rm_status; + + DB (DB_JOBS, (_("Cleaning up temp batch file %s\n"), + c->sh_batch_file)); + + 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) + good_stdin_used = 0; + + dontcare = c->dontcare; + + if (child_failed && !c->noerror && !ignore_errors_flag) + { + /* The commands failed. Write an error message, + delete non-precious targets, and abort. */ + static int delete_on_error = -1; + + if (!dontcare && child_failed == MAKE_FAILURE) + child_error (c, exit_code, exit_sig, coredump, 0); + + c->file->update_status = child_failed == MAKE_FAILURE ? us_failed : us_question; + if (delete_on_error == -1) + { + struct file *f = lookup_file (".DELETE_ON_ERROR"); + delete_on_error = f != 0 && f->is_target; + } + if (exit_sig != 0 || delete_on_error) + delete_child_targets (c); + } + else + { + if (child_failed) + { + /* The commands failed, but we don't care. */ + child_error (c, exit_code, exit_sig, coredump, 1); + child_failed = 0; + } + + /* If there are more commands to run, try to start them. */ + if (job_next_command (c)) + { + if (handling_fatal_signal) + { + /* Never start new commands while we are dying. + 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 = us_failed; + } + else + { + /* 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); + /* Check again whether to start remotely. + Whether or not we want to changes over time. + Also, start_remote_job may need state set up + by start_remote_job_p. */ + c->remote = start_remote_job_p (0); + start_job_command (c); + /* Fatal signals are left blocked in case we were + about to put that child on the chain. But it is + already there, so it is safe for a fatal signal to + arrive now; it will clean up this child's targets. */ + unblock_sigs (); + if (c->file->command_state == cs_running) + /* We successfully started the new command. + Loop to reap more children. */ + continue; + } + + if (c->file->update_status != us_success) + /* We failed to start the commands. */ + delete_child_targets (c); + } + else + /* 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 = us_success; + } + + /* When we get here, all the commands for c->file are finished. */ + + /* Synchronize any remaining parallel output. */ + output_dump (&c->output); + + /* 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_finished_file looks for cs_running to tell it that + it's interesting to check the file's modtime again now. */ + + if (! handling_fatal_signal) + /* Notice if the target of the commands has been changed. + This also propagates its values for command_state and + update_status to its also_make files. */ + notice_finished_file (c->file); + + /* Block fatal signals while frobnicating the list, so that + children and job_slots_used are always consistent. Otherwise + a fatal signal arriving after the child is off the chain and + before job_slots_used is decremented would believe a child was + live and call reap_children again. */ + block_sigs (); + + if (c->pid > 0) + { + DB (DB_JOBS, (_("Removing child %p PID %s%s from chain.\n"), + c, pid2str (c->pid), c->remote ? _(" (remote)") : "")); + } + + /* There is now another slot open. */ + if (job_slots_used > 0) + job_slots_used -= c->jobslot; + + /* Remove the child from the chain and free it. */ + if (lastc == 0) + children = c->next; + else + lastc->next = c->next; + + free_child (c); + + unblock_sigs (); + + /* If the job failed, and the -k flag was not given, die, + unless we are already in the process of dying. */ + if (!err && child_failed && !dontcare && !keep_going_flag && + /* fatal_error_signal will die with the right signal. */ + !handling_fatal_signal) + die (child_failed); + + /* Only block for one child. */ + block = 0; + } + + return; +} + +/* Free the storage allocated for CHILD. */ + +void +free_childbase (struct childbase *child) +{ + if (child->environment != 0) + { + char **ep = child->environment; + while (*ep != 0) + free (*ep++); + free (child->environment); + } + + free (child->cmd_name); +} + +static void +free_child (struct child *child) +{ + output_close (&child->output); + + if (!jobserver_tokens) + ONS (fatal, NILF, "INTERNAL: Freeing child %p (%s) but no tokens left", + child, child->file->name); + + /* If we're using the jobserver and this child is not the only outstanding + job, put a token back into the pipe for it. */ + + if (jobserver_enabled () && jobserver_tokens > 1) + { + jobserver_release (1); + DB (DB_JOBS, (_("Released token for child %p (%s).\n"), + child, child->file->name)); + } + + --jobserver_tokens; + + if (handling_fatal_signal) /* Don't bother free'ing if about to die. */ + return; + + if (child->command_lines != 0) + { + unsigned int i; + for (i = 0; i < child->file->cmds->ncommand_lines; ++i) + free (child->command_lines[i]); + free (child->command_lines); + } + + free_childbase ((struct childbase*)child); + + free (child); +} + + +/* Start a job to run the commands specified in CHILD. + 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 + it can be cleaned up in the event of a fatal signal. */ + +static void +start_job_command (struct child *child) +{ + int flags; + char *p; +#ifdef VMS +# define FREE_ARGV(_a) + char *argv; +#else +# define FREE_ARGV(_a) do{ if (_a) { free ((_a)[0]); free (_a); } }while(0) + char **argv; +#endif + + /* If we have a completely empty commandset, stop now. */ + if (!child->command_ptr) + goto next_command; + + /* 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]); + + p = child->command_ptr; + child->noerror = ((flags & COMMANDS_NOERROR) != 0); + + while (*p != '\0') + { + if (*p == '@') + flags |= COMMANDS_SILENT; + else if (*p == '+') + flags |= COMMANDS_RECURSE; + else if (*p == '-') + child->noerror = 1; + /* Don't skip newlines. */ + else if (!ISBLANK (*p)) + break; + ++p; + } + + child->recursive = ((flags & COMMANDS_RECURSE) != 0); + + /* Update the file's command flags with any new ones we found. We only + keep the COMMANDS_RECURSE setting. Even this isn't 100% correct; we are + now marking more commands recursive than should be in the case of + multiline define/endef scripts where only one line is marked "+". In + order to really fix this, we'll have to keep a lines_flags for every + actual line, after expansion. */ + child->file->cmds->lines_flags[child->command_line - 1] |= flags & COMMANDS_RECURSE; + + /* 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 + /* Skip any leading whitespace */ + while (*p) + { + if (!ISSPACE (*p)) + { + if (*p != '\\') + break; + if ((p[1] != '\n') && (p[1] != 'n') && (p[1] != 't')) + break; + } + p++; + } + + argv = p; + /* Please note, for VMS argv is a string (not an array of strings) which + contains the complete command line, which for multi-line variables + still includes the newlines. So detect newlines and set 'end' (which + is used for child->command_ptr) instead of (re-)writing + construct_command_argv */ + if (!one_shell) + { + char *s = p; + int instring = 0; + while (*s) + { + if (*s == '"') + instring = !instring; + else if (*s == '\\' && !instring && *(s+1) != 0) + s++; + else if (*s == '\n' && !instring) + { + end = s; + break; + } + ++s; + } + } +#else + argv = construct_command_argv (p, &end, child->file, + child->file->cmds->lines_flags[child->command_line - 1], + &child->sh_batch_file); +#endif + if (end == NULL) + child->command_ptr = NULL; + else + { + *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 + error is 2. */ + if (argv != 0 && question_flag && !(flags & COMMANDS_RECURSE)) + { + FREE_ARGV (argv); +#ifdef VMS + /* On VMS, argv[0] can be a null string here */ + if (argv[0] != 0) + { +#endif + child->file->update_status = us_question; + notice_finished_file (child->file); + return; +#ifdef VMS + } +#endif + } + + 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. */ + FREE_ARGV (argv); + argv = 0; + } + + if (argv == 0) + { + next_command: +#ifdef __MSDOS__ + execute_by_shell = 0; /* in case construct_command_argv sets it */ +#endif + /* This line has no commands. Go to the next. */ + if (job_next_command (child)) + start_job_command (child); + else + { + /* 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 = us_success; + notice_finished_file (child->file); + } + + OUTPUT_UNSET(); + return; + } + + /* 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)); + + OUTPUT_SET (&child->output); + + 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); + + /* Print the command if appropriate. */ + if (just_print_flag || ISDB (DB_PRINT) + || (!(flags & COMMANDS_SILENT) && !run_silent)) + OS (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 + reap_children (where we used to do it), because reap_children might be + reaping children from a different target. We want this increment to + guaranteedly indicate that a command was started for the dependency + chain (i.e., update_file recursion chain) we are processing. */ + + ++commands_started; + + /* Optimize an empty command. People use this for timestamp rules, + so avoid forking a useless shell. Do this after we increment + commands_started so make still treats this special case as if it + performed some action (makes a difference as to what messages are + printed, etc. */ + +#if !defined(VMS) && !defined(_AMIGA) + if ( +#if defined __MSDOS__ || defined (__EMX__) + unixy_shell /* the test is complicated and we already did it */ +#else + (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[2] && argv[2][0] == ':' && argv[2][1] == '\0') + && argv[3] == NULL) + { + FREE_ARGV (argv); + goto next_command; + } +#endif /* !VMS && !_AMIGA */ + + /* If -n was given, recurse to get the next line in the sequence. */ + + if (just_print_flag && !(flags & COMMANDS_RECURSE)) + { + FREE_ARGV (argv); + 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); + fflush (stderr); + + /* 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; + if (child->good_stdin) + good_stdin_used = 1; + + child->deleted = 0; + +#ifndef _AMIGA + /* Set up the environment for the child. */ + if (child->environment == 0) + child->environment = target_environment (child->file, child->recursive); +#endif + +#if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32) + +#ifndef VMS + /* start_waiting_job has set CHILD->remote if we can start a remote job. */ + if (child->remote) + { + int is_remote, used_stdin; + pid_t id; + if (start_remote_job (argv, child->environment, + child->good_stdin ? 0 : get_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; + else + { + if (child->good_stdin && !used_stdin) + { + child->good_stdin = 0; + good_stdin_used = 0; + } + child->remote = is_remote; + child->pid = id; + } + } + else +#endif /* !VMS */ + { + /* Fork the child process. */ + run_local: + block_sigs (); + + child->remote = 0; + +#ifdef VMS + child->pid = child_execute_job ((struct childbase *)child, 1, argv); + +#else + + jobserver_pre_child (flags & COMMANDS_RECURSE); + + child->pid = child_execute_job ((struct childbase *)child, + child->good_stdin, argv); + + jobserver_post_child (flags & COMMANDS_RECURSE); + +#endif /* !VMS */ + } + +#else /* __MSDOS__ or Amiga or WINDOWS32 */ +#ifdef __MSDOS__ + { + int proc_return; + + 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 + 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_env = 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_env; + execute_by_shell = 0; /* for the next time */ + } + else + { + dos_command_running = 1; + proc_return = spawnvpe (P_WAIT, argv[0], argv, child->environment); + } + + /* Need to unblock signals before turning off + dos_command_running, so that child's signals + will be treated as such (see fatal_error_signal). */ + unblock_sigs (); + dos_command_running = 0; + + /* If the child got a signal, dos_status has its + high 8 bits set, so be careful not to alter them. */ + if (proc_return == -1) + dos_status |= 0xff; + else + dos_status |= (proc_return & 0xff); + ++dead_children; + child->pid = dos_pid++; + } +#endif /* __MSDOS__ */ +#ifdef _AMIGA + amiga_status = MyExecute (argv); + + ++dead_children; + child->pid = amiga_pid++; + if (amiga_batch_file) + { + amiga_batch_file = 0; + DeleteFile (amiga_bname); /* Ignore errors. */ + } +#endif /* Amiga */ +#ifdef WINDOWS32 + { + HANDLE hPID; + char* arg0; + int outfd = -1; + int errfd = -1; + + /* make UNC paths safe for CreateProcess -- backslash format */ + arg0 = argv[0]; + if (arg0 && arg0[0] == '/' && arg0[1] == '/') + for ( ; arg0 && *arg0; arg0++) + if (*arg0 == '/') + *arg0 = '\\'; + + /* make sure CreateProcess() has Path it needs */ + sync_Path_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; + } + + hPID = process_easy (argv, child->environment, outfd, errfd); + + 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); + child->pid = -1; + } + } +#endif /* WINDOWS32 */ +#endif /* __MSDOS__ or Amiga or WINDOWS32 */ + + /* Bump the number of jobs started in this second. */ + if (child->pid >= 0) + ++job_counter; + + /* Set the state to running. */ + set_command_state (child->file, cs_running); + + /* Free the storage used by the child's argument list. */ + FREE_ARGV (argv); + + OUTPUT_UNSET(); + +#undef FREE_ARGV +} + +/* 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. */ + +static int +start_waiting_job (struct child *c) +{ + struct file *f = c->file; + + /* If we can start a job remotely, we always want to, and don't care about + the local load average. We record that the job should be started + remotely in C->remote for start_job_command to test. */ + + c->remote = start_remote_job_p (1); + + /* If we are running at least one job already and the load average + is too high, make this one wait. */ + if (!c->remote + && ((job_slots_used > 0 && load_too_high ()) +#ifdef WINDOWS32 + || process_table_full () +#endif + )) + { + /* Put this child on the chain of children waiting for the load average + to go down. */ + set_command_state (f, cs_running); + c->next = waiting_jobs; + waiting_jobs = c; + return 0; + } + + /* Start the first command; reap_children will run later command lines. */ + start_job_command (c); + + switch (f->command_state) + { + case cs_running: + c->next = children; + if (c->pid > 0) + { + DB (DB_JOBS, (_("Putting child %p (%s) PID %s%s on the chain.\n"), + c, c->file->name, pid2str (c->pid), + c->remote ? _(" (remote)") : "")); + /* One more job slot is in use. */ + ++job_slots_used; + assert (c->jobslot == 0); + c->jobslot = 1; + } + children = c; + unblock_sigs (); + break; + + case cs_not_started: + /* All the command lines turned out to be empty. */ + f->update_status = us_success; + /* FALLTHROUGH */ + + case cs_finished: + notice_finished_file (f); + free_child (c); + break; + + default: + assert (f->command_state == cs_finished); + break; + } + + return 1; +} + +/* Create a 'struct child' for FILE and start its commands running. */ + +void +new_job (struct file *file) +{ + struct commands *cmds = file->cmds; + struct child *c; + char **lines; + unsigned int i; + + /* Let any previously decided-upon jobs that are waiting + for the load to go down start before this new one. */ + start_waiting_jobs (); + + /* Reap any children that might have finished recently. */ + reap_children (0, 0); + + /* 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. */ + + 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. */ + + 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 == '(' ? ')' : '}'; + 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 whitespace. */ + in += 2; + NEXT_TOKEN (in); + + /* Discard any preceding whitespace that has + already been written to the output. */ + while (out > outref && ISBLANK (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. */ + if (out != in) + memmove (out, in, strlen (in) + 1); + + /* Finally, expand the line. */ + cmds->fileinfo.offset = i; + lines[i] = allocated_variable_expand_for_file (cmds->command_lines[i], + file); + } + + cmds->fileinfo.offset = 0; + c->command_lines = lines; + + /* Fetch the first command line to be run. */ + job_next_command (c); + + /* Wait for a job slot to be freed up. If we allow an infinite number + don't bother; also job_slots will == 0 if we're using the jobserver. */ + + if (job_slots != 0) + while (job_slots_used == job_slots) + reap_children (1, 0); + +#ifdef MAKE_JOBSERVER + /* If we are controlling multiple jobs make sure we have a token before + starting the child. */ + + /* This can be inefficient. There's a decent chance that this job won't + actually have to run any subprocesses: the command script may be empty + or otherwise optimized away. It would be nice if we could defer + obtaining a token until just before we need it, in start_job_command. + To do that we'd need to keep track of whether we'd already obtained a + token (since start_job_command is called for each line of the job, not + just once). Also more thought needs to go into the entire algorithm; + this is where the old parallel job code waits, so... */ + + else if (jobserver_enabled ()) + while (1) + { + int got_token; + + DB (DB_JOBS, ("Need a job token; we %shave children\n", + children ? "" : "don't ")); + + /* If we don't already have a job started, use our "free" token. */ + if (!jobserver_tokens) + break; + + /* Prepare for jobserver token acquisition. */ + jobserver_pre_acquire (); + + /* Reap anything that's currently waiting. */ + reap_children (0, 0); + + /* Kick off any jobs we have waiting for an opportunity that + can run now (i.e., waiting for load). */ + start_waiting_jobs (); + + /* If our "free" slot is available, use it; we don't need a token. */ + if (!jobserver_tokens) + break; + + /* There must be at least one child already, or we have no business + waiting for a token. */ + if (!children) + O (fatal, NILF, "INTERNAL: no children as we go to sleep on read"); + + /* Get a token. */ + got_token = jobserver_acquire (waiting_jobs != NULL); + + /* If we got one, we're done here. */ + if (got_token == 1) + { + DB (DB_JOBS, (_("Obtained token for child %p (%s).\n"), + c, c->file->name)); + break; + } + } +#endif + + ++jobserver_tokens; + + /* Trace the build. + Use message here so that changes to working directories are logged. */ + if (ISDB (DB_WHY)) + { + char *newer = allocated_variable_expand_for_file ("$?", c->file); + const char *nm; + + if (! cmds->fileinfo.filenm) + nm = _(""); + else + { + char *n = alloca (strlen (cmds->fileinfo.filenm) + 1 + 11 + 1); + sprintf (n, "%s:%lu", cmds->fileinfo.filenm, cmds->fileinfo.lineno); + nm = n; + } + + OSSS (message, 0, + _("%s: update target '%s' due to: %s"), nm, c->file->name, + newer[0] == '\0' ? _("target does not exist") : 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'. */ + while (file->command_state == cs_running) + reap_children (1, 0); + + OUTPUT_UNSET (); + return; +} + +/* Move CHILD's pointers to the next command for it to execute. + Returns nonzero if there is another command. */ + +static int +job_next_command (struct child *child) +{ + while (child->command_ptr == 0 || *child->command_ptr == '\0') + { + /* 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; + child->file->cmds->fileinfo.offset = 0; + return 0; + } + else + /* Get the next line to run. */ + child->command_ptr = child->command_lines[child->command_line++]; + } + + child->file->cmds->fileinfo.offset = child->command_line - 1; + return 1; +} + +/* Determine if the load average on the system is too high to start a new job. + + On systems which provide /proc/loadavg (e.g., Linux), we use an idea + provided by Sven C. Dack : retrieve the current number + of runnable processes, if it's greater than the requested load we don't + allow another job to start. We allow a job to start with equal processes + since one of those will be for make itself, which will then pause waiting + for jobs to clear. + + If /proc/loadavg is not available for some reason, we obtain the system + load average and compare that. + + The system load average is only recomputed once every N (N>=1) seconds. + However, a very parallel make can easily start tens or even hundreds of + jobs in a second, which brings the system to its knees for a while until + that first batch of jobs clears out. + + To avoid this we use a weighted algorithm to try to account for jobs which + have been started since the last second, and guess what the load average + would be now if it were computed. + + This algorithm was provided by Thomas Riedl , + based on load average being recomputed once per second, which is + (apparently) how Solaris operates. Linux recomputes only once every 5 + seconds, but Linux is handled by the /proc/loadavg algorithm above. + + Thomas writes: + +! calculate something load-oid and add to the observed sys.load, +! so that latter can catch up: +! - every job started increases jobctr; +! - every dying job decreases a positive jobctr; +! - the jobctr value gets zeroed every change of seconds, +! after its value*weight_b is stored into the 'backlog' value last_sec +! - weight_a times the sum of jobctr and last_sec gets +! added to the observed sys.load. +! +! The two weights have been tried out on 24 and 48 proc. Sun Solaris-9 +! machines, using a several-thousand-jobs-mix of cpp, cc, cxx and smallish +! sub-shelled commands (rm, echo, sed...) for tests. +! lowering the 'direct influence' factor weight_a (e.g. to 0.1) +! resulted in significant excession of the load limit, raising it +! (e.g. to 0.5) took bad to small, fast-executing jobs and didn't +! reach the limit in most test cases. +! +! lowering the 'history influence' weight_b (e.g. to 0.1) resulted in +! exceeding the limit for longer-running stuff (compile jobs in +! the .5 to 1.5 sec. range),raising it (e.g. to 0.5) overrepresented +! small jobs' effects. + + */ + +#define LOAD_WEIGHT_A 0.25 +#define LOAD_WEIGHT_B 0.25 + +static int +load_too_high (void) +{ +#if defined(__MSDOS__) || defined(VMS) || defined(_AMIGA) || defined(__riscos__) + return 1; +#else + static double last_sec; + static time_t last_now; + static int proc_fd = -2; + + double load, guess; + time_t now; + +#ifdef WINDOWS32 + /* sub_proc.c is limited in the number of objects it can wait for. */ + if (process_table_full ()) + return 1; +#endif + + if (max_load_average < 0) + return 0; + + /* If we haven't tried to open /proc/loadavg, try now. */ +#define LOADAVG "/proc/loadavg" + if (proc_fd == -2) + { + EINTRLOOP (proc_fd, open (LOADAVG, O_RDONLY)); + if (proc_fd < 0) + DB (DB_JOBS, ("Using system load detection method.\n")); + else + { + DB (DB_JOBS, ("Using " LOADAVG " load detection method.\n")); + fd_noinherit (proc_fd); + } + } + + /* Try to read /proc/loadavg if we managed to open it. */ + if (proc_fd >= 0) + { + int r; + + EINTRLOOP (r, lseek (proc_fd, 0, SEEK_SET)); + if (r >= 0) + { +#define PROC_LOADAVG_SIZE 64 + char avg[PROC_LOADAVG_SIZE+1]; + + EINTRLOOP (r, read (proc_fd, avg, PROC_LOADAVG_SIZE)); + if (r >= 0) + { + const char *p; + + /* The syntax of /proc/loadavg is: + <1m> <5m> <15m> / + The load is considered too high if there are more jobs + running than the requested average. */ + + avg[r] = '\0'; + p = strchr (avg, ' '); + if (p) + p = strchr (p+1, ' '); + if (p) + p = strchr (p+1, ' '); + + if (p && ISDIGIT(p[1])) + { + unsigned int cnt = make_toui (p+1, NULL); + DB (DB_JOBS, ("Running: system = %u / make = %u (max requested = %f)\n", + cnt, job_slots_used, max_load_average)); + return (double)cnt > max_load_average; + } + + DB (DB_JOBS, ("Failed to parse " LOADAVG ": %s\n", avg)); + } + } + + /* If we got here, something went wrong. Give up on this method. */ + if (r < 0) + DB (DB_JOBS, ("Failed to read " LOADAVG ": %s\n", strerror (errno))); + + close (proc_fd); + proc_fd = -1; + } + + /* Find the real system load average. */ + errno = 0; + if (getloadavg (&load, 1) != 1) + { + 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. */ + O (error, NILF, + _("cannot enforce load limits on this operating system")); + else + perror_with_name (_("cannot enforce load limit: "), "getloadavg"); + } + lossage = errno; + load = 0; + } + + /* If we're in a new second zero the counter and correct the backlog + value. Only keep the backlog for one extra second; after that it's 0. */ + now = time (NULL); + if (last_now < now) + { + if (last_now == now - 1) + last_sec = LOAD_WEIGHT_B * job_counter; + else + last_sec = 0.0; + + job_counter = 0; + last_now = now; + } + + /* Try to guess what the load would be right now. */ + guess = load + (LOAD_WEIGHT_A * (job_counter + last_sec)); + + DB (DB_JOBS, ("Estimated system load = %f (actual = %f) (max requested = %f)\n", + guess, load, max_load_average)); + + return guess >= max_load_average; +#endif +} + +/* Start jobs that are waiting for the load to be lower. */ + +void +start_waiting_jobs (void) +{ + struct child *job; + + if (waiting_jobs == 0) + return; + + do + { + /* Check for recently deceased descendants. */ + reap_children (0, 0); + + /* Take a job off the waiting list. */ + job = waiting_jobs; + 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. */ + } + while (start_waiting_job (job) && waiting_jobs != 0); + + return; +} + +#ifndef WINDOWS32 + +/* EMX: Start a child process. This function returns the new pid. */ +# if defined __EMX__ +pid_t +child_execute_job (struct childbase *child, int good_stdin, char **argv) +{ + pid_t pid; + int fdin = good_stdin ? FD_STDIN : get_bad_stdin (); + int fdout = FD_STDOUT; + int fderr = FD_STDERR; + int save_fdin = -1; + int save_fdout = -1; + int save_fderr = -1; + + /* Divert child output if we want to capture output. */ + if (child->output.syncout) + { + if (child->output.out >= 0) + fdout = child->output.out; + if (child->output.err >= 0) + fderr = child->output.err; + } + + /* 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 (fdin != FD_STDIN) + { + save_fdin = dup (FD_STDIN); + if (save_fdin < 0) + O (fatal, NILF, _("no more file handles: could not duplicate stdin")); + fd_noinherit (save_fdin); + + dup2 (fdin, FD_STDIN); + fd_noinherit (fdin); + } + + if (fdout != FD_STDOUT) + { + save_fdout = dup (FD_STDOUT); + if (save_fdout < 0) + O (fatal, NILF, + _("no more file handles: could not duplicate stdout")); + fd_noinherit (save_fdout); + + dup2 (fdout, FD_STDOUT); + fd_noinherit (fdout); + } + + if (fderr != FD_STDERR) + { + if (fderr != fdout) + { + save_fderr = dup (FD_STDERR); + if (save_fderr < 0) + O (fatal, NILF, + _("no more file handles: could not duplicate stderr")); + fd_noinherit (save_fderr); + } + + dup2 (fderr, FD_STDERR); + fd_noinherit (fderr); + } + + /* Run the command. */ + pid = exec_command (argv, child->environment); + + /* Restore stdout/stdin/stderr of the parent and close temporary FDs. */ + if (save_fdin >= 0) + { + if (dup2 (save_fdin, FD_STDIN) != FD_STDIN) + O (fatal, NILF, _("Could not restore stdin")); + else + close (save_fdin); + } + + if (save_fdout >= 0) + { + if (dup2 (save_fdout, FD_STDOUT) != FD_STDOUT) + O (fatal, NILF, _("Could not restore stdout")); + else + close (save_fdout); + } + + if (save_fderr >= 0) + { + if (dup2 (save_fderr, FD_STDERR) != FD_STDERR) + O (fatal, NILF, _("Could not restore stderr")); + else + close (save_fderr); + } + + if (pid < 0) + OSS (error, NILF, "%s: %s", argv[0], strerror (errno)); + + return pid; +} + +#elif !defined (_AMIGA) && !defined (__MSDOS__) && !defined (VMS) + +/* POSIX: + Create a child process executing the command in ARGV. + Returns the PID or -1. */ +pid_t +child_execute_job (struct childbase *child, int good_stdin, char **argv) +{ + const int fdin = good_stdin ? FD_STDIN : get_bad_stdin (); + int fdout = FD_STDOUT; + int fderr = FD_STDERR; + pid_t pid = -1; + int r; +#if defined(USE_POSIX_SPAWN) + char *cmd; + posix_spawnattr_t attr; + posix_spawn_file_actions_t fa; + short flags = 0; +#endif + + /* Divert child output if we want to capture it. */ + if (child->output.syncout) + { + if (child->output.out >= 0) + fdout = child->output.out; + if (child->output.err >= 0) + fderr = child->output.err; + } + +#if !defined(USE_POSIX_SPAWN) + + { + /* The child may clobber environ so remember ours and restore it. */ + char **parent_env = environ; + pid = vfork (); + if (pid != 0) + { + environ = parent_env; + return pid; + } + } + + /* We are the child. */ + unblock_all_sigs (); + +#ifdef SET_STACK_SIZE + /* Reset limits, if necessary. */ + if (stack_limit.rlim_cur) + setrlimit (RLIMIT_STACK, &stack_limit); +#endif + + /* For any redirected FD, dup2() it to the standard FD. + They are all marked close-on-exec already. */ + if (fdin >= 0 && fdin != FD_STDIN) + EINTRLOOP (r, dup2 (fdin, FD_STDIN)); + if (fdout != FD_STDOUT) + EINTRLOOP (r, dup2 (fdout, FD_STDOUT)); + if (fderr != FD_STDERR) + EINTRLOOP (r, dup2 (fderr, FD_STDERR)); + + /* Run the command. */ + exec_command (argv, child->environment); + _exit (127); + +#else /* USE_POSIX_SPAWN */ + + if ((r = posix_spawnattr_init (&attr)) != 0) + goto done; + + if ((r = posix_spawn_file_actions_init (&fa)) != 0) + { + posix_spawnattr_destroy (&attr); + goto done; + } + + /* Unblock all signals. */ +#ifdef HAVE_POSIX_SPAWNATTR_SETSIGMASK + { + sigset_t mask; + sigemptyset (&mask); + r = posix_spawnattr_setsigmask (&attr, &mask); + if (r != 0) + goto cleanup; + flags |= POSIX_SPAWN_SETSIGMASK; + } +#endif /* have posix_spawnattr_setsigmask() */ + + /* USEVFORK can give significant speedup on systems where it's available. */ +#ifdef POSIX_SPAWN_USEVFORK + flags |= POSIX_SPAWN_USEVFORK; +#endif + + /* For any redirected FD, dup2() it to the standard FD. + They are all marked close-on-exec already. */ + if (fdin >= 0 && fdin != FD_STDIN) + if ((r = posix_spawn_file_actions_adddup2 (&fa, fdin, FD_STDIN)) != 0) + goto cleanup; + if (fdout != FD_STDOUT) + if ((r = posix_spawn_file_actions_adddup2 (&fa, fdout, FD_STDOUT)) != 0) + goto cleanup; + if (fderr != FD_STDERR) + if ((r = posix_spawn_file_actions_adddup2 (&fa, fderr, FD_STDERR)) != 0) + goto cleanup; + + /* We can't use the POSIX_SPAWN_RESETIDS flag: when make is invoked under + restrictive environments like unshare it will fail with EINVAL. */ + + /* Apply the spawn flags. */ + if ((r = posix_spawnattr_setflags (&attr, flags)) != 0) + goto cleanup; + + /* Look up the program on the child's PATH, if needed. */ + { + const char *p = NULL; + char **pp; + + for (pp = child->environment; *pp != NULL; ++pp) + if ((*pp)[0] == 'P' && (*pp)[1] == 'A' && (*pp)[2] == 'T' + && (*pp)[3] == 'H' &&(*pp)[4] == '=') + { + p = (*pp) + 5; + break; + } + + /* execvp() will use a default PATH if none is set; emulate that. */ + if (p == NULL) + { + size_t l = confstr (_CS_PATH, NULL, 0); + if (l) + { + char *dp = alloca (l); + confstr (_CS_PATH, dp, l); + p = dp; + } + } + + cmd = (char *)find_in_given_path (argv[0], p, NULL, 0); + } + + if (!cmd) + { + r = errno; + goto cleanup; + } + + /* Start the program. */ + while ((r = posix_spawn (&pid, cmd, &fa, &attr, argv, + child->environment)) == EINTR) + ; + + /* posix_spawn() doesn't provide sh fallback like exec() does; implement + it here. POSIX doesn't specify the path to sh so use the default. */ + + if (r == ENOEXEC) + { + char **nargv; + char **pp; + size_t l = 0; + + for (pp = argv; *pp != NULL; ++pp) + ++l; + + nargv = xmalloc (sizeof (char *) * (l + 3)); + nargv[0] = (char *)default_shell; + nargv[1] = cmd; + memcpy (&nargv[2], &argv[1], sizeof (char *) * l); + + while ((r = posix_spawn (&pid, nargv[0], &fa, &attr, nargv, + child->environment)) == EINTR) + ; + + free (nargv); + } + + if (r == 0) + { + /* Spawn succeeded but may fail later: remember the command. */ + free (child->cmd_name); + if (cmd != argv[0]) + child->cmd_name = cmd; + else + child->cmd_name = xstrdup(cmd); + } + + cleanup: + posix_spawn_file_actions_destroy (&fa); + posix_spawnattr_destroy (&attr); + + done: + if (r != 0) + pid = -1; + +#endif /* USE_POSIX_SPAWN */ + + if (pid < 0) + OSS (error, NILF, "%s: %s", argv[0], strerror (r)); + + return pid; +} +#endif /* !AMIGA && !__MSDOS__ && !VMS */ +#endif /* !WINDOWS32 */ + +#ifndef _AMIGA +/* Replace the current process with one running the command in ARGV, + with environment ENVP. This function does not return. */ + +pid_t +exec_command (char **argv, char **envp) +{ +#ifdef VMS + /* to work around a problem with signals and execve: ignore them */ +#ifdef SIGCHLD + signal (SIGCHLD,SIG_IGN); +#endif + /* Run the program. */ + execve (argv[0], argv, envp); + OSS (error, NILF, "%s: %s", argv[0], strerror (errno)); + _exit (EXIT_FAILURE); +#else +#ifdef WINDOWS32 + HANDLE hPID; + HANDLE hWaitPID; + int exit_code = EXIT_FAILURE; + + /* make sure CreateProcess() has Path it needs */ + sync_Path_environment (); + + /* launch command */ + 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)); + for (i = 0; argv[i]; i++) + 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 (1, 0); + while (hWaitPID) + { + /* was an error found on this process? */ + int err = process_last_err (hWaitPID); + + /* get exit data */ + 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)); + + /* cleanup process */ + 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); + } + } + + /* Use the child's exit code as our exit code */ + exit (exit_code); + +#else /* !WINDOWS32 */ + + pid_t pid = -1; + +# ifdef __EMX__ + /* Run the program. */ + pid = spawnvpe (P_NOWAIT, argv[0], argv, envp); + if (pid >= 0) + return pid; + + /* the file might have a strange shell extension */ + if (errno == ENOENT) + errno = ENOEXEC; + +# else + + /* Run the program. Don't use execvpe() as we want the search for argv[0] + to use the new PATH, but execvpe() searches before resetting PATH. */ + environ = envp; + execvp (argv[0], argv); + +# endif /* !__EMX__ */ + + switch (errno) + { + case ENOENT: + OSS (error, NILF, "%s: %s", argv[0], strerror (errno)); + break; + case ENOEXEC: + { + /* The file was not a program. Try it as a shell script. */ + const 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; + else + shell = 0; +# else + shell = getenv ("SHELL"); +# endif + if (shell == 0) + shell = default_shell; + + 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] = (char *)shell; + +# ifdef __EMX__ + if (!unixy_shell) + { + new_argv[1] = "/c"; + ++i; + --argc; + } +# endif + + new_argv[i] = argv[0]; + while (argc > 0) + { + new_argv[i + argc] = argv[argc]; + --argc; + } + +# ifdef __EMX__ + pid = spawnvpe (P_NOWAIT, shell, new_argv, envp); + if (pid >= 0) + break; +# else + execvp (shell, new_argv); +# endif + OSS (error, NILF, "%s: %s", new_argv[0], strerror (errno)); + break; + } + +# ifdef __EMX__ + case EINVAL: + /* this nasty error was driving me nuts :-( */ + O (error, NILF, _("spawnvpe: environment space might be exhausted")); + /* FALLTHROUGH */ +# endif + + default: + OSS (error, NILF, "%s: %s", argv[0], strerror (errno)); + break; + } + + return pid; +#endif /* !WINDOWS32 */ +#endif /* !VMS */ +} +#else /* On Amiga */ +void +exec_command (char **argv) +{ + MyExecute (argv); +} + +void clean_tmp (void) +{ + DeleteFile (amiga_bname); +} + +#endif /* On Amiga */ + +#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 + 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. + + If RESTP is not NULL, *RESTP is set to point to the first newline in LINE. + If *RESTP is NULL, newlines will be ignored. + + SHELL is the shell to use, or nil to use the default shell. + IFS is the value of $IFS, or nil (meaning the default). + + FLAGS is the value of lines_flags for this command line. It is used in the + WINDOWS32 port to check whether + or $(MAKE) were found in this command + line, in which case the effect of just_print_flag is overridden. + + The returned value is either NULL if the line was empty, or else a pointer + to an array of strings. The fist pointer points to the memory used by all + the strings, so to free you free the 0'th element then the returned pointer + (see the FREE_ARGV macro). */ + +static char ** +construct_command_argv_internal (char *line, char **restp, const char *shell, + const char *shellflags, const char *ifs, + int flags, 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, + 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 + 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'. + + 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: + + The shell wildcard characters are in DOS_CHARS because they will + not be expanded if we call the child via 'spawnXX'. + + 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 + won't have to tell one from another and have one more set of + commands and special characters. */ + static const char *sh_chars_dos = "*?[];|<>%^&()"; + static const 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 }; + + static const char *sh_chars_sh = "#;\"*?[]&|<>(){}$`^"; + static const 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", "ulimit", "command", 0 }; + + const char *sh_chars; + const char **sh_cmds; + +#elif defined (__EMX__) + static const char *sh_chars_dos = "*?[];|<>%^&()"; + static const 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 }; + + static const char *sh_chars_os2 = "*?[];|<>%^()\"'&"; + static const 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", "type", + "ver", "verify", "vol", ":", 0 }; + + static const char *sh_chars_sh = "#;\"*?[]&|<>(){}$`^~'"; + static const 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", "command", 0 }; + + const char *sh_chars; + const char **sh_cmds; + +#elif defined (_AMIGA) + static const char *sh_chars = "#;\"|<>()?*$`"; + static const char *sh_cmds[] = + { "cd", "eval", "if", "delete", "echo", "copy", "rename", "set", "setenv", + "date", "makedir", "skip", "else", "endif", "path", "prompt", "unset", + "unsetenv", "version", "command", 0 }; + +#elif defined (WINDOWS32) + /* 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 characters 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 const char *sh_chars_dos = "|&<>"; + static const 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", "move", + "path", "pause", "prompt", "rd", "rem", "ren", "rename", "rmdir", + "set", "setlocal", "shift", "time", "title", "type", "ver", "verify", + "vol", ":", 0 }; + + static const char *sh_chars_sh = "#;\"*?[]&|<>(){}$`^"; + static const 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", "command", +#ifdef BATCH_MODE_ONLY_SHELL + "echo", +#endif + 0 }; + + const char *sh_chars; + const char **sh_cmds; +#elif defined(__riscos__) + static const char *sh_chars = ""; + static const char *sh_cmds[] = { 0 }; +#else /* must be UNIX-ish */ + static const char *sh_chars = "#;\"*?[]&|<>(){}$`^~!"; + static const char *sh_cmds[] = + { ".", ":", "alias", "bg", "break", "case", "cd", "command", "continue", + "eval", "exec", "exit", "export", "fc", "fg", "for", "getopts", "hash", + "if", "jobs", "login", "logout", "read", "readonly", "return", "set", + "shift", "test", "times", "trap", "type", "ulimit", "umask", "unalias", + "unset", "wait", "while", 0 }; + +# ifdef HAVE_DOS_PATHS + /* This is required if the MSYS/Cygwin ports (which do not define + WINDOWS32) are compiled with HAVE_DOS_PATHS defined, which uses + sh_chars_sh directly (see below). The value must be identical + to that of sh_chars immediately above. */ + static const char *sh_chars_sh = "#;\"*?[]&|<>(){}$`^~!"; +# endif /* HAVE_DOS_PATHS */ +#endif + size_t i; + char *p; +#ifndef NDEBUG + char *end; +#endif + char *ap; + const char *cap; + const char *cp; + int instring, word_has_equals, seen_nonequals, last_argument_was_empty; + char **new_argv = 0; + char *argstr = 0; +#ifdef WINDOWS32 + int slow_flag = 0; + + if (!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) + *restp = NULL; + + /* Make sure not to bother processing an empty line but stop at newline. */ + while (ISBLANK (*line)) + ++line; + 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; +#ifdef WINDOWS32 + else if (strcmp (shell, default_shell)) + { + char *s1 = _fullpath (NULL, shell, 0); + char *s2 = _fullpath (NULL, default_shell, 0); + + slow_flag = strcmp ((s1 ? s1 : ""), (s2 ? s2 : "")); + + free (s1); + free (s2); + } + if (slow_flag) + goto slow; +#else /* not WINDOWS32 */ +#if defined (__MSDOS__) || defined (__EMX__) + else if (strcasecmp (shell, default_shell)) + { + extern int _is_unixy_shell (const char *_path); + + 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 + * shell after this function returns. */ + default_shell = xstrdup (shell); + } + if (unixy_shell) + { + sh_chars = sh_chars_sh; + sh_cmds = sh_cmds_sh; + } + else + { + sh_chars = sh_chars_dos; + sh_cmds = sh_cmds_dos; +# ifdef __EMX__ + if (_osmode == OS2_MODE) + { + sh_chars = sh_chars_os2; + sh_cmds = sh_cmds_os2; + } +# endif + } +#else /* !__MSDOS__ */ + else if (strcmp (shell, default_shell)) + goto slow; +#endif /* !__MSDOS__ && !__EMX__ */ +#endif /* not WINDOWS32 */ + + if (ifs) + for (cap = ifs; *cap != '\0'; ++cap) + if (*cap != ' ' && *cap != '\t' && *cap != '\n') + goto slow; + + if (shellflags) + if (shellflags[0] != '-' + || ((shellflags[1] != 'c' || shellflags[2] != '\0') + && (shellflags[1] != 'e' || shellflags[2] != 'c' || shellflags[3] != '\0'))) + goto slow; + + i = strlen (line) + 1; + + /* More than 1 arg per character is impossible. */ + new_argv = xmalloc (i * sizeof (char *)); + + /* All the args can fit in a buffer as big as LINE is. */ + ap = new_argv[0] = argstr = xmalloc (i); +#ifndef NDEBUG + end = ap + i; +#endif + + /* I is how many complete arguments have been found. */ + i = 0; + instring = word_has_equals = seen_nonequals = last_argument_was_empty = 0; + for (p = line; *p != '\0'; ++p) + { + 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') + { + /* Backslash-newline is handled differently depending on what + kind of string we're in: inside single-quoted strings you + keep them; in double-quoted strings they disappear. For + DOS/Windows/OS2, if we don't have a POSIX shell, we keep the + pre-POSIX behavior of removing the backslash-newline. */ + if (instring == '"' +#if defined (__MSDOS__) || defined (__EMX__) || defined (WINDOWS32) + || !unixy_shell +#endif + ) + ++p; + else + { + *(ap++) = *(p++); + *(ap++) = *p; + } + } + 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 + /* Quoted wildcard characters must be passed quoted to the + command, so give up the fast route. */ + else if (instring == '"' && strchr ("*?", *p) != 0 && !unixy_shell) + goto slow; + 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; + else if (one_shell && *p == '\n') + /* In .ONESHELL mode \n is a separator like ; or && */ + goto slow; +#ifdef __MSDOS__ + else if (*p == '.' && p[1] == '.' && p[2] == '.' && p[3] != '.') + /* '...' is a wildcard in DJGPP. */ + 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. + We're in the fastpath, so emulate what the shell would do. */ + if (p[1] == '\n') + { + /* Throw out the backslash and newline. */ + ++p; + + /* At the beginning of the argument, skip any whitespace other + than newline before the start of the next word. */ + if (ap == new_argv[i]) + while (ISBLANK (p[1])) + ++p; + } +#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 + shells. All other backslashes are copied verbatim, since + they are probably DOS-style directory separators. This + still leaves a small window for problems, but at least it + should work for the vast majority of naive users. */ + +#ifdef __MSDOS__ + /* A dot is only special as part of the "..." + wildcard. */ + if (strneq (p + 1, ".\\.\\.", 5)) + { + *ap++ = '.'; + *ap++ = '.'; + p += 4; + } + else +#endif + if (p[1] != '\\' && p[1] != '\'' && !ISSPACE (p[1]) + && strchr (sh_chars_sh, p[1]) == 0) + /* back up one notch, to copy the backslash */ + --p; +#endif /* HAVE_DOS_PATHS */ + + /* 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) + { + int j; + for (j = 0; sh_cmds[j] != 0; ++j) + { + if (streq (sh_cmds[j], new_argv[0])) + goto slow; +#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 + } + } + + /* Skip whitespace chars, but not newlines. */ + while (ISBLANK (p[1])) + ++p; + break; + + default: + *ap++ = *p; + break; + } + } + end_of_line: + + if (instring) + /* Let the shell deal with an unterminated quote. */ + goto slow; + + /* Terminate the last argument and the argument list. */ + + *ap = '\0'; + if (new_argv[i][0] != '\0' || last_argument_was_empty) + ++i; + new_argv[i] = 0; + + if (i == 1) + { + int j; + for (j = 0; sh_cmds[j] != 0; ++j) + if (streq (sh_cmds[j], new_argv[0])) + goto slow; + } + + if (new_argv[0] == 0) + { + /* Line was empty. */ + free (argstr); + free (new_argv); + return 0; + } + + return new_argv; + + slow:; + /* We must use the shell. */ + + if (new_argv != 0) + { + /* Free the old argument list we were working on. */ + free (argstr); + free (new_argv); + } + +#ifdef __MSDOS__ + execute_by_shell = 1; /* actually, call 'system' if shell isn't unixy */ +#endif + +#ifdef _AMIGA + { + char *ptr; + char *buffer; + char *dptr; + + buffer = xmalloc (strlen (line)+1); + + ptr = line; + for (dptr=buffer; *ptr; ) + { + if (*ptr == '\\' && ptr[1] == '\n') + ptr += 2; + else if (*ptr == '@') /* Kludge: multiline commands */ + { + ptr += 2; + *dptr++ = '\n'; + } + else + *dptr++ = *ptr++; + } + *dptr = 0; + + new_argv = xmalloc (2 * sizeof (char *)); + new_argv[0] = buffer; + new_argv[1] = 0; + } +#else /* Not Amiga */ +#ifdef WINDOWS32 + /* + * Not eating this whitespace caused things like + * + * sh -c "\n" + * + * which gave the shell fits. I think we have to eat + * whitespace here, but this code should be considered + * suspicious if things start failing.... + */ + + /* Make sure not to bother processing an empty line. */ + NEXT_TOKEN (line); + if (*line == '\0') + return 0; +#endif /* WINDOWS32 */ + + { + /* SHELL may be a multi-word command. Construct a command line + "$(SHELL) $(.SHELLFLAGS) LINE", with all special chars in LINE escaped. + Then recurse, expanding this command line to get the final + argument list. */ + + char *new_line; + size_t shell_len = strlen (shell); + size_t line_len = strlen (line); + size_t sflags_len = shellflags ? strlen (shellflags) : 0; +#ifdef WINDOWS32 + char *command_ptr = NULL; /* used for batch_mode_shell mode */ +#endif + +# ifdef __EMX__ /* is this necessary? */ + 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. */ + if (one_shell) + { + /* If the shell is Bourne compatible, we must remove and ignore + interior special chars [@+-] because they're meaningless to + the shell itself. If, however, we're in .ONESHELL mode and + have changed SHELL to something non-standard, we should + leave those alone because they could be part of the + script. In this case we must also leave in place + any leading [@+-] for the same reason. */ + + /* Remove and ignore interior prefix chars [@+-] because they're + meaningless given a single shell. */ +#if defined __MSDOS__ || defined (__EMX__) + if (unixy_shell) /* the test is complicated and we already did it */ +#else + if (is_bourne_compatible_shell (shell) +#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; + char *t = line; + + /* Copy the recipe, removing and ignoring interior prefix chars + [@+-]: they're meaningless in .ONESHELL mode. */ + while (f[0] != '\0') + { + int esc = 0; + + /* This is the start of a new recipe line. Skip whitespace + and prefix characters but not newlines. */ + while (ISBLANK (*f) || *f == '-' || *f == '@' || *f == '+') + ++f; + + /* Copy until we get to the next logical recipe line. */ + while (*f != '\0') + { + *(t++) = *(f++); + if (f[-1] == '\\') + esc = !esc; + else + { + /* On unescaped newline, we're done with this line. */ + if (f[-1] == '\n' && ! esc) + break; + + /* Something else: reset the escape sequence. */ + esc = 0; + } + } + } + *t = '\0'; + } +#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 but not newlines. */ + 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 + blanks that follow 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) + { + char 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 = 1; + char *nextp; + + new_argv = xmalloc ((4 + sflags_len/2) * sizeof (char *)); + + nextp = new_argv[0] = xmalloc (shell_len + sflags_len + line_len + 3); + nextp = mempcpy (nextp, shell, shell_len + 1); + + /* Chop up the shellflags (if any) and assign them. */ + if (! shellflags) + { + new_argv[n++] = nextp; + *(nextp++) = '\0'; + } + else + { + /* Parse shellflags using construct_command_argv_internal to + handle quotes. */ + char **argv; + char *f = alloca (sflags_len + 1); + memcpy (f, shellflags, sflags_len + 1); + argv = construct_command_argv_internal (f, 0, 0, 0, 0, flags, 0); + if (argv) + { + char **a; + for (a = argv; *a; ++a) + { + new_argv[n++] = nextp; + nextp = stpcpy (nextp, *a) + 1; + } + free (argv[0]); + free (argv); + } + } + + /* Set the command to invoke. */ + new_argv[n++] = nextp; + memcpy(nextp, line, line_len + 1); + new_argv[n++] = NULL; + } + return new_argv; + } + + new_line = xmalloc ((shell_len*2) + 1 + sflags_len + 1 + + (line_len*2) + 1); + ap = new_line; + /* 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 (cp = shell; *cp != '\0'; ++cp) + { + if (strchr (sh_chars, *cp) != 0) + *(ap++) = '\\'; + *(ap++) = *cp; + } + *(ap++) = ' '; + if (shellflags) + { + ap = mempcpy (ap, shellflags, 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 + POSIX shell on DOS/Windows/OS2, mimic the pre-POSIX behavior + and remove the backslash/newline. */ +#if defined (__MSDOS__) || defined (__EMX__) || defined (WINDOWS32) +# define PRESERVE_BSNL unixy_shell +#else +# define PRESERVE_BSNL 1 +#endif + if (PRESERVE_BSNL) + { + *(ap++) = '\\'; + /* 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 && + (*p == '\\' || *p == '\'' || *p == '"' + || ISSPACE (*p) + || strchr (sh_chars, *p) != 0)) + *ap++ = '\\'; +#ifdef __MSDOS__ + else if (unixy_shell && strneq (p, "...", 3)) + { + /* The case of '...' wildcard again. */ + ap = stpcpy (ap, "\\.\\.\\"); + p += 2; + } +#endif + *ap++ = *p; + } + if (ap == new_line + shell_len + sflags_len + 2) + { + /* 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 W32 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) + { + 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); + +#ifdef __EMX__ + else if (!unixy_shell) + { + /* 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); + char *p = new_line; + char *q = new_line; + memcpy (new_line, line, line_len + 1); + /* Replace all backslash-newline combination and also following tabs. + Important: stop at the first '\n' because that's what the loop above + did. The next line starting at restp[0] will be executed during the + next call of this function. */ + while (*q != '\0' && *q != '\n') + { + if (q[0] == '\\' && q[1] == '\n') + q += 2; /* remove '\\' and '\n' */ + else + *p++ = *q++; + } + *p = '\0'; + +# ifndef NO_CMD_DEFAULT + if (strnicmp (new_line, "echo", 4) == 0 + && (new_line[4] == ' ' || new_line[4] == '\t')) + { + /* the builtin echo command: handle it separately */ + size_t echo_len = line_len - 5; + char *echo_line = new_line + 5; + + /* special case: echo 'x="y"' + cmd works this way: a string is printed as is, i.e., no quotes + are removed. But autoconf uses a command like echo 'x="y"' to + determine whether make works. autoconf expects the output x="y" + so we will do exactly that. + Note: if we do not allow cmd to be the default shell + we do not need this kind of voodoo */ + if (echo_line[0] == '\'' + && echo_line[echo_len - 1] == '\'' + && strncmp (echo_line + 1, "ac_maketemp=", + strlen ("ac_maketemp=")) == 0) + { + /* remove the enclosing quotes */ + memmove (echo_line, echo_line + 1, echo_len - 2); + echo_line[echo_len - 2] = '\0'; + } + } +# endif + + { + /* Let the shell decide what to do. Put the command line into the + 2nd command line argument and hope for the best ;-) */ + size_t sh_len = strlen (shell); + + /* exactly 3 arguments + NULL */ + new_argv = xmalloc (4 * sizeof (char *)); + /* Exactly strlen(shell) + strlen("/c") + strlen(line) + 3 times + the trailing '\0' */ + new_argv[0] = xmalloc (sh_len + line_len + 5); + memcpy (new_argv[0], shell, sh_len + 1); + new_argv[1] = new_argv[0] + sh_len + 1; + memcpy (new_argv[1], "/c", 3); + new_argv[2] = new_argv[1] + 3; + memcpy (new_argv[2], new_line, line_len + 1); + new_argv[3] = NULL; + } + } +#elif defined(__MSDOS__) + else + { + /* With MSDOS shells, we must construct the command line here + instead of recursively calling ourselves, because we + cannot backslash-escape the special characters (see above). */ + new_argv = xmalloc (sizeof (char *)); + line_len = strlen (new_line) - shell_len - sflags_len - 2; + new_argv[0] = xmalloc (line_len + 1); + strncpy (new_argv[0], + new_line + shell_len + sflags_len + 2, line_len); + new_argv[0][line_len] = '\0'; + } +#else + else + fatal (NILF, CSTRLEN (__FILE__) + INTSTR_LENGTH, + _("%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"), + __FILE__, __LINE__); +#endif + + free (new_line); + } +#endif /* ! AMIGA */ + + return new_argv; +} +#endif /* !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 + 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. + + If RESTP is not NULL, *RESTP is set to point to the first newline in LINE. + If *RESTP is NULL, newlines will be ignored. + + FILE is the target whose commands these are. It is used for + variable expansion for $(SHELL) and $(IFS). */ + +char ** +construct_command_argv (char *line, char **restp, struct file *file, + int cmd_flags, char **batch_filename) +{ + char *shell, *ifs, *shellflags; + char **argv; + + { + /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ + int save = warn_undefined_variables_flag; + warn_undefined_variables_flag = 0; + + shell = allocated_variable_expand_for_file ("$(SHELL)", file); +#ifdef WINDOWS32 + /* + * Convert to forward slashes so that construct_command_argv_internal() + * is not confused. + */ + if (shell) + { + char *p = w32ify (shell, 0); + strcpy (shell, p); + } +#endif +#ifdef __EMX__ + { + static const char *unixroot = NULL; + 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; + } + + /* 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 + performed) and if shell is an absolute path without drive letter, + try whether it exists e.g.: if "/bin/sh" does not exist use + "$UNIXROOT/bin/sh" instead. */ + if (unixroot && shell && ISDIRSEP (shell[0]) && !streq (shell, last_shell)) + { + /* 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 + free (buf); + } + } +#endif /* __EMX__ */ + + shellflags = allocated_variable_expand_for_file ("$(.SHELLFLAGS)", file); + ifs = allocated_variable_expand_for_file ("$(IFS)", file); + + warn_undefined_variables_flag = save; + } + + argv = construct_command_argv_internal (line, restp, shell, shellflags, ifs, + cmd_flags, batch_filename); + + free (shell); + free (shellflags); + free (ifs); + + return argv; +} + +#if !defined(HAVE_DUP2) && !defined(_AMIGA) +int +dup2 (int old, int new) +{ + int fd; + + (void) close (new); + EINTRLOOP (fd, dup (old)); + if (fd != new) + { + (void) close (fd); + errno = EMFILE; + return -1; + } + + return fd; +} +#endif /* !HAVE_DUP2 && !_AMIGA */ + +/* On VMS systems, include special VMS functions. */ + +#ifdef VMS +#include "vmsjobs.c" +#endif diff --git a/local/recipes/dev/gnu-make/source/src/job.h b/local/recipes/dev/gnu-make/source/src/job.h new file mode 100644 index 0000000000..14a9984d68 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/job.h @@ -0,0 +1,92 @@ +/* Definitions for managing subprocesses in GNU Make. +Copyright (C) 1992-2022 Free Software 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 . */ + +#include "output.h" + +/* Structure describing a running or dead child process. */ + +#ifdef VMS +#define VMSCHILD \ + char *comname; /* Temporary command file name */ \ + int efn; /* Completion event flag number */ \ + int cstatus; /* Completion status */ \ + int vms_launch_status; /* non-zero if lib$spawn, etc failed */ +#else +#define VMSCHILD +#endif + +#define CHILDBASE \ + char *cmd_name; /* Allocated copy of command run. */ \ + char **environment; /* Environment for commands. */ \ + VMSCHILD \ + struct output output /* Output for this child. */ + + +struct childbase + { + CHILDBASE; + }; + +struct child + { + CHILDBASE; + + struct child *next; /* Link in the chain. */ + + struct file *file; /* File being remade. */ + + 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]. */ + + unsigned int command_line; /* Index into command_lines. */ + + 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 recursive:1; /* Nonzero for recursive command ('+' etc.) */ + unsigned int jobslot:1; /* Nonzero if it's reserved a job slot. */ + unsigned int dontcare:1; /* Saved dontcare flag. */ + }; + +extern struct child *children; + +/* A signal handler for SIGCHLD, if needed. */ +void child_handler (int sig); +int is_bourne_compatible_shell(const char *path); +void new_job (struct file *file); +void reap_children (int block, int err); +void start_waiting_jobs (void); +void free_childbase (struct childbase* child); + +char **construct_command_argv (char *line, char **restp, struct file *file, + int cmd_flags, char** batch_file); + +pid_t child_execute_job (struct childbase *child, int good_stdin, char **argv); + +#ifdef _AMIGA +void exec_command (char **argv) NORETURN; +#else +pid_t exec_command (char **argv, char **envp); +#endif + +void unblock_all_sigs (void); + +extern unsigned int job_slots_used; +extern unsigned int jobserver_tokens; diff --git a/local/recipes/dev/gnu-make/source/src/load.c b/local/recipes/dev/gnu-make/source/src/load.c new file mode 100644 index 0000000000..e343a2eeed --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/load.c @@ -0,0 +1,262 @@ +/* Loading dynamic objects for GNU Make. +Copyright (C) 2012-2022 Free Software 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 . */ + +#include "makeint.h" + +#if MAKE_LOAD + +#include +#include +#include +#include +#include + +#define SYMBOL_EXTENSION "_gmk_setup" + +#include "debug.h" +#include "filedef.h" +#include "variable.h" + +/* Tru64 V4.0 does not have this flag */ +#ifndef RTLD_GLOBAL +# define RTLD_GLOBAL 0 +#endif + +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 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) + { + const char *err = dlerror (); + OS (fatal, flocp, _("Failed to open global symbol table: %s"), err); + } + } + + 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) + { + const char *err = dlerror (); + if (noerror) + DB (DB_BASIC, ("%s\n", err)); + else + OS (error, flocp, "%s", err); + return NULL; + } + + DB (DB_VERBOSE, (_("Loaded shared object %s\n"), ldname)); + + /* Assert that the GPL license symbol is defined. */ + symp = (load_func_t) dlsym (dlp, "plugin_is_GPL_compatible"); + if (! symp) + OS (fatal, flocp, + _("Loaded object %s is not declared to be GPL compatible"), + ldname); + + symp = (load_func_t) dlsym (dlp, symname); + if (! symp) + { + const char *err = dlerror (); + OSSS (fatal, flocp, _("Failed to load symbol %s from %s: %s"), + symname, ldname, err); + } + + /* 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 floc *flocp, struct file *file, int noerror) +{ + const char *ldname = file->name; + size_t nmlen = strlen (ldname); + char *new = alloca (nmlen + CSTRLEN (SYMBOL_EXTENSION) + 1); + char *symname = NULL; + 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') + { + size_t l = fp - ldname; + + ++fp; + if (fp == ep) + OS (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; + nmlen = l; + + /* Make a copy of the symbol name part. */ + symname = new + l + 1; + memcpy (symname, fp, ep - fp); + symname[ep - fp] = '\0'; + } + } + + /* Make sure this name is in the string cache. */ + ldname = file->name = strcache_add (ldname); + + /* If this object has been loaded, we're done: return -1 to ensure make does + not rebuild again. If a rebuild is allowed it was set up when this + object was initially loaded. */ + file = lookup_file (ldname); + if (file && file->loaded) + 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 ((unsigned char) *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 the load didn't fail, add the file to the .LOADED variable. */ + if (r) + do_variable_definition(flocp, ".LOADED", ldname, o_file, f_append_value, 0); + + return r; +} + +int +unload_file (const char *name) +{ + int rc = 0; + struct load_list *d; + + for (d = loaded_syms; d != NULL; d = d->next) + if (streq (d->name, name) && d->dlp) + { + DB (DB_VERBOSE, (_("Unloading shared object %s\n"), name)); + rc = dlclose (d->dlp); + if (rc) + perror_with_name ("dlclose: ", d->name); + else + d->dlp = NULL; + break; + } + + return rc; +} + +#else + +int +load_file (const floc *flocp, struct file *file UNUSED, int noerror) +{ + if (! noerror) + O (fatal, flocp, + _("The 'load' operation is not supported on this platform")); + + return 0; +} + +int +unload_file (const char *name UNUSED) +{ + O (fatal, NILF, "INTERNAL: Cannot unload when load is not supported"); +} + +#endif /* MAKE_LOAD */ diff --git a/local/recipes/dev/gnu-make/source/src/loadapi.c b/local/recipes/dev/gnu-make/source/src/loadapi.c new file mode 100644 index 0000000000..3c1fdb0a92 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/loadapi.c @@ -0,0 +1,82 @@ +/* API for GNU Make dynamic objects. +Copyright (C) 2013-2022 Free Software 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 . */ + +#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 *gfloc) +{ + /* Preserve existing variable buffer context. */ + char *pbuf; + size_t plen; + char *s; + floc fl; + floc *flp; + + if (gfloc) + { + fl.filenm = gfloc->filenm; + fl.lineno = gfloc->lineno; + fl.offset = 0; + flp = &fl; + } + else + flp = NULL; + + install_variable_buffer (&pbuf, &plen); + + s = xstrdup (buffer); + eval_buffer (s, flp); + free (s); + + restore_variable_buffer (pbuf, plen); +} + +/* Expand a string and return an allocated buffer. + Caller must call gmk_free() with this buffer. */ +char * +gmk_expand (const char *ref) +{ + return allocated_variable_expand (ref); +} + +/* Register a function to be called from makefiles. */ +void +gmk_add_function (const char *name, gmk_func_ptr func, + unsigned int min, unsigned int max, unsigned int flags) +{ + define_new_function (reading_file, name, min, max, flags, func); +} diff --git a/local/recipes/dev/gnu-make/source/src/main.c b/local/recipes/dev/gnu-make/source/src/main.c new file mode 100644 index 0000000000..eec9365639 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/main.c @@ -0,0 +1,3800 @@ +/* Argument parsing and main program of GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" +#include "os.h" +#include "filedef.h" +#include "dep.h" +#include "variable.h" +#include "job.h" +#include "commands.h" +#include "rule.h" +#include "debug.h" +#include "getopt.h" +#include "shuffle.h" + +#include +#ifdef _AMIGA +# include +# include +#endif +#ifdef WINDOWS32 +# include +# include +#ifdef HAVE_STRINGS_H +# include /* for strcasecmp */ +#endif +# include "pathstuff.h" +# include "sub_proc.h" +# include "w32err.h" +#endif +#ifdef __EMX__ +# include +# include +#endif +#ifdef HAVE_FCNTL_H +# include +#endif + +#ifdef _AMIGA +int __stack = 20000; /* Make sure we have 20K of stack space */ +#endif +#ifdef VMS +int vms_use_mcr_command = 0; +int vms_always_use_cmd_file = 0; +int vms_gnv_shell = 0; +int vms_legacy_behavior = 0; +int vms_comma_separator = 0; +int vms_unix_simulation = 0; +int vms_report_unix_paths = 0; + +/* Evaluates if a VMS environment option is set, only look at first character */ +static int +get_vms_env_flag (const char *name, int default_value) +{ +char * value; +char x; + + value = getenv (name); + if (value == NULL) + return default_value; + + x = toupper (value[0]); + switch (x) + { + case '1': + case 'T': + case 'E': + return 1; + break; + case '0': + case 'F': + case 'D': + return 0; + } +} +#endif + +#if defined HAVE_WAITPID || defined HAVE_WAIT3 +# define HAVE_WAIT_NOHANG +#endif + +#ifndef HAVE_UNISTD_H +int chdir (); +#endif +#ifndef STDC_HEADERS +# ifndef sun /* Sun has an incorrect decl in a header. */ +void exit (int) NORETURN; +# endif +double atof (); +#endif + +static void clean_jobserver (int status); +static void print_data_base (void); +static void print_version (void); +static void decode_switches (int argc, const char **argv, int env); +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); + + +/* True if C is a switch value that corresponds to a short option. */ + +#define short_option(c) ((c) <= CHAR_MAX) + +/* The structure used to hold the list of strings given + in command switches of a type that takes strlist arguments. */ + +struct stringlist + { + 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). */ + +static int silent_flag; +static const int default_silent_flag = 0; + +/* Nonzero means either -s was given, or .SILENT-with-no-deps was seen. */ + +int run_silent = 0; + +/* Nonzero means just touch the files + that would appear to need remaking (-t) */ + +int touch_flag; + +/* Nonzero means just print what commands would need to be executed, + don't actually execute them (-n). */ + +int just_print_flag; + +/* Print debugging info (--debug). */ + +static struct stringlist *db_flags = 0; +static int debug_flag = 0; + +int db_level = 0; + +/* Synchronize output (--output-sync). */ + +char *output_sync_option = 0; + +/* Environment variables override makefile definitions. */ + +int env_overrides = 0; + +/* Nonzero means ignore status codes returned by commands + executed to remake files. Just treat them all as successful (-i). */ + +int ignore_errors_flag = 0; + +/* Nonzero means don't remake anything, just print the data base + that results from reading the makefile (-p). */ + +int print_data_base_flag = 0; + +/* Nonzero means don't remake anything; just return a nonzero status + if the specified targets are not up to date (-q). */ + +int question_flag = 0; + +/* Nonzero means do not use any of the builtin rules (-r) / variables (-R). */ + +int no_builtin_rules_flag = 0; +int no_builtin_variables_flag = 0; + +/* Nonzero means keep going even if remaking some file fails (-k). */ + +int keep_going_flag; +static const int default_keep_going_flag = 0; + +/* Nonzero means check symlink mtimes. */ + +int check_symlink_flag = 0; + +/* Nonzero means print directory before starting and when done (-w). */ + +int print_directory; +static int print_directory_flag = -1; +static const int default_print_directory_flag = -1; + +/* Nonzero means print version information. */ + +int print_version_flag = 0; + +/* List of makefiles given with -f switches. */ + +static struct stringlist *makefiles = 0; + +/* Size of the stack when we started. */ + +#ifdef SET_STACK_SIZE +struct rlimit stack_limit; +#endif + + +/* Number of job slots for parallelism. */ + +unsigned int job_slots; + +#define INVALID_JOB_SLOTS (-1) +static unsigned int master_job_slots = 0; +static int arg_job_slots = INVALID_JOB_SLOTS; + +static const int default_job_slots = INVALID_JOB_SLOTS; + +/* Value of job_slots that means no limit. */ + +static const int inf_jobs = 0; + +/* Authorization for the jobserver. */ + +char *jobserver_auth = NULL; + +/* Style for the jobserver. */ +static char *jobserver_style = NULL; + +/* Shuffle mode for goals and prerequisites. */ + +static char *shuffle_mode = NULL; + +/* Handle for the mutex to synchronize output of our children under -O. */ + +static char *sync_mutex = NULL; + +/* 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 + but one at a time locally). */ +double max_load_average = -1.0; +double default_load_average = -1.0; + +/* List of directories given with -C switches. */ + +static struct stringlist *directories = 0; + +/* List of include directories given with -I switches. */ + +static struct stringlist *include_dirs = 0; + +/* List of files given with -o switches. */ + +static struct stringlist *old_files = 0; + +/* List of files given with -W switches. */ + +static struct stringlist *new_files = 0; + +/* List of strings to be eval'd. */ +static struct stringlist *eval_strings = 0; + +/* If nonzero, we should just print usage and exit. */ + +static int print_usage_flag = 0; + +/* If nonzero, we should print a warning message + for each reference to an undefined variable. */ + +int warn_undefined_variables_flag; + +/* If nonzero, always build all targets, regardless of whether + they appear out of date or not. */ + +static int always_make_set = 0; +int always_make_flag = 0; + +/* If nonzero, we're in the "try to rebuild makefiles" phase. */ + +int rebuilding_makefiles = 0; + +/* Remember the original value of the SHELL variable, from the environment. */ + +struct variable shell_var; + +/* This character introduces a command: it's the first char on the line. */ + +char cmd_prefix = '\t'; + +/* Count the number of commands we've invoked, that might change something in + the filesystem. Start with 1 so calloc'd memory never matches. */ + +unsigned long command_count = 1; + +/* Remember the location of the name of the batch file from stdin. */ + +static int stdin_offset = -1; + + +/* The usage output. We write it this way to make life easier for the + translators, especially those trying to translate to right-to-left + languages like Hebrew. */ + +static const char *const usage[] = + { + N_("Options:\n"), + N_("\ + -b, -m Ignored for compatibility.\n"), + N_("\ + -B, --always-make Unconditionally make all targets.\n"), + N_("\ + -C DIRECTORY, --directory=DIRECTORY\n\ + Change to DIRECTORY before doing anything.\n"), + N_("\ + -d Print lots of debugging information.\n"), + N_("\ + --debug[=FLAGS] Print various types of debugging information.\n"), + N_("\ + -e, --environment-overrides\n\ + Environment variables override makefiles.\n"), + N_("\ + -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"), + N_("\ + -f FILE, --file=FILE, --makefile=FILE\n\ + Read FILE as a makefile.\n"), + N_("\ + -h, --help Print this message and exit.\n"), + N_("\ + -i, --ignore-errors Ignore errors from recipes.\n"), + N_("\ + -I DIRECTORY, --include-dir=DIRECTORY\n\ + Search DIRECTORY for included makefiles.\n"), + N_("\ + -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg.\n"), + N_("\ + --jobserver-style=STYLE Select the style of jobserver to use.\n"), + N_("\ + -k, --keep-going Keep going when some targets can't be made.\n"), + N_("\ + -l [N], --load-average[=N], --max-load[=N]\n\ + Don't start multiple jobs unless load is below N.\n"), + N_("\ + -L, --check-symlink-times Use the latest mtime between symlinks and target.\n"), + N_("\ + -n, --just-print, --dry-run, --recon\n\ + Don't actually run any recipe; just print them.\n"), + N_("\ + -o FILE, --old-file=FILE, --assume-old=FILE\n\ + Consider FILE to be very old and don't remake it.\n"), + N_("\ + -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"), + N_("\ + -r, --no-builtin-rules Disable the built-in implicit rules.\n"), + N_("\ + -R, --no-builtin-variables Disable the built-in variable settings.\n"), + N_("\ + --shuffle[={SEED|random|reverse|none}]\n\ + Perform shuffle of prerequisites and goals.\n"), + N_("\ + -s, --silent, --quiet Don't echo recipes.\n"), + N_("\ + --no-silent Echo recipes (disable --silent mode).\n"), + N_("\ + -S, --no-keep-going, --stop\n\ + Turns off -k.\n"), + 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"), + N_("\ + --no-print-directory Turn off -w, even if it was turned on implicitly.\n"), + N_("\ + -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n\ + Consider FILE to be infinitely new.\n"), + N_("\ + --warn-undefined-variables Warn when an undefined variable is referenced.\n"), + NULL + }; + +/* Nonzero if the "--trace" option was given. */ + +static int trace_flag = 0; + +/* The structure that describes an accepted command switch. */ + +struct command_switch + { + int c; /* The switch character. */ + + enum /* Type of the value. */ + { + flag, /* Turn int flag on. */ + flag_off, /* Turn int flag off. */ + string, /* One string per invocation. */ + strlist, /* 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. */ + + 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 char *long_name; /* Long option name. */ + }; + +/* 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. */ + +#define TEMP_STDIN_OPT (CHAR_MAX+10) + +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" }, + { 'd', flag, &debug_flag, 1, 1, 0, 0, 0, 0 }, + { 'e', flag, &env_overrides, 1, 1, 0, 0, 0, "environment-overrides", }, + { 'E', strlist, &eval_strings, 1, 0, 0, 0, 0, "eval" }, + { 'h', flag, &print_usage_flag, 0, 0, 0, 0, 0, "help" }, + { 'i', flag, &ignore_errors_flag, 1, 1, 0, 0, 0, "ignore-errors" }, + { 'k', flag, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag, + "keep-going" }, + { '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" }, + { 'p', flag, &print_data_base_flag, 1, 1, 0, 0, 0, "print-data-base" }, + { 'q', flag, &question_flag, 1, 1, 1, 0, 0, "question" }, + { 'r', flag, &no_builtin_rules_flag, 1, 1, 0, 0, 0, "no-builtin-rules" }, + { 'R', flag, &no_builtin_variables_flag, 1, 1, 0, 0, 0, + "no-builtin-variables" }, + { 's', flag, &silent_flag, 1, 1, 0, 0, &default_silent_flag, "silent" }, + { 'S', flag_off, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag, + "no-keep-going" }, + { 't', flag, &touch_flag, 1, 1, 1, 0, 0, "touch" }, + { 'v', flag, &print_version_flag, 1, 0, 0, 0, 0, "version" }, + { 'w', flag, &print_directory_flag, 1, 1, 0, 0, + &default_print_directory_flag, "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_dirs, 1, 1, 0, 0, 0, + "include-dir" }, + { 'j', positive_int, &arg_job_slots, 1, 1, 0, &inf_jobs, &default_job_slots, + "jobs" }, + { 'l', floating, &max_load_average, 1, 1, 0, &default_load_average, + &default_load_average, "load-average" }, + { '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, strlist, &db_flags, 1, 1, 0, "basic", 0, "debug" }, + { CHAR_MAX+2, string, &jobserver_auth, 1, 1, 0, 0, 0, JOBSERVER_AUTH_OPT }, + { CHAR_MAX+3, flag, &trace_flag, 1, 1, 0, 0, 0, "trace" }, + { CHAR_MAX+4, flag_off, &print_directory_flag, 1, 1, 0, 0, + &default_print_directory_flag, "no-print-directory" }, + { CHAR_MAX+5, flag, &warn_undefined_variables_flag, 1, 1, 0, 0, 0, + "warn-undefined-variables" }, + { CHAR_MAX+7, string, &sync_mutex, 1, 1, 0, 0, 0, "sync-mutex" }, + { CHAR_MAX+8, flag_off, &silent_flag, 1, 1, 0, 0, &default_silent_flag, + "no-silent" }, + { CHAR_MAX+9, string, &jobserver_auth, 1, 0, 0, 0, 0, "jobserver-fds" }, + /* There is special-case handling for this in decode_switches() as well. */ + { TEMP_STDIN_OPT, filename, &makefiles, 0, 0, 0, 0, 0, "temp-stdin" }, + { CHAR_MAX+11, string, &shuffle_mode, 1, 1, 0, "random", 0, "shuffle" }, + { CHAR_MAX+12, string, &jobserver_style, 1, 0, 0, 0, 0, "jobserver-style" }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0 } + }; + +/* Secondary long names for options. */ + +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' }, + }; + +/* List of goal targets. */ + +static struct goaldep *goals, *lastgoal; + +/* List of variables which were defined on the command line + (or, equivalently, in MAKEFLAGS). */ + +struct command_variable + { + struct command_variable *next; + struct variable *variable; + }; +static struct command_variable *command_variables; + +/* The name we were invoked with. */ + +const char *program; + +/* Our current directory before processing any -C options. */ + +char *directory_before_chdir; + +/* Our current directory after processing all -C options. */ + +char *starting_directory; + +/* Value of the MAKELEVEL variable at startup (or 0). */ + +unsigned int makelevel; + +/* Pointer to the value of the .DEFAULT_GOAL special variable. + The value will be the name of the goal to remake if the command line + does not override it. It can be set by the makefile, or else it's + the first target defined in the makefile whose name does not start + with '.'. */ + +struct variable * default_goal_var; + +/* Pointer to structure for the file .DEFAULT + whose commands are used for any file that has none of its own. + This is zero if the makefiles do not define .DEFAULT. */ + +struct file *default_file; + +/* Nonzero if we have seen the magic '.POSIX' target. + This turns on pedantic compliance with POSIX.2. */ + +int posix_pedantic; + +/* Nonzero if we have seen the '.SECONDEXPANSION' target. + This turns on secondary expansion of prerequisites. */ + +int second_expansion; + +/* Nonzero if we have seen the '.ONESHELL' target. + This causes the entire recipe to be handed to SHELL + as a single string, potentially containing newlines. */ + +int one_shell; + +/* 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 we have seen the '.NOTPARALLEL' target. + This turns off parallel builds for this invocation of make. */ + +int not_parallel; + +/* Nonzero if some rule detected clock skew; we keep track so (a) we only + print one warning about it during the run, and (b) we can print a final + 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. */ + +#if defined(POSIX) +sigset_t fatal_signal_set; +#elif defined(HAVE_SIGSETMASK) +int fatal_signal_mask; +#endif + +#if !HAVE_DECL_BSD_SIGNAL && !defined bsd_signal +# if !defined HAVE_SIGACTION +# define bsd_signal signal +# else +typedef void (*bsd_signal_ret_t) (int); + +static bsd_signal_ret_t +bsd_signal (int sig, bsd_signal_ret_t func) +{ + struct sigaction act, oact; + act.sa_handler = func; + act.sa_flags = SA_RESTART; + sigemptyset (&act.sa_mask); + sigaddset (&act.sa_mask, sig); + if (sigaction (sig, &act, &oact) != 0) + return SIG_ERR; + return oact.sa_handler; +} +# endif +#endif + +static void +initialize_global_hash_tables (void) +{ + init_hash_global_variable_set (); + strcache_init (); + init_hash_files (); + hash_init_directories (); + 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 (void) +{ + 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_PIPE; + stopchar_map[(int)'.'] = MAP_DOT | MAP_USERFUNC; + stopchar_map[(int)','] = MAP_COMMA; + stopchar_map[(int)'('] = MAP_VARSEP; + stopchar_map[(int)'{'] = MAP_VARSEP; + stopchar_map[(int)'}'] = MAP_VARSEP; + stopchar_map[(int)')'] = MAP_VARSEP; + stopchar_map[(int)'$'] = MAP_VARIABLE; + + stopchar_map[(int)'-'] = MAP_USERFUNC; + stopchar_map[(int)'_'] = MAP_USERFUNC; + + stopchar_map[(int)' '] = MAP_BLANK; + stopchar_map[(int)'\t'] = MAP_BLANK; + + stopchar_map[(int)'/'] = MAP_DIRSEP; +#if defined(VMS) + stopchar_map[(int)':'] |= MAP_DIRSEP; + stopchar_map[(int)']'] |= MAP_DIRSEP; + stopchar_map[(int)'>'] |= MAP_DIRSEP; +#elif defined(HAVE_DOS_PATHS) + stopchar_map[(int)'\\'] |= MAP_DIRSEP; +#endif + + for (i = 1; i <= UCHAR_MAX; ++i) + { + if (isspace (i) && NONE_SET (stopchar_map[i], MAP_BLANK)) + /* Don't mark blank characters as newline characters. */ + stopchar_map[i] |= MAP_NEWLINE; + else if (isalnum (i)) + stopchar_map[i] |= MAP_USERFUNC; + } +} + +/* 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) + perror_with_name (_("write error: stdout"), ""); + else + O (error, NILF, _("write error: stdout")); + exit (MAKE_TROUBLE); + } +} + +static const char * +expand_command_line_file (const char *name) +{ + const char *cp; + char *expanded = 0; + + if (name[0] == '\0') + O (fatal, NILF, _("empty string invalid as file name")); + + if (name[0] == '~') + { + expanded = tilde_expand (name); + if (expanded && expanded[0] != '\0') + name = expanded; + } + + /* This is also done in parse_file_seq, so this is redundant + for names read from makefiles. It is here for names passed + on the command line. */ + while (name[0] == '.' && name[1] == '/') + { + name += 2; + while (name[0] == '/') + /* Skip following slashes: ".//foo" is "foo", not "/foo". */ + ++name; + } + + if (name[0] == '\0') + { + /* Nothing else but one or more "./", maybe plus slashes! */ + name = "./"; + } + + cp = strcache_add (name); + + free (expanded); + + return cp; +} + +/* Toggle -d on receipt of SIGUSR1. */ + +#ifdef SIGUSR1 +static void +debug_signal_handler (int sig UNUSED) +{ + db_level = db_level ? DB_NONE : DB_BASIC; +} +#endif + +static void +decode_debug_flags (void) +{ + const char **pp; + + if (debug_flag) + db_level = DB_ALL; + + if (trace_flag) + db_level |= DB_PRINT | DB_WHY; + + 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 'p': + db_level |= DB_PRINT; + break; + case 'v': + db_level |= DB_BASIC | DB_VERBOSE; + break; + case 'w': + db_level |= DB_WHY; + break; + default: + OS (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) +{ +#ifdef NO_OUTPUT_SYNC + output_sync = OUTPUT_SYNC_NONE; +#else + if (output_sync_option) + { + if (streq (output_sync_option, "none")) + output_sync = OUTPUT_SYNC_NONE; + else if (streq (output_sync_option, "line")) + output_sync = OUTPUT_SYNC_LINE; + else if (streq (output_sync_option, "target")) + output_sync = OUTPUT_SYNC_TARGET; + else if (streq (output_sync_option, "recurse")) + output_sync = OUTPUT_SYNC_RECURSE; + else + OS (fatal, NILF, + _("unknown output-sync type '%s'"), output_sync_option); + } + + if (sync_mutex) + osync_parse_mutex (sync_mutex); +#endif +} + +/* Print a nice usage method and exit. */ + +static void NORETURN +print_usage (int bad) +{ + const char *const *cpp; + FILE *usageto; + + if (print_version_flag) + { + print_version (); + fputs ("\n", stdout); + } + + usageto = bad ? stderr : stdout; + + fprintf (usageto, _("Usage: %s [options] [target] ...\n"), program); + + for (cpp = usage; *cpp; ++cpp) + fputs (_(*cpp), usageto); + + if (!remote_description || *remote_description == '\0') + fprintf (usageto, _("\nThis program built for %s\n"), make_host); + else + fprintf (usageto, _("\nThis program built for %s (%s)\n"), + make_host, remote_description); + + fprintf (usageto, _("Report bugs to \n")); + + die (bad ? MAKE_FAILURE : MAKE_SUCCESS); +} + +#ifdef WINDOWS32 + +/* + * HANDLE runtime exceptions by avoiding a requestor on the GUI. Capture + * exception and print it to stderr instead. + * + * If ! DB_VERBOSE, just print a simple message and exit. + * If DB_VERBOSE, print a more verbose message. + * If compiled for DEBUG, let exception pass through to GUI so that + * debuggers can attach. + */ +LONG WINAPI +handle_runtime_exceptions (struct _EXCEPTION_POINTERS *exinfo) +{ + PEXCEPTION_RECORD exrec = exinfo->ExceptionRecord; + LPSTR cmdline = GetCommandLine (); + LPSTR prg = strtok (cmdline, " "); + CHAR errmsg[1024]; +#ifdef USE_EVENT_LOG + HANDLE hEventSource; + LPTSTR lpszStrings[1]; +#endif + + 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, + _("\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]); + + /* turn this on if we want to put stuff in the event log too */ +#ifdef USE_EVENT_LOG + 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); + } +#endif + + /* Write the error to stderr too */ + fprintf (stderr, errmsg); + +#ifdef DEBUG + return EXCEPTION_CONTINUE_SEARCH; +#else + exit (255); + return (255); /* not reached */ +#endif +} + +/* + * On W32 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 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). + */ + +int +find_and_set_default_shell (const char *token) +{ + int sh_found = 0; + char *atoken = 0; + const char *search_token; + const char *tokend; + extern const char *default_shell; + + if (!token) + search_token = default_shell; + else + search_token = atoken = xstrdup (token); + + /* If the user explicitly requests the DOS cmd shell, obey that request. + However, make sure that's what they really want by requiring the value + of SHELL either equal, or have a final path element of, "cmd" or + "cmd.exe" case-insensitive. */ + tokend = search_token + strlen (search_token) - 3; + if (((tokend == search_token + || (tokend > search_token && ISDIRSEP (tokend[-1]))) + && !strcasecmp (tokend, "cmd")) + || ((tokend - 4 == search_token + || (tokend - 4 > search_token && ISDIRSEP (tokend[-5]))) + && !strcasecmp (tokend - 4, "cmd.exe"))) + { + batch_mode_shell = 1; + unixy_shell = 0; + default_shell = xstrdup (w32ify (search_token, 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 */ + default_shell = xstrdup (w32ify (search_token, 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) + { + PATH_VAR (sh_path); + + *ep = '\0'; + + snprintf (sh_path, GET_PATH_MAX, "%s/%s", p, search_token); + if (_access (sh_path, 0) == 0) + { + default_shell = xstrdup (w32ify (sh_path, 0)); + sh_found = 1; + *ep = PATH_SEPARATOR_CHAR; + + /* terminate loop */ + p += strlen (p); + } + else + { + *ep = PATH_SEPARATOR_CHAR; + p = ++ep; + } + + ep = strchr (p, PATH_SEPARATOR_CHAR); + } + + /* be sure to check last element of Path */ + if (p && *p) + { + PATH_VAR (sh_path); + snprintf (sh_path, GET_PATH_MAX, "%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; + } + +#ifdef BATCH_MODE_ONLY_SHELL + batch_mode_shell = 1; +#endif + + free (atoken); + + return (sh_found); +} +#endif /* WINDOWS32 */ + +#ifdef __MSDOS__ +static void +msdos_return_to_initial_directory (void) +{ + if (directory_before_chdir) + chdir (directory_before_chdir); +} +#endif /* __MSDOS__ */ + +static void +reset_jobserver (void) +{ + jobserver_clear (); + free (jobserver_auth); + jobserver_auth = NULL; +} + +void +temp_stdin_unlink () +{ + /* This function is called from a signal handler. Keep async-signal-safe. + If there is a temp file from reading from stdin, get rid of it. */ + if (stdin_offset >= 0) + { + const char *nm = makefiles->list[stdin_offset]; + int r = 0; + + stdin_offset = -1; + EINTRLOOP(r, unlink (nm)); + if (r < 0 && errno != ENOENT && !handling_fatal_signal) + perror_with_name (_("unlink (temporary file): "), nm); + } +} + +#ifdef _AMIGA +int +main (int argc, char **argv) +#else +int +main (int argc, char **argv, char **envp) +#endif +{ + int makefile_status = MAKE_SUCCESS; + struct goaldep *read_files; + PATH_VAR (current_directory); + unsigned int restarts = 0; + unsigned int syncing = 0; + int argv_slots; /* The jobslot info we got from our parent process. */ +#ifdef WINDOWS32 + const char *unix_path = NULL; + const char *windows32_path = NULL; + + SetUnhandledExceptionFilter (handle_runtime_exceptions); + + /* start off assuming we have no shell */ + unixy_shell = 0; + no_default_sh_exe = 1; +#endif + + initialize_variable_output (); + + /* Useful for attaching debuggers, etc. */ + SPIN ("main-entry"); + + /* Don't die if our stdout sends us SIGPIPE. */ +#ifdef SIGPIPE + bsd_signal (SIGPIPE, SIG_IGN); +#endif + +#ifdef HAVE_ATEXIT + if (ANY_SET (check_io_state (), IO_STDOUT_OK)) + atexit (close_stdout); +#endif + + output_init (&make_sync); + + initialize_stopchar_map(); + +#ifdef SET_STACK_SIZE + /* Get rid of any avoidable limit on stack size. */ + { + struct rlimit rlim; + + /* Set the stack limit huge so that alloca does not fail. */ + if (getrlimit (RLIMIT_STACK, &rlim) == 0 + && rlim.rlim_cur > 0 && rlim.rlim_cur < rlim.rlim_max) + { + stack_limit = rlim; + rlim.rlim_cur = rlim.rlim_max; + setrlimit (RLIMIT_STACK, &rlim); + } + else + stack_limit.rlim_cur = 0; + } +#endif + + /* Needed for OS/2 */ + initialize_main (&argc, &argv); + +#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 + 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); + +#endif + + /* Set up gettext/internationalization support. */ + setlocale (LC_ALL, ""); + /* The cast to void shuts up compiler warnings on systems that + disable NLS. */ + (void)bindtextdomain (PACKAGE, LOCALEDIR); + (void)textdomain (PACKAGE); + +#ifdef POSIX + sigemptyset (&fatal_signal_set); +#define ADD_SIG(sig) sigaddset (&fatal_signal_set, sig) +#else +#ifdef HAVE_SIGSETMASK + fatal_signal_mask = 0; +#define ADD_SIG(sig) fatal_signal_mask |= sigmask (sig) +#else +#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 \ + ADD_SIG (sig); + +#ifdef SIGHUP + FATAL_SIG (SIGHUP); +#endif +#ifdef SIGQUIT + FATAL_SIG (SIGQUIT); +#endif + FATAL_SIG (SIGINT); + FATAL_SIG (SIGTERM); + +#ifdef __MSDOS__ + /* Windows 9X delivers FP exceptions in child programs to their + parent! We don't want Make to die when a child divides by zero, + so we work around that lossage by catching SIGFPE. */ + FATAL_SIG (SIGFPE); +#endif + +#ifdef SIGDANGER + FATAL_SIG (SIGDANGER); +#endif +#ifdef SIGXCPU + FATAL_SIG (SIGXCPU); +#endif +#ifdef SIGXFSZ + FATAL_SIG (SIGXFSZ); +#endif + +#undef FATAL_SIG + + /* Do not ignore the child-death signal. This must be done before + any children could possibly be created; otherwise, the wait + functions won't work on systems with the SVR4 ECHILD brain + damage, if our invoker is ignoring this signal. */ + +#ifdef HAVE_WAIT_NOHANG +# if defined SIGCHLD + (void) bsd_signal (SIGCHLD, SIG_DFL); +# endif +# if defined SIGCLD && SIGCLD != SIGCHLD + (void) bsd_signal (SIGCLD, SIG_DFL); +# endif +#endif + + output_init (NULL); + + /* Figure out where this program lives. */ + + if (argv[0] == 0) + argv[0] = (char *)""; + if (argv[0][0] == '\0') + program = "make"; + else + { +#if defined(HAVE_DOS_PATHS) + const char* start = argv[0]; + + /* Skip an initial drive specifier if present. */ + if (isalpha ((unsigned char)start[0]) && start[1] == ':') + start += 2; + + if (start[0] == '\0') + program = "make"; + else + { + program = start + strlen (start); + while (program > start && ! ISDIRSEP (program[-1])) + --program; + + /* Remove the .exe extension if present. */ + { + size_t len = strlen (program); + if (len > 4 && streq (&program[len - 4], ".exe")) + program = xstrndup (program, len - 4); + } + } +#elif defined(VMS) + set_program_name (argv[0]); + program = program_name; + { + const char *shell; + char pwdbuf[256]; + char *pwd; + shell = getenv ("SHELL"); + if (shell != NULL) + vms_gnv_shell = 1; + + /* Need to know if CRTL set to report UNIX paths. Use getcwd as + it works on all versions of VMS. */ + pwd = getcwd(pwdbuf, 256); + if (pwd[0] == '/') + vms_report_unix_paths = 1; + + vms_use_mcr_command = get_vms_env_flag ("GNV$MAKE_USE_MCR", 0); + + vms_always_use_cmd_file = get_vms_env_flag ("GNV$MAKE_USE_CMD_FILE", 0); + + /* Legacy behavior is on VMS is older behavior that needed to be + changed to be compatible with standard make behavior. + For now only completely disable when running under a Bash shell. + TODO: Update VMS built in recipes and macros to not need this + behavior, at which time the default may change. */ + vms_legacy_behavior = get_vms_env_flag ("GNV$MAKE_OLD_VMS", + !vms_gnv_shell); + + /* VMS was changed to use a comma separator in the past, but that is + incompatible with built in functions that expect space separated + lists. Allow this to be selectively turned off. */ + vms_comma_separator = get_vms_env_flag ("GNV$MAKE_COMMA", + vms_legacy_behavior); + + /* Some Posix shell syntax options are incompatible with VMS syntax. + VMS requires double quotes for strings and escapes quotes + differently. When this option is active, VMS will try + to simulate Posix shell simulations instead of using + VMS DCL behavior. */ + vms_unix_simulation = get_vms_env_flag ("GNV$MAKE_SHELL_SIM", + !vms_legacy_behavior); + + } + if (need_vms_symbol () && !vms_use_mcr_command) + create_foreign_command (program_name, argv[0]); +#else + program = strrchr (argv[0], '/'); + if (program == 0) + program = argv[0]; + else + ++program; +#endif + } + + initialize_global_hash_tables (); + + /* Ensure the temp directory is set up: we don't want the first time we use + it to be in a forked process. */ + get_tmpdir (); + + /* Figure out where we are. */ + +#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", ""); +#else + OS (error, NILF, "getwd: %s", current_directory); +#endif + current_directory[0] = '\0'; + directory_before_chdir = 0; + } + 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); +#endif + + /* Initialize the special variables. */ + define_variable_cname (".VARIABLES", "", o_default, 0)->special = 1; + /* define_variable_cname (".TARGETS", "", o_default, 0)->special = 1; */ + define_variable_cname (".RECIPEPREFIX", "", o_default, 0)->special = 1; + define_variable_cname (".SHELLFLAGS", "-c", o_default, 0); + define_variable_cname (".LOADED", "", o_default, 0); + + /* Set up .FEATURES + 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 oneshell nocomment" + " grouped-target extra-prereqs notintermediate" + " shell-export" +#ifndef NO_ARCHIVES + " archives" +#endif +#ifdef MAKE_JOBSERVER + " jobserver" +# ifdef HAVE_MKFIFO + " jobserver-fifo" +# endif +#endif +#ifndef NO_OUTPUT_SYNC + " output-sync" +#endif +#ifdef MAKE_SYMLINKS + " check-symlink" +#endif +#ifdef HAVE_GUILE + " guile" +#endif +#ifdef MAKE_LOAD + " load" +#endif +#ifdef MAKE_MAINTAINER_MODE + " maintainer" +#endif + ; + + define_variable_cname (".FEATURES", features, o_default, 0); + } + + /* Configure GNU Guile support */ + guile_gmake_setup (NILF); + + /* Read in variables from the environment. It is important that this be + done before $(MAKE) is figured out so its definitions will not be + from the environment. */ + +#ifndef _AMIGA + { + unsigned int i; + + for (i = 0; envp[i] != 0; ++i) + { + struct variable *v; + const char *ep = envp[i]; + /* By default, export all variables culled from the environment. */ + enum variable_export export = v_export; + size_t len; + + while (! STOP_SET (*ep, MAP_EQUALS|MAP_NUL)) + ++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)) + unix_path = ep+1; + else if (!strnicmp (envp[i], "Path=", 5)) + { + if (!windows32_path) + windows32_path = ep+1; + /* PATH gets defined after the loop exits. */ + continue; + } +#endif + + /* 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 && memcmp (envp[i], STRING_SIZE_TUPLE ("MAKE_RESTARTS")) == 0) + { + if (*ep == '-') + { + OUTPUT_TRACED (); + ++ep; + } + restarts = make_toui (ep, NULL); + 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 = xstrdup ("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 misspelled value or an empty string + */ + if (!unix_path) + define_variable_cname ("PATH", windows32_path ? windows32_path : "", + o_env, 1)->export = v_export; +#endif +#else /* For Amiga, read the ENV: device, ignoring all dirs */ + { + 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. */ + if (lookup_variable (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME))) + { + decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME)); + + /* Clear GNUMAKEFLAGS to avoid duplication. */ + define_variable_cname (GNUMAKEFLAGS_NAME, "", o_env, 0); + } + + decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME)); + +#if 0 + /* People write things like: + MFLAGS="CC=gcc -pipe" "CFLAGS=-g" + and we set the -p, -i and -e switches. Doesn't seem quite right. */ + decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS")); +#endif + + /* 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); + + /* Parse the command line options. Remember the job slots set this way. */ + { + int env_slots = arg_job_slots; + arg_job_slots = INVALID_JOB_SLOTS; + + decode_switches (argc, (const char **)argv, 0); + argv_slots = arg_job_slots; + + if (arg_job_slots == INVALID_JOB_SLOTS) + arg_job_slots = env_slots; + } + + if (print_usage_flag) + print_usage (0); + + /* Print version information, and exit. */ + if (print_version_flag) + { + print_version (); + die (MAKE_SUCCESS); + } + + /* Now that we know we'll be running, force stdout to be line-buffered. */ +#ifdef HAVE_SETVBUF + setvbuf (stdout, 0, _IOLBF, BUFSIZ); +#elif HAVE_SETLINEBUF + setlinebuf (stdout); +#endif + + /* Handle shuffle mode argument. */ + if (shuffle_mode) + { + const char *effective_mode; + shuffle_set_mode (shuffle_mode); + + /* Write fixed seed back to argument list to propagate mode and + fixed seed to child $(MAKE) runs. */ + free (shuffle_mode); + effective_mode = shuffle_get_mode (); + if (effective_mode) + shuffle_mode = xstrdup (effective_mode); + else + shuffle_mode = NULL; + } + + /* Set a variable specifying whether stdout/stdin is hooked to a TTY. */ +#ifdef HAVE_ISATTY + if (isatty (fileno (stdout))) + if (! lookup_variable (STRING_SIZE_TUPLE ("MAKE_TERMOUT"))) + { + const char *tty = TTYNAME (fileno (stdout)); + define_variable_cname ("MAKE_TERMOUT", tty ? tty : DEFAULT_TTYNAME, + o_default, 0)->export = v_export; + } + if (isatty (fileno (stderr))) + if (! lookup_variable (STRING_SIZE_TUPLE ("MAKE_TERMERR"))) + { + const char *tty = TTYNAME (fileno (stderr)); + define_variable_cname ("MAKE_TERMERR", tty ? tty : DEFAULT_TTYNAME, + o_default, 0)->export = v_export; + } +#endif + + /* 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 = make_toui (v->value, NULL); + else + makelevel = 0; + } + + /* Set always_make_flag if -B was given and we've not restarted already. */ + always_make_flag = always_make_set && (restarts == 0); + + /* If the user didn't specify any print-directory options, compute the + default setting: disable under -s / print in sub-makes and under -C. */ + + if (print_directory_flag == -1) + print_directory = !silent_flag && (directories != 0 || makelevel > 0); + else + print_directory = print_directory_flag; + + /* If -R was given, set -r too (doesn't make sense otherwise!) */ + if (no_builtin_variables_flag) + no_builtin_rules_flag = 1; + + if (ISDB (DB_BASIC)) + { + print_version (); + + /* Flush stdout so the user doesn't have to wait to see the + version information while make thinks about things. */ + fflush (stdout); + } + +#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 + so the result will run the same program regardless of the current dir. + If it is a name with no slash, we can only hope that PATH did not + find it in the current directory.) */ +#ifdef WINDOWS32 + /* + * Convert from backslashes to forward slashes for + * programs like sh which don't like them. Shouldn't + * 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)); +#else /* WINDOWS32 */ +#if defined (__MSDOS__) || defined (__EMX__) + if (strchr (argv[0], '\\')) + { + char *p; + + argv[0] = xstrdup (argv[0]); + for (p = argv[0]; *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 + program that uses a non-absolute name. */ + if (current_directory[0] != '\0' + && argv[0] != 0 + && (argv[0][0] != '/' && (argv[0][0] == '\0' || argv[0][1] != ':')) +# ifdef __EMX__ + /* do not prepend cwd if argv[0] contains no '/', e.g. "make" */ + && (strchr (argv[0], '/') != 0 || strchr (argv[0], '\\') != 0) +# endif + ) + argv[0] = xstrdup (concat (3, current_directory, "/", argv[0])); +#else /* !__MSDOS__ */ + if (current_directory[0] != '\0' + && argv[0] != 0 && argv[0][0] != '/' && strchr (argv[0], '/') != 0 +#ifdef HAVE_DOS_PATHS + && (argv[0][0] != '\\' && (!argv[0][0] || argv[0][1] != ':')) + && strchr (argv[0], '\\') != 0 +#endif + ) + argv[0] = xstrdup (concat (3, current_directory, "/", argv[0])); +#endif /* !__MSDOS__ */ +#endif /* WINDOWS32 */ +#endif + + /* We may move, but until we do, here we are. */ + starting_directory = current_directory; + + /* If there were -C flags, move ourselves about. */ + if (directories != 0) + { + unsigned int i; + for (i = 0; directories->list[i] != 0; ++i) + { + const char *dir = directories->list[i]; +#ifdef WINDOWS32 + /* WINDOWS32 chdir() doesn't work if the directory has a trailing '/' + But allow -C/ just in case someone wants that. */ + { + char *p = (char *)dir + strlen (dir) - 1; + while (p > dir && ISDIRSEP (p[0])) + --p; + p[1] = '\0'; + } +#endif + if (chdir (dir) < 0) + pfatal_with_name (dir); + } + } + +#ifdef WINDOWS32 + /* + * THIS BLOCK OF CODE MUST COME AFTER chdir() CALL ABOVE IN ORDER + * TO NOT CONFUSE THE DEPENDENCY CHECKING CODE IN implicit.c. + * + * The functions in dir.c can incorrectly cache information for "." + * before we have changed directory and this can cause file + * 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); +#endif /* WINDOWS32 */ + + /* 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", ""); +#else + OS (error, NILF, "getwd: %s", current_directory); +#endif + starting_directory = 0; + } + else + starting_directory = current_directory; + } + + define_variable_cname ("CURDIR", current_directory, o_file, 0); + + /* Validate the arg_job_slots configuration before we define MAKEFLAGS so + users get an accurate value in their makefiles. + At this point arg_job_slots is the argv setting, if there is one, else + the MAKEFLAGS env setting, if there is one. */ + + if (jobserver_auth) + { + /* We're a child in an existing jobserver group. */ + if (argv_slots == INVALID_JOB_SLOTS) + { + /* There's no -j option on the command line: check authorization. */ + if (jobserver_parse_auth (jobserver_auth)) + /* Success! Use the jobserver. */ + goto job_setup_complete; + + /* Oops: we have jobserver-auth but it's invalid :(. */ + O (error, NILF, _("warning: jobserver unavailable: using -j1. Add '+' to parent make rule.")); + arg_job_slots = 1; + } + + /* The user provided a -j setting on the command line so use it: we're + the master make of a new jobserver group. */ + else if (!restarts) + ON (error, NILF, + _("warning: -j%d forced in submake: resetting jobserver mode."), + argv_slots); + + /* We can't use our parent's jobserver, so reset. */ + reset_jobserver (); + } + + job_setup_complete: + + /* The extra indirection through $(MAKE_COMMAND) is done + for hysterical raisins. */ + +#ifdef VMS + if (vms_use_mcr_command) + define_variable_cname ("MAKE_COMMAND", vms_command (argv[0]), o_default, 0); + else + define_variable_cname ("MAKE_COMMAND", program, o_default, 0); +#else + define_variable_cname ("MAKE_COMMAND", argv[0], o_default, 0); +#endif + define_variable_cname ("MAKE", "$(MAKE_COMMAND)", o_default, 1); + + if (command_variables != 0) + { + struct command_variable *cv; + struct variable *v; + size_t len = 0; + char *value, *p; + + /* Figure out how much space will be taken up by the command-line + variable definitions. */ + for (cv = command_variables; cv != 0; cv = cv->next) + { + v = cv->variable; + len += 2 * strlen (v->name); + if (! v->recursive) + ++len; + ++len; + len += 2 * strlen (v->value); + ++len; + } + + /* Now allocate a buffer big enough and fill it. */ + p = value = alloca (len); + for (cv = command_variables; cv != 0; cv = cv->next) + { + v = cv->variable; + p = quote_for_env (p, v->name); + if (! v->recursive) + *p++ = ':'; + *p++ = '='; + p = quote_for_env (p, v->value); + *p++ = ' '; + } + p[-1] = '\0'; /* Kill the final space and terminate. */ + + /* Define an unchangeable variable with a name that no POSIX.2 + makefile could validly use for its own variable. */ + define_variable_cname ("-*-command-variables-*-", value, o_automatic, 0); + + /* Define the variable; this will not override any user definition. + Normally a reference to this variable is written into the value of + MAKEFLAGS, allowing the user to override this value to affect the + exported value of MAKEFLAGS. In POSIX-pedantic mode, we cannot + allow the user's setting of MAKEOVERRIDES to affect MAKEFLAGS, so + a reference to this hidden variable is written instead. */ + define_variable_cname ("MAKEOVERRIDES", "${-*-command-variables-*-}", + o_env, 1); +#ifdef VMS + vms_export_dcl_symbol ("MAKEOVERRIDES", "${-*-command-variables-*-}"); +#endif + } + + /* Read any stdin makefiles into temporary files. */ + + if (makefiles != 0) + { + 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; + char *newnm; + + if (stdin_offset >= 0) + O (fatal, NILF, + _("Makefile from standard input specified twice")); + + outfile = get_tmpfile (&newnm); + + while (!feof (stdin) && ! ferror (stdin)) + { + char buf[2048]; + size_t n = fread (buf, 1, sizeof (buf), stdin); + if (n > 0 && fwrite (buf, 1, n, outfile) != n) + OSS (fatal, NILF, + _("fwrite: temporary file %s: %s"), newnm, strerror (errno)); + } + fclose (outfile); + + /* Replace the name that read_all_makefiles will see with the name + of the temporary file. */ + makefiles->list[i] = strcache_add (newnm); + stdin_offset = i; + + free (newnm); + } + } + + /* Make sure the temporary file is never considered updated. */ + if (stdin_offset >= 0) + { + struct file *f = enter_file (makefiles->list[stdin_offset]); + f->updated = 1; + f->update_status = us_success; + f->command_state = cs_finished; + /* Can't be intermediate, or it'll be removed before make re-exec. */ + f->intermediate = 0; + f->dontcare = 0; + /* Avoid re-exec due to stdin temp file timestamps. */ + f->last_mtime = f->mtime_before_update = f_mtime (f, 0); + } + +#ifndef __EMX__ /* Don't use a SIGCHLD handler for OS/2 */ +#if !defined(HAVE_WAIT_NOHANG) || defined(MAKE_JOBSERVER) + /* Set up to handle children dying. This must be done before + 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 + children. + + If we're using the jobs pipe we need a signal handler so that SIGCHLD is + not ignored; we need it to interrupt the read(2) of the jobserver pipe if + we're waiting for a token. + + If none of these are true, we don't need a signal handler at all. */ + { +# if defined SIGCHLD + bsd_signal (SIGCHLD, child_handler); +# endif +# if defined SIGCLD && SIGCLD != SIGCHLD + bsd_signal (SIGCLD, child_handler); +# endif + } + +#ifdef HAVE_PSELECT + /* If we have pselect() then we need to block SIGCHLD so it's deferred. */ + { + sigset_t block; + sigemptyset (&block); + sigaddset (&block, SIGCHLD); + if (sigprocmask (SIG_SETMASK, &block, NULL) < 0) + pfatal_with_name ("sigprocmask(SIG_SETMASK, SIGCHLD)"); + } +#endif + +#endif +#endif + + /* Let the user send us SIGUSR1 to toggle the -d flag during the run. */ +#ifdef SIGUSR1 + bsd_signal (SIGUSR1, debug_signal_handler); +#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 + be converted into pattern rules. We used to do this in + 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 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 (); + + default_file = enter_file (strcache_add (".DEFAULT")); + + default_goal_var = define_variable_cname (".DEFAULT_GOAL", "", o_file, 0); + + /* Evaluate all strings provided with --eval. + Also set up the $(-*-eval-flags-*-) variable. */ + + if (eval_strings) + { + char *p, *endp, *value; + unsigned int i; + size_t 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, NULL); + free (p); + } + + p = endp = value = alloca (len); + for (i = 0; i < eval_strings->idx; ++i) + { + p = stpcpy (p, "--eval="); + p = quote_for_env (p, eval_strings->list[i]); + endp = p++; + *endp = ' '; + } + *endp = '\0'; + + define_variable_cname ("-*-eval-flags-*-", value, o_automatic, 0); + } + + { + int old_builtin_rules_flag = no_builtin_rules_flag; + int old_builtin_variables_flag = no_builtin_variables_flag; + int old_arg_job_slots = arg_job_slots; + + /* Read all the makefiles. */ + read_files = read_all_makefiles (makefiles == 0 ? 0 : makefiles->list); + + arg_job_slots = INVALID_JOB_SLOTS; + + /* Decode switches again, for variables set by the makefile. */ + decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME)); + + /* Clear GNUMAKEFLAGS to avoid duplication. */ + define_variable_cname (GNUMAKEFLAGS_NAME, "", o_override, 0); + + decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME)); +#if 0 + decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS")); +#endif + + /* If -j is not set in the makefile, or it was set on the command line, + reset to use the previous value. */ + if (arg_job_slots == INVALID_JOB_SLOTS || argv_slots != INVALID_JOB_SLOTS) + arg_job_slots = old_arg_job_slots; + + else if (jobserver_auth && arg_job_slots != old_arg_job_slots) + { + /* Makefile MAKEFLAGS set -j, but we already have a jobserver. + Make us the master of a new jobserver group. */ + if (!restarts) + ON (error, NILF, + _("warning: -j%d forced in makefile: resetting jobserver mode."), + arg_job_slots); + + /* We can't use our parent's jobserver, so reset. */ + reset_jobserver (); + } + + /* 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 -R was given, set -r too (doesn't make sense otherwise!) */ + if (no_builtin_variables_flag) + no_builtin_rules_flag = 1; + + /* 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 (); + } + +#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); +#endif /* WINDOWS32 */ + +#if defined (__MSDOS__) || defined (__EMX__) || defined (VMS) + /* We need to know what kind of shell we will be using. */ + { + extern int _is_unixy_shell (const char *_path); + struct variable *shv = lookup_variable (STRING_SIZE_TUPLE ("SHELL")); + extern int unixy_shell; + extern const char *default_shell; + + 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; + } + } +#endif /* __MSDOS__ || __EMX__ */ + + /* Final jobserver configuration. + + If we have jobserver_auth then we are a client in an existing jobserver + group, that's already been verified OK above. If we don't have + jobserver_auth and jobserver is enabled, then start a new jobserver. + + arg_job_slots = INVALID_JOB_SLOTS if we don't want -j in MAKEFLAGS + + arg_job_slots = # of jobs of parallelism + + job_slots = 0 for no limits on jobs, or when limiting via jobserver. + + job_slots = 1 for standard non-parallel mode. + + job_slots >1 for old-style parallelism without jobservers. */ + + if (jobserver_auth) + job_slots = 0; + else if (arg_job_slots == INVALID_JOB_SLOTS) + job_slots = 1; + else + job_slots = arg_job_slots; + +#if defined (__MSDOS__) || defined (__EMX__) || defined (VMS) + if (job_slots != 1 +# ifdef __EMX__ + && _osmode != OS2_MODE /* turn off -j if we are in DOS mode */ +# endif + ) + { + O (error, NILF, + _("Parallel jobs (-j) are not supported on this platform.")); + O (error, NILF, _("Resetting to single job (-j1) mode.")); + arg_job_slots = INVALID_JOB_SLOTS; + job_slots = 1; + } +#endif + + /* If we have >1 slot at this point, then we're a top-level make. + Set up the jobserver. + + 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 top + make, we just subtract one from the number the user wants. */ + + if (job_slots > 1 && jobserver_setup (job_slots - 1, jobserver_style)) + { + /* Fill in the jobserver_auth for our children. */ + jobserver_auth = jobserver_get_auth (); + + if (jobserver_auth) + { + /* We're using the jobserver so set job_slots to 0. */ + master_job_slots = job_slots; + job_slots = 0; + } + } + + /* If we're not using parallel jobs, then we don't need output sync. + This is so people can enable output sync in GNUMAKEFLAGS or similar, but + not have it take effect unless parallel builds are enabled. */ + if (syncing && job_slots == 1) + { + OUTPUT_UNSET (); + output_close (&make_sync); + syncing = 0; + output_sync = OUTPUT_SYNC_NONE; + } + + if (syncing) + { + /* If there is no mutex we're the base: create one. Else parse it. */ + if (!sync_mutex) + { + osync_setup (); + sync_mutex = osync_get_mutex (); + } + else if (!osync_parse_mutex (sync_mutex)) + { + /* Parsing failed; continue without output sync. */ + osync_clear (); + free (sync_mutex); + sync_mutex = NULL; + syncing = 0; + } + } + + if (jobserver_auth) + DB (DB_VERBOSE|DB_JOBS, (_("Using jobserver controller %s\n"), jobserver_auth)); + if (sync_mutex) + DB (DB_VERBOSE, (_("Using output-sync mutex %s\n"), sync_mutex)); + +#ifndef MAKE_SYMLINKS + if (check_symlink_flag) + { + O (error, NILF, _("Symbolic links not supported: disabling -L.")); + check_symlink_flag = 0; + } +#endif + + /* Set up MAKEFLAGS and MFLAGS again, so they will be right. */ + + define_makeflags (1, 0); + + /* Make each 'struct goaldep' point at the 'struct file' for the file + depended on. Also do magic for special targets. */ + + snap_deps (); + + /* Convert old-style suffix rules to pattern rules. It is important to + do this before installing the built-in pattern rules below, so that + makefile-specified suffix rules take precedence over built-in pattern + rules. */ + + convert_to_pattern (); + + /* Install the default implicit pattern rules. + This used to be done before reading the makefiles. + But in that case, built-in pattern rules were in the chain + before user-defined ones, so they matched first. */ + + install_default_implicit_rules (); + + /* Compute implicit rule limits and do magic for pattern rules. */ + + snap_implicit_rules (); + + /* Construct the listings of directories in VPATH lists. */ + + build_vpath_lists (); + + /* Mark files given with -o flags as very old and as having been updated + already, and files given with -W flags as brand new (time-stamp as far + as possible into the future). If restarts is set we'll do -W later. */ + + if (old_files != 0) + { + const char **p; + for (p = old_files->list; *p != 0; ++p) + { + struct file *f = enter_file (*p); + f->last_mtime = f->mtime_before_update = OLD_MTIME; + f->updated = 1; + f->update_status = us_success; + f->command_state = cs_finished; + } + } + + if (!restarts && new_files != 0) + { + 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; + } + } + + /* Initialize the remote job module. */ + remote_setup (); + + /* Dump any output we've collected. */ + + OUTPUT_UNSET (); + output_close (&make_sync); + + if (shuffle_mode) + DB (DB_BASIC, (_("Enabled shuffle mode: %s\n"), shuffle_mode)); + + if (read_files) + { + /* Update any makefiles if necessary. */ + + FILE_TIMESTAMP *makefile_mtimes; + struct goaldep *skipped_makefiles = NULL; + const char **nargv = (const char **) argv; + int any_failed = 0; + enum update_status status; + + DB (DB_BASIC, (_("Updating makefiles....\n"))); + + /* Count the makefiles, and reverse the order so that we attempt to + rebuild them in the order they were read. */ + { + unsigned int num_mkfiles = 0; + struct goaldep *d = read_files; + read_files = NULL; + while (d != NULL) + { + struct goaldep *t = d; + d = d->next; + t->next = read_files; + read_files = t; + ++num_mkfiles; + } + + makefile_mtimes = alloca (num_mkfiles * sizeof (FILE_TIMESTAMP)); + } + + /* Remove any makefiles we don't want to try to update. Record the + current modtimes of the others so we can compare them later. */ + { + struct goaldep *d = read_files; + struct goaldep *last = NULL; + unsigned int mm_idx = 0; + + while (d != 0) + { + int skip = 0; + struct file *f = d->file; + + /* Check for makefiles that are either phony or a :: target with + commands, but no dependencies. These will always be remade, + which will cause an infinite restart 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.) */ + + if (f->phony) + skip = 1; + else + for (f = f->double_colon; f != NULL; f = f->prev) + if (f->deps == NULL && f->cmds != NULL) + { + skip = 1; + break; + } + + if (!skip) + { + makefile_mtimes[mm_idx++] = file_mtime_no_search (d->file); + last = d; + d = d->next; + } + else + { + DB (DB_VERBOSE, + (_("Makefile '%s' might loop; not remaking it.\n"), + f->name)); + + if (last) + last->next = d->next; + else + read_files = d->next; + + if (d->error && ! (d->flags & RM_DONTCARE)) + { + /* This file won't be rebuilt, was not found, and we care, + so remember it to report later. */ + d->next = skipped_makefiles; + skipped_makefiles = d; + any_failed = 1; + } + else + free_goaldep (d); + + d = last ? last->next : read_files; + } + } + } + + /* Set up 'MAKEFLAGS' specially while remaking makefiles. */ + define_makeflags (1, 1); + + { + int orig_db_level = db_level; + + if (! ISDB (DB_MAKEFILES)) + db_level = DB_NONE; + + rebuilding_makefiles = 1; + status = update_goal_chain (read_files); + rebuilding_makefiles = 0; + + db_level = orig_db_level; + } + + /* Report errors for makefiles that needed to be remade but were not. */ + while (skipped_makefiles != NULL) + { + struct goaldep *d = skipped_makefiles; + const char *err = strerror (d->error); + + OSS (error, &d->floc, _("%s: %s"), dep_name (d), err); + + skipped_makefiles = skipped_makefiles->next; + free_goaldep (d); + } + + /* If we couldn't build something we need but otherwise we succeeded, + reset the status. */ + if (any_failed && status == us_success) + status = us_none; + + switch (status) + { + 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". */ + break; + + case us_none: + { + /* Reload any unloaded shared objects. Do not re-exec to have + that shared object loaded: a re-exec would cause an infinite + loop, because the shared object was not updated. */ + struct goaldep *d; + + for (d = read_files; d; d = d->next) + if (d->file->unloaded) + { + struct file *f = d->file; + /* Load the file. 0 means failure. */ + if (load_file (&d->floc, f, 0) == 0) + OS (fatal, &d->floc, _("%s: failed to load"), f->name); + f->unloaded = 0; + f->loaded = 1; + } + } + + /* No makefiles needed to be updated. If we couldn't read some + included file that we care about, fail. */ + if (0) + { + /* This runs afoul of https://savannah.gnu.org/bugs/?61226 + The problem is that many makefiles use a "dummy rule" to + pretend that an included file is rebuilt, without actually + rebuilding it, and this has always worked. There are a + number of solutions proposed in that bug but for now we'll + put things back so they work the way they did before. */ + struct goaldep *d; + + for (d = read_files; d != 0; d = d->next) + if (d->error && ! (d->flags & RM_DONTCARE)) + { + /* This makefile couldn't be loaded, and we care. */ + const char *err = strerror (d->error); + OSS (error, &d->floc, _("%s: %s"), dep_name (d), err); + any_failed = 1; + } + } + break; + + case us_failed: + /* Failed to update. Figure out if we care. */ + { + /* Nonzero if any makefile was successfully remade. */ + int any_remade = 0; + unsigned int i; + struct goaldep *d; + + for (i = 0, d = read_files; d != 0; ++i, d = d->next) + { + if (d->file->updated) + { + /* This makefile was updated. */ + if (d->file->update_status == us_success) + /* It was successfully updated. */ + any_remade |= (file_mtime_no_search (d->file) + != makefile_mtimes[i]); + else if (! (d->flags & RM_DONTCARE)) + { + FILE_TIMESTAMP mtime; + /* The update failed and this makefile was not + from the MAKEFILES variable, so we care. */ + OS (error, &d->floc, + _("Failed to remake makefile '%s'."), + d->file->name); + mtime = file_mtime_no_search (d->file); + any_remade |= (mtime != NONEXISTENT_MTIME + && mtime != makefile_mtimes[i]); + makefile_status = MAKE_FAILURE; + any_failed = 1; + } + } + + /* This makefile was not found at all. */ + else if (! (d->flags & RM_DONTCARE)) + { + const char *dnm = dep_name (d); + + /* This is a makefile we care about. See how much. */ + if (d->flags & RM_INCLUDED) + /* An included makefile. We don't need to die, but we + do want to complain. */ + OS (error, &d->floc, + _("Included makefile '%s' was not found."), dnm); + else + { + /* A normal makefile. We must die later. */ + OS (error, NILF, _("Makefile '%s' was not found"), dnm); + any_failed = 1; + } + } + } + + if (any_remade) + goto re_exec; + + break; + } + + case us_success: + re_exec: + /* Updated successfully. Re-exec ourselves. */ + + remove_intermediates (0); + + if (print_data_base_flag) + print_data_base (); + + clean_jobserver (0); + + if (makefiles != 0) + { + /* Makefile names might have changed due to expansion. + It's possible we'll need one extra argument: + make -Rf- + will expand to: + make -R --temp-stdin= + so allocate more space. + */ + int mfidx = 0; + char** av = argv; + const char** nv; + + nv = nargv = alloca (sizeof (char*) * (argc + 1 + 1)); + *(nv++) = *(av++); + + for (; *av; ++av, ++nv) + { + char *f; + char *a = *av; + const char *mf = makefiles->list[mfidx]; + + assert (strlen (a) > 0); + + *nv = a; + + /* Not an option: we handled option args earlier. */ + if (a[0] != '-') + continue; + + /* See if this option specifies a filename. If so we need + to replace it with the value from makefiles->list. + + To simplify, we'll replace all possible versions of this + flag with a simple "-f". */ + + /* Handle long options. */ + if (a[1] == '-') + { + if (strcmp (a, "--file") == 0 || strcmp (a, "--makefile") == 0) + /* Skip the next arg as we'll combine them. */ + ++av; + else if (!strneq (a, "--file=", 7) + && !strneq (a, "--makefile=", 11)) + continue; + + if (mfidx == stdin_offset) + { + char *na = alloca (CSTRLEN ("--temp-stdin=") + + strlen (mf) + 1); + sprintf (na, "--temp-stdin=%s", mf); + *nv = na; + } + else + { + char *na = alloca (strlen (mf) + 3); + sprintf (na, "-f%s", mf); + *nv = na; + } + + ++mfidx; + continue; + } + + /* Handle short options. If 'f' is the last option, it may + be followed by . */ + f = strchr (a, 'f'); + if (!f) + continue; + + /* If there's an extra argument option skip it. */ + if (f[1] == '\0') + ++av; + + if (mfidx == stdin_offset) + { + const size_t al = f - a; + char *na; + + if (al > 1) + { + /* Preserve the prior options. */ + na = alloca (al + 1); + memcpy (na, a, al); + na[al] = '\0'; + *(nv++) = na; + } + + /* Remove the "f" and any subsequent content. */ + na = alloca (CSTRLEN ("--temp-stdin=") + strlen (mf) + 1); + sprintf (na, "--temp-stdin=%s", mf); + *nv = na; + } + else if (f[1] == '\0') + /* -f or -xyzf . Replace the name. */ + *(++nv) = mf; + else + { + /* -f or -xyzf. */ + const size_t al = f - a + 1; + const size_t ml = strlen (mf) + 1; + char *na = alloca (al + ml); + memcpy (na, a, al); + memcpy (na + al, mf, ml); + *nv = na; + } + + ++mfidx; + } + + *nv = NULL; + } + + 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) + O (fatal, NILF, + _("Couldn't change back to original directory")); + } + + ++restarts; + + if (ISDB (DB_BASIC)) + { + const char **p; + printf (_("Re-executing[%u]:"), restarts); + for (p = nargv; *p != 0; ++p) + printf (" %s", *p); + putchar ('\n'); + fflush (stdout); + } + +#ifndef _AMIGA + { + char **p; + for (p = environ; *p != 0; ++p) + { + if (strneq (*p, MAKELEVEL_NAME "=", MAKELEVEL_LENGTH+1)) + { + *p = alloca (40); + sprintf (*p, "%s=%u", MAKELEVEL_NAME, makelevel); +#ifdef VMS + vms_putenv_symbol (*p); +#endif + } + else if (strneq (*p, "MAKE_RESTARTS=", CSTRLEN ("MAKE_RESTARTS="))) + { + *p = alloca (40); + sprintf (*p, "MAKE_RESTARTS=%s%u", + OUTPUT_IS_TRACED () ? "-" : "", restarts); + restarts = 0; + } + } + } +#else /* AMIGA */ + { + char buffer[256]; + + sprintf (buffer, "%u", makelevel); + SetVar (MAKELEVEL_NAME, buffer, -1, GVF_GLOBAL_ONLY); + + 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=%s%u", + OUTPUT_IS_TRACED () ? "-" : "", restarts); + putenv (b); + } + + fflush (stdout); + fflush (stderr); + + osync_clear(); + + /* The exec'd "child" will be another make, of course. */ + jobserver_pre_child(1); + +#ifdef _AMIGA + 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. */ + pid_t pid; + int r; + struct childbase child; + child.cmd_name = NULL; + child.output.syncout = 0; + child.environment = environ; + + pid = child_execute_job (&child, 1, nargv); + + /* 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 +#ifdef SET_STACK_SIZE + /* Reset limits, if necessary. */ + if (stack_limit.rlim_cur) + setrlimit (RLIMIT_STACK, &stack_limit); +#endif + exec_command ((char **)nargv, environ); +#endif + jobserver_post_child(1); + + temp_stdin_unlink (); + + _exit (127); + } + + if (any_failed) + die (MAKE_FAILURE); + } + + /* Set up 'MAKEFLAGS' again for the normal targets. */ + define_makeflags (1, 0); + + /* Set always_make_flag if -B was given. */ + always_make_flag = always_make_set; + + /* If restarts is set we haven't set up -W files yet, so do that now. */ + if (restarts && new_files != 0) + { + 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; + } + } + + temp_stdin_unlink (); + + /* If there were no command-line goals, use the default. */ + if (goals == 0) + { + char *p; + + if (default_goal_var->recursive) + p = variable_expand (default_goal_var->value); + else + { + p = variable_buffer_output (variable_buffer, default_goal_var->value, + strlen (default_goal_var->value)); + *p = '\0'; + p = variable_buffer; + } + + if (*p != '\0') + { + struct file *f = lookup_file (p); + + /* If .DEFAULT_GOAL is a non-existent target, enter it into the + table and let the standard logic sort it out. */ + if (f == 0) + { + struct nameseq *ns; + + ns = PARSE_SIMPLE_SEQ (&p, struct nameseq); + if (ns) + { + /* .DEFAULT_GOAL should contain one target. */ + if (ns->next != 0) + O (fatal, NILF, + _(".DEFAULT_GOAL contains more than one target")); + + f = enter_file (strcache_add (ns->name)); + + ns->name = 0; /* It was reused by enter_file(). */ + free_ns_chain (ns); + } + } + + if (f) + { + goals = alloc_goaldep (); + goals->file = f; + } + } + } + else + lastgoal->next = 0; + + + if (!goals) + { + struct variable *v = lookup_variable (STRING_SIZE_TUPLE ("MAKEFILE_LIST")); + if (v && v->value && v->value[0] != '\0') + O (fatal, NILF, _("No targets")); + + O (fatal, NILF, _("No targets specified and no makefile found")); + } + + /* Shuffle prerequisites to catch makefiles with incomplete depends. */ + + shuffle_goaldeps_recursive (goals); + + /* Update the goals. */ + + DB (DB_BASIC, (_("Updating goal targets....\n"))); + + { + switch (update_goal_chain (goals)) + { + case us_none: + /* Nothing happened. */ + /* FALLTHROUGH */ + case us_success: + /* Keep the previous result. */ + break; + case us_question: + /* We are under -q and would run some commands. */ + makefile_status = MAKE_TROUBLE; + break; + case us_failed: + /* Updating failed. POSIX.2 specifies exit status >1 for this; */ + makefile_status = MAKE_FAILURE; + break; + } + + /* If we detected some clock skew, generate one last warning */ + if (clock_skew_detected) + O (error, NILF, + _("warning: Clock skew detected. Your build may be incomplete.")); + + /* Exit. */ + die (makefile_status); + } + + /* NOTREACHED */ + exit (MAKE_SUCCESS); +} + +/* 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]))]; + +/* Fill in the string and vector for getopt. */ +static void +init_switches (void) +{ + char *p; + unsigned int c; + unsigned int i; + + if (options[0] != '\0') + /* Already done. */ + return; + + p = options; + + /* Return switch and non-switch args in order, regardless of + POSIXLY_CORRECT. Non-switch args are returned as option 1. */ + *p++ = '-'; + + for (i = 0; switches[i].c != '\0'; ++i) + { + long_options[i].name = (char *) (switches[i].long_name == 0 ? "" : + switches[i].long_name); + long_options[i].flag = 0; + long_options[i].val = switches[i].c; + if (short_option (switches[i].c)) + *p++ = (char) 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 strlist: + 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; + } + } + *p = '\0'; + for (c = 0; c < (sizeof (long_option_aliases) / + 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 (const char *arg, int env) +{ + struct variable *v; + + if (arg[0] == '-' && arg[1] == '\0') + /* Ignore plain '-' for compatibility. */ + return; + +#ifdef VMS + { + /* VMS DCL quoting can result in foo="bar baz" showing up here. + Need to remove the double quotes from the value. */ + char * eq_ptr; + char * new_arg; + eq_ptr = strchr (arg, '='); + if ((eq_ptr != NULL) && (eq_ptr[1] == '"')) + { + int len; + int seg1; + int seg2; + len = strlen(arg); + new_arg = alloca(len); + seg1 = eq_ptr - arg + 1; + strncpy(new_arg, arg, (seg1)); + seg2 = len - seg1 - 1; + strncpy(&new_arg[seg1], &eq_ptr[2], seg2); + new_arg[seg1 + seg2] = 0; + if (new_arg[seg1 + seg2 - 1] == '"') + new_arg[seg1 + seg2 - 1] = 0; + arg = new_arg; + } + } +#endif + 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. */ + 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; + } + } + 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. */ + struct file *f = enter_file (strcache_add (expand_command_line_file (arg))); + f->cmd_target = 1; + + if (goals == 0) + { + goals = alloc_goaldep (); + lastgoal = goals; + } + else + { + lastgoal->next = alloc_goaldep (); + lastgoal = lastgoal->next; + } + + lastgoal->file = f; + + { + /* Add this target name to the MAKECMDGOALS variable. */ + struct variable *gv; + const char *value; + + gv = lookup_variable (STRING_SIZE_TUPLE ("MAKECMDGOALS")); + if (gv == 0) + value = f->name; + else + { + /* Paste the old and new values together */ + size_t oldlen, newlen; + char *vp; + + oldlen = strlen (gv->value); + newlen = strlen (f->name); + vp = alloca (oldlen + 1 + newlen + 1); + memcpy (vp, gv->value, oldlen); + vp[oldlen] = ' '; + memcpy (&vp[oldlen + 1], f->name, newlen + 1); + value = vp; + } + define_variable_cname ("MAKECMDGOALS", value, o_default, 0); + } + } +} + +/* Decode switches from ARGC and ARGV. + They came from the environment if ENV is nonzero. */ + +static void +decode_switches (int argc, const char **argv, int env) +{ + int bad = 0; + const struct command_switch *cs; + struct stringlist *sl; + int c; + + /* getopt does most of the parsing for us. + First, get its vectors set up. */ + + init_switches (); + + /* Let getopt produce error messages for the command line, + but not for options from the environment. */ + opterr = !env; + /* Reset getopt's state. */ + optind = 0; + + while (optind < argc) + { + const char *coptarg; + + /* Parse the next argument. */ + c = getopt_long (argc, (char *const *)argv, options, long_options, NULL); + coptarg = optarg; + if (c == EOF) + /* End of arguments, or "--" marker seen. */ + break; + else if (c == 1) + /* An argument not starting with a dash. */ + handle_non_switch_argument (coptarg, 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; + 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 strlist: + case filename: + if (!doit) + break; + + if (! coptarg) + coptarg = cs->noarg_value; + else if (*coptarg == '\0') + { + char opt[2] = "c"; + const char *op = opt; + + if (short_option (cs->c)) + opt[0] = (char) cs->c; + else + op = cs->long_name; + + error (NILF, strlen (op), + _("the '%s%s' option requires a non-empty string argument"), + short_option (cs->c) ? "-" : "--", op); + bad = 1; + break; + } + + if (cs->type == string) + { + char **val = (char **)cs->value_ptr; + free (*val); + *val = xstrdup (coptarg); + break; + } + + 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->max * sizeof (char *)); + } + + /* Filter out duplicate options. + * Allow duplicate makefiles for backward compatibility. */ + if (cs->c != 'f') + { + unsigned int k; + for (k = 0; k < sl->idx; ++k) + if (streq (sl->list[k], coptarg)) + break; + if (k < sl->idx) + break; + } + + if (cs->type == strlist) + sl->list[sl->idx++] = xstrdup (coptarg); + else if (cs->c == TEMP_STDIN_OPT) + { + if (stdin_offset > 0) + fatal (NILF, 0, "INTERNAL: multiple --temp-stdin options provided!"); + /* We don't need to expand the temp file. */ + stdin_offset = sl->idx; + sl->list[sl->idx++] = strcache_add (coptarg); + } + else + sl->list[sl->idx++] = expand_command_line_file (coptarg); + sl->list[sl->idx] = 0; + break; + + case positive_int: + /* See if we have an option argument; if we do require that + it's all digits, not something like "10foo". */ + if (coptarg == 0 && argc > optind) + { + const char *cp; + for (cp=argv[optind]; ISDIGIT (cp[0]); ++cp) + ; + if (cp[0] == '\0') + coptarg = argv[optind++]; + } + + if (!doit) + break; + + if (coptarg) + { + const char *err; + unsigned int i = make_toui (coptarg, &err); + + if (err || i == 0) + { + error (NILF, 0, + _("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; + + case floating: + if (coptarg == 0 && optind < argc + && (ISDIGIT (argv[optind][0]) || argv[optind][0] == '.')) + coptarg = argv[optind++]; + + if (doit) + *(double *) cs->value_ptr = (coptarg != 0 ? atof (coptarg) + : *(double *) cs->noarg_value); + + break; + } + + /* We've found the switch. Stop looking. */ + break; + } + } + + /* There are no more options according to getting getopt, but there may + be some arguments left. Since we have asked for non-option arguments + to be returned in order, this only happens when there is a "--" + argument to prevent later arguments from being options. */ + while (optind < argc) + handle_non_switch_argument (argv[optind++], env); + + if (bad && !env) + print_usage (bad); + + /* If there are any options that need to be decoded do it now. */ + decode_debug_flags (); + decode_output_sync_flags (); + + /* Perform any special switch handling. */ + run_silent = silent_flag; + + /* Construct the list of include directories to search. */ + construct_include_path (include_dirs ? include_dirs->list : NULL); +} + +/* Decode switches from environment variable ENVAR (which is LEN chars long). + We do this by chopping the value into a vector of words, prepending a + dash to the first word if it lacks one, and passing the vector to + decode_switches. */ + +void +decode_env_switches (const char *envar, size_t len) +{ + char *varref = alloca (2 + len + 2); + char *value, *p, *buf; + int argc; + const char **argv; + + /* Get the variable's value. */ + p = varref; + *(p++) = '$'; + *(p++) = '('; + p = mempcpy (p, envar, len); + *(p++) = ')'; + *p = '\0'; + value = variable_expand (varref); + + /* Skip whitespace, and check for an empty value. */ + NEXT_TOKEN (value); + len = strlen (value); + if (len == 0) + return; + + /* Allocate a vector that is definitely big enough. */ + argv = alloca ((1 + len + 1) * sizeof (char *)); + + /* getopt will look at the arguments starting at ARGV[1]. + Prepend a spacer word. */ + argv[0] = ""; + argc = 1; + + /* We need a buffer to copy the value into while we split it into words + and unquote it. Set up in case we need to prepend a dash later. */ + buf = alloca (1 + len + 1); + buf[0] = '-'; + p = buf+1; + argv[argc] = p; + while (*value != '\0') + { + if (*value == '\\' && value[1] != '\0') + ++value; /* Skip the backslash. */ + else if (ISBLANK (*value)) + { + /* End of the word. */ + *p++ = '\0'; + argv[++argc] = p; + do + ++value; + while (ISBLANK (*value)); + continue; + } + *p++ = *value++; + } + *p = '\0'; + argv[++argc] = 0; + assert (p < buf + len + 2); + + if (argv[1][0] != '-' && strchr (argv[1], '=') == 0) + /* The first word doesn't start with a dash and isn't a variable + definition, so add a dash. */ + argv[1] = buf; + + /* Parse those words. */ + decode_switches (argc, argv, 1); +} + +/* Quote the string IN so that it will be interpreted as a single word with + no magic by decode_env_switches; also double dollar signs to avoid + variable expansion in make itself. Write the result into OUT, returning + the address of the next character to be written. + Allocating space for OUT twice the length of IN is always sufficient. */ + +static char * +quote_for_env (char *out, const char *in) +{ + while (*in != '\0') + { + if (*in == '$') + *out++ = '$'; + else if (ISBLANK (*in) || *in == '\\') + *out++ = '\\'; + *out++ = *in++; + } + + return out; +} + +/* 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. */ + +static struct variable * +define_makeflags (int all, int makefile) +{ + const char ref[] = "MAKEOVERRIDES"; + const char posixref[] = "-*-command-variables-*-"; + const char evalref[] = "$(-*-eval-flags-*-)"; + const struct command_switch *cs; + struct variable *v; + char *flagstring; + char *p; + + /* 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. */ + + struct flag + { + struct flag *next; + const struct command_switch *cs; + const char *arg; + }; + struct flag *flags = 0; + struct flag *last = 0; + size_t flagslen = 0; +#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); \ + } 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 ((cs->default_value != 0 + && (*(unsigned int *) cs->value_ptr + == *(unsigned int *) cs->default_value))) + break; + 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; + + case floating: + if (cs->default_value != 0 + && (*(double *) cs->value_ptr == *(double *) cs->default_value)) + break; + 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; + + case string: + p = *((char **)cs->value_ptr); + if (p) + ADD_FLAG (p, strlen (p)); + break; + + case filename: + case strlist: + { + 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) + 4 + CSTRLEN (evalref) + 4; + + /* 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; + + /* Start with a dash, for MFLAGS. */ + *p++ = '-'; + + /* Add simple options as a group. */ + while (flags != 0 && !flags->arg && short_option (flags->cs->c)) + { + *p++ = (char) 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++ = (char) flags->cs->c; + else + { + /* Long options require a double-dash. */ + *p++ = '-'; + p = stpcpy (p, flags->cs->long_name); + } + /* 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; + } + + /* If no flags at all, get rid of the initial dash. */ + if (p == &flagstring[1]) + { + flagstring[0] = '\0'; + p = flagstring; + } + + /* 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 + (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) + { + *p++ = ' '; + p = mempcpy (p, evalref, CSTRLEN (evalref)); + } + + if (all) + { + /* If there are any overrides to add, write a reference to + $(MAKEOVERRIDES), which contains command-line variable definitions. + Separate the variables from the switches with a "--" arg. */ + + const char *r = posix_pedantic ? posixref : ref; + size_t l = strlen (r); + v = lookup_variable (r, l); + + if (v && v->value && v->value[0] != '\0') + { + p = stpcpy (p, " -- "); + *(p++) = '$'; + *(p++) = '('; + p = mempcpy (p, r, l); + *(p++) = ')'; + } + } + + /* If there is a leading dash, omit it. */ + if (flagstring[0] == '-') + ++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. 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. */ + v = define_variable_cname (MAKEFLAGS_NAME, flagstring, + env_overrides ? o_env_override : o_file, 1); + v->special = 1; + + return v; +} + +/* Print version information. */ + +static void +print_version (void) +{ + static int printed_version = 0; + + const char *precede = print_data_base_flag ? "# " : ""; + + if (printed_version) + /* Do it only once. */ + return; + + printf ("%sGNU Make %s\n", precede, version_string); + + if (!remote_description || *remote_description == '\0') + printf (_("%sBuilt for %s\n"), precede, make_host); + else + printf (_("%sBuilt for %s (%s)\n"), + precede, make_host, remote_description); + + /* Print this untranslated. The coding standards recommend translating the + (C) to the copyright symbol, but this string is going to change every + year, and none of the rest of it should be translated (including the + word "Copyright"), so it hardly seems worth it. */ + + printf ("%sCopyright (C) 1988-2022 Free Software Foundation, Inc.\n", + precede); + + printf (_("%sLicense GPLv3+: GNU GPL version 3 or later \n\ +%sThis is free software: you are free to change and redistribute it.\n\ +%sThere is NO WARRANTY, to the extent permitted by law.\n"), + precede, precede, precede); + + printed_version = 1; +} + +/* Print a bunch of information about this and that. */ + +static void +print_data_base (void) +{ + time_t when = time ((time_t *) 0); + + print_version (); + + printf (_("\n# Make data base, printed on %s"), ctime (&when)); + + print_variable_data_base (); + print_dir_data_base (); + print_rule_data_base (); + print_file_data_base (); + print_vpath_data_base (); + strcache_print_stats ("#"); + + when = time ((time_t *) 0); + printf (_("\n# Finished Make data base on %s\n"), ctime (&when)); +} + +static void +clean_jobserver (int status) +{ + /* Sanity: have we written all our jobserver tokens back? If our + exit status is 2 that means some kind of syntax error; we might not + have written all our tokens so do that now. If tokens are left + after any other error code, that's bad. */ + + if (jobserver_enabled() && jobserver_tokens) + { + if (status != 2) + ON (error, NILF, + "INTERNAL: Exiting with %u jobserver tokens (should be 0)!", + jobserver_tokens); + else + /* Don't write back the "free" token */ + while (--jobserver_tokens) + jobserver_release (0); + } + + + /* Sanity: If we're the master, were all the tokens written back? */ + + if (master_job_slots) + { + /* We didn't write one for ourself, so start at 1. */ + unsigned int tokens = 1 + jobserver_acquire_all (); + + if (tokens != master_job_slots) + ONN (error, NILF, + "INTERNAL: Exiting with %u jobserver tokens available; should be %u!", + tokens, master_job_slots); + + reset_jobserver (); + } +} + +/* Exit with STATUS, cleaning up as necessary. */ + +void +die (int status) +{ + static char dying = 0; + + if (!dying) + { + int err; + + dying = 1; + + if (print_version_flag) + print_version (); + + /* Get rid of a temp file from reading a makefile from stdin. */ + temp_stdin_unlink (); + + /* Wait for children to die. */ + err = (status != 0); + while (job_slots_used > 0) + reap_children (1, err); + + /* Let the remote job module clean up its state. */ + remote_cleanup (); + + /* Remove the intermediate files. */ + remove_intermediates (0); + + if (print_data_base_flag) + print_data_base (); + + if (verify_flag) + verify_file_data_base (); + + clean_jobserver (status); + + if (output_context) + { + /* die() might be called in a recipe output context due to an + $(error ...) function. */ + output_close (output_context); + + if (output_context != &make_sync) + output_close (&make_sync); + + OUTPUT_UNSET (); + } + + output_close (NULL); + + osync_clear (); + + /* 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 + of relative pathnames fail. */ + if (directory_before_chdir != 0) + { + /* If it fails we don't care: shut up GCC. */ + int _x UNUSED; + _x = chdir (directory_before_chdir); + } + } + + exit (status); +} diff --git a/local/recipes/dev/gnu-make/source/src/makeint.h b/local/recipes/dev/gnu-make/source/src/makeint.h new file mode 100644 index 0000000000..c726abe08e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/makeint.h @@ -0,0 +1,881 @@ +/* Miscellaneous global declarations and portability cruft for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +/* We use 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 makeint.h was found in $srcdir). */ +#include +#undef HAVE_CONFIG_H +#define HAVE_CONFIG_H 1 + +/* Specify we want GNU source code. This must be defined before any + system headers are included. */ + +#define _GNU_SOURCE 1 + +/* AIX requires this to be the first thing in the file. */ +#if HAVE_ALLOCA_H +# include +#else +# ifdef _AIX + #pragma alloca +# else +# if !defined(__GNUC__) && !defined(WINDOWS32) +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +#endif + +/* Some versions of GCC (e.g., 10.x) set the warn_unused_result attribute on + __builtin_alloca. This causes alloca(0) to fail and is not easily worked + around so avoid it via the preprocessor. + See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98055 */ + +#if defined (__has_builtin) +# if __has_builtin (__builtin_alloca) +# define free_alloca() +# else +# define free_alloca() alloca (0) +# endif +#else +# define free_alloca() alloca (0) +#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 so + that the declaration therein is changed. */ +# define signal bsdsignal +#endif + +/* If we're compiling for the dmalloc debugger, turn off string inlining. */ +#if defined(HAVE_DMALLOC_H) && defined(__GNUC__) +# define __NO_STRING_INLINES +#endif + +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_SYS_TIMEB_H +/* SCO 3.2 "devsys 4.2" has a prototype for 'ftime' in that bombs + unless has been included first. */ +# include +#endif +#if HAVE_SYS_TIME_H +# include +#endif +#include + +#include + +#ifndef errno +extern int errno; +#endif + +#ifdef __VMS +/* In strict ANSI mode, VMS compilers should not be defining the + VMS macro. Define it here instead of a bulk edit for the correct code. + */ +# ifndef VMS +# define VMS +# endif +#endif + +#ifdef HAVE_UNISTD_H +# include +/* Ultrix's unistd.h always defines _POSIX_VERSION, but you only get + POSIX.1 behavior with 'cc -YPOSIX', which predefines POSIX itself! */ +# if defined (_POSIX_VERSION) && !defined (ultrix) && !defined (VMS) +# define POSIX 1 +# endif +#endif + +/* Some systems define _POSIX_VERSION but are not really POSIX.1. */ +#if (defined (butterfly) || (defined (__mips) && defined (_SYSTYPE_SVR3)) || (defined (sequent) && defined (i386))) +# undef POSIX +#endif + +#if !defined (POSIX) && defined (_AIX) && defined (_POSIX_SOURCE) +# define POSIX 1 +#endif + +#ifndef sigmask +# define sigmask(sig) (1 << ((sig) - 1)) +#endif + +#ifndef HAVE_SA_RESTART +# define SA_RESTART 0 +#endif + +#ifdef HAVE_VFORK_H +# include +#endif + +#ifdef HAVE_LIMITS_H +# include +#endif +#ifdef HAVE_SYS_PARAM_H +# include +#endif + +#ifndef PATH_MAX +# ifdef MAXPATHLEN +# define PATH_MAX MAXPATHLEN +# else +/* Some systems (HURD) have fully dynamic pathnames with no maximum. + Ideally we'd support this but it will take some work. */ +# define PATH_MAX 4096 +# endif +#endif + +#ifdef PATH_MAX +# define GET_PATH_MAX PATH_MAX +# define PATH_VAR(var) char var[PATH_MAX+1] +#else +# define NEED_GET_PATH_MAX 1 +# define GET_PATH_MAX (get_path_max ()) +# define PATH_VAR(var) char *var = alloca (GET_PATH_MAX+1) +unsigned int get_path_max (void); +#endif + +#ifndef CHAR_BIT +# define CHAR_BIT 8 +#endif + +#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. */ +#define INTEGER_TYPE_MINIMUM(t) \ + (! INTEGER_TYPE_SIGNED (t) ? (t) 0 : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)) +#define INTEGER_TYPE_MAXIMUM(t) (~ (t) 0 - INTEGER_TYPE_MINIMUM (t)) + +#ifndef CHAR_MAX +# define CHAR_MAX INTEGER_TYPE_MAXIMUM (char) +#endif + +#ifdef STAT_MACROS_BROKEN +# ifdef S_ISREG +# undef S_ISREG +# endif +# ifdef S_ISDIR +# undef S_ISDIR +# endif +#endif /* STAT_MACROS_BROKEN. */ + +#ifndef S_ISREG +# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) +#endif +#ifndef S_ISDIR +# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +#endif + +#ifdef VMS +# include +# include +# include +# include +# include +/* Needed to use alloca on VMS. */ +# include + +extern int vms_use_mcr_command; +extern int vms_always_use_cmd_file; +extern int vms_gnv_shell; +extern int vms_comma_separator; +extern int vms_legacy_behavior; +extern int vms_unix_simulation; +#endif + +#if !defined(__attribute__) && (__GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__) +/* Don't use __attribute__ if it's not supported. */ +# define ATTRIBUTE(x) +#else +# define ATTRIBUTE(x) __attribute__ (x) +#endif + +/* 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 +# define __printf__ printf +#endif + +#define UNUSED ATTRIBUTE ((unused)) +#define NORETURN ATTRIBUTE ((noreturn)) + +#if defined (STDC_HEADERS) || defined (__GNU_LIBRARY__) +# include +# include +# define ANSI_STRING 1 +#else /* No standard headers. */ +# ifdef HAVE_STRING_H +# include +# define ANSI_STRING 1 +# else +# include +# endif +# ifdef HAVE_MEMORY_H +# include +# endif +# ifdef HAVE_STDLIB_H +# include +# else +void *malloc (int); +void *realloc (void *, int); +void free (void *); + +void abort (void) NORETURN; +void exit (int) NORETURN; +# endif /* HAVE_STDLIB_H. */ + +#endif /* Standard headers. */ + +/* These should be in stdlib.h. Make sure we have them. */ +#ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +#endif +#ifndef EXIT_FAILURE +# define EXIT_FAILURE 1 +#endif + +#ifndef ANSI_STRING + +/* SCO Xenix has a buggy macro definition in . */ +#undef strerror +#if !defined(__DECC) +char *strerror (int errnum); +#endif + +#endif /* !ANSI_STRING. */ +#undef ANSI_STRING + +#if HAVE_INTTYPES_H +# include +#endif +#if HAVE_STDINT_H +# include +#endif + +#if defined _MSC_VER || defined __MINGW32__ +# define MK_PRI64_PREFIX "I64" +#else +# define MK_PRI64_PREFIX "ll" +#endif +#ifndef PRIdMAX +# define PRIdMAX MK_PRI64_PREFIX "d" +#endif +#ifndef PRIuMAX +# define PRIuMAX MK_PRI64_PREFIX "u" +#endif +#ifndef SCNdMAX +# define SCNdMAX PRIdMAX +#endif +#define FILE_TIMESTAMP uintmax_t + +#if !defined(HAVE_STRSIGNAL) +char *strsignal (int signum); +#endif + +#if !defined(HAVE_UMASK) +typedef int mode_t; +extern mode_t umask (mode_t); +#endif + +/* ISDIGIT offers the following features: + - Its arg may be any int or unsigned int; it need not be an unsigned char. + - It's guaranteed to evaluate its argument exactly once. + NOTE! Make relies on this behavior, don't change it! + - 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 + host does not conform to POSIX. */ +#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9) + +/* Test if two strings are equal. Is this worthwhile? Should be profiled. */ +#define streq(a, b) \ + ((a) == (b) || \ + (*(a) == *(b) && (*(a) == '\0' || !strcmp ((a) + 1, (b) + 1)))) + +/* Test if two strings are equal, but match case-insensitively on systems + which have case-insensitive filesystems. Should only be used for + filenames! */ +#ifdef HAVE_CASE_INSENSITIVE_FS +# define patheq(a, b) \ + ((a) == (b) \ + || (tolower((unsigned char)*(a)) == tolower((unsigned char)*(b)) \ + && (*(a) == '\0' || !strcasecmp ((a) + 1, (b) + 1)))) +#else +# define patheq(a, b) streq(a, b) +#endif + +#define strneq(a, b, l) (strncmp ((a), (b), (l)) == 0) + +#if defined(ENUM_BITFIELDS) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define ENUM_BITFIELD(bits) :bits +#else +# define ENUM_BITFIELD(bits) +#endif + +/* Handle gettext and locales. */ + +#if HAVE_LOCALE_H +# include +#else +# define setlocale(category, locale) +#endif + +#include + +#define _(msgid) gettext (msgid) +#define N_(msgid) gettext_noop (msgid) +#define S_(msg1,msg2,num) ngettext (msg1,msg2,num) + +/* This is needed for getcwd() and chdir(), on some W32 systems. */ +#if defined(HAVE_DIRECT_H) +# include +#endif + +#ifdef WINDOWS32 +# include +# include +# define pipe(_p) _pipe((_p), 512, O_BINARY) +# define kill(_pid,_sig) w32_kill((_pid),(_sig)) +/* MSVC and Watcom C don't have ftruncate. */ +# if defined(_MSC_VER) || defined(__WATCOMC__) +# 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); +int find_and_set_default_shell (const char *token); + +/* indicates whether or not we have Bourne shell */ +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 */ + +/* ALL_SET() evaluates the second argument twice. */ +#define ANY_SET(_v,_m) (((_v)&(_m)) != 0) +#define NONE_SET(_v,_m) (! ANY_SET ((_v),(_m))) +#define ALL_SET(_v,_m) (((_v)&(_m)) == (_m)) + +#define MAP_NUL 0x0001 +#define MAP_BLANK 0x0002 /* space, TAB */ +#define MAP_NEWLINE 0x0004 +#define MAP_COMMENT 0x0008 +#define MAP_SEMI 0x0010 +#define MAP_EQUALS 0x0020 +#define MAP_COLON 0x0040 +#define MAP_VARSEP 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 directory separators is OS-specific. */ +#define MAP_DIRSEP 0x8000 + +#ifdef VMS +# define MAP_VMSCOMMA MAP_COMMA +#else +# define MAP_VMSCOMMA 0x0000 +#endif + +#define MAP_SPACE (MAP_BLANK|MAP_NEWLINE) + +/* 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 ';' +# define MAP_PATHSEP MAP_SEMI +#elif !defined(PATH_SEPARATOR_CHAR) +# if defined (VMS) +# define PATH_SEPARATOR_CHAR (vms_comma_separator ? ',' : ':') +# define MAP_PATHSEP (vms_comma_separator ? MAP_COMMA : MAP_SEMI) +# else +# define PATH_SEPARATOR_CHAR ':' +# define MAP_PATHSEP MAP_COLON +# endif +#elif PATH_SEPARATOR_CHAR == ':' +# define MAP_PATHSEP MAP_COLON +#elif PATH_SEPARATOR_CHAR == ';' +# define MAP_PATHSEP MAP_SEMI +#elif PATH_SEPARATOR_CHAR == ',' +# define MAP_PATHSEP MAP_COMMA +#else +# error "Unknown PATH_SEPARATOR_CHAR" +#endif + +#define STOP_SET(_v,_m) ANY_SET(stopchar_map[(unsigned char)(_v)],(_m)) + +/* True if C is a directory separator on the current system. */ +#define ISDIRSEP(c) STOP_SET((c),MAP_DIRSEP) +/* True if C is whitespace but not newline. */ +#define ISBLANK(c) STOP_SET((c),MAP_BLANK) +/* True if C is whitespace including newlines. */ +#define ISSPACE(c) STOP_SET((c),MAP_SPACE) +/* True if C is nul or whitespace (including newline). */ +#define END_OF_TOKEN(c) STOP_SET((c),MAP_SPACE|MAP_NUL) +/* Move S past all whitespace (including newlines). */ +#define NEXT_TOKEN(s) while (ISSPACE (*(s))) ++(s) + +/* We can't run setrlimit when using posix_spawn. */ +#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) && !defined(USE_POSIX_SPAWN) +# define SET_STACK_SIZE +#endif +#ifdef SET_STACK_SIZE +# include +extern struct rlimit stack_limit; +#endif + +#include + +#define NILF ((floc *)0) + +/* Number of characters in a string constant. Does NOT include the \0 byte. */ +#define CSTRLEN(_s) (sizeof (_s)-1) + +/* Only usable when NOT calling a macro: only use it for local functions. */ +#define STRING_SIZE_TUPLE(_s) (_s), CSTRLEN(_s) + +/* The number of bytes needed to represent the largest signed and unsigned + integers as a string. + Does NOT include space for \0 so be sure to add it if needed. + Math suggested by Edward Welbourne */ +#define INTSTR_LENGTH (53 * sizeof(uintmax_t) / 22 + 3) + +#define DEFAULT_TTYNAME "true" +#ifdef HAVE_TTYNAME +# define TTYNAME(_f) ttyname (_f) +#else +# define TTYNAME(_f) DEFAULT_TTYNAME +#endif + +#ifdef VMS +# define DEFAULT_TMPDIR "/sys$scratch/" +#elif defined(P_tmpdir) +# define DEFAULT_TMPDIR P_tmpdir +#else +# define DEFAULT_TMPDIR "/tmp" +#endif + + + + +struct file; + +/* Specify the location of elements read from makefiles. */ +typedef struct + { + const char *filenm; + unsigned long lineno; + unsigned long offset; + } floc; + +const char *concat (unsigned int, ...); +void message (int prefix, size_t length, const char *fmt, ...) + ATTRIBUTE ((__format__ (__printf__, 3, 4))); +void error (const floc *flocp, size_t length, const char *fmt, ...) + ATTRIBUTE ((__format__ (__printf__, 3, 4))); +void fatal (const floc *flocp, size_t length, const char *fmt, ...) + ATTRIBUTE ((noreturn, __format__ (__printf__, 3, 4))); +void out_of_memory (void) NORETURN; + +/* When adding macros to this list be sure to update the value of + XGETTEXT_OPTIONS in the po/Makevars file. */ +#define O(_t,_a,_f) _t((_a), 0, (_f)) +#define OS(_t,_a,_f,_s) _t((_a), strlen (_s), (_f), (_s)) +#define OSS(_t,_a,_f,_s1,_s2) _t((_a), strlen (_s1) + strlen (_s2), \ + (_f), (_s1), (_s2)) +#define OSSS(_t,_a,_f,_s1,_s2,_s3) _t((_a), strlen (_s1) + strlen (_s2) + strlen (_s3), \ + (_f), (_s1), (_s2), (_s3)) +#define ON(_t,_a,_f,_n) _t((_a), INTSTR_LENGTH, (_f), (_n)) +#define ONN(_t,_a,_f,_n1,_n2) _t((_a), INTSTR_LENGTH*2, (_f), (_n1), (_n2)) + +#define OSN(_t,_a,_f,_s,_n) _t((_a), strlen (_s) + INTSTR_LENGTH, \ + (_f), (_s), (_n)) +#define ONS(_t,_a,_f,_n,_s) _t((_a), INTSTR_LENGTH + strlen (_s), \ + (_f), (_n), (_s)) + +void decode_env_switches (const char*, size_t line); +void temp_stdin_unlink (void); +void die (int) NORETURN; +void pfatal_with_name (const char *) NORETURN; +void perror_with_name (const char *, const char *); +#define xstrlen(_s) ((_s)==NULL ? 0 : strlen (_s)) +unsigned int make_toui (const char*, const char**); +char *make_lltoa (long long, char *); +char *make_ulltoa (unsigned long long, char *); +void make_seed (unsigned int); +unsigned int make_rand (void); +pid_t make_pid (void); +void *xmalloc (size_t); +void *xcalloc (size_t); +void *xrealloc (void *, size_t); +char *xstrdup (const char *); +char *xstrndup (const char *, size_t); +char *find_next_token (const char **, size_t *); +char *next_token (const char *); +char *end_of_token (const char *); +void collapse_continuations (char *); +char *lindex (const char *, const char *, int); +int alpha_compare (const void *, const void *); +void print_spaces (unsigned int); +char *find_percent (char *); +const char *find_percent_cached (const char **); +const char *get_tmpdir (void); +int get_tmpfd (char **); +FILE *get_tmpfile (char **); +ssize_t writebuf (int, const void *, size_t); +ssize_t readbuf (int, void *, size_t); + +#ifndef HAVE_MEMRCHR +void *memrchr(const void *, int, size_t); +#endif + +#ifndef NO_ARCHIVES +int ar_name (const char *); +void ar_parse_name (const char *, char **, char **); +int ar_touch (const char *); +time_t ar_member_date (const char *); + +typedef intmax_t (*ar_member_func_t) (int desc, const char *mem, int truncated, + long int hdrpos, long int datapos, + long int size, intmax_t date, int uid, + int gid, unsigned int mode, + const void *arg); + +intmax_t ar_scan (const char *archive, ar_member_func_t function, + const void *arg); +int ar_name_equal (const char *name, const char *mem, int truncated); +#ifndef VMS +int ar_member_touch (const char *arname, const char *memname); +#endif +#endif + +int dir_file_exists_p (const char *, const char *); +int file_exists_p (const char *); +int file_impossible_p (const char *); +void file_impossible (const char *); +const char *dir_name (const char *); +void print_dir_data_base (void); +void dir_setup_glob (glob_t *); +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); + +void build_vpath_lists (void); +void construct_vpath_list (char *pattern, char *dirpath); +const char *vpath_search (const char *file, FILE_TIMESTAMP *mtime_ptr, + unsigned int* vpath_index, unsigned int* path_index); +int gpath_search (const char *file, size_t len); + +void construct_include_path (const char **arg_dirs); + +char *strip_whitespace (const char **begpp, const char **endpp); + +void show_goal_error (void); + +/* String caching */ +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, size_t len); + +/* Guile support */ +int guile_gmake_setup (const floc *flocp); + +/* Loadable object support. Sets to the strcached name of the loaded file. */ +typedef int (*load_func_t)(const floc *flocp); +int load_file (const floc *flocp, struct file *file, int noerror); +int unload_file (const char *name); + +/* Maintainer mode support */ +#ifdef MAKE_MAINTAINER_MODE +# define SPIN(_s) spin (_s) +void spin (const char* suffix); +# define DBG(_f) dbg _f +void dbg (const char *fmt, ...); +#else +# define SPIN(_s) +/* Never put this code into Git or a release. */ +# define DBG(_f) compile-error +#endif + +/* We omit these declarations on non-POSIX systems which define _POSIX_VERSION, + because such systems often declare them in header files anyway. */ + +#if !defined (__GNU_LIBRARY__) && !defined (POSIX) && !defined (_POSIX_VERSION) && !defined(WINDOWS32) + +# ifndef VMS +long int lseek (); +# endif + +# ifdef HAVE_GETCWD +# if !defined(VMS) && !defined(__DECC) +char *getcwd (void); +# endif +# else +char *getwd (void); +# define getcwd(buf, len) getwd (buf) +# endif + +#endif /* Not GNU C library or POSIX. */ + +#if !HAVE_STRCASECMP +# if HAVE_STRICMP +# define strcasecmp stricmp +# elif HAVE_STRCMPI +# define strcasecmp strcmpi +# else +/* Create our own, in misc.c */ +int strcasecmp (const char *s1, const char *s2); +# endif +#endif + +#if !HAVE_STRNCASECMP +# if HAVE_STRNICMP +# define strncasecmp strnicmp +# elif HAVE_STRNCMPI +# define strncasecmp strncmpi +# else +/* Create our own, in misc.c */ +int strncasecmp (const char *s1, const char *s2, size_t n); +# endif +#endif + +#if !HAVE_MEMPCPY +/* Create our own, in misc.c */ +void *mempcpy (void *dest, const void *src, size_t n); +#endif + +#if !HAVE_STPCPY +/* Create our own, in misc.c */ +char *stpcpy (char *dest, const char *src); +#endif + +#define OUTPUT_SYNC_NONE 0 +#define OUTPUT_SYNC_LINE 1 +#define OUTPUT_SYNC_TARGET 2 +#define OUTPUT_SYNC_RECURSE 3 + +/* Non-GNU systems may not declare this in unistd.h. */ +extern char **environ; + +extern const floc *reading_file; +extern const floc **expanding_var; + +extern unsigned short stopchar_map[]; + +extern int just_print_flag, run_silent, 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, check_symlink_flag; +extern int warn_undefined_variables_flag, posix_pedantic; +extern int not_parallel, second_expansion, clock_skew_detected; +extern int rebuilding_makefiles, one_shell, output_sync, verify_flag; +extern unsigned long command_count; + +extern const char *default_shell; + +/* can we run commands via 'sh -c xxx' or must we use batch files? */ +extern int batch_mode_shell; + +#define GNUMAKEFLAGS_NAME "GNUMAKEFLAGS" +#define MAKEFLAGS_NAME "MAKEFLAGS" + +/* Resetting the command script introduction prefix character. */ +#define RECIPEPREFIX_NAME ".RECIPEPREFIX" +#define RECIPEPREFIX_DEFAULT '\t' +extern char cmd_prefix; + +#define JOBSERVER_AUTH_OPT "jobserver-auth" + +extern char *jobserver_auth; +extern unsigned int job_slots; +extern double max_load_average; + +extern const char *program; + +#ifdef VMS +const char *vms_command (const char *argv0); +const char *vms_progname (const char *argv0); + +void vms_exit (int); +# define _exit(foo) vms_exit(foo) +# define exit(foo) vms_exit(foo) + +extern char *program_name; + +void +set_program_name (const char *arv0); + +int +need_vms_symbol (void); + +int +create_foreign_command (const char *command, const char *image); + +int +vms_export_dcl_symbol (const char *name, const char *value); + +int +vms_putenv_symbol (const char *string); + +void +vms_restore_symbol (const char *string); + +#endif + +void remote_setup (void); +void remote_cleanup (void); +int start_remote_job_p (int); +int start_remote_job (char **, char **, int, int *, pid_t *, int *); +int remote_status (int *, int *, int *, int); +void block_remote_children (void); +void unblock_remote_children (void); +int remote_kill (pid_t id, int sig); +void print_variable_data_base (void); +void print_vpath_data_base (void); + +extern char *starting_directory; +extern unsigned int makelevel; +extern char *version_string, *remote_description, *make_host; + +extern unsigned int commands_started; + +extern volatile sig_atomic_t handling_fatal_signal; + +#ifndef MIN +#define MIN(_a,_b) ((_a)<(_b)?(_a):(_b)) +#endif +#ifndef MAX +#define MAX(_a,_b) ((_a)>(_b)?(_a):(_b)) +#endif + +#define MAKE_SUCCESS 0 +#define MAKE_TROUBLE 1 +#define MAKE_FAILURE 2 + +/* Set up heap debugging library dmalloc. */ + +#ifdef HAVE_DMALLOC_H +#include +#endif + +#ifndef initialize_main +# ifdef __EMX__ +# define initialize_main(pargc, pargv) \ + { _wildcard(pargc, pargv); _response(pargc, pargv); } +# else +# define initialize_main(pargc, pargv) +# endif +#endif + +#ifdef __EMX__ +# if !defined chdir +# define chdir _chdir2 +# endif +# if !defined getcwd +# define getcwd _getcwd2 +# endif + +/* NO_CHDIR2 causes make not to use _chdir2() and _getcwd2() instead of + chdir() and getcwd(). This avoids some error messages for the + make testsuite but restricts the drive letter support. */ +# ifdef NO_CHDIR2 +# warning NO_CHDIR2: usage of drive letters restricted +# undef chdir +# undef getcwd +# endif +#endif + +#ifndef initialize_main +# define initialize_main(pargc, pargv) +#endif + + +/* Some systems (like Solaris, PTX, etc.) do not support the SA_RESTART flag + properly according to POSIX. So, we try to wrap common system calls with + checks for EINTR. Note that there are still plenty of system calls that + can fail with EINTR but this, reportedly, gets the vast majority of + failure cases. If you still experience failures you'll need to either get + a system where SA_RESTART works, or you need to avoid -j. */ + +#define EINTRLOOP(_v,_c) while (((_v)=_c)==-1 && errno==EINTR) + +/* While system calls that return integers are pretty consistent about + returning -1 on failure and setting errno in that case, functions that + return pointers are not always so well behaved. Sometimes they return + NULL for expected behavior: one good example is readdir() which returns + NULL at the end of the directory--and _doesn't_ reset errno. So, we have + to do it ourselves here. */ + +#define ENULLLOOP(_v,_c) do { errno = 0; (_v) = _c; } \ + while((_v)==0 && errno==EINTR) diff --git a/local/recipes/dev/gnu-make/source/src/misc.c b/local/recipes/dev/gnu-make/source/src/misc.c new file mode 100644 index 0000000000..8264fe9f7a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/misc.c @@ -0,0 +1,976 @@ +/* Miscellaneous generic support functions for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" +#include "filedef.h" +#include "dep.h" +#include "os.h" +#include "debug.h" + +/* GNU make no longer supports pre-ANSI89 environments. */ + +#include + +#ifdef WINDOWS32 +# include +# include +#endif + +#ifdef HAVE_FCNTL_H +# include +#else +# include +#endif + +unsigned int +make_toui (const char *str, const char **error) +{ + char *end; + unsigned long val = strtoul (str, &end, 10); + + if (error) + { + if (str[0] == '\0') + *error = "Missing value"; + else if (*end != '\0') + *error = "Invalid value"; + else + *error = NULL; + } + + return val; +} + +/* Convert val into a string, written to buf. buf must be large enough + to hold the largest possible value, plus a nul byte. Returns buf. + We can't use standard PRI* here: those are based on intNN_t types. */ + +char * +make_lltoa (long long val, char *buf) +{ + sprintf (buf, "%" MK_PRI64_PREFIX "d", val); + return buf; +} + +char * +make_ulltoa (unsigned long long val, char *buf) +{ + sprintf (buf, "%" MK_PRI64_PREFIX "u", val); + return buf; +} + +/* Simple random number generator, for use with shuffle. + This doesn't need to be truly random, just pretty random. Use our own + implementation rather than relying on the C runtime's rand() so we always + get the same results for a given seed, regardless of C runtime. */ + +static unsigned int mk_state = 0; + +void +make_seed (unsigned int seed) +{ + mk_state = seed; +} + +unsigned int +make_rand () +{ + /* mk_state must never be 0. */ + if (mk_state == 0) + mk_state = (unsigned int)(time (NULL) ^ make_pid ()) + 1; + + /* A simple xorshift RNG. */ + mk_state ^= mk_state << 13; + mk_state ^= mk_state >> 17; + mk_state ^= mk_state << 5; + + return mk_state; +} + +/* Compare strings *S1 and *S2. + Return negative if the first is less, positive if it is greater, + zero if they are equal. */ + +int +alpha_compare (const void *v1, const void *v2) +{ + const char *s1 = *((char **)v1); + const char *s2 = *((char **)v2); + + if (*s1 != *s2) + return *s1 - *s2; + return strcmp (s1, s2); +} + +/* Discard each backslash-newline combination from LINE. + Backslash-backslash-newline combinations become backslash-newlines. + This is done by copying the text at LINE into itself. */ + +void +collapse_continuations (char *line) +{ + char *out = line; + char *in = line; + char *q; + + q = strchr(in, '\n'); + if (q == 0) + return; + + do + { + char *p = q; + int i; + size_t out_line_length; + + if (q > line && q[-1] == '\\') + { + /* Search for more backslashes. */ + i = -2; + while (&p[i] >= line && p[i] == '\\') + --i; + ++i; + } + else + i = 0; + + /* The number of backslashes is now -I, keep half of them. */ + out_line_length = (p - in) + i - i/2; + if (out != in) + memmove (out, in, out_line_length); + out += out_line_length; + + /* When advancing IN, skip the newline too. */ + in = q + 1; + + if (i & 1) + { + /* Backslash/newline handling: + In traditional GNU make all trailing whitespace, consecutive + backslash/newlines, and any leading non-newline whitespace on the + next line is reduced to a single space. + In POSIX, each backslash/newline and is replaced by a space. */ + while (ISBLANK (*in)) + ++in; + if (! posix_pedantic) + while (out > line && ISBLANK (out[-1])) + --out; + *out++ = ' '; + } + else + { + /* If the newline isn't quoted, put it in the output. */ + *out++ = '\n'; + } + + q = strchr(in, '\n'); + } + while (q); + + memmove(out, in, strlen(in) + 1); +} + +/* Print N spaces (used in debug for target-depth). */ + +void +print_spaces (unsigned int n) +{ + while (n-- > 0) + putchar (' '); +} + + +/* Return a string whose contents concatenate the NUM strings provided + This string lives in static, re-used memory. */ + +const char * +concat (unsigned int num, ...) +{ + static size_t rlen = 0; + static char *result = NULL; + size_t ri = 0; + va_list args; + + va_start (args, num); + + while (num-- > 0) + { + const char *s = va_arg (args, const char *); + size_t l = xstrlen (s); + + if (l == 0) + continue; + + if (ri + l > rlen) + { + rlen = ((rlen ? rlen : 60) + l) * 2; + result = xrealloc (result, rlen); + } + + memcpy (result + ri, s, l); + ri += l; + } + + va_end (args); + + /* Get some more memory if we don't have enough space for the + terminating '\0'. */ + if (ri == rlen) + { + rlen = (rlen ? rlen : 60) * 2; + result = xrealloc (result, rlen); + } + + result[ri] = '\0'; + + return result; +} + + +#ifndef HAVE_UNISTD_H +pid_t getpid (); +#endif + +pid_t make_pid () +{ + return getpid (); +} + +/* Like malloc but get fatal error if memory is exhausted. */ +/* Don't bother if we're using dmalloc; it provides these for us. */ + +#ifndef HAVE_DMALLOC_H + +#undef xmalloc +#undef xcalloc +#undef xrealloc +#undef xstrdup + +void * +xmalloc (size_t size) +{ + /* Make sure we don't allocate 0, for pre-ISO implementations. */ + void *result = malloc (size ? size : 1); + if (result == 0) + out_of_memory (); + return result; +} + + +void * +xcalloc (size_t size) +{ + /* Make sure we don't allocate 0, for pre-ISO implementations. */ + void *result = calloc (size ? size : 1, 1); + if (result == 0) + out_of_memory (); + return result; +} + + +void * +xrealloc (void *ptr, size_t size) +{ + void *result; + + /* Some older implementations of realloc() don't conform to ISO. */ + if (! size) + size = 1; + result = ptr ? realloc (ptr, size) : malloc (size); + if (result == 0) + out_of_memory (); + return result; +} + + +char * +xstrdup (const char *ptr) +{ + char *result; + +#ifdef HAVE_STRDUP + result = strdup (ptr); +#else + result = malloc (strlen (ptr) + 1); +#endif + + if (result == 0) + out_of_memory (); + +#ifdef HAVE_STRDUP + return result; +#else + return strcpy (result, ptr); +#endif +} + +#endif /* HAVE_DMALLOC_H */ + +char * +xstrndup (const char *str, size_t length) +{ + char *result; + +#ifdef HAVE_STRNDUP + result = strndup (str, length); + if (result == 0) + out_of_memory (); +#else + result = xmalloc (length + 1); + if (length > 0) + strncpy (result, str, length); + result[length] = '\0'; +#endif + + return result; +} + +#ifndef HAVE_MEMRCHR +void * +memrchr(const void* str, int ch, size_t len) +{ + const char* sp = str; + const char* cp = sp; + + if (len == 0) + return NULL; + + cp += len - 1; + + while (cp[0] != ch) + { + if (cp == sp) + return NULL; + --cp; + } + + return (void*)cp; +} +#endif + + + +/* Limited INDEX: + Search through the string STRING, which ends at LIMIT, for the character C. + Returns a pointer to the first occurrence, or nil if none is found. + Like INDEX except that the string searched ends where specified + instead of at the first null. */ + +char * +lindex (const char *s, const char *limit, int c) +{ + while (s < limit) + if (*s++ == c) + return (char *)(s - 1); + + return 0; +} + +/* Return the address of the first whitespace or null in the string S. */ + +char * +end_of_token (const char *s) +{ + while (! END_OF_TOKEN (*s)) + ++s; + return (char *)s; +} + +/* Return the address of the first nonwhitespace or null in the string S. */ + +char * +next_token (const char *s) +{ + NEXT_TOKEN (s); + return (char *)s; +} + +/* Find the next token in PTR; return the address of it, and store the length + of the token into *LENGTHPTR if LENGTHPTR is not nil. Set *PTR to the end + of the token, so this function can be called repeatedly in a loop. */ + +char * +find_next_token (const char **ptr, size_t *lengthptr) +{ + const char *p = next_token (*ptr); + + if (*p == '\0') + return 0; + + *ptr = end_of_token (p); + if (lengthptr != 0) + *lengthptr = *ptr - p; + + return (char *)p; +} + +/* Write a BUFFER of size LEN to file descriptor FD. + Retry short writes from EINTR. Return LEN, or -1 on error. */ +ssize_t +writebuf (int fd, const void *buffer, size_t len) +{ + const char *msg = buffer; + size_t l = len; + while (l) + { + ssize_t r; + + EINTRLOOP (r, write (fd, msg, l)); + if (r < 0) + return r; + + l -= r; + msg += r; + } + + return (ssize_t)len; +} + +/* Read until we get LEN bytes from file descriptor FD, into BUFFER. + Retry short reads on EINTR. If we get an error, return it. + Return 0 at EOF. */ +ssize_t +readbuf (int fd, void *buffer, size_t len) +{ + char *msg = buffer; + while (len) + { + ssize_t r; + + EINTRLOOP (r, read (fd, msg, len)); + if (r < 0) + return r; + if (r == 0) + break; + + len -= r; + msg += r; + } + + return (ssize_t)(msg - (char*)buffer); +} + + +/* Copy a chain of 'struct dep'. For 2nd expansion deps, dup the name. */ + +struct dep * +copy_dep_chain (const struct dep *d) +{ + struct dep *firstnew = 0; + struct dep *lastnew = 0; + + while (d != 0) + { + struct dep *c = xmalloc (sizeof (struct dep)); + memcpy (c, d, sizeof (struct dep)); + + if (c->need_2nd_expansion) + c->name = xstrdup (c->name); + + c->next = 0; + if (firstnew == 0) + firstnew = lastnew = c; + else + lastnew = lastnew->next = c; + + d = d->next; + } + + return firstnew; +} + +/* Free a chain of struct nameseq. + For struct dep chains use free_dep_chain. */ + +void +free_ns_chain (struct nameseq *ns) +{ + while (ns != 0) + { + struct nameseq *t = ns; + ns = ns->next; + free_ns (t); + } +} + + +#ifdef MAKE_MAINTAINER_MODE + +void +spin (const char* type) +{ + char filenm[256]; + struct stat dummy; + + sprintf (filenm, ".make-spin-%s", type); + + if (stat (filenm, &dummy) == 0) + { + fprintf (stderr, "SPIN on %s\n", filenm); + do +#ifdef WINDOWS32 + Sleep (1000); +#else + sleep (1); +#endif + while (stat (filenm, &dummy) == 0); + } +} + +void +dbg (const char *fmt, ...) +{ + FILE *fp = fopen ("/tmp/gmkdebug.log", "a+"); + va_list args; + char buf[4096]; + + va_start (args, fmt); + vsprintf (buf, fmt, args); + va_end (args); + + fprintf(fp, "%u: %s\n", (unsigned) make_pid (), buf); + fflush (fp); + fclose (fp); +} + +#endif + + + +/* Provide support for temporary files. */ + +#ifndef HAVE_STDLIB_H +# ifdef HAVE_MKSTEMP +int mkstemp (char *template); +# else +char *mktemp (char *template); +# endif +#endif + +#ifndef HAVE_UMASK +mode_t +umask (mode_t mask) +{ + return 0; +} +#endif + +#ifdef VMS +# define DEFAULT_TMPFILE "sys$scratch:gnv$make_cmdXXXXXX.com" +#else +# define DEFAULT_TMPFILE "GmXXXXXX" +#endif + +const char * +get_tmpdir () +{ + static const char *tmpdir = NULL; + + if (!tmpdir) + { +#if defined (__MSDOS__) || defined (WINDOWS32) || defined (__EMX__) +# define TMP_EXTRAS "TMP", "TEMP", +#else +# define TMP_EXTRAS +#endif + const char *tlist[] = { "MAKE_TMPDIR", "TMPDIR", TMP_EXTRAS NULL }; + const char **tp; + unsigned int found = 0; + + for (tp = tlist; *tp; ++tp) + if ((tmpdir = getenv (*tp)) && *tmpdir != '\0') + { + struct stat st; + int r; + found = 1; + EINTRLOOP(r, stat (tmpdir, &st)); + if (r < 0) + OSSS (error, NILF, + _("%s value %s: %s"), *tp, tmpdir, strerror (errno)); + else if (! S_ISDIR (st.st_mode)) + OSS (error, NILF, + _("%s value %s: not a directory"), *tp, tmpdir); + else + return tmpdir; + } + + tmpdir = DEFAULT_TMPDIR; + + if (found) + OS (error, NILF, _("using default temporary directory '%s'"), tmpdir); + } + + return tmpdir; +} + +static char * +get_tmptemplate () +{ + const char *tmpdir = get_tmpdir (); + char *template; + char *cp; + + template = xmalloc (strlen (tmpdir) + CSTRLEN (DEFAULT_TMPFILE) + 2); + cp = stpcpy (template, tmpdir); + +#if !defined VMS + /* It's not possible for tmpdir to be empty. */ + if (! ISDIRSEP (cp[-1])) + *(cp++) = '/'; +#endif + + strcpy (cp, DEFAULT_TMPFILE); + + return template; +} + +#if !HAVE_MKSTEMP || !HAVE_FDOPEN +/* Generate a temporary filename. This is not safe as another program could + snipe our filename after we've generated it: use this only on systems + without more secure alternatives. */ + +static char * +get_tmppath () +{ + char *path; + +# ifdef HAVE_MKTEMP + path = get_tmptemplate (); + if (*mktemp (path) == '\0') + pfatal_with_name ("mktemp"); +# else + path = xmalloc (L_tmpnam + 1); + if (tmpnam (path) == NULL) + pfatal_with_name ("tmpnam"); +# endif + + return path; +} +#endif + +/* Generate a temporary file and return an fd for it. If name is NULL then + the temp file is anonymous and will be deleted when the process exits. */ +int +get_tmpfd (char **name) +{ + int fd = -1; + char *tmpnm; + mode_t mask; + + /* If there's an os-specific way to get an anoymous temp file use it. */ + if (!name) + { + fd = os_anontmp (); + if (fd >= 0) + return fd; + } + + /* Preserve the current umask, and set a restrictive one for temp files. + Only really needed for mkstemp() but won't hurt for the open method. */ + mask = umask (0077); + +#if defined(HAVE_MKSTEMP) + tmpnm = get_tmptemplate (); + + /* It's safest to use mkstemp(), if we can. */ + EINTRLOOP (fd, mkstemp (tmpnm)); +#else + tmpnm = get_tmppath (); + + /* Can't use mkstemp(), but try to guard against a race condition. */ + EINTRLOOP (fd, open (tmpnm, O_CREAT|O_EXCL|O_RDWR, 0600)); +#endif + if (fd < 0) + OSS (fatal, NILF, + _("create temporary file %s: %s"), tmpnm, strerror (errno)); + + if (name) + *name = tmpnm; + else + { + int r; + EINTRLOOP (r, unlink (tmpnm)); + if (r < 0) + OSS (fatal, NILF, + _("unlink temporary file %s: %s"), tmpnm, strerror (errno)); + free (tmpnm); + } + + umask (mask); + + return fd; +} + +/* Return a FILE* for a temporary file, opened in the safest way possible. + Set name to point to an allocated buffer containing the name of the file. + Note, this cannot be NULL! */ +FILE * +get_tmpfile (char **name) +{ + /* Be consistent with tmpfile, which opens as if by "wb+". */ + const char *tmpfile_mode = "wb+"; + FILE *file; + +#if defined(HAVE_FDOPEN) + int fd = get_tmpfd (name); + + ENULLLOOP (file, fdopen (fd, tmpfile_mode)); + if (file == NULL) + OSS (fatal, NILF, + _("fdopen: temporary file %s: %s"), *name, strerror (errno)); +#else + /* Preserve the current umask, and set a restrictive one for temp files. */ + mode_t mask = umask (0077); + int err; + + *name = get_tmppath (); + + /* Although this fopen is insecure, it is executed only on non-fdopen + platforms, which should be a rarity nowadays. */ + + ENULLLOOP (file, fopen (*name, tmpfile_mode)); + if (file == NULL) + OSS (fatal, NILF, + _("fopen: temporary file %s: %s"), *name, strerror (errno)); + + umask (mask); +#endif + + return file; +} + + +#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. */ + +int +strcasecmp (const char *s1, const char *s2) +{ + while (1) + { + int c1 = (unsigned char) *(s1++); + int c2 = (unsigned char) *(s2++); + + if (isalpha (c1)) + c1 = tolower (c1); + if (isalpha (c2)) + c2 = tolower (c2); + + if (c1 != '\0' && c1 == c2) + continue; + + return (c1 - c2); + } +} +#endif + +#if !HAVE_STRNCASECMP && !HAVE_STRNICMP && !HAVE_STRNCMPI +/* If we don't have strncasecmp() (from POSIX), or anything that can + substitute for it, define our own version. */ + +int +strncasecmp (const char *s1, const char *s2, size_t n) +{ + while (n-- > 0) + { + int c1 = (unsigned char) *(s1++); + int c2 = (unsigned char) *(s2++); + + if (isalpha (c1)) + c1 = tolower (c1); + if (isalpha (c2)) + c2 = tolower (c2); + + if (c1 != '\0' && c1 == c2) + continue; + + return (c1 - c2); + } + + return 0; +} +#endif + + +#ifdef NEED_GET_PATH_MAX +unsigned int +get_path_max (void) +{ + static unsigned int value; + + if (value == 0) + { + long x = pathconf ("/", _PC_PATH_MAX); + if (x > 0) + value = (unsigned int) x; + else + value = PATH_MAX; + } + + return value; +} +#endif + +#if !HAVE_MEMPCPY +void * +mempcpy (void *dest, const void *src, size_t n) +{ + return (char *) memcpy (dest, src, n) + n; +} +#endif + +#if !HAVE_STPCPY +char * +stpcpy (char *dest, const char *src) +{ + char *d = dest; + const char *s = src; + + do + *d++ = *s; + while (*s++ != '\0'); + + return d - 1; +} +#endif + +#if !HAVE_STRTOLL +# undef UNSIGNED +# undef USE_NUMBER_GROUPING +# undef USE_WIDE_CHAR +# define QUAD 1 +# include +#endif + +#if !HAVE_STRERROR +char * +strerror (int errnum) +{ + static char msg[256]; + +#define SETMSG(_e, _m) case _e: strcpy(msg, _m); break + + switch (errnum) + { +#ifdef EPERM + SETMSG (EPERM , "Operation not permitted"); +#endif +#ifdef ENOENT + SETMSG (ENOENT , "No such file or directory"); +#endif +#ifdef ESRCH + SETMSG (ESRCH , "No such process"); +#endif +#ifdef EINTR + SETMSG (EINTR , "Interrupted system call"); +#endif +#ifdef EIO + SETMSG (EIO , "I/O error"); +#endif +#ifdef ENXIO + SETMSG (ENXIO , "No such device or address"); +#endif +#ifdef E2BIG + SETMSG (E2BIG , "Argument list too long"); +#endif +#ifdef ENOEXEC + SETMSG (ENOEXEC, "Exec format error"); +#endif +#ifdef EBADF + SETMSG (EBADF , "Bad file number"); +#endif +#ifdef ECHILD + SETMSG (ECHILD , "No child processes"); +#endif +#ifdef EAGAIN + SETMSG (EAGAIN , "Try again"); +#endif +#ifdef ENOMEM + SETMSG (ENOMEM , "Out of memory"); +#endif +#ifdef EACCES + SETMSG (EACCES , "Permission denied"); +#endif +#ifdef EFAULT + SETMSG (EFAULT , "Bad address"); +#endif +#ifdef ENOTBLK + SETMSG (ENOTBLK, "Block device required"); +#endif +#ifdef EBUSY + SETMSG (EBUSY , "Device or resource busy"); +#endif +#ifdef EEXIST + SETMSG (EEXIST , "File exists"); +#endif +#ifdef EXDEV + SETMSG (EXDEV , "Cross-device link"); +#endif +#ifdef ENODEV + SETMSG (ENODEV , "No such device"); +#endif +#ifdef ENOTDIR + SETMSG (ENOTDIR, "Not a directory"); +#endif +#ifdef EISDIR + SETMSG (EISDIR , "Is a directory"); +#endif +#ifdef EINVAL + SETMSG (EINVAL , "Invalid argument"); +#endif +#ifdef ENFILE + SETMSG (ENFILE , "File table overflow"); +#endif +#ifdef EMFILE + SETMSG (EMFILE , "Too many open files"); +#endif +#ifdef ENOTTY + SETMSG (ENOTTY , "Not a typewriter"); +#endif +#ifdef ETXTBSY + SETMSG (ETXTBSY, "Text file busy"); +#endif +#ifdef EFBIG + SETMSG (EFBIG , "File too large"); +#endif +#ifdef ENOSPC + SETMSG (ENOSPC , "No space left on device"); +#endif +#ifdef ESPIPE + SETMSG (ESPIPE , "Illegal seek"); +#endif +#ifdef EROFS + SETMSG (EROFS , "Read-only file system"); +#endif +#ifdef EMLINK + SETMSG (EMLINK , "Too many links"); +#endif +#ifdef EPIPE + SETMSG (EPIPE , "Broken pipe"); +#endif +#ifdef EDOM + SETMSG (EDOM , "Math argument out of domain of func"); +#endif +#ifdef ERANGE + SETMSG (ERANGE , "Math result not representable"); +#endif + default: sprintf (msg, "Unknown error %d", errnum); break; + } + + return msg; +} +#endif diff --git a/local/recipes/dev/gnu-make/source/src/mkconfig.h b/local/recipes/dev/gnu-make/source/src/mkconfig.h new file mode 100644 index 0000000000..ac3a7bf472 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/mkconfig.h @@ -0,0 +1,37 @@ +/* src/mkconfig.h. Generated from mkconfig.h.in by configure. */ +/* Autoconf values for use on non-POSIX systems. +Copyright (C) 2022 Free Software 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 . */ + +/* Name of package */ +#define PACKAGE "make" + +/* 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 to the full name and version of this package. */ +#define PACKAGE_STRING "GNU Make 4.4" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "make" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "https://www.gnu.org/software/make/" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "4.4" diff --git a/local/recipes/dev/gnu-make/source/src/os.h b/local/recipes/dev/gnu-make/source/src/os.h new file mode 100644 index 0000000000..fe0a9976c1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/os.h @@ -0,0 +1,158 @@ +/* Declarations for operating system interfaces for GNU Make. +Copyright (C) 2016-2022 Free Software 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 . */ + +#define IO_UNKNOWN 0x0001 +#define IO_COMBINED_OUTERR 0x0002 +#define IO_STDIN_OK 0x0004 +#define IO_STDOUT_OK 0x0008 +#define IO_STDERR_OK 0x0010 + +#if defined(VMS) || defined(_AMIGA) || defined(__MSDOS__) +# define check_io_state() (IO_STDIN_OK|IO_STDOUT_OK|IO_STDERR_OK) +# define fd_inherit(_i) (0) +# define fd_noinherit(_i) (0) +# define fd_set_append(_i) (void)(0) +# define os_anontmp() (-1) +#else + +/* Determine the state of stdin/stdout/stderr. */ +unsigned int check_io_state (void); + +/* Set a file descriptor to close/not close in a subprocess. */ +void fd_inherit (int); +void fd_noinherit (int); + +/* If the file descriptor is for a file put it into append mode. */ +void fd_set_append (int); + +/* Return a file descriptor for a new anonymous temp file, or -1. */ +int os_anontmp (void); +#endif + +/* This section provides OS-specific functions to support the jobserver. */ + +#ifdef MAKE_JOBSERVER + +/* Returns 1 if the jobserver is enabled, else 0. */ +unsigned int jobserver_enabled (void); + +/* Called in the parent make to set up the jobserver initially. */ +unsigned int jobserver_setup (int job_slots, const char *style); + +/* Called in a child instance to connect to the jobserver. + Return 1 if we got a valid auth, else 0. */ +unsigned int jobserver_parse_auth (const char* auth); + +/* Returns an allocated buffer used to pass to child instances. */ +char *jobserver_get_auth (void); + +/* Returns a pointer to a static string used to indicate that the child + cannot access the jobserver, or NULL if it always can. */ +const char *jobserver_get_invalid_auth (void); + +/* Clear this instance's jobserver configuration. + This method might be invoked from a signal handler. */ +void jobserver_clear (void); + +/* Recover all the jobserver tokens and return the number we got. + Will also run jobserver_clear() as a side-effect. */ +unsigned int jobserver_acquire_all (void); + +/* Release a jobserver token. If it fails and is_fatal is 1, fatal. */ +void jobserver_release (int is_fatal); + +/* Notify the jobserver that a child exited. */ +void jobserver_signal (void); + +/* Get ready to start a non-recursive child. */ +void jobserver_pre_child (int); + +/* Complete starting a non-recursive child. */ +void jobserver_post_child (int); + +/* Set up to acquire a new token. */ +void jobserver_pre_acquire (void); + +/* Wait until we can acquire a jobserver token. + TIMEOUT is 1 if we have other jobs waiting for the load to go down; + in this case we won't wait forever, so we can check the load. + Returns 1 if we got a token, or 0 if we stopped waiting due to a child + exiting or a timeout. */ +unsigned int jobserver_acquire (int timeout); + +#else + +#define jobserver_enabled() (0) +#define jobserver_setup(_slots, _style) (0) +#define jobserver_parse_auth(_auth) (0) +#define jobserver_get_auth() (NULL) +#define jobserver_get_invalid_auth() (NULL) +#define jobserver_clear() (void)(0) +#define jobserver_release(_fatal) (void)(0) +#define jobserver_acquire_all() (0) +#define jobserver_signal() (void)(0) +#define jobserver_pre_child(_r) (void)(0) +#define jobserver_post_child(_r) (void)(0) +#define jobserver_pre_acquire() (void)(0) +#define jobserver_acquire(_tmout) (0) + +#endif /* MAKE_JOBSERVER */ + +#ifndef NO_OUTPUT_SYNC + +/* Returns 1 if output sync is enabled, else 0. */ +unsigned int osync_enabled (void); + +/* Called in the parent make to set up output sync initially. */ +void osync_setup (void); + +/* Returns an allocated buffer containing output sync info to pass to child + instances, or NULL if not needed. */ +char *osync_get_mutex (void); + +/* Called in a child instance to obtain info on the output sync mutex. + Return 1 if we got a valid mutex, else 0. */ +unsigned int osync_parse_mutex (const char *mutex); + +/* Clean up this instance's output sync facilities. + This method might be invoked from a signal handler. */ +void osync_clear (void); + +/* Acquire the output sync lock. This will wait until available. + Returns 0 if there was an error getting the semaphore. */ +unsigned int osync_acquire (void); + +/* Release the output sync lock. */ +void osync_release (void); + +#else + +#define osync_enabled() (0) +#define osync_setup() (void)(0) +#define osync_get_mutex() (0) +#define osync_parse_mutex(_s) (0) +#define osync_clear() (void)(0) +#define osync_acquire() (1) +#define osync_release() (void)(0) + +#endif /* NO_OUTPUT_SYNC */ + +/* Create a "bad" file descriptor for stdin when parallel jobs are run. */ +#if defined(VMS) || defined(WINDOWS32) || defined(_AMIGA) || defined(__MSDOS__) +# define get_bad_stdin() (-1) +#else +int get_bad_stdin (void); +#endif diff --git a/local/recipes/dev/gnu-make/source/src/output.c b/local/recipes/dev/gnu-make/source/src/output.c new file mode 100644 index 0000000000..43eb2f065f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/output.c @@ -0,0 +1,534 @@ +/* Output to stdout / stderr for GNU make +Copyright (C) 2013-2022 Free Software 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 . */ + +#include "makeint.h" +#include "os.h" +#include "output.h" + +/* GNU make no longer supports pre-ANSI89 environments. */ + +#include +#include +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#ifdef HAVE_FCNTL_H +# include +#else +# include +#endif + +#ifdef WINDOWS32 +# include +# include +# 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) + +/* Write a string to the current STDOUT or STDERR. */ +static void +_outputs (struct output *out, int is_err, const char *msg) +{ + FILE *f; + + if (out && out->syncout) + { + int fd = is_err ? out->err : out->out; + if (fd != OUTPUT_NONE) + { + size_t len = strlen (msg); + int r; + EINTRLOOP (r, lseek (fd, 0, SEEK_END)); + writebuf (fd, msg, len); + return; + } + } + + f = is_err ? stderr : stdout; + fputs (msg, f); + fflush (f); +} + +/* Write a message indicating that we've just entered or + left (according to ENTERING) the current directory. */ + +static int +log_working_directory (int entering) +{ + static char *buf = NULL; + static size_t len = 0; + size_t need; + const char *fmt; + char *p; + + /* Get enough space for the longest possible output. */ + need = strlen (program) + INTSTR_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; +} + + +#ifndef NO_OUTPUT_SYNC + +/* 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()"); + break; + } + fflush (to); + } + +#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 +} + +/* Returns a file descriptor to a temporary file, that will be automatically + deleted on exit. */ +int +output_tmpfd (void) +{ + int fd = get_tmpfd (NULL); + fd_set_append (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) +{ + static unsigned int in_setup = 0; + unsigned int io_state; + + /* If something fails during setup we might recurse back into this function + while writing errors. Make sure we don't do so infinitely. */ + if (in_setup) + return; + in_setup = 1; + + io_state = check_io_state (); + + if (NONE_SET (io_state, IO_STDOUT_OK|IO_STDERR_OK)) + { + /* This is probably useless since stdout/stderr aren't working. */ + perror_with_name ("output-sync suppressed: ", "stderr"); + goto error; + } + + if (ANY_SET (io_state, IO_STDOUT_OK)) + { + int fd = output_tmpfd (); + if (fd < 0) + goto error; + fd_noinherit (fd); + out->out = fd; + } + + if (ANY_SET (io_state, IO_STDERR_OK)) + { + if (out->out != OUTPUT_NONE && ANY_SET (io_state, IO_COMBINED_OUTERR)) + out->err = out->out; + else + { + int fd = output_tmpfd (); + if (fd < 0) + goto error; + fd_noinherit (fd); + out->err = fd; + } + } + + in_setup = 0; + return; + + /* If we failed to create a temp file, disable output sync going forward. */ + error: + output_close (out); + output_sync = OUTPUT_SYNC_NONE; + osync_clear (); + in_setup = 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) +{ +#define FD_NOT_EMPTY(_f) ((_f) != OUTPUT_NONE && lseek ((_f), 0, SEEK_END) > 0) + + 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. */ + if (!osync_acquire ()) + { + O (error, NILF, + _("warning: Cannot acquire output lock, disabling output sync.")); + osync_clear (); + } + + /* Log the working directory for this dump. */ + if (print_directory && 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. */ + osync_release (); + + /* 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 */ + + +void +output_init (struct output *out) +{ + if (out) + { + out->out = out->err = OUTPUT_NONE; + out->syncout = !!output_sync; + return; + } + + /* Force stdout/stderr into append mode (if they are files) to ensure + parallel jobs won't lose output due to overlapping writes. */ + fd_set_append (fileno (stdout)); + fd_set_append (fileno (stderr)); +} + +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 (void) +{ +#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) + 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); +} + + +static struct fmtstring + { + char *buffer; + size_t size; + } fmtbuf = { NULL, 0 }; + +static char * +get_buffer (size_t need) +{ + /* Make sure we have room. NEED includes space for \0. */ + if (need > fmtbuf.size) + { + fmtbuf.size += need * 2; + fmtbuf.buffer = xrealloc (fmtbuf.buffer, fmtbuf.size); + } + + fmtbuf.buffer[need-1] = '\0'; + + return fmtbuf.buffer; +} + +/* Print a message on stdout. */ + +void +message (int prefix, size_t len, const char *fmt, ...) +{ + va_list args; + char *start; + char *p; + + len += strlen (fmt) + strlen (program) + INTSTR_LENGTH + 4 + 1 + 1; + start = p = get_buffer (len); + + if (prefix) + { + if (makelevel == 0) + sprintf (p, "%s: ", program); + else + sprintf (p, "%s[%u]: ", program, makelevel); + p += strlen (p); + } + + va_start (args, fmt); + vsprintf (p, fmt, args); + va_end (args); + + strcat (p, "\n"); + + assert (start[len-1] == '\0'); + outputs (0, start); +} + +/* Print an error message. */ + +void +error (const floc *flocp, size_t len, const char *fmt, ...) +{ + va_list args; + char *start; + char *p; + + len += (strlen (fmt) + strlen (program) + + (flocp && flocp->filenm ? strlen (flocp->filenm) : 0) + + INTSTR_LENGTH + 4 + 1 + 1); + start = p = get_buffer (len); + + if (flocp && flocp->filenm) + sprintf (p, "%s:%lu: ", flocp->filenm, flocp->lineno + flocp->offset); + else if (makelevel == 0) + sprintf (p, "%s: ", program); + else + sprintf (p, "%s[%u]: ", program, makelevel); + p += strlen (p); + + va_start (args, fmt); + vsprintf (p, fmt, args); + va_end (args); + + strcat (p, "\n"); + + assert (start[len-1] == '\0'); + outputs (1, start); +} + +/* Print an error message and exit. */ + +void +fatal (const floc *flocp, size_t len, const char *fmt, ...) +{ + va_list args; + const char *stop = _(". Stop.\n"); + char *start; + char *p; + + len += (strlen (fmt) + strlen (program) + + (flocp && flocp->filenm ? strlen (flocp->filenm) : 0) + + INTSTR_LENGTH + 8 + strlen (stop) + 1); + start = p = get_buffer (len); + + if (flocp && flocp->filenm) + sprintf (p, "%s:%lu: *** ", flocp->filenm, flocp->lineno + flocp->offset); + else if (makelevel == 0) + sprintf (p, "%s: *** ", program); + else + sprintf (p, "%s[%u]: *** ", program, makelevel); + p += strlen (p); + + va_start (args, fmt); + vsprintf (p, fmt, args); + va_end (args); + + strcat (p, stop); + + assert (start[len-1] == '\0'); + outputs (1, start); + + die (MAKE_FAILURE); +} + +/* Print an error message from errno. */ + +void +perror_with_name (const char *str, const char *name) +{ + const char *err = strerror (errno); + OSSS (error, NILF, _("%s%s: %s"), str, name, err); +} + +/* Print an error message from errno and exit. */ + +void +pfatal_with_name (const char *name) +{ + const char *err = strerror (errno); + OSS (fatal, NILF, _("%s: %s"), name, err); + + /* NOTREACHED */ +} + +/* Print a message about out of memory (not using more heap) and exit. + Our goal here is to be sure we don't try to allocate more memory, which + means we don't want to use string translations or normal cleanup. */ + +void +out_of_memory () +{ + writebuf (FD_STDOUT, program, strlen (program)); + writebuf (FD_STDOUT, STRING_SIZE_TUPLE (": *** virtual memory exhausted\n")); + exit (MAKE_FAILURE); +} diff --git a/local/recipes/dev/gnu-make/source/src/output.h b/local/recipes/dev/gnu-make/source/src/output.h new file mode 100644 index 0000000000..59576059ed --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/output.h @@ -0,0 +1,58 @@ +/* Output to stdout / stderr for GNU make +Copyright (C) 2013-2022 Free Software 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 . */ + +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 FD_STDIN (fileno (stdin)) +#define FD_STDOUT (fileno (stdout)) +#define FD_STDERR (fileno (stderr)) + +#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) + +/* Write a buffer directly to the given file descriptor. + This handles errors etc. */ +int output_write (int fd, const void *buffer, size_t len); + +/* 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); + +#if defined(NO_OUTPUT_SYNC) +# define output_dump(_o) (void)(0) +#else +/* Dump any child output content to stdout, and reset it. */ +void output_dump (struct output *out); +#endif diff --git a/local/recipes/dev/gnu-make/source/src/posixos.c b/local/recipes/dev/gnu-make/source/src/posixos.c new file mode 100644 index 0000000000..44aeb3464b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/posixos.c @@ -0,0 +1,881 @@ +/* POSIX-based operating system interface for GNU Make. +Copyright (C) 2016-2022 Free Software 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 . */ + +#include "makeint.h" + +#include + +#ifdef HAVE_FCNTL_H +# include +# define FD_OK(_f) (fcntl ((_f), F_GETFD) != -1) +#elif defined(HAVE_SYS_FILE_H) +# include +#endif + +#if !defined(FD_OK) +# define FD_OK(_f) 1 +#endif + +#if defined(HAVE_PSELECT) && defined(HAVE_SYS_SELECT_H) +# include +#endif + +#include "debug.h" +#include "job.h" +#include "os.h" + +#define STREAM_OK(_s) ((fcntl (fileno (_s), F_GETFD) != -1) || (errno != EBADF)) + +unsigned int +check_io_state () +{ + static unsigned int state = IO_UNKNOWN; + + /* We only need to compute this once per process. */ + if (state != IO_UNKNOWN) + return state; + + if (STREAM_OK (stdin)) + state |= IO_STDIN_OK; + if (STREAM_OK (stdout)) + state |= IO_STDOUT_OK; + if (STREAM_OK (stderr)) + state |= IO_STDERR_OK; + + if (ALL_SET (state, IO_STDOUT_OK|IO_STDERR_OK)) + { + struct stat stbuf_o, stbuf_e; + + if (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) + state |= IO_COMBINED_OUTERR; + } + + return state; +} + +#if defined(MAKE_JOBSERVER) + +#define FIFO_PREFIX "fifo:" + +/* This section provides OS-specific functions to support the jobserver. */ + +/* True if this is the root make instance. */ +static unsigned char job_root = 0; + +/* These track the state of the jobserver pipe. Passed to child instances. */ +static int job_fds[2] = { -1, -1 }; + +/* Used to signal read() that a SIGCHLD happened. Always CLOEXEC. + If we use pselect() this will never be created and always -1. + */ +static int job_rfd = -1; + +/* Token written to the pipe (could be any character...) */ +static char token = '+'; + +/* The type of jobserver we're using. */ +enum js_type + { + js_none = 0, /* No jobserver. */ + js_pipe, /* Use a simple pipe as the jobserver. */ + js_fifo /* Use a named pipe as the jobserver. */ + }; + +static enum js_type js_type = js_none; + +/* The name of the named pipe (if used). */ +static char *fifo_name = NULL; + +static int +make_job_rfd () +{ +#ifdef HAVE_PSELECT + /* Pretend we succeeded. */ + return 0; +#else + EINTRLOOP (job_rfd, dup (job_fds[0])); + if (job_rfd >= 0) + fd_noinherit (job_rfd); + + return job_rfd; +#endif +} + +static void +set_blocking (int fd, int blocking) +{ + /* If we're not using pselect() don't change the blocking. */ +#ifdef HAVE_PSELECT + int flags; + EINTRLOOP (flags, fcntl (fd, F_GETFL)); + if (flags >= 0) + { + int r; + flags = blocking ? (flags & ~O_NONBLOCK) : (flags | O_NONBLOCK); + EINTRLOOP (r, fcntl (fd, F_SETFL, flags)); + if (r < 0) + pfatal_with_name ("fcntl(O_NONBLOCK)"); + } +#endif +} + +unsigned int +jobserver_setup (int slots, const char *style) +{ + int r; + +#if HAVE_MKFIFO + if (style == NULL || strcmp (style, "fifo") == 0) + { + /* Unfortunately glibc warns about uses of mktemp even though we aren't + using it in dangerous way here. So avoid this by generating our own + temporary file name. */ +# define FNAME_PREFIX "GMfifo" + const char *tmpdir = get_tmpdir (); + + fifo_name = xmalloc (strlen (tmpdir) + CSTRLEN (FNAME_PREFIX) + + INTSTR_LENGTH + 2); + sprintf (fifo_name, "%s/" FNAME_PREFIX "%" MK_PRI64_PREFIX "d", + tmpdir, (long long)make_pid ()); + + EINTRLOOP (r, mkfifo (fifo_name, 0600)); + if (r < 0) + { + perror_with_name("jobserver mkfifo: ", fifo_name); + free (fifo_name); + fifo_name = NULL; + } + else + { + /* We have to open the read side in non-blocking mode, else it will + hang until the write side is open. */ + EINTRLOOP (job_fds[0], open (fifo_name, O_RDONLY|O_NONBLOCK)); + if (job_fds[0] < 0) + OSS (fatal, NILF, _("Cannot open jobserver %s: %s"), + fifo_name, strerror (errno)); + + EINTRLOOP (job_fds[1], open (fifo_name, O_WRONLY)); + if (job_fds[0] < 0) + OSS (fatal, NILF, _("Cannot open jobserver %s: %s"), + fifo_name, strerror (errno)); + + js_type = js_fifo; + } + } +#endif + + if (js_type == js_none) + { + if (style && strcmp (style, "pipe") != 0) + OS (fatal, NILF, _("Unknown jobserver auth style '%s'"), style); + + EINTRLOOP (r, pipe (job_fds)); + if (r < 0) + pfatal_with_name (_("creating jobs pipe")); + + js_type = js_pipe; + } + + /* By default we don't send the job pipe FDs to our children. + See jobserver_pre_child() and jobserver_post_child(). */ + fd_noinherit (job_fds[0]); + fd_noinherit (job_fds[1]); + + if (make_job_rfd () < 0) + pfatal_with_name (_("duping jobs pipe")); + + while (slots--) + { + EINTRLOOP (r, write (job_fds[1], &token, 1)); + if (r != 1) + pfatal_with_name (_("init jobserver pipe")); + } + + /* When using pselect() we want the read to be non-blocking. */ + set_blocking (job_fds[0], 0); + + job_root = 1; + + return 1; +} + +unsigned int +jobserver_parse_auth (const char *auth) +{ + int rfd, wfd; + + /* Given the command-line parameter, parse it. */ + + /* First see if we're using a named pipe. */ + if (strncmp (auth, FIFO_PREFIX, CSTRLEN (FIFO_PREFIX)) == 0) + { + fifo_name = xstrdup (auth + CSTRLEN (FIFO_PREFIX)); + + EINTRLOOP (job_fds[0], open (fifo_name, O_RDONLY)); + if (job_fds[0] < 0) + OSS (fatal, NILF, + _("Cannot open jobserver %s: %s"), fifo_name, strerror (errno)); + + EINTRLOOP (job_fds[1], open (fifo_name, O_WRONLY)); + if (job_fds[0] < 0) + OSS (fatal, NILF, + _("Cannot open jobserver %s: %s"), fifo_name, strerror (errno)); + + js_type = js_fifo; + } + /* If not, it must be a simple pipe. */ + else if (sscanf (auth, "%d,%d", &rfd, &wfd) == 2) + { + /* The parent overrode our FDs because we aren't a recursive make. */ + if (rfd == -2 || wfd == -2) + return 0; + + /* Make sure our pipeline is valid. */ + if (!FD_OK (rfd) || !FD_OK (wfd)) + return 0; + + job_fds[0] = rfd; + job_fds[1] = wfd; + + js_type = js_pipe; + } + /* Who knows what it is? */ + else + { + OS (error, NILF, _("invalid --jobserver-auth string '%s'"), auth); + return 0; + } + + /* Create a duplicate pipe, if needed, that will be closed in the SIGCHLD + handler. If this fails with EBADF, the parent closed the pipe on us as + it didn't think we were a submake. If so, warn and default to -j1. */ + + if (make_job_rfd () < 0) + { + if (errno != EBADF) + pfatal_with_name ("jobserver readfd"); + + jobserver_clear (); + + return 0; + } + + /* When using pselect() we want the read to be non-blocking. */ + set_blocking (job_fds[0], 0); + + /* By default we don't send the job pipe FDs to our children. + See jobserver_pre_child() and jobserver_post_child(). */ + fd_noinherit (job_fds[0]); + fd_noinherit (job_fds[1]); + + return 1; +} + +char * +jobserver_get_auth () +{ + char *auth; + + if (js_type == js_fifo) { + auth = xmalloc (strlen (fifo_name) + CSTRLEN (FIFO_PREFIX) + 1); + sprintf (auth, FIFO_PREFIX "%s", fifo_name); + } else { + auth = xmalloc ((INTSTR_LENGTH * 2) + 2); + sprintf (auth, "%d,%d", job_fds[0], job_fds[1]); + } + + return auth; +} + +const char * +jobserver_get_invalid_auth () +{ + /* If we're using a named pipe we don't need to invalidate the jobserver. */ + if (js_type == js_fifo) { + return NULL; + } + + /* It's not really great that we are assuming the command line option + here but other alternatives are also gross. */ + return " --" JOBSERVER_AUTH_OPT "=-2,-2"; +} + +unsigned int +jobserver_enabled () +{ + return js_type != js_none; +} + +void +jobserver_clear () +{ + if (job_fds[0] >= 0) + close (job_fds[0]); + if (job_fds[1] >= 0) + close (job_fds[1]); + if (job_rfd >= 0) + close (job_rfd); + + job_fds[0] = job_fds[1] = job_rfd = -1; + + if (fifo_name) + { + if (job_root) + { + int r; + EINTRLOOP (r, unlink (fifo_name)); + } + + if (!handling_fatal_signal) + { + free (fifo_name); + fifo_name = NULL; + } + } + + js_type = js_none; +} + +void +jobserver_release (int is_fatal) +{ + int r; + EINTRLOOP (r, write (job_fds[1], &token, 1)); + if (r != 1) + { + if (is_fatal) + pfatal_with_name (_("write jobserver")); + perror_with_name ("write", ""); + } +} + +unsigned int +jobserver_acquire_all () +{ + int r; + unsigned int tokens = 0; + + /* Use blocking reads to wait for all outstanding jobs. */ + set_blocking (job_fds[0], 1); + + /* Close the write side, so the read() won't hang forever. */ + close (job_fds[1]); + job_fds[1] = -1; + + while (1) + { + char intake; + EINTRLOOP (r, read (job_fds[0], &intake, 1)); + if (r != 1) + break; + ++tokens; + } + + DB (DB_JOBS, ("Acquired all %u jobserver tokens.\n", tokens)); + + jobserver_clear (); + + return tokens; +} + +/* Prepare the jobserver to start a child process. */ +void +jobserver_pre_child (int recursive) +{ + if (recursive && js_type == js_pipe) + { + fd_inherit (job_fds[0]); + fd_inherit (job_fds[1]); + } +} + +/* Reconfigure the jobserver after starting a child process. */ +void +jobserver_post_child (int recursive) +{ + if (recursive && js_type == js_pipe) + { + fd_noinherit (job_fds[0]); + fd_noinherit (job_fds[1]); + } +} + +void +jobserver_signal () +{ + if (job_rfd >= 0) + { + close (job_rfd); + job_rfd = -1; + } +} + +void +jobserver_pre_acquire () +{ + /* Make sure we have a dup'd FD. */ + if (job_rfd < 0 && job_fds[0] >= 0 && make_job_rfd () < 0) + pfatal_with_name (_("duping jobs pipe")); +} + +#ifdef HAVE_PSELECT + +/* Use pselect() to atomically wait for both a signal and a file descriptor. + It also provides a timeout facility so we don't need to use SIGALRM. + + This method relies on the fact that SIGCHLD will be blocked everywhere, + and only unblocked (atomically) within the pselect() call, so we can + never miss a SIGCHLD. + */ +unsigned int +jobserver_acquire (int timeout) +{ + struct timespec spec; + struct timespec *specp = NULL; + sigset_t empty; + + sigemptyset (&empty); + + if (timeout) + { + /* Alarm after one second (is this too granular?) */ + spec.tv_sec = 1; + spec.tv_nsec = 0; + specp = &spec; + } + + while (1) + { + fd_set readfds; + int r; + char intake; + + FD_ZERO (&readfds); + FD_SET (job_fds[0], &readfds); + + r = pselect (job_fds[0]+1, &readfds, NULL, NULL, specp, &empty); + if (r < 0) + switch (errno) + { + case EINTR: + /* SIGCHLD will show up as an EINTR. */ + return 0; + + case EBADF: + /* Someone closed the jobs pipe. + That shouldn't happen but if it does we're done. */ + O (fatal, NILF, _("job server shut down")); + + default: + pfatal_with_name (_("pselect jobs pipe")); + } + + if (r == 0) + /* Timeout. */ + return 0; + + /* The read FD is ready: read it! This is non-blocking. */ + EINTRLOOP (r, read (job_fds[0], &intake, 1)); + + if (r < 0) + { + /* Someone sniped our token! Try again. */ + if (errno == EAGAIN) + continue; + + pfatal_with_name (_("read jobs pipe")); + } + + /* read() should never return 0: only the parent make can reap all the + tokens and close the write side...?? */ + return r > 0; + } +} + +#else + +/* This method uses a "traditional" UNIX model for waiting on both a signal + and a file descriptor. However, it's complex and since we have a SIGCHLD + handler installed we need to check ALL system calls for EINTR: painful! + + 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 we can process the + death(s) and return tokens to the free pool. + + Once we return from the read, we immediately reinstate restartable system + calls. This allows us to not worry about checking for EINTR on all the + other system calls in the program. + + There is one other twist: there is a span between the time reap_children() + does its last check for dead children and the time the read(2) call is + entered, below, where if a child dies we won't notice. This is extremely + serious as it could cause us to deadlock, given the right set of events. + + To avoid this, we do the following: before we reap_children(), we dup(2) + the read FD on the jobserver pipe. The read(2) call below uses that new + FD. In the signal handler, we close that FD. That way, if a child dies + during the section mentioned above, the read(2) will be invoked with an + invalid FD and will return immediately with EBADF. */ + +static void +job_noop (int sig UNUSED) +{ +} + +/* Set the child handler action flags to FLAGS. */ +static void +set_child_handler_action_flags (int set_handler, int set_alarm) +{ + struct sigaction sa; + +#ifdef __EMX__ + /* The child handler must be turned off here. */ + signal (SIGCHLD, SIG_DFL); +#endif + + memset (&sa, '\0', sizeof sa); + sa.sa_handler = child_handler; + sa.sa_flags = set_handler ? 0 : SA_RESTART; + +#if defined SIGCHLD + if (sigaction (SIGCHLD, &sa, NULL) < 0) + pfatal_with_name ("sigaction: SIGCHLD"); +#endif + +#if defined SIGCLD && SIGCLD != SIGCHLD + if (sigaction (SIGCLD, &sa, NULL) < 0) + pfatal_with_name ("sigaction: SIGCLD"); +#endif + +#if defined SIGALRM + if (set_alarm) + { + /* If we're about to enter the read(), set an alarm to wake up in a + second so we can check if the load has dropped and we can start more + work. On the way out, turn off the alarm and set SIG_DFL. */ + if (set_handler) + { + sa.sa_handler = job_noop; + sa.sa_flags = 0; + if (sigaction (SIGALRM, &sa, NULL) < 0) + pfatal_with_name ("sigaction: SIGALRM"); + alarm (1); + } + else + { + alarm (0); + sa.sa_handler = SIG_DFL; + sa.sa_flags = 0; + if (sigaction (SIGALRM, &sa, NULL) < 0) + pfatal_with_name ("sigaction: SIGALRM"); + } + } +#endif +} + +unsigned int +jobserver_acquire (int timeout) +{ + char intake; + int got_token; + int saved_errno; + + /* Set interruptible system calls, and read() for a job token. */ + set_child_handler_action_flags (1, timeout); + + EINTRLOOP (got_token, read (job_rfd, &intake, 1)); + saved_errno = errno; + + set_child_handler_action_flags (0, timeout); + + if (got_token == 1) + return 1; + + /* If the error _wasn't_ expected (EINTR or EBADF), fatal. Otherwise, + go back and reap_children(), and try again. */ + errno = saved_errno; + + if (errno != EINTR && errno != EBADF) + pfatal_with_name (_("read jobs pipe")); + + if (errno == EBADF) + DB (DB_JOBS, ("Read returned EBADF.\n")); + + return 0; +} + +#endif /* HAVE_PSELECT */ + +#endif /* MAKE_JOBSERVER */ + +#if !defined(NO_OUTPUT_SYNC) + +#define MUTEX_PREFIX "fnm:" + +static int osync_handle = -1; + +static char *osync_tmpfile = NULL; + +static unsigned int sync_root = 0; + +unsigned int +osync_enabled () +{ + return osync_handle >= 0; +} + +void +osync_setup () +{ + osync_handle = get_tmpfd (&osync_tmpfile); + fd_noinherit (osync_handle); + sync_root = 1; +} + +char * +osync_get_mutex () +{ + char *mutex = NULL; + + if (osync_enabled ()) + { + /* Prepare the mutex handle string for our children. */ + mutex = xmalloc (strlen (osync_tmpfile) + CSTRLEN (MUTEX_PREFIX) + 1); + sprintf (mutex, MUTEX_PREFIX "%s", osync_tmpfile); + } + + return mutex; +} + +unsigned int +osync_parse_mutex (const char *mutex) +{ + if (strncmp (mutex, MUTEX_PREFIX, CSTRLEN (MUTEX_PREFIX)) != 0) + { + OS (error, NILF, _("invalid --sync-mutex string '%s'"), mutex); + return 0; + } + + free (osync_tmpfile); + osync_tmpfile = xstrdup (mutex + CSTRLEN (MUTEX_PREFIX)); + + EINTRLOOP (osync_handle, open (osync_tmpfile, O_WRONLY)); + if (osync_handle < 0) + OSS (fatal, NILF, _("cannot open output sync mutex %s: %s"), + osync_tmpfile, strerror (errno)); + + fd_noinherit (osync_handle); + + return 1; +} + +void +osync_clear () +{ + if (osync_handle >= 0) + { + close (osync_handle); + osync_handle = -1; + } + + if (sync_root && osync_tmpfile) + { + int r; + + EINTRLOOP (r, unlink (osync_tmpfile)); + free (osync_tmpfile); + osync_tmpfile = NULL; + } +} + +unsigned int +osync_acquire () +{ + if (osync_enabled()) + { + struct flock fl; + + fl.l_type = F_WRLCK; + fl.l_whence = SEEK_SET; + fl.l_start = 0; + fl.l_len = 1; + /* We don't want to keep waiting on EINTR. */ + if (fcntl (osync_handle, F_SETLKW, &fl) == -1) + { + perror ("fcntl()"); + return 0; + } + } + + return 1; +} + +void +osync_release () +{ + if (osync_enabled()) + { + struct flock fl; + + fl.l_type = F_UNLCK; + fl.l_whence = SEEK_SET; + fl.l_start = 0; + fl.l_len = 1; + /* We don't want to keep waiting on EINTR. */ + if (fcntl (osync_handle, F_SETLKW, &fl) == -1) + perror ("fcntl()"); + } +} + +#endif + +/* Create a "bad" file descriptor for stdin when parallel jobs are run. */ +int +get_bad_stdin () +{ + static int bad_stdin = -1; + + /* Set up a bad standard input that reads from a broken pipe. */ + + 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. */ + int pd[2]; + if (pipe (pd) == 0) + { + /* Close the write side. */ + 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. */ + fd_noinherit (bad_stdin); + } + } + + return bad_stdin; +} + +/* Set file descriptors to be inherited / not inherited by subprocesses. */ + +#if !defined(F_SETFD) || !defined(F_GETFD) +void fd_inherit (int fd) {} +void fd_noinherit (int fd) {} + +#else + +# ifndef FD_CLOEXEC +# define FD_CLOEXEC 1 +# endif + +void +fd_inherit (int fd) +{ + int flags; + EINTRLOOP (flags, fcntl (fd, F_GETFD)); + if (flags >= 0) + { + int r; + flags &= ~FD_CLOEXEC; + EINTRLOOP (r, fcntl (fd, F_SETFD, flags)); + } +} + +void +fd_noinherit (int fd) +{ + int flags; + EINTRLOOP (flags, fcntl(fd, F_GETFD)); + if (flags >= 0) + { + int r; + flags |= FD_CLOEXEC; + EINTRLOOP (r, fcntl(fd, F_SETFD, flags)); + } +} +#endif + +/* Set a file descriptor referring to a regular file to be in O_APPEND mode. + If it fails, just ignore it. */ + +void +fd_set_append (int fd) +{ +#if defined(F_GETFL) && defined(F_SETFL) && defined(O_APPEND) + struct stat stbuf; + int flags; + if (fstat (fd, &stbuf) == 0 && S_ISREG (stbuf.st_mode)) + { + flags = fcntl (fd, F_GETFL, 0); + if (flags >= 0) + { + int r; + EINTRLOOP(r, fcntl (fd, F_SETFL, flags | O_APPEND)); + } + } +#endif +} + +/* Return a file descriptor for a new anonymous temp file, or -1. */ +int +os_anontmp () +{ + const char *tdir = get_tmpdir (); + int fd = -1; + +#ifdef O_TMPFILE + static unsigned int tmpfile_works = 1; + + if (tmpfile_works) + { + EINTRLOOP (fd, open (tdir, O_RDWR | O_TMPFILE | O_EXCL, 0600)); + if (fd >= 0) + return fd; + + DB (DB_BASIC, (_("Cannot open '%s' with O_TMPFILE: %s.\n"), + tdir, strerror (errno))); + tmpfile_works = 0; + } +#endif + +#if HAVE_DUP + /* If we can dup and we are creating temp files in the default location then + try tmpfile() + dup() + fclose() to avoid ever having a named file. */ + if (streq (tdir, DEFAULT_TMPDIR)) + { + mode_t mask = umask (0077); + FILE *tfile; + ENULLLOOP (tfile, tmpfile ()); + if (!tfile) + pfatal_with_name ("tmpfile"); + umask (mask); + + EINTRLOOP (fd, dup (fileno (tfile))); + if (fd < 0) + pfatal_with_name ("dup"); + fclose (tfile); + } +#endif + + return fd; +} diff --git a/local/recipes/dev/gnu-make/source/src/read.c b/local/recipes/dev/gnu-make/source/src/read.c new file mode 100644 index 0000000000..0743124087 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/read.c @@ -0,0 +1,3546 @@ +/* Reading and parsing of makefiles for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" + +#include + +#include "filedef.h" +#include "dep.h" +#include "job.h" +#include "os.h" +#include "commands.h" +#include "variable.h" +#include "rule.h" +#include "debug.h" +#include "hash.h" + + +#ifdef WINDOWS32 +#include +#include "sub_proc.h" +#else /* !WINDOWS32 */ +#ifndef _AMIGA +#ifndef VMS +#include +#else +struct passwd *getpwnam (char *name); +#endif +#endif +#endif /* !WINDOWS32 */ + +/* A 'struct ebuffer' controls the origin of the makefile we are currently + eval'ing. +*/ + +struct ebuffer + { + char *buffer; /* Start of the current line in the buffer. */ + char *bufnext; /* Start of the next line in the buffer. */ + char *bufstart; /* Start of the entire buffer. */ + size_t size; /* Malloc'd size of buffer. */ + FILE *fp; /* File, or NULL if this is an internal buffer. */ + floc floc; /* Info on the file in fp (if any). */ + }; + +/* Track the modifiers we can have on variable assignments */ + +struct vmodifiers + { + unsigned int assign_v:1; + unsigned int define_v:1; + unsigned int undefine_v:1; + unsigned int override_v:1; + unsigned int private_v:1; + enum variable_export export_v ENUM_BITFIELD (2); + }; + +/* Types of "words" that can be read in a makefile. */ +enum make_word_type + { + w_bogus, w_eol, w_static, w_variable, w_colon, w_dcolon, w_semicolon, + w_varassign, w_ampcolon, w_ampdcolon + }; + + +/* A 'struct conditionals' contains the information describing + all the active conditionals in a makefile. + + 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 + 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? + 0=interpreting, 1=not yet interpreted, + 2=already interpreted */ + char *seen_else; /* Have we already seen an 'else'? */ + }; + +static struct conditionals toplevel_conditionals; +static struct conditionals *conditionals = &toplevel_conditionals; + + +/* Default directories to search for include files in */ + +static const char *default_include_directories[] = + { +#if defined(WINDOWS32) && !defined(INCLUDEDIR) +/* This completely up to the user when they install MSVC or other packages. + This is defined as a placeholder. */ +# define INCLUDEDIR "." +#endif +#if defined(INCLUDEDIR) + INCLUDEDIR, +#endif +#ifndef _AMIGA + "/usr/gnu/include", + "/usr/local/include", + "/usr/include", +#endif + 0 + }; + +/* List of directories to search for include files in */ + +static const char **include_directories; + +/* Maximum length of an element of the above. */ + +static size_t max_incl_len; + +/* The filename and pointer to line number of the + makefile currently being read in. */ + +const floc *reading_file = 0; + +/* The chain of files read by read_all_makefiles. */ + +static struct goaldep *read_files = 0; + +static struct goaldep *eval_makefile (const char *filename, unsigned short flags); +static void eval (struct ebuffer *buffer, int flags); + +static long readline (struct ebuffer *ebuf); +static void do_undefine (char *name, enum variable_origin origin, + struct ebuffer *ebuf); +static struct variable *do_define (char *name, enum variable_origin origin, + struct ebuffer *ebuf); +static int conditional_line (char *line, size_t len, const floc *flocp); +static void check_specials (struct nameseq *filep, int set_default); +static void check_special_file (struct file *filep, const floc *flocp); +static void record_files (struct nameseq *filenames, int are_also_makes, + const char *pattern, + const char *pattern_percent, char *depstr, + unsigned int cmds_started, char *commands, + size_t commands_idx, int two_colon, + char prefix, const floc *flocp); +static void record_target_var (struct nameseq *filenames, char *defn, + enum variable_origin origin, + struct vmodifiers *vmod, + const floc *flocp); +static enum make_word_type get_next_mword (char *buffer, + char **startp, size_t *length); +static void remove_comments (char *line); +static char *find_map_unquote (char *string, int map); +static char *find_char_unquote (char *string, int stop); +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 == CSTRLEN (s) && memcmp (s, p, CSTRLEN (s)) == 0) + + +/* Read in all the makefiles and return a chain of targets to rebuild. */ + +struct goaldep * +read_all_makefiles (const char **makefiles) +{ + unsigned int num_makefiles = 0; + + /* Create *_LIST variables, to hold the makefiles, targets, and variables + we will be reading. */ + + define_variable_cname ("MAKEFILE_LIST", "", o_file, 0); + + DB (DB_BASIC, (_("Reading makefiles...\n"))); + + /* If there's a non-null variable MAKEFILES, its value is a list of + files to read first thing. But don't let it prevent reading the + default makefiles and don't let the default goal come from there. */ + + { + char *value; + char *name, *p; + size_t length; + + { + /* Turn off --warn-undefined-variables while we expand MAKEFILES. */ + int save = warn_undefined_variables_flag; + warn_undefined_variables_flag = 0; + + value = allocated_variable_expand ("$(MAKEFILES)"); + + warn_undefined_variables_flag = save; + } + + /* Set NAME to the start of next token and LENGTH to its length. + MAKEFILES is updated for finding remaining tokens. */ + p = value; + + while ((name = find_next_token ((const char **)&p, &length)) != 0) + { + if (*p != '\0') + *p++ = '\0'; + eval_makefile (strcache_add (name), RM_NO_DEFAULT_GOAL|RM_INCLUDED|RM_DONTCARE); + } + + free (value); + } + + /* Read makefiles specified with -f switches. */ + + if (makefiles != 0) + while (*makefiles != 0) + { + struct goaldep *d = eval_makefile (*makefiles, 0); + + if (errno) + perror_with_name ("", *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. */ + + if (num_makefiles == 0) + { + static const char *default_makefiles[] = +#ifdef VMS + /* all lower case since readdir() (the vms version) 'lowercasifies' */ + /* TODO: Above is not always true, this needs more work */ + { "makefile.vms", "gnumakefile", "makefile", 0 }; +#else +#ifdef _AMIGA + { "GNUmakefile", "Makefile", "SMakefile", 0 }; +#else /* !Amiga && !VMS */ +#ifdef WINDOWS32 + { "GNUmakefile", "makefile", "Makefile", "makefile.mak", 0 }; +#else /* !Amiga && !VMS && !WINDOWS32 */ + { "GNUmakefile", "makefile", "Makefile", 0 }; +#endif /* !Amiga && !VMS && !WINDOWS32 */ +#endif /* AMIGA */ +#endif /* VMS */ + const char **p = default_makefiles; + while (*p != 0 && !file_exists_p (*p)) + ++p; + + if (*p != 0) + { + eval_makefile (*p, 0); + if (errno) + perror_with_name ("", *p); + } + else + { + /* No default makefile was found. Add the default makefiles to the + 'read_files' chain so they will be updated if possible. */ + for (p = default_makefiles; *p != 0; ++p) + { + struct goaldep *d = alloc_goaldep (); + d->file = enter_file (strcache_add (*p)); + /* 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->flags = RM_DONTCARE; + d->next = read_files; + read_files = d; + } + } + } + + return read_files; +} + +/* Install a new conditional and return the previous one. */ + +static struct conditionals * +install_conditionals (struct conditionals *new) +{ + struct conditionals *save = conditionals; + + memset (new, '\0', sizeof (*new)); + conditionals = new; + + return save; +} + +/* Free the current conditionals and reinstate a saved one. */ + +static void +restore_conditionals (struct conditionals *saved) +{ + /* Free any space allocated by conditional_line. */ + free (conditionals->ignoring); + free (conditionals->seen_else); + + /* Restore state. */ + conditionals = saved; +} + +static struct goaldep * +eval_makefile (const char *filename, unsigned short flags) +{ + struct goaldep *deps; + struct ebuffer ebuf; + const floc *curfile; + char *expanded = 0; + + /* Create a new goaldep entry. */ + deps = alloc_goaldep (); + deps->next = read_files; + read_files = deps; + + ebuf.floc.filenm = filename; /* Use the original file name. */ + ebuf.floc.lineno = 1; + ebuf.floc.offset = 0; + + if (ISDB (DB_VERBOSE)) + { + printf (_("Reading makefile '%s'"), filename); + if (flags & RM_NO_DEFAULT_GOAL) + printf (_(" (no default goal)")); + if (flags & RM_INCLUDED) + printf (_(" (search path)")); + if (flags & RM_DONTCARE) + printf (_(" (don't care)")); + if (flags & RM_NO_TILDE) + printf (_(" (no ~ expansion)")); + puts ("..."); + } + + /* First, get a stream to read. */ + + /* 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; + } + + errno = 0; + ENULLLOOP (ebuf.fp, fopen (filename, "r")); + deps->error = errno; + + /* Check for unrecoverable errors: out of mem or FILE slots. */ + switch (deps->error) + { +#ifdef EMFILE + case EMFILE: +#endif +#ifdef ENFILE + case ENFILE: +#endif + case ENOMEM: + { + const char *err = strerror (deps->error); + OS (fatal, reading_file, "%s", err); + } + } + + /* If the makefile wasn't found and it's either a makefile from the + 'MAKEFILES' variable or an included makefile, search the included + makefile search path for this makefile. */ + if (ebuf.fp == NULL && deps->error == ENOENT && (flags & RM_INCLUDED) + && *filename != '/' && include_directories) + { + const char **dir; + for (dir = include_directories; *dir != NULL; ++dir) + { + const char *included = concat (3, *dir, "/", filename); + + ENULLLOOP(ebuf.fp, fopen (included, "r")); + if (ebuf.fp) + { + filename = included; + break; + } + if (errno != ENOENT) + { + filename = included; + deps->error = errno; + break; + } + } + } + + /* Enter the final name for this makefile as a goaldep. */ + filename = strcache_add (filename); + deps->file = lookup_file (filename); + if (deps->file == 0) + deps->file = enter_file (filename); + filename = deps->file->name; + deps->flags = flags; + + free (expanded); + + if (ebuf.fp == 0) + { + /* The makefile can't be read at all, give up entirely. + If we did some searching errno has the error from the last attempt, + rather from FILENAME itself: recover the more accurate one. */ + errno = deps->error; + deps->file->last_mtime = NONEXISTENT_MTIME; + return deps; + } + + /* Success; clear errno. */ + deps->error = 0; + + /* If we tried and failed to read the included file before but this + time we succeeded, reset the last mtime. */ + if (deps->file->last_mtime == NONEXISTENT_MTIME) + deps->file->last_mtime = 0; + + /* Avoid leaking the makefile to children. */ + fd_noinherit (fileno (ebuf.fp)); + + /* Add this makefile to the list. */ + do_variable_definition (&ebuf.floc, "MAKEFILE_LIST", filename, o_file, + f_append_value, 0); + + /* Evaluate the makefile */ + + ebuf.size = 200; + ebuf.buffer = ebuf.bufnext = ebuf.bufstart = xmalloc (ebuf.size); + + curfile = reading_file; + reading_file = &ebuf.floc; + + eval (&ebuf, !(flags & RM_NO_DEFAULT_GOAL)); + + reading_file = curfile; + + fclose (ebuf.fp); + + free (ebuf.bufstart); + free_alloca (); + + errno = 0; + return deps; +} + +void +eval_buffer (char *buffer, const floc *flocp) +{ + struct ebuffer ebuf; + struct conditionals *saved; + struct conditionals new; + const floc *curfile; + + /* Evaluate the buffer */ + + ebuf.size = strlen (buffer); + ebuf.buffer = ebuf.bufnext = ebuf.bufstart = buffer; + ebuf.fp = NULL; + + if (flocp) + ebuf.floc = *flocp; + else if (reading_file) + ebuf.floc = *reading_file; + else + { + ebuf.floc.filenm = NULL; + ebuf.floc.lineno = 1; + ebuf.floc.offset = 0; + } + + curfile = reading_file; + reading_file = &ebuf.floc; + + saved = install_conditionals (&new); + + eval (&ebuf, 1); + + restore_conditionals (saved); + + reading_file = curfile; + + free_alloca (); +} + +/* Check LINE to see if it's a variable assignment or undefine. + + It might use one of the modifiers "export", "override", "private", or it + might be one of the conditional tokens like "ifdef", "include", etc. + + If it's not a variable assignment or undefine, VMOD.V_ASSIGN is 0. + Returns LINE. + + Returns a pointer to the first non-modifier character, and sets VMOD + based on the modifiers found if any, plus V_ASSIGN is 1. + */ +static char * +parse_var_assignment (const char *line, int targvar, struct vmodifiers *vmod) +{ + const char *p; + memset (vmod, '\0', sizeof (*vmod)); + + /* Find the start of the next token. If there isn't one we're done. */ + NEXT_TOKEN (line); + if (*line == '\0') + return (char *) line; + + p = line; + while (1) + { + size_t wlen; + const char *p2; + struct variable v; + + p2 = parse_variable_definition (p, &v); + + /* If this is a variable assignment, we're done. */ + if (p2) + break; + + /* It's not a variable; see if it's a modifier. */ + p2 = end_of_token (p); + wlen = p2 - p; + + if (word1eq ("export")) + vmod->export_v = v_export; + else if (word1eq ("unexport")) + vmod->export_v = v_noexport; + else if (word1eq ("override")) + vmod->override_v = 1; + else if (word1eq ("private")) + vmod->private_v = 1; + else if (!targvar && word1eq ("define")) + { + /* We can't have modifiers after 'define' */ + vmod->define_v = 1; + p = next_token (p2); + break; + } + else if (!targvar && word1eq ("undefine")) + { + /* We can't have modifiers after 'undefine' */ + vmod->undefine_v = 1; + p = next_token (p2); + break; + } + else + /* Not a variable or modifier: this is not a variable assignment. */ + return (char *) line; + + /* It was a modifier. Try the next word. */ + p = next_token (p2); + if (*p == '\0') + return (char *) line; + } + + /* Found a variable assignment or undefine. */ + vmod->assign_v = 1; + return (char *)p; +} + + +/* Read file FILENAME as a makefile and add its contents to the data base. + + SET_DEFAULT is true if we are allowed to set the default goal. */ + +static void +eval (struct ebuffer *ebuf, int set_default) +{ + char *collapsed = 0; + size_t collapsed_length = 0; + size_t commands_len = 200; + char *commands; + size_t 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 also_make_targets = 0; /* Set when reading grouped 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; + floc *fstart; + floc fi; + +#define record_waiting_files() \ + do \ + { \ + if (filenames != 0) \ + { \ + fi.lineno = tgts_started; \ + fi.offset = 0; \ + record_files (filenames, also_make_targets, pattern, \ + pattern_percent, depstr, \ + cmds_started, commands, commands_idx, two_colon, \ + prefix, &fi); \ + filenames = 0; \ + } \ + commands_idx = 0; \ + no_targets = 0; \ + pattern = 0; \ + also_make_targets = 0; \ + } while (0) + + pattern_percent = 0; + cmds_started = tgts_started = 1; + + fstart = &ebuf->floc; + fi.filenm = ebuf->floc.filenm; + + /* Loop over lines in the file. + The strategy is to accumulate target names in FILENAMES, dependencies + in DEPS and commands in COMMANDS. These are used to define a rule + 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. If you see record_waiting_files(), then the statement + we are parsing also finishes the previous rule. */ + + commands = xmalloc (200); + + while (1) + { + size_t linelen; + char *line; + size_t wlen; + char *p; + char *p2; + struct vmodifiers vmod; + + /* At the top of this loop, we are starting a brand new line. */ + /* Grab the next line to be evaluated */ + ebuf->floc.lineno += nlines; + nlines = readline (ebuf); + + /* If there is nothing left to eval, we're done. */ + if (nlines < 0) + break; + + line = ebuf->buffer; + + /* If this is the first line, check for a UTF-8 BOM and skip it. */ + if (ebuf->floc.lineno == 1) + { + unsigned char *ul = (unsigned char *) line; + if (ul[0] == 0xEF && ul[1] == 0xBB && ul[2] == 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 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; + + 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_len = (linelen + commands_idx) * 2; + commands = xrealloc (commands, commands_len); + } + 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; + free (collapsed); + /* Don't need xrealloc: we don't need to preserve the content. */ + collapsed = xmalloc (collapsed_length); + } + strcpy (collapsed, line); + /* Collapse continuation lines. */ + collapse_continuations (collapsed); + remove_comments (collapsed); + + /* Get rid if starting space (including formfeed, vtab, etc.) */ + p = collapsed; + NEXT_TOKEN (p); + + /* 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, 0, &vmod); + if (vmod.assign_v) + { + struct variable *v; + enum variable_origin origin = vmod.override_v ? o_override : o_file; + + /* If we're ignoring then we're done now. */ + if (ignoring) + { + if (vmod.define_v) + in_ignored_define = 1; + continue; + } + + /* Variable assignment ends the previous rule. */ + record_waiting_files (); + + if (vmod.undefine_v) + { + do_undefine (p, origin, ebuf); + continue; + } + else if (vmod.define_v) + v = do_define (p, origin, ebuf); + else + v = try_variable_definition (fstart, p, origin, 0); + + assert (v != NULL); + + if (vmod.export_v != v_default) + v->export = vmod.export_v; + if (vmod.private_v) + v->private_var = 1; + + /* This line has been dealt with. */ + continue; + } + + /* If this line is completely empty, ignore it. */ + if (*p == '\0') + continue; + + p2 = end_of_token (p); + wlen = p2 - p; + NEXT_TOKEN (p2); + + /* 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") && STOP_SET (*p2, MAP_COMMENT|MAP_NUL)) + in_ignored_define = 0; + + continue; + } + + /* Check for conditional state changes. */ + { + int i = conditional_line (p, wlen, fstart); + if (i != -2) + { + if (i == -1) + O (fatal, fstart, _("invalid syntax in conditional")); + + ignoring = i; + continue; + } + } + + /* Nothing to see here... move along. */ + if (ignoring) + 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') + export_all_variables = exporting; + else + { + size_t l; + const char *cp; + char *ap; + + /* Expand the line so we can use indirect and constructed + variable names in an (un)export command. */ + cp = ap = allocated_variable_expand (p2); + + for (p = find_next_token (&cp, &l); p != 0; + p = find_next_token (&cp, &l)) + { + struct variable *v = lookup_variable (p, l); + if (v == 0) + v = define_variable_global (p, l, "", o_file, 0, fstart); + v->export = exporting ? v_export : v_noexport; + } + + free (ap); + } + continue; + } + + /* Handle the special syntax for vpath. */ + if (word1eq ("vpath")) + { + const char *cp; + char *vpat; + size_t 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); + 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; + 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'); + + /* Include 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! */ + p2 = p; + files = PARSE_FILE_SEQ (&p2, struct nameseq, MAP_NUL, NULL, + PARSEFS_NOAR); + free (p); + + /* 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 (); + + /* Read each included makefile. */ + while (files != 0) + { + struct nameseq *next = files->next; + unsigned short flags = (RM_INCLUDED | RM_NO_TILDE + | (noerror ? RM_DONTCARE : 0) + | (set_default ? 0 : RM_NO_DEFAULT_GOAL)); + + struct goaldep *d = eval_makefile (files->name, flags); + d->floc = *fstart; + + free_ns (files); + files = next; + } + + /* 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 goaldep *deps; + struct file *f; + int r; + + { + struct file file = {0}; + file.name = name; + /* Load the file. 0 means failure. */ + r = load_file (&ebuf->floc, &file, noerror); + if (! r && ! noerror) + OS (fatal, &ebuf->floc, _("%s: failed to load"), name); + name = file.name; + } + + f = lookup_file (name); + if (!f) + f = enter_file (name); + f->loaded = 1; + f->unloaded = 0; + + free_ns (files); + files = next; + + /* Return of -1 means don't ever try to rebuild. */ + if (r == -1) + continue; + + /* Otherwise add it to the list to be rebuilt. */ + deps = alloc_goaldep (); + deps->next = read_files; + deps->floc = ebuf->floc; + read_files = deps; + deps->file = f; + } + + 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) + O (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 ':', + 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 + parts of the expanded buffer we haven't searched yet. */ + + { + enum make_word_type wtype; + char *cmdleft, *semip = 0, *lb_next; + size_t plen = 0; + char *colonp; + const char *end, *beg; /* Helpers for whitespace stripping. */ + + /* Record the previous rule. */ + + record_waiting_files (); + tgts_started = fstart->lineno; + + /* Search the line for an unquoted ; that is not after an + unquoted #. */ + cmdleft = find_map_unquote (line, MAP_SEMI|MAP_COMMENT|MAP_VARIABLE); + if (cmdleft != 0 && *cmdleft == '#') + { + /* We found a comment before a semicolon. */ + *cmdleft = '\0'; + cmdleft = 0; + } + else if (cmdleft != 0) + { + /* Found one. Cut the line short there before expanding it. */ + semip = cmdleft++; + *semip = '\0'; + } + + collapse_continuations (line); + + /* We can't expand the entire line, since if it's a per-target + 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, &lb_next, &wlen); + switch (wtype) + { + case w_eol: + if (cmdleft != 0) + O (fatal, fstart, _("missing rule before recipe")); + /* This line contained something but turned out to be nothing + but whitespace (a comment?). */ + continue; + + case w_colon: + case w_dcolon: + case w_ampcolon: + case w_ampdcolon: + /* We accept and ignore rules without targets for + compatibility with SunOS 4 make. */ + no_targets = 1; + continue; + + default: + break; + } + + p2 = variable_expand_string (NULL, lb_next, wlen); + + while (1) + { + lb_next += wlen; + if (cmdleft == 0) + { + /* Look for a semicolon in the expanded line. */ + cmdleft = find_char_unquote (p2, ';'); + + if (cmdleft != 0) + { + size_t p2_off = p2 - variable_buffer; + size_t cmd_off = cmdleft - variable_buffer; + char *pend = p2 + strlen (p2); + + /* Append any remnants of lb, then cut the line short + at the semicolon. */ + *cmdleft = '\0'; + + /* One school of thought says that you shouldn't expand + 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-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. */ + variable_expand_string (pend, lb_next, SIZE_MAX); + lb_next += strlen (lb_next); + p2 = variable_buffer + p2_off; + cmdleft = variable_buffer + cmd_off + 1; + } + } + + colonp = find_char_unquote (p2, ':'); + +#ifdef HAVE_DOS_PATHS + if (colonp > p2) + /* The drive spec brain-damage strikes again... + Note that the only separators of targets in this context are + whitespace and a left paren. If others are possible, add them + to the string in the call to strchr. */ + while (colonp && ISDIRSEP (colonp[1]) && + isalpha ((unsigned char) colonp[-1]) && + (colonp == p2 + 1 || strchr (" \t(", colonp[-2]) != 0)) + colonp = find_char_unquote (colonp + 1, ':'); +#endif + + if (colonp) + { + /* If the previous character is '&', back up before '&:' */ + if (colonp > p2 && colonp[-1] == '&') + --colonp; + + break; + } + + wtype = get_next_mword (lb_next, &lb_next, &wlen); + if (wtype == w_eol) + break; + + p2 += strlen (p2); + *(p2++) = ' '; + 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. */ + } + + p2 = next_token (variable_buffer); + + /* If the word we're looking at is EOL, see if there's _anything_ + on the line. If not, a variable expanded to nothing, so ignore + it. If so, we can't parse this line so punt. */ + if (wtype == w_eol) + { + if (*p2 == '\0') + continue; + + /* There's no need to be ivory-tower about this: check for + one of the most common bugs found in makefiles... */ + if (cmd_prefix == '\t' && strneq (line, " ", 8)) + O (fatal, fstart, _("missing separator (did you mean TAB instead of 8 spaces?)")); + else + O (fatal, fstart, _("missing separator")); + } + + { + char save = *colonp; + + /* If we have &:, it specifies that the targets are understood to be + updated/created together by a single invocation of the recipe. */ + if (save == '&') + also_make_targets = 1; + + /* Make the colon the end-of-string so we know where to stop + looking for targets. Start there again once we're done. */ + *colonp = '\0'; + filenames = PARSE_SIMPLE_SEQ (&p2, struct nameseq); + *colonp = save; + p2 = colonp + (save == '&'); + } + + if (!filenames) + { + /* We accept and ignore rules without targets for + compatibility with SunOS 4 make. */ + no_targets = 1; + continue; + } + /* This should never be possible; we handled it above. */ + assert (*p2 != '\0'); + ++p2; + + /* Is this a one-colon or two-colon entry? */ + two_colon = *p2 == ':'; + if (two_colon) + p2++; + + /* Test to see if it's a target-specific variable. Copy the rest + of the buffer over, possibly temporarily (we'll expand it later + if it's not a target-specific variable). PLEN saves the length + of the unparsed section of p2, for later. */ + if (*lb_next != '\0') + { + size_t l = p2 - variable_buffer; + plen = strlen (p2); + variable_buffer_output (p2+plen, lb_next, strlen (lb_next)+1); + p2 = variable_buffer + l; + } + + p2 = parse_var_assignment (p2, 1, &vmod); + if (vmod.assign_v) + { + /* If there was a semicolon found, add it back, plus anything + after it. */ + if (semip) + { + size_t l = p2 - variable_buffer; + *semip = ';'; + collapse_continuations (semip); + variable_buffer_output (p2 + strlen (p2), + semip, strlen (semip)+1); + p2 = variable_buffer + l; + } + record_target_var (filenames, p2, + vmod.override_v ? o_override : o_file, + &vmod, fstart); + filenames = 0; + continue; + } + + /* This is a normal target, _not_ a target-specific variable. + Unquote any = in the dependency list. */ + find_char_unquote (lb_next, '='); + + /* Remember the command prefix for this target. */ + prefix = cmd_prefix; + + /* We have some targets, so don't ignore the following commands. */ + no_targets = 0; + + /* Expand the dependencies, etc. */ + if (*lb_next != '\0') + { + size_t l = p2 - variable_buffer; + variable_expand_string (p2 + plen, lb_next, SIZE_MAX); + p2 = variable_buffer + l; + + /* Look for a semicolon in the expanded line. */ + if (cmdleft == 0) + { + cmdleft = find_char_unquote (p2, ';'); + if (cmdleft != 0) + *(cmdleft++) = '\0'; + } + } + + /* Is this a static pattern rule: 'target: %targ: %dep; ...'? */ + p = strchr (p2, ':'); + while (p != 0 && p[-1] == '\\') + { + char *q = &p[-1]; + int backslash = 0; + while (*q-- == '\\') + backslash = !backslash; + if (backslash) + p = strchr (p + 1, ':'); + else + break; + } +#ifdef _AMIGA + /* Here, the situation is quite complicated. Let's have a look + at a couple of targets: + + install: dev:make + + dev:make: make + + dev:make:: xyz + + The rule is that it's only a target, if there are TWO :'s + OR a space around the :. + */ + if (p && !(ISSPACE (p[1]) || !p[1] || ISSPACE (p[-1]))) + p = 0; +#endif +#ifdef HAVE_DOS_PATHS + { + int check_again; + do { + check_again = 0; + /* For DOS-style paths, skip a "C:\..." or a "C:/..." */ + if (p != 0 && ISDIRSEP (p[1]) && isalpha ((unsigned char)p[-1]) && + (p == p2 + 1 || strchr (" \t:(", p[-2]) != 0)) { + p = strchr (p + 1, ':'); + check_again = 1; + } + } while (check_again); + } +#endif + if (p != 0) + { + struct nameseq *target; + target = PARSE_FILE_SEQ (&p2, struct nameseq, MAP_COLON, NULL, + PARSEFS_NOGLOB); + ++p2; + if (target == 0) + O (fatal, fstart, _("missing target pattern")); + else if (target->next != 0) + O (fatal, fstart, _("multiple target patterns")); + pattern_percent = find_percent_cached (&target->name); + pattern = target->name; + if (pattern_percent == 0) + O (fatal, fstart, _("target pattern contains no '%%'")); + free_ns (target); + } + else + pattern = 0; + + /* Strip leading and trailing whitespaces. */ + beg = p2; + end = beg + strlen (beg) - 1; + strip_whitespace (&beg, &end); + + /* Put all the prerequisites here; they'll be parsed later. */ + if (beg <= end && *beg != '\0') + depstr = xstrndup (beg, end - beg + 1); + else + depstr = 0; + + commands_idx = 0; + if (cmdleft != 0) + { + /* Semicolon means rest of line is a command. */ + size_t l = strlen (cmdleft); + + cmds_started = fstart->lineno; + + /* Add this command line to the buffer. */ + if (l + 2 > commands_len) + { + commands_len = (l + 2) * 2; + commands = xrealloc (commands, commands_len); + } + memcpy (commands, cmdleft, l); + commands_idx += l; + commands[commands_idx++] = '\n'; + } + + check_specials (filenames, set_default); + } + } + +#undef word1eq + + if (conditionals->if_cmds) + O (fatal, fstart, _("missing 'endif'")); + + /* At eof, record the last rule. */ + record_waiting_files (); + + free (collapsed); + free (commands); +} + + +/* Remove comments from LINE. + This will also remove backslashes that escape things. + It ignores comment characters that appear inside variable references. */ + +static void +remove_comments (char *line) +{ + char *comment; + + comment = find_map_unquote (line, MAP_COMMENT|MAP_VARIABLE); + + if (comment != 0) + /* Cut off the line at the #. */ + *comment = '\0'; +} + +/* Execute a 'undefine' directive. + The undefine line has already been read, and NAME is the name of + the variable to be undefined. */ + +static void +do_undefine (char *name, enum variable_origin origin, struct ebuffer *ebuf) +{ + char *p, *var; + + /* Expand the variable name and find the beginning (NAME) and end. */ + var = allocated_variable_expand (name); + name = next_token (var); + if (*name == '\0') + O (fatal, &ebuf->floc, _("empty variable name")); + p = name + strlen (name) - 1; + while (p > name && ISBLANK (*p)) + --p; + p[1] = '\0'; + + undefine_variable_global (name, p - name + 1, origin); + free (var); +} + +/* Execute a 'define' directive. + The first line has already been read, and NAME is the name of + the variable to be defined. The following lines remain to be read. */ + +static struct variable * +do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf) +{ + struct variable *v; + struct variable var; + floc defstart; + int nlevels = 1; + size_t length = 100; + char *definition = xmalloc (length); + size_t idx = 0; + char *p, *n; + + defstart = ebuf->floc; + + p = parse_variable_definition (name, &var); + if (p == NULL) + /* No assignment token, so assume recursive. */ + var.flavor = f_recursive; + else + { + if (var.value[0] != '\0') + O (error, &defstart, _("extraneous text after 'define' directive")); + + /* Chop the string before the assignment token to get the name. */ + var.name[var.length] = '\0'; + } + + /* Expand the variable name and find the beginning (NAME) and end. */ + n = allocated_variable_expand (name); + name = next_token (n); + if (name[0] == '\0') + O (fatal, &defstart, _("empty variable name")); + p = name + strlen (name) - 1; + while (p > name && ISBLANK (*p)) + --p; + p[1] = '\0'; + + /* Now read the value of the variable. */ + while (1) + { + size_t len; + char *line; + long nlines = readline (ebuf); + + /* If there is nothing left to be eval'd, there's no 'endef'!! */ + if (nlines < 0) + O (fatal, &defstart, _("missing 'endef', unterminated 'define'")); + + ebuf->floc.lineno += nlines; + line = ebuf->buffer; + + collapse_continuations (line); + + /* If the line doesn't begin with a tab, test to see if it introduces + another define, or ends one. Stop if we find an 'endef' */ + if (line[0] != cmd_prefix) + { + p = next_token (line); + len = strlen (p); + + /* If this is another 'define', increment the level count. */ + if ((len == 6 || (len > 6 && ISBLANK (p[6]))) + && strneq (p, "define", 6)) + ++nlevels; + + /* If this is an 'endef', decrement the count. If it's now 0, + we've found the last one. */ + else if ((len == 5 || (len > 5 && ISBLANK (p[5]))) + && strneq (p, "endef", 5)) + { + p += 5; + remove_comments (p); + if (*(next_token (p)) != '\0') + O (error, &ebuf->floc, + _("extraneous text after 'endef' directive")); + + if (--nlevels == 0) + break; + } + } + + /* Add this line to the variable definition. */ + len = strlen (line); + if (idx + len + 1 > length) + { + length = (idx + len) * 2; + definition = xrealloc (definition, length + 1); + } + + memcpy (&definition[idx], line, len); + idx += len; + /* Separate lines with a newline. */ + definition[idx++] = '\n'; + } + + /* We've got what we need; define the variable. */ + if (idx == 0) + definition[0] = '\0'; + else + definition[idx - 1] = '\0'; + + v = do_variable_definition (&defstart, name, + definition, origin, var.flavor, 0); + free (definition); + free (n); + return (v); +} + +/* Interpret conditional commands "ifdef", "ifndef", "ifeq", + "ifneq", "else" and "endif". + LINE is the input line, with the command as its first word. + + FILENAME and LINENO are the filename and line number in the + current makefile. They are used for error messages. + + Value is -2 if the line is not a conditional at all, + -1 if the line is an invalid conditional, + 0 if following text should be interpreted, + 1 if following text should be ignored. */ + +static int +conditional_line (char *line, size_t len, const floc *flocp) +{ + const char *cmdname; + enum { c_ifdef, c_ifndef, c_ifeq, c_ifneq, c_else, c_endif } cmdtype; + unsigned int i; + unsigned int o; + + /* Compare a word, both length and contents. */ +#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) + else chkword ("ifndef", c_ifndef) + else chkword ("ifeq", c_ifeq) + else chkword ("ifneq", c_ifneq) + else chkword ("else", c_else) + else chkword ("endif", c_endif) + else + return -2; + + /* Found one: skip past it and any whitespace after it. */ + line += len; + NEXT_TOKEN (line); + +#define EXTRATEXT() OS (error, flocp, _("extraneous text after '%s' directive"), cmdname) +#define EXTRACMD() OS (fatal, flocp, _("extraneous '%s'"), cmdname) + + /* An 'endif' cannot contain extra text, and reduces the if-depth by 1 */ + if (cmdtype == c_endif) + { + if (*line != '\0') + EXTRATEXT (); + + if (!conditionals->if_cmds) + EXTRACMD (); + + --conditionals->if_cmds; + + goto DONE; + } + + /* An 'else' statement can either be simple, or it can have another + conditional after it. */ + if (cmdtype == c_else) + { + const char *p; + + if (!conditionals->if_cmds) + EXTRACMD (); + + o = conditionals->if_cmds - 1; + + if (conditionals->seen_else[o]) + O (fatal, flocp, _("only one 'else' per conditional")); + + /* Change the state of ignorance. */ + switch (conditionals->ignoring[o]) + { + case 0: + /* We've just been interpreting. Never do it again. */ + conditionals->ignoring[o] = 2; + break; + case 1: + /* We've never interpreted yet. Maybe this time! */ + conditionals->ignoring[o] = 0; + break; + } + + /* It's a simple 'else'. */ + if (*line == '\0') + { + conditionals->seen_else[o] = 1; + goto DONE; + } + + /* The 'else' has extra text. That text must be another conditional + and cannot be an 'else' or 'endif'. */ + + /* Find the length of the next word. */ + 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") + || conditional_line (line, len, flocp) < 0) + EXTRATEXT (); + else + { + /* conditional_line() created a new level of conditional. + Raise it back to this level. */ + if (conditionals->ignoring[o] < 2) + conditionals->ignoring[o] = conditionals->ignoring[o+1]; + --conditionals->if_cmds; + } + + goto DONE; + } + + if (conditionals->allocated == 0) + { + conditionals->allocated = 5; + conditionals->ignoring = xmalloc (conditionals->allocated); + conditionals->seen_else = xmalloc (conditionals->allocated); + } + + o = conditionals->if_cmds++; + if (conditionals->if_cmds > conditionals->allocated) + { + conditionals->allocated += 5; + conditionals->ignoring = xrealloc (conditionals->ignoring, + conditionals->allocated); + conditionals->seen_else = xrealloc (conditionals->seen_else, + conditionals->allocated); + } + + /* Record that we have seen an 'if...' but no 'else' so far. */ + 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; + } + + if (cmdtype == c_ifdef || cmdtype == c_ifndef) + { + size_t l; + char *var; + struct variable *v; + char *p; + + /* Expand the thing we're looking up, so we can use indirect and + constructed variable names. */ + var = allocated_variable_expand (line); + + /* Make sure there's only one variable name to test. */ + p = end_of_token (var); + l = p - var; + NEXT_TOKEN (p); + if (*p != '\0') + return -1; + + var[l] = '\0'; + v = lookup_variable (var, l); + + conditionals->ignoring[o] = + ((v != 0 && *v->value != '\0') == (cmdtype == c_ifndef)); + + free (var); + } + else + { + /* "ifeq" or "ifneq". */ + char *s1, *s2; + size_t l; + char termin = *line == '(' ? ',' : *line; + + if (termin != ',' && termin != '"' && termin != '\'') + 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; + } + else + while (*line != '\0' && *line != termin) + ++line; + + if (*line == '\0') + return -1; + + if (termin == ',') + { + /* Strip blanks after the first string. */ + char *p = line++; + while (ISBLANK (p[-1])) + --p; + *p = '\0'; + } + else + *line++ = '\0'; + + s2 = variable_expand (s1); + /* We must allocate a new copy of the expanded string because + 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. */ + NEXT_TOKEN (line); + + termin = termin == ',' ? ')' : *line; + if (termin != ')' && termin != '"' && termin != '\'') + 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; + } + } + } + else + { + ++line; + s2 = line; + while (*line != '\0' && *line != termin) + ++line; + } + + if (*line == '\0') + return -1; + + *(line++) = '\0'; + NEXT_TOKEN (line); + if (*line != '\0') + EXTRATEXT (); + + s2 = variable_expand (s2); + conditionals->ignoring[o] = (streq (s1, s2) == (cmdtype == c_ifneq)); + } + + DONE: + /* Search through the stack to see if we're ignoring. */ + for (i = 0; i < conditionals->if_cmds; ++i) + if (conditionals->ignoring[i]) + return 1; + return 0; +} + + +/* Record target-specific variable values for files FILENAMES. + TWO_COLON is nonzero if a double colon was used. + + The links of FILENAMES are freed, and so are any names in it + that are not incorporated into other data structures. + + If the target is a pattern, add the variable to the pattern-specific + variable value list. */ + +static void +record_target_var (struct nameseq *filenames, char *defn, + enum variable_origin origin, struct vmodifiers *vmod, + const floc *flocp) +{ + struct nameseq *nextf; + struct variable_set_list *global; + + global = current_variable_set_list; + + /* If the variable is an append version, store that but treat it as a + normal recursive variable. */ + + for (; filenames != 0; filenames = nextf) + { + struct variable *v; + const char *name = filenames->name; + const char *percent; + struct pattern_var *p; + + nextf = filenames->next; + free_ns (filenames); + + /* If it's a pattern target, then add it to the pattern-specific + variable list. */ + percent = find_percent_cached (&name); + if (percent) + { + /* Get a reference for this pattern-specific variable struct. */ + p = create_pattern_var (name, percent); + p->variable.fileinfo = *flocp; + /* I don't think this can fail since we already determined it was a + variable definition. */ + v = assign_variable_definition (&p->variable, defn); + assert (v != 0); + + v->origin = origin; + if (v->flavor == f_simple) + v->value = allocated_variable_expand (v->value); + else + v->value = xstrdup (v->value); + } + else + { + struct file *f; + + /* Get a file reference for this file, and initialize it. + We don't want to just call enter_file() because that allocates a + new entry if the file is a double-colon, which we don't want in + this situation. */ + f = lookup_file (name); + if (!f) + f = enter_file (strcache_add (name)); + else if (f->double_colon) + f = f->double_colon; + + initialize_file_variables (f, 1); + + current_variable_set_list = f->variables; + v = try_variable_definition (flocp, defn, origin, 1); + if (!v) + O (fatal, flocp, _("Malformed target-specific variable definition")); + current_variable_set_list = global; + } + + /* Set up the variable to be *-specific. */ + v->per_target = 1; + v->private_var = vmod->private_v; + if (vmod->export_v != v_default) + v->export = vmod->export_v; + + /* If it's not an override, check to see if there was a command-line + setting. If so, reset the value. */ + if (v->origin != o_override) + { + struct variable *gv; + size_t len = strlen (v->name); + + gv = lookup_variable (v->name, len); + if (gv && v != gv + && (gv->origin == o_env_override || gv->origin == o_command)) + { + free (v->value); + v->value = xstrdup (gv->value); + v->origin = gv->origin; + v->recursive = gv->recursive; + v->append = 0; + } + } + } +} + + +/* Check for special targets. We used to do this in record_files() but that's + too late: by the time we get there we'll have already parsed the next line + and it have been mis-parsed because these special targets haven't been + considered yet. */ + +static void +check_specials (struct nameseq *files, int set_default) +{ + struct nameseq *t; + + for (t = files; t != NULL; t = t->next) + { + const char* nm = t->name; + + if (!posix_pedantic && streq (nm, ".POSIX")) + { + posix_pedantic = 1; + define_variable_cname (".SHELLFLAGS", "-ec", o_default, 0); + /* These default values are based on IEEE Std 1003.1-2008. + It requires '-O 1' for [CF]FLAGS, but GCC doesn't allow + space between -O and the number so omit it here. */ + define_variable_cname ("CC", "c99", o_default, 0); + define_variable_cname ("CFLAGS", "-O1", o_default, 0); + define_variable_cname ("FC", "fort77", o_default, 0); + define_variable_cname ("FFLAGS", "-O1", o_default, 0); + define_variable_cname ("SCCSGETFLAGS", "-s", o_default, 0); + define_variable_cname ("ARFLAGS", "-rv", o_default, 0); + continue; + } + + if (!second_expansion && streq (nm, ".SECONDEXPANSION")) + { + second_expansion = 1; + continue; + } + +#if !defined (__MSDOS__) && !defined (__EMX__) + if (!one_shell && streq (nm, ".ONESHELL")) + { + one_shell = 1; + continue; + } +#endif + + /* Determine if this target should be made default. */ + + if (set_default && default_goal_var->value[0] == '\0') + { + struct dep *d; + int reject = 0; + + /* We have nothing to do if this is an implicit rule. */ + if (strchr (nm, '%') != 0) + break; + + /* See if this target's name does not start with a '.', + unless it contains a slash. */ + if (*nm == '.' && strchr (nm, '/') == 0 +#ifdef HAVE_DOS_PATHS + && strchr (nm, '\\') == 0 +#endif + ) + continue; + + /* If this file is a suffix, it can't be the default goal file. */ + for (d = suffix_file->deps; d != 0; d = d->next) + { + struct dep *d2; + if (*dep_name (d) != '.' && streq (nm, dep_name (d))) + { + reject = 1; + break; + } + for (d2 = suffix_file->deps; d2 != 0; d2 = d2->next) + { + size_t l = strlen (dep_name (d2)); + if (!strneq (nm, dep_name (d2), l)) + continue; + if (streq (nm + l, dep_name (d))) + { + reject = 1; + break; + } + } + + if (reject) + break; + } + + if (!reject) + define_variable_global (".DEFAULT_GOAL", 13, t->name, + o_file, 0, NILF); + } + } +} + +/* Check for special targets. We used to do this in record_files() but that's + too late: by the time we get there we'll have already parsed the next line + and it have been mis-parsed because these special targets haven't been + considered yet. */ + +static void +check_special_file (struct file *file, const floc *flocp) +{ + if (streq (file->name, ".WAIT")) + { + static unsigned int wpre = 0, wcmd = 0; + + if (!wpre && file->deps) + { + O (error, flocp, _(".WAIT should not have prerequisites")); + wpre = 1; + } + + if (!wcmd && file->cmds) + { + O (error, flocp, _(".WAIT should not have commands")); + wcmd = 1; + } + + return; + } +} + +/* Record a description line for files FILENAMES, + 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 + a static pattern rule, and PATTERN_PERCENT is a pointer + 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. */ + +static void +record_files (struct nameseq *filenames, int are_also_makes, + const char *pattern, + const char *pattern_percent, char *depstr, + unsigned int cmds_started, char *commands, + size_t commands_idx, int two_colon, + char prefix, const floc *flocp) +{ + struct commands *cmds; + struct dep *deps; + struct dep *also_make = NULL; + const char *implicit_percent; + const char *name; + + /* If we've already snapped deps, that means we're in an eval being + resolved after the makefiles have been read in. We can't add more rules + at this time, since they won't get snapped and we'll get core dumps. + See Savannah bug # 12124. */ + if (snapped_deps) + O (fatal, flocp, _("prerequisites cannot be defined in recipes")); + + /* Determine if this is a pattern rule or not. */ + name = filenames->name; + implicit_percent = find_percent_cached (&name); + + /* If there's a recipe, set up a struct for it. */ + if (commands_idx > 0) + { + cmds = xmalloc (sizeof (struct commands)); + cmds->fileinfo.filenm = flocp->filenm; + cmds->fileinfo.lineno = cmds_started; + cmds->fileinfo.offset = 0; + cmds->commands = xstrndup (commands, commands_idx); + cmds->command_lines = 0; + cmds->recipe_prefix = prefix; + } + else if (are_also_makes) + O (fatal, flocp, _("grouped targets must provide a recipe")); + else + cmds = NULL; + + /* If there's a prereq string then parse it--unless it's eligible for 2nd + expansion: if so, snap_deps() will do it. */ + if (depstr == 0) + deps = 0; + else + { + 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 + can test the first one to see if we're working with an implicit rule; if + so we handle it specially. */ + + if (implicit_percent) + { + struct nameseq *nextf; + const char **targets, **target_pats; + unsigned short c; + + if (pattern != 0) + O (fatal, flocp, _("mixed implicit and static pattern rules")); + + /* Count the targets to create an array of target names. + We already have the first one. */ + nextf = filenames->next; + free_ns (filenames); + filenames = nextf; + + for (c = 1; nextf; ++c, nextf = nextf->next) + ; + targets = xmalloc (c * sizeof (const char *)); + target_pats = xmalloc (c * sizeof (const char *)); + + targets[0] = name; + target_pats[0] = implicit_percent; + + c = 1; + while (filenames) + { + name = filenames->name; + implicit_percent = find_percent_cached (&name); + + if (implicit_percent == 0) + O (fatal, flocp, _("mixed implicit and normal rules")); + + targets[c] = name; + target_pats[c] = implicit_percent; + ++c; + + nextf = filenames->next; + free_ns (filenames); + filenames = nextf; + } + + create_pattern_rule (targets, target_pats, c, two_colon, deps, cmds, 1); + + return; + } + + + /* Walk through each target and create it in the database. + We already set up the first target, above. */ + while (1) + { + struct nameseq *nextf = filenames->next; + struct file *f; + struct dep *this = 0; + + free_ns (filenames); + + /* If this is a static pattern rule: + 'targets: target%pattern: prereq%pattern; recipe', + make sure the pattern matches this target name. */ + if (pattern && !pattern_matches (pattern, pattern_percent, name)) + OS (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 + place in the database. */ + this = nextf != 0 ? copy_dep_chain (deps) : deps; + + /* Find or create an entry in the file database for this target. */ + if (!two_colon) + { + /* Single-colon. Combine this rule with the file's existing record, + if any. */ + f = enter_file (strcache_add (name)); + if (f->double_colon) + OS (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) + OS (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) + { + size_t l = strlen (f->name); + error (&cmds->fileinfo, l, + _("warning: overriding recipe for target '%s'"), + f->name); + error (&f->cmds->fileinfo, l, + _("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) + { + free_dep_chain (f->deps); + f->deps = 0; + } + /* This file is explicitly mentioned as a target. There is no need + to set is_explicit in the case of double colon below, because an + implicit double colon rule only applies when the prerequisite + exists. A prerequisite which exists is not intermediate anyway. */ + f->is_explicit = 1; + } + else + { + /* Double-colon. Make a new record even if there already is one. */ + f = lookup_file (name); + + /* Check for both : and :: rules. Check is_target so we don't lose + on default suffix rules or makefiles. */ + if (f != 0 && f->is_target && !f->double_colon) + OS (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; + } + + if (are_also_makes) + { + struct dep *also = alloc_dep(); + also->name = f->name; + also->file = f; + also->next = also_make; + also_make = also; + } + + f->is_target = 1; + + /* If this is a static pattern rule, set the stem to the part of its + name that matched the '%' in the pattern, so you can use $* in the + commands. If we didn't do it before, enter the prereqs now. */ + if (pattern) + { + static const char *percent = "%"; + char *o = patsubst_expand_pat (variable_buffer, name, pattern, + percent, pattern_percent+1, percent+1); + f->stem = strcache_add_len (variable_buffer, o - variable_buffer); + if (this) + { + if (! this->need_2nd_expansion) + this = enter_prereqs (this, f->stem); + else + this->stem = f->stem; + } + } + + /* Add the dependencies to this file entry. */ + if (this != 0) + { + /* Add the file's old deps and the new ones in THIS together. */ + if (f->deps == 0) + f->deps = this; + else if (cmds != 0) + { + struct dep *d = this; + + /* If this rule has commands, put these deps first. */ + while (d->next != 0) + d = d->next; + + d->next = f->deps; + f->deps = this; + } + else + { + struct dep *d = f->deps; + + /* A rule without commands: put its prereqs at the end. */ + while (d->next != 0) + d = d->next; + + d->next = this; + } + } + + name = f->name; + + check_special_file (f, flocp); + + /* All done! Set up for the next one. */ + if (nextf == 0) + break; + + filenames = nextf; + + /* Reduce escaped percents. If there are any unescaped it's an error */ + name = filenames->name; + if (find_percent_cached (&name)) + O (error, flocp, + _("*** mixed implicit and normal rules: deprecated syntax")); + } + + /* If there are also-makes, then populate a copy of the also-make list into + each one. For the last file, we take our original also_make list instead + wastefully copying it one more time and freeing it. */ + { + struct dep *i; + + for (i = also_make; i != NULL; i = i->next) + { + struct file *f = i->file; + struct dep *cpy = i->next ? copy_dep_chain (also_make) : also_make; + + if (f->also_make) + { + OS (error, &cmds->fileinfo, + _("warning: overriding group membership for target '%s'"), + f->name); + free_dep_chain (f->also_make); + } + + f->also_make = cpy; + } + } +} + +/* Search STRING for an unquoted STOPMAP. + Backslashes quote elements from STOPMAP and backslash. + Quoting backslashes are removed from STRING by compacting it into itself. + Returns a pointer to the first unquoted STOPCHAR if there is one, or nil if + there are none. + + If MAP_VARIABLE is set, then the complete contents of variable references + are skipped, even if the contain STOPMAP characters. */ + +static char * +find_map_unquote (char *string, int stopmap) +{ + size_t string_len = 0; + char *p = string; + + /* Always stop on NUL. */ + stopmap |= MAP_NUL; + + while (1) + { + while (! STOP_SET (*p, stopmap)) + ++p; + + if (*p == '\0') + break; + + /* If we stopped due to a variable reference, skip over its contents. */ + if (*p == '$') + { + char openparen = p[1]; + + /* Check if '$' is the last character in the string. */ + if (openparen == '\0') + break; + + p += 2; + + /* Skip the contents of a non-quoted, multi-char variable ref. */ + if (openparen == '(' || openparen == '{') + { + unsigned int pcount = 1; + char closeparen = (openparen == '(' ? ')' : '}'); + + while (*p) + { + if (*p == openparen) + ++pcount; + else if (*p == closeparen) + if (--pcount == 0) + { + ++p; + break; + } + ++p; + } + } + + /* Skipped the variable reference: look for STOPCHARS again. */ + continue; + } + + 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. */ + { + /* Avoid arithmetic conversion of negative values to unsigned. */ + int hi = -(i/2); + memmove (&p[i], &p[i/2], (string_len - (p - string)) + hi + 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; + } + + /* Never hit a STOPCHAR or blank (with BLANK nonzero). */ + return 0; +} + +static char * +find_char_unquote (char *string, int stop) +{ + size_t string_len = 0; + char *p = string; + + while (1) + { + p = strchr(p, stop); + + if (!p) + return NULL; + + 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. */ + { + /* Avoid arithmetic conversion of negative values to unsigned. */ + int hi = -(i/2); + memmove (&p[i], &p[i/2], (string_len - (p - string)) + hi + 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; + } +} + +/* 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; + size_t 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. */ + memmove (p, s, l); + p += l; + + /* If we hit the end of the string, we're done. */ + if (*e == '\0') + break; + } + else if (l > 1) + { + /* It is, and there's >1 backslash. Take half of them. */ + l /= 2; + memmove (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, '%'); +} + +/* Return a pointer to the first unescaped %, or NULL if there isn't one. + Compress any escape chars up to the first unescaped %, but not afterward. + This version is used with strings in the string cache: if there's a need to + modify the string to handle escape chars a new version will be added to the + string cache and *STRING will be set to that. */ + +const char * +find_percent_cached (const char **string) +{ + const char *p = strchr (*string, '%'); + char *new, *np; + size_t slen; + + /* If there is no % or there is but it's not escaped, reuse this string. */ + if (!p || p == *string || p[-1] != '\\') + return p; + + /* We must create a new cached string with backslashes compressed. */ + slen = strlen (*string); + new = alloca (slen + 1); + memcpy (new, *string, slen + 1); + np = new + (p - *string); + + do + { + /* Remember where the percent is. */ + char *pp = np; + int i = -2; + + /* This % is preceded by a backslash; search for more backslashes. */ + while (&np[i] >= new && np[i] == '\\') + --i; + ++i; + + /* The number of backslashes is -I. Copy the string over itself to + swallow half of them. */ + { + /* Avoid arithmetic conversion of negative values to unsigned. */ + int hi = -(i/2); + memmove (&pp[i], &pp[i/2], (slen - (pp - new)) + hi + 1); + } + + /* Update SLEN and set NP to point after the %. */ + slen += i/2 + i%2; + np += i/2; + + /* If all backslashes quoted each other then % was unquoted. */ + if (i % 2 == 0) + break; + + np = strchr (np, '%'); + } + while (np && np[-1] == '\\'); + + /* Add the new string to the strcache. */ + *string = strcache_add (new); + + /* If we didn't find a %, return NULL. Otherwise return a ptr to it. */ + return np ? *string + (np - new) : NULL; +} + +/* Find the next line of text in an eval buffer, combining continuation lines + into one line. + Return the number of actual lines read (> 1 if continuation lines). + Returns -1 if there's nothing left in the buffer. + + After this function, ebuf->buffer points to the first character of the + line we just found. + */ + +/* Read a line of text from a STRING. + Since we aren't really reading from a file, don't bother with linenumbers. + */ + +static long +readstring (struct ebuffer *ebuf) +{ + char *eol; + + /* If there is nothing left in this buffer, return 0. */ + if (ebuf->bufnext >= ebuf->bufstart + ebuf->size) + return -1; + + /* Set up a new starting point for the buffer, and find the end of the + next logical line (taking into account backslash/newline pairs). */ + + eol = ebuf->buffer = ebuf->bufnext; + + while (1) + { + int backslash = 0; + const char *bol = eol; + const char *p; + + /* Find the next newline. At EOS, stop. */ + p = eol = strchr (eol , '\n'); + if (!eol) + { + ebuf->bufnext = ebuf->bufstart + ebuf->size + 1; + return 0; + } + + /* Found a newline; if it's escaped continue; else we're done. */ + while (p > bol && *(--p) == '\\') + backslash = !backslash; + if (!backslash) + break; + ++eol; + } + + /* Overwrite the newline char. */ + *eol = '\0'; + ebuf->bufnext = eol+1; + + return 0; +} + +static long +readline (struct ebuffer *ebuf) +{ + char *p; + char *end; + char *start; + long nlines = 0; + + /* The behaviors between string and stream buffers are different enough to + warrant different functions. Do the Right Thing. */ + + if (!ebuf->fp) + return readstring (ebuf); + + /* When reading from a file, we always start over at the beginning of the + buffer for each new line. */ + + p = start = ebuf->bufstart; + end = p + ebuf->size; + *p = '\0'; + + while (fgets (p, (int) (end - p), ebuf->fp) != 0) + { + char *p2; + size_t len; + int backslash; + + 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. */ + O (error, &ebuf->floc, + _("warning: NUL character seen; rest of line ignored")); + p[0] = '\n'; + len = 1; + } + + /* Jump past the text we just read. */ + p += len; + + /* If the last char isn't a newline, the whole line didn't fit into the + buffer. Get some more buffer and try again. */ + if (p[-1] != '\n') + goto more_buffer; + + /* We got a newline, so add one to the count of lines. */ + ++nlines; + +#if !defined(WINDOWS32) && !defined(__MSDOS__) && !defined(__EMX__) + /* Check to see if the line was really ended with CRLF; if so ignore + the CR. */ + if ((p - start) > 1 && p[-2] == '\r') + { + --p; + memmove (p-1, p, strlen (p) + 1); + } +#endif + + backslash = 0; + for (p2 = p - 2; p2 >= start; --p2) + { + if (*p2 != '\\') + break; + backslash = !backslash; + } + + if (!backslash) + { + p[-1] = '\0'; + break; + } + + /* It was a backslash/newline combo. If we have more space, read + another line. */ + if (end - p >= 80) + continue; + + /* We need more space at the end of our buffer, so realloc it. + Make sure to preserve the current offset of p. */ + more_buffer: + { + size_t off = p - start; + ebuf->size *= 2; + start = ebuf->buffer = ebuf->bufstart = xrealloc (start, ebuf->size); + p = start + off; + end = start + ebuf->size; + *p = '\0'; + } + } + + if (ferror (ebuf->fp)) + pfatal_with_name (ebuf->floc.filenm); + + /* If we found some lines, return how many. + If we didn't, but we did find _something_, that indicates we read the last + line of a file with no final newline; return 1. + If we read nothing, we're at EOF; return -1. */ + + return nlines ? nlines : p == ebuf->bufstart ? -1 : 1; +} + +/* Parse the next "makefile word" from the input buffer, and return info + about it. + + A "makefile word" is one of: + + w_bogus Should never happen + w_eol End of input + w_static A static word; cannot be expanded + w_variable A word containing one or more variables/functions + w_colon A colon + w_dcolon A double-colon + w_ampcolon An ampersand-colon (&:) token + w_ampdcolon An ampersand-double-colon (&::) token + w_semicolon A semicolon + 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, + in a command list, etc.) */ + +static enum make_word_type +get_next_mword (char *buffer, char **startp, size_t *length) +{ + enum make_word_type wtype; + char *p = buffer, *beg; + char c; + + /* Skip any leading whitespace. */ + while (ISSPACE (*p)) + ++p; + + beg = p; + c = *(p++); + + /* Look at the start of the word to see if it's simple. */ + switch (c) + { + case '\0': + wtype = w_eol; + goto done; + + case ';': + wtype = w_semicolon; + goto done; + + case '=': + wtype = w_varassign; + goto done; + + case ':': + if (*p == '=') + { + ++p; + wtype = w_varassign; /* := */ + } + else if (*p == ':') + { + ++p; + if (p[1] == '=') + { + ++p; + wtype = w_varassign; /* ::= */ + } + else + wtype = w_dcolon; + } + else + wtype = w_colon; + goto done; + + case '&': + if (*p == ':') + { + ++p; + if (*p != ':') + wtype = w_ampcolon; /* &: */ + else + { + ++p; + wtype = w_ampdcolon; /* &:: */ + } + goto done; + } + break; + + case '+': + case '?': + case '!': + if (*p == '=') + { + ++p; + wtype = w_varassign; /* += or ?= or != */ + goto done; + } + break; + + default: + break; + } + + /* This is some non-operator word. A word consists of the longest + string of characters that doesn't contain whitespace, one of [:=#], + or [?+!]=, or &:. */ + + /* We start out assuming a static word; if we see a variable we'll + adjust our assumptions then. */ + wtype = w_static; + + /* We already found the first value of "c", above. */ + while (1) + { + char closeparen; + int count; + + if (END_OF_TOKEN (c)) + goto done_word; + + switch (c) + { + case '=': + goto done_word; + + 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 - beg > 2 && p[-3] == '(')) + && isalpha ((unsigned char)p[-2])) + break; +#endif + goto done_word; + + case '$': + c = *(p++); + if (c == '$') + break; + if (c == '\0') + goto done_word; + + /* This is a variable reference, so note that it's expandable. + Then read it to the matching close paren. */ + wtype = w_variable; + + if (c == '(') + closeparen = ')'; + else if (c == '{') + closeparen = '}'; + else + /* This is a single-letter variable reference. */ + break; + + for (count=0; *p != '\0'; ++p) + { + if (*p == c) + ++count; + else if (*p == closeparen && --count < 0) + { + ++p; + break; + } + } + break; + + case '?': + case '+': + if (*p == '=') + goto done_word; + break; + + case '\\': + switch (*p) + { + case ':': + case ';': + case '=': + case '\\': + ++p; + break; + } + break; + + case '&': + if (*p == ':') + goto done_word; + break; + + default: + break; + } + + c = *(p++); + } + done_word: + --p; + + done: + if (startp) + *startp = beg; + if (length) + *length = p - beg; + return wtype; +} + +/* Construct the list of include directories + from the arguments and the default list. */ + +void +construct_include_path (const char **arg_dirs) +{ +#ifdef VAXC /* just don't ask ... */ + stat_t stbuf; +#else + struct stat stbuf; +#endif + const char **dirs; + const char **cpp; + size_t idx; + int disable = 0; + + /* Compute the number of pointers we need in the table. */ + idx = sizeof (default_include_directories) / sizeof (const char *); + if (arg_dirs) + for (cpp = arg_dirs; *cpp != 0; ++cpp) + ++idx; + +#ifdef __MSDOS__ + /* Add one for $DJDIR. */ + ++idx; +#endif + + dirs = xmalloc (idx * sizeof (const char *)); + + idx = 0; + max_incl_len = 0; + + /* First consider any dirs specified with -I switches. + Ignore any that don't exist. Restart if we find "-". + Remember the maximum string length. */ + + if (arg_dirs) + while (*arg_dirs != 0) + { + const char *dir = *(arg_dirs++); + char *expanded = 0; + int e; + + if (dir[0] == '-' && dir[1] == '\0') + { + disable = 1; + idx = 0; + max_incl_len = 0; + continue; + } + + 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)) + { + size_t len = strlen (dir); + /* If dir name is written with trailing slashes, discard them. */ + while (len > 1 && dir[len - 1] == '/') + --len; + if (len > max_incl_len) + max_incl_len = len; + dirs[idx++] = strcache_add_len (dir, len); + } + + free (expanded); + } + + /* Now add the standard default dirs at the end. */ + if (!disable) + { +#ifdef __MSDOS__ + /* The environment variable $DJDIR holds the root of the DJGPP directory + tree; add ${DJDIR}/include. */ + struct variable *djdir = lookup_variable ("DJDIR", 5); + + if (djdir) + { + size_t len = strlen (djdir->value) + 8; + char *defdir = alloca (len + 1); + + strcat (strcpy (defdir, djdir->value), "/include"); + dirs[idx++] = strcache_add (defdir); + + if (len > max_incl_len) + max_incl_len = len; + } +#endif + for (cpp = default_include_directories; *cpp != 0; ++cpp) + { + int e; + + EINTRLOOP (e, stat (*cpp, &stbuf)); + if (e == 0 && S_ISDIR (stbuf.st_mode)) + { + size_t len = strlen (*cpp); + /* If dir name is written with trailing slashes, discard them. */ + while (len > 1 && (*cpp)[len - 1] == '/') + --len; + if (len > max_incl_len) + max_incl_len = len; + dirs[idx++] = strcache_add_len (*cpp, len); + } + } + } + + dirs[idx] = 0; + + /* Now add each dir to the .INCLUDE_DIRS variable. */ + + do_variable_definition (NILF, ".INCLUDE_DIRS", "", o_default, f_simple, 0); + for (cpp = dirs; *cpp != 0; ++cpp) + do_variable_definition (NILF, ".INCLUDE_DIRS", *cpp, + o_default, f_append, 0); + + free ((void *) include_directories); + include_directories = dirs; +} + +/* Expand ~ or ~USER at the beginning of NAME. + Return a newly malloc'd string or 0. */ + +char * +tilde_expand (const char *name) +{ +#if !defined(VMS) + if (name[1] == '/' || name[1] == '\0') + { + char *home_dir; + int is_variable; + + { + /* 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)"); + + warn_undefined_variables_flag = save; + } + + is_variable = home_dir[0] != '\0'; + if (!is_variable) + { + free (home_dir); + home_dir = getenv ("HOME"); + } +# if !defined(_AMIGA) && !defined(WINDOWS32) + if (home_dir == 0 || home_dir[0] == '\0') + { + 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; + } + } +# if !defined(_AMIGA) && !defined(WINDOWS32) + else + { + struct passwd *pwent; + char *userend = strchr (name + 1, '/'); + if (userend != 0) + *userend = '\0'; + pwent = getpwnam (name + 1); + if (pwent != 0) + { + if (userend == 0) + return xstrdup (pwent->pw_dir); + + *userend = '/'; + return xstrdup (concat (3, pwent->pw_dir, "/", userend + 1)); + } + else if (userend != 0) + *userend = '/'; + } +# endif /* !AMIGA && !WINDOWS32 */ +#endif /* !VMS */ + return 0; +} + +/* Parse a string into a sequence of filenames represented as a chain of + struct nameseq's and return that chain. Optionally expand the strings via + glob(). + + The string is passed as STRINGP, the address of a string pointer. + The string pointer is updated to point at the first character + not parsed, which either is a null char or equals STOPMAP. + + SIZE is how large (in bytes) each element in the new chain should be. + This is useful if we want them actually to be other structures + that have room for additional info. + + STOPMAP is a map of characters that tell us to stop parsing. + + PREFIX, if non-null, is added to the beginning of each filename. + + FLAGS allows one or more of the following bitflags to be set: + PARSEFS_NOSTRIP - Do no strip './'s off the beginning + PARSEFS_NOAR - Do not check filenames for archive references + PARSEFS_NOGLOB - Do not expand globbing characters + PARSEFS_EXISTS - Only return globbed files that actually exist + (cannot also set NOGLOB) + PARSEFS_NOCACHE - Do not add filenames to the strcache (caller frees) + PARSEFS_ONEWORD - Don't break the sequence on whitespace + PARSEFS_WAIT - Assume struct dep and handle .WAIT + */ + +void * +parse_file_seq (char **stringp, size_t size, int stopmap, + const char *prefix, int flags) +{ + /* tmp points to tmpbuf after the prefix, if any. + tp is the end of the buffer. */ + static char *tmpbuf = NULL; + + int cachep = NONE_SET (flags, PARSEFS_NOCACHE); + + struct nameseq *new = 0; + struct nameseq **newp = &new; +#define NEWELT(_n) do { \ + struct nameseq *_ns = xcalloc (size); \ + const char *__n = (_n); \ + _ns->name = (cachep ? strcache_add (__n) : xstrdup (__n)); \ + if (found_wait) { \ + ((struct dep*)_ns)->wait_here = 1; \ + found_wait = 0; \ + } \ + *newp = _ns; \ + newp = &_ns->next; \ + } while(0) + + char *p; + glob_t gl; + char *tp; + int findmap = stopmap|MAP_VMSCOMMA|MAP_NUL; + int found_wait = 0; + + if (NONE_SET (flags, PARSEFS_ONEWORD)) + findmap |= MAP_BLANK; + + /* Always stop on NUL. */ + stopmap |= MAP_NUL; + + if (size < sizeof (struct nameseq)) + size = sizeof (struct nameseq); + + if (NONE_SET (flags, PARSEFS_NOGLOB)) + dir_setup_glob (&gl); + + /* Get enough temporary space to construct the largest possible target. */ + { + static size_t tmpbuf_len = 0; + size_t l = strlen (*stringp) + 1; + if (l > tmpbuf_len) + { + tmpbuf = xrealloc (tmpbuf, l); + tmpbuf_len = l; + } + } + tp = tmpbuf; + + /* Parse STRING. P will always point to the end of the parsed content. */ + p = *stringp; + while (1) + { + const char *name; + const char **nlist = 0; + char *tildep = 0; + int globme = 1; +#ifndef NO_ARCHIVES + char *arname = 0; + char *memname = 0; +#endif + char *s; + size_t nlen; + int tot, i; + + /* Skip whitespace; at the end of the string or STOPCHAR we're done. */ + NEXT_TOKEN (p); + 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_map_unquote (p, findmap); + +#ifdef VMS + /* convert comma separated list to space separated */ + if (p && *p == ',') + *p =' '; +#endif +#ifdef _AMIGA + /* If we stopped due to a device name, skip it. */ + if (p && p != s+1 && p[0] == ':') + p = find_map_unquote (p+1, findmap); +#endif +#ifdef HAVE_DOS_PATHS + /* If we stopped due to a drive specifier, skip it. + Tokens separated by spaces are treated as separate paths since make + doesn't allow path names with spaces. */ + if (p && p == s+1 && p[0] == ':' + && isalpha ((unsigned char)s[0]) && ISDIRSEP (p[1])) + p = find_map_unquote (p+1, findmap); +#endif + + if (!p) + p = s + strlen (s); + + if (ANY_SET (flags, PARSEFS_WAIT) && p - s == CSTRLEN (".WAIT") + && memcmp (s, ".WAIT", CSTRLEN (".WAIT")) == 0) + { + /* Note that we found a .WAIT for the next dep but skip it. */ + found_wait = 1; + continue; + } + + /* Strip leading "this directory" references. */ + if (NONE_SET (flags, PARSEFS_NOSTRIP)) +#ifdef VMS + /* Skip leading '[]'s. should only be one set or bug somewhere else */ + if (p - s > 2 && s[0] == '[' && s[1] == ']') + s += 2; + /* Skip leading '<>'s. should only be one set or bug somewhere else */ + if (p - s > 2 && s[0] == '<' && s[1] == '>') + s += 2; +#endif + /* Skip leading './'s. */ + while (p - s > 2 && s[0] == '.' && s[1] == '/') + { + /* Skip "./" and all following slashes. */ + 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 ("./"). */ +#if defined(_AMIGA) + /* PDS-- This cannot be right!! */ + tp[0] = '\0'; + nlen = 0; +#else + tp[0] = '.'; + tp[1] = '/'; + tp[2] = '\0'; + nlen = 2; +#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] == ':') + ++s; + *(n++) = *(s++); + } + n[0] = '\0'; + nlen = strlen (tp); +#else + nlen = p - s; + memcpy (tp, s, nlen); + tp[nlen] = '\0'; +#endif + } + + /* At this point, TP points to the element and NLEN is its length. */ + +#ifndef NO_ARCHIVES + /* If this is the start of an archive group that isn't complete, set up + to add the archive prefix for future files. A file list like: + "libf.a(x.o y.o z.o)" needs to be expanded as: + "libf.a(x.o) libf.a(y.o) libf.a(z.o)" + + TP == TMP means we're not already in an archive group. Ignore + something starting with '(', as that cannot actually be an + archive-member reference (and treating it as such results in an empty + file name, which causes much lossage). Also if it ends in ")" then + it's a complete reference so we don't need to treat it specially. + + Finally, note that archive groups must end with ')' as the last + character, so ensure there's some word ending like that before + considering this an archive group. */ + if (NONE_SET (flags, PARSEFS_NOAR) + && tp == tmpbuf && tp[0] != '(' && tp[nlen-1] != ')') + { + char *n = strchr (tp, '('); + if (n) + { + /* This looks like the first element in an open archive group. + A valid group MUST have ')' as the last character. */ + const char *e = p; + do + { + const char *o = 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 (! STOP_SET (*e, findmap)) + ++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 + open archive group. It looks like "lib(mem". + Reset TP past the open paren. */ + nlen -= (n + 1) - tp; + tp = n + 1; + + /* 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; + } + } + + /* If we are inside an archive group, make sure it has an end. */ + if (tp > tmpbuf) + { + if (tp[nlen-1] == ')') + { + /* This is the natural end; reset TP. */ + tp = tmpbuf; + + /* This is just ")", something like "lib(a b )": skip it. */ + if (nlen == 1) + continue; + } + else + { + /* Not the end, so add a "fake" end. */ + tp[nlen++] = ')'; + tp[nlen] = '\0'; + } + } +#endif + + /* If we're not globbing we're done: add it to the end of the chain. + Go to the next item in the string. */ + if (ANY_SET (flags, PARSEFS_NOGLOB)) + { + 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 = tmpbuf; + + /* Expand tilde if applicable. */ + 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 (NONE_SET (flags, PARSEFS_NOAR) && ar_name (name)) + { + ar_parse_name (name, &arname, &memname); + name = arname; + } +#endif /* !NO_ARCHIVES */ + + /* glob() is expensive: don't call it unless we need to. */ + if (NONE_SET (flags, PARSEFS_EXISTS) && strpbrk (name, "?*[") == NULL) + { + globme = 0; + tot = 1; + nlist = &name; + } + else + switch (glob (name, GLOB_ALTDIRFUNC, NULL, &gl)) + { + case GLOB_NOSPACE: + out_of_memory (); + + case 0: + /* Success. */ + tot = gl.gl_pathc; + nlist = (const char **)gl.gl_pathv; + break; + + case GLOB_NOMATCH: + /* If we want only existing items, skip this one. */ + if (ANY_SET (flags, PARSEFS_EXISTS)) + { + tot = 0; + break; + } + /* FALLTHROUGH */ + + default: + /* By default keep this name. */ + tot = 1; + nlist = &name; + break; + } + + /* For each matched element, add it to the list. */ + for (i = 0; i < tot; ++i) +#ifndef NO_ARCHIVES + if (memname != 0) + { + /* Try to glob on MEMNAME within the archive. */ + struct nameseq *found = ar_glob (nlist[i], memname, size); + if (! found) + /* No matches. Use MEMNAME as-is. */ + NEWELT (concat (5, prefix, nlist[i], "(", memname, ")")); + else + { + /* We got a chain of items. Attach them. */ + if (*newp) + (*newp)->next = found; + else + *newp = found; + + /* Find and set the new end. Massage names if necessary. */ + while (1) + { + if (! cachep) + found->name = xstrdup (concat (2, prefix, name)); + else if (prefix) + found->name = strcache_add (concat (2, prefix, name)); + + if (found->next == 0) + break; + + found = found->next; + } + newp = &found->next; + } + } + else +#endif /* !NO_ARCHIVES */ + NEWELT (concat (2, prefix, nlist[i])); + + if (globme) + globfree (&gl); + +#ifndef NO_ARCHIVES + free (arname); +#endif + + free (tildep); + } + + *stringp = p; + return new; +} diff --git a/local/recipes/dev/gnu-make/source/src/remake.c b/local/recipes/dev/gnu-make/source/src/remake.c new file mode 100644 index 0000000000..4ce3d2a379 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/remake.c @@ -0,0 +1,1842 @@ +/* Basic dependency engine for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" +#include "filedef.h" +#include "job.h" +#include "commands.h" +#include "dep.h" +#include "variable.h" +#include "debug.h" + +#include + +#ifdef HAVE_FCNTL_H +#include +#else +#include +#endif + +#ifdef VMS +#include +#endif +#ifdef WINDOWS32 +#include +#include +#include +#if defined(_MSC_VER) && _MSC_VER > 1200 +/* VC7 or later supprots _stat64 to access 64-bit file size. */ +#define STAT _stat64 +#else +#define STAT stat +#endif +#endif + + +/* The test for circular dependencies is based on the 'updating' bit in + '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))\ + ->updating = 1) +#define finish_updating(_f) (((_f)->double_colon ? (_f)->double_colon : (_f))\ + ->updating = 0) +#define is_updating(_f) (((_f)->double_colon ? (_f)->double_colon : (_f))\ + ->updating) + + +/* Incremented when a command is started (under -n, when one would be). */ +unsigned int commands_started = 0; + +/* Set to the goal dependency. Mostly needed for remaking makefiles. */ +static struct goaldep *goal_list; +static struct dep *goal_dep; + +/* Current value for pruning the scan of the goal chain. + All files start with considered == 0. */ +static unsigned int considered = 0; + +static enum update_status update_file (struct file *file, unsigned int depth); +static enum update_status update_file_1 (struct file *file, unsigned int depth); +static enum update_status check_dep (struct file *file, unsigned int depth, + FILE_TIMESTAMP this_mtime, int *must_make); +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); + + +static void +check_also_make (const struct file *file) +{ + struct dep *ad; + FILE_TIMESTAMP mtime = file->last_mtime; + + if (mtime == UNKNOWN_MTIME) + mtime = name_mtime (file->name); + + /* If we updated the file, check its also-make files. */ + + if (is_ordinary_mtime (mtime) && mtime > file->mtime_before_update) + for (ad = file->also_make; ad; ad = ad->next) + if (ad->file->last_mtime == NONEXISTENT_MTIME) + OS (error, file->cmds ? &file->cmds->fileinfo : NILF, + _("warning: pattern recipe did not update peer target '%s'."), + ad->file->name); +} + +/* Remake all the goals in the 'struct dep' chain GOALS. Return update_status + representing the totality of the status of the goals. + + 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. */ + +enum update_status +update_goal_chain (struct goaldep *goaldeps) +{ + int t = touch_flag, q = question_flag, n = just_print_flag; + enum update_status status = us_none; + + /* Duplicate the chain so we can remove things from it. */ + struct dep *goals_orig = copy_dep_chain ((struct dep *)goaldeps); + struct dep *goals = goals_orig; + + goal_list = rebuilding_makefiles ? goaldeps : NULL; + +#define MTIME(file) (rebuilding_makefiles ? file_mtime_no_search (file) \ + : file_mtime (file)) + + /* Start a fresh batch of consideration. */ + ++considered; + + /* Update all the goals until they are all finished. */ + + while (goals != 0) + { + struct dep *gu, *g, *lastgoal; + + /* Start jobs that are waiting for the load to go down. */ + + start_waiting_jobs (); + + /* Wait for a child to die. */ + + reap_children (1, 0); + + lastgoal = 0; + gu = goals; + while (gu != 0) + { + /* Iterate over all double-colon entries for this file. */ + struct file *file; + int stop = 0, any_not_updated = 0; + + g = gu->shuf ? gu->shuf : gu; + + goal_dep = g; + + for (file = g->file->double_colon ? g->file->double_colon : g->file; + file != NULL; + file = file->prev) + { + unsigned int ocommands_started; + enum update_status fail; + + file->dontcare = ANY_SET (g->flags, RM_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; + + 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; + + stop = 0; + if ((fail || file->updated) && status < us_question) + { + /* We updated this goal. Update STATUS and decide whether + to stop. */ + if (file->update_status) + { + /* Updating failed, or -q triggered. The STATUS value + tells our caller which. */ + status = file->update_status; + /* If -q just triggered, stop immediately. It doesn't + matter how much more we run, since we already know + the answer to return. */ + stop = (question_flag && !keep_going_flag + && !rebuilding_makefiles); + } + else + { + FILE_TIMESTAMP mtime = MTIME (file); + check_renamed (file); + + if (file->updated && mtime != file->mtime_before_update) + { + /* Updating was done. If this is a makefile and + just_print_flag or question_flag is set (meaning + -n or -q was given and this file was specified + as a command-line target), don't change STATUS. + If STATUS is changed, we will get re-exec'd, and + enter an infinite loop. */ + if (!rebuilding_makefiles + || (!just_print_flag && !question_flag)) + status = us_success; + if (rebuilding_makefiles && file->dontcare) + /* This is a default makefile; stop remaking. */ + stop = 1; + } + } + } + + /* Keep track if any double-colon entry is not finished. + When they are all finished, the goal is finished. */ + 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 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. */ + && !run_silent && !question_flag) + OS (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 = gu->next; + else + lastgoal->next = gu->next; + + gu = lastgoal == 0 ? goals : lastgoal->next; + + if (stop) + break; + } + else + { + lastgoal = gu; + gu = gu->next; + } + } + + /* If we reached the end of the dependency graph update CONSIDERED + for the next pass. */ + if (gu == 0) + ++considered; + } + + free_dep_chain (goals_orig); + + if (rebuilding_makefiles) + { + touch_flag = t; + question_flag = q; + just_print_flag = n; + } + + return status; +} + +/* If we're rebuilding an included makefile that failed, and we care + about errors, show an error message the first time. */ + +void +show_goal_error (void) +{ + struct goaldep *goal; + + if ((goal_dep->flags & (RM_INCLUDED|RM_DONTCARE)) != RM_INCLUDED) + return; + + for (goal = goal_list; goal; goal = goal->next) + if (goal_dep->file == goal->file) + { + if (goal->error) + { + OSS (error, &goal->floc, "%s: %s", + goal->file->name, strerror (goal->error)); + goal->error = 0; + } + return; + } +} + +/* If FILE is not up to date, execute the commands for it. + 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, + then decrement it again after finding out whether this file + is out of date. + + If there are multiple double-colon entries for FILE, + each is considered in turn. */ + +static enum update_status +update_file (struct file *file, unsigned int depth) +{ + enum update_status status = us_success; + struct file *f; + + f = file->double_colon ? file->double_colon : file; + + /* Prune the dependency graph: if we've already been here on _this_ + pass through the dependency graph, we don't have to go any further. + We won't reap_children until we start the next pass, so no state + change is possible below here until then. */ + if (f->considered == considered) + { + /* Check for the case where a target has been tried and failed but + the diagnostics haven't been issued. If we need the diagnostics + then we will have to continue. */ + if (!(f->updated && f->update_status > us_none + && !f->dontcare && f->no_diag)) + { + DBF (DB_VERBOSE, _("Pruning file '%s'.\n")); + return f->command_state == cs_finished ? f->update_status : us_success; + } + } + + /* This loop runs until we start commands for a double colon rule, or until + the chain is exhausted. */ + for (; f != 0; f = f->prev) + { + enum update_status new; + + f->considered = considered; + + new = update_file_1 (f, depth); + check_renamed (f); + + /* Clean up any alloca() used during the update. */ + free_alloca (); + + /* If we got an error, don't bother with double_colon etc. */ + if (new && !keep_going_flag) + return new; + + if (f->command_state == cs_running + || f->command_state == cs_deps_running) + /* Don't run other :: rules for this target until + this rule is finished. */ + return us_success; + + if (new > status) + status = new; + } + + return status; +} + +/* Show a message stating the target failed to build. */ + +static void +complain (struct file *file) +{ + /* If this file has no_diag set then it means we tried to update it + before in the dontcare mode and failed. The target that actually + failed is not necessarily this file but could be one of its direct + or indirect dependencies. So traverse this file's dependencies and + find the one that actually caused the failure. */ + + struct dep *d; + + for (d = file->deps; d != 0; d = d->next) + { + if (d->file->updated && d->file->update_status > us_none && file->no_diag) + { + complain (d->file); + break; + } + } + + if (d == 0) + { + show_goal_error (); + + /* Didn't find any dependencies to complain about. */ + if (file->parent) + { + size_t l = strlen (file->name) + strlen (file->parent->name) + 4; + const char *m = _("%sNo rule to make target '%s', needed by '%s'%s"); + + if (!keep_going_flag) + fatal (NILF, l, m, "", file->name, file->parent->name, ""); + + error (NILF, l, m, "*** ", file->name, file->parent->name, "."); + } + else + { + size_t l = strlen (file->name) + 4; + const char *m = _("%sNo rule to make target '%s'%s"); + + if (!keep_going_flag) + fatal (NILF, l, m, "", file->name, ""); + + error (NILF, l, m, "*** ", file->name, "."); + } + + file->no_diag = 0; + } +} + +/* Consider a single 'struct file' and update it as appropriate. + Return an update_status value; use us_success if we aren't sure yet. */ + +static enum update_status +update_file_1 (struct file *file, unsigned int depth) +{ + enum update_status dep_status = us_success; + FILE_TIMESTAMP this_mtime; + int noexist, must_make, deps_changed; + struct file *ofile; + struct dep *du, *d, *ad; + struct dep amake; + int running = 0; + + DBF (DB_VERBOSE, _("Considering target file '%s'.\n")); + + if (file->updated) + { + 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. + If we're trying to build it again in the normal rebuild, print a + message now. */ + if (file->no_diag && !file->dontcare) + complain (file); + + return file->update_status; + } + + DBF (DB_VERBOSE, _("File '%s' was considered already.\n")); + return us_success; + } + + switch (file->command_state) + { + case cs_not_started: + case cs_deps_running: + break; + case cs_running: + DBF (DB_VERBOSE, _("Still updating file '%s'.\n")); + return us_success; + case cs_finished: + DBF (DB_VERBOSE, _("Finished updating file '%s'.\n")); + return file->update_status; + default: + abort (); + } + + /* Determine whether the diagnostics will be issued should this update + fail. */ + file->no_diag = file->dontcare; + + ++depth; + + /* Notice recursive update of the same file. */ + start_updating (file); + + /* We might change file if we find a different one via vpath; + remember this one to turn off updating. */ + ofile = file; + + /* Looking at the file's modtime beforehand allows the possibility + that its name may be changed by a VPATH search, and thus it may + not need an implicit rule. If this were not done, the file + might get implicit commands that apply to its initial name, only + to have that name replaced with another found by VPATH search. */ + + this_mtime = file_mtime (file); + check_renamed (file); + noexist = this_mtime == NONEXISTENT_MTIME; + if (noexist) + DBF (DB_BASIC, _("File '%s' does not exist.\n")); + else if (is_ordinary_mtime (this_mtime) && file->low_resolution_time) + { + /* Avoid spurious rebuilds due to low resolution time stamps. */ + int ns = FILE_TIMESTAMP_NS (this_mtime); + if (ns != 0) + OS (error, NILF, + _("*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"), + file->name); + this_mtime += FILE_TIMESTAMPS_PER_S - 1 - ns; + } + + /* If any also_make target doesn't exist, we must remake this one too. + If they do exist choose the oldest mtime so they will rebuild. */ + + for (ad = file->also_make; ad && !noexist; ad = ad->next) + { + struct file *adfile = ad->file; + FILE_TIMESTAMP fmtime = file_mtime (adfile); + + noexist = fmtime == NONEXISTENT_MTIME; + if (noexist) + { + check_renamed (adfile); + DBS (DB_BASIC, + (_("Grouped target peer '%s' of file '%s' does not exist.\n"), + adfile->name, file->name)); + } + else if (fmtime < this_mtime) + this_mtime = fmtime; + } + + must_make = noexist; + + /* If file was specified as a target with no commands, come up with some + default commands. This may also add more also_make files. */ + + if (!file->phony && file->cmds == 0 && !file->tried_implicit) + { + try_implicit_rule (file, depth); + 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")); + file->cmds = default_file->cmds; + } + + /* Update all non-intermediate files we depend on, if necessary, and see + whether any of them is more recent than this file. We need to walk our + deps, AND the deps of any also_make targets to ensure everything happens + in the correct order. */ + + amake.file = file; + amake.next = file->also_make; + ad = &amake; + while (ad) + { + struct dep *lastd = 0; + + /* Perform second expansion and enter each dependency name as a file. + We only need to do this if second_expansion has been defined; if it + hasn't then all deps were expanded as the makefile was read in. */ + if (second_expansion) + expand_deps (ad->file); + + /* Find the deps we're scanning */ + du = ad->file->deps; + ad = ad->next; + + while (du) + { + enum update_status new; + FILE_TIMESTAMP mtime; + int maybe_make; + int dontcare = 0; + + d = du->shuf ? du->shuf : du; + + if (d->wait_here && running) + break; + + check_renamed (d->file); + + mtime = file_mtime (d->file); + check_renamed (d->file); + + if (is_updating (d->file)) + { + OSS (error, NILF, _("Circular %s <- %s dependency dropped."), + file->name, d->file->name); + + /* We cannot free D here because our the caller will still have + a reference to it when we were called recursively via + check_dep below. */ + if (lastd == 0) + file->deps = du->next; + else + lastd->next = du->next; + + du = du->next; + continue; + } + + d->file->parent = file; + maybe_make = must_make; + + /* Inherit dontcare flag from our parent. */ + if (rebuilding_makefiles) + { + dontcare = d->file->dontcare; + d->file->dontcare = file->dontcare; + } + + new = check_dep (d->file, depth, this_mtime, &maybe_make); + if (new > dep_status) + dep_status = new; + + /* Restore original dontcare flag. */ + if (rebuilding_makefiles) + d->file->dontcare = dontcare; + + if (! d->ignore_mtime) + must_make = maybe_make; + + check_renamed (d->file); + + { + 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) + /* The prereq is considered changed if the timestamp has changed + while it was built, OR it doesn't exist. */ + d->changed = ((file_mtime (d->file) != mtime) + || (mtime == NONEXISTENT_MTIME)); + + lastd = du; + du = du->next; + } + } + + /* Now we know whether this target needs updating. + If it does, update all the intermediate files we depend on. */ + + if (must_make || always_make_flag) + { + for (du = file->deps; du != 0; du = du->next) + { + d = du->shuf ? du->shuf : du; + + if (d->wait_here && running) + break; + + if (d->file->intermediate) + { + enum update_status new; + int dontcare = 0; + + FILE_TIMESTAMP mtime = file_mtime (d->file); + check_renamed (d->file); + d->file->parent = file; + + /* Inherit dontcare flag from our parent. */ + if (rebuilding_makefiles) + { + dontcare = d->file->dontcare; + 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 = 0; + + new = update_file (d->file, depth); + if (new > dep_status) + dep_status = new; + + /* Restore original dontcare flag. */ + if (rebuilding_makefiles) + d->file->dontcare = dontcare; + + check_renamed (d->file); + + { + 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")); + + if (running) + { + set_command_state (file, cs_deps_running); + --depth; + DBF (DB_VERBOSE, _("The prerequisites of '%s' are being made.\n")); + return us_success; + } + + /* If any dependency failed, give up now. */ + + if (dep_status) + { + /* I'm not sure if we can't just assign dep_status... */ + file->update_status = dep_status == us_none ? us_failed : dep_status; + notice_finished_file (file); + + --depth; + + DBF (DB_VERBOSE, _("Giving up on target file '%s'.\n")); + + if (depth == 0 && keep_going_flag + && !just_print_flag && !question_flag) + OS (error, NILF, + _("Target '%s' not remade because of errors."), file->name); + + return dep_status; + } + + if (file->command_state == cs_deps_running) + /* The commands for some deps were running on the last iteration, but + they have finished now. Reset the command_state to not_started to + simplify later bookkeeping. It is important that we do this only + when the prior state was cs_deps_running, because that prior state + was definitely propagated to FILE's also_make's by set_command_state + (called above), but in another state an also_make may have + independently changed to finished state, and we would confuse that + file's bookkeeping (updated, but not_started is bogus state). */ + set_command_state (file, cs_not_started); + + /* Now record which prerequisites are more + recent than this file, so we can define $?. */ + + deps_changed = 0; + for (d = file->deps; d != 0; d = d->next) + { + FILE_TIMESTAMP d_mtime = file_mtime (d->file); + check_renamed (d->file); + + if (! d->ignore_mtime) + { +#if 1 + /* %%% In version 4, remove this code completely to + 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. */ + must_make = 1; +#endif + + /* Set DEPS_CHANGED if this dep actually changed. */ + deps_changed |= d->changed; + } + + /* Set D->changed if either this dep actually changed, + 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"); + } + else if (d_mtime == NONEXISTENT_MTIME) + { + if (ISDB (DB_BASIC)) + fmt = _("Prerequisite '%s' of target '%s' does not exist.\n"); + } + else if (d->changed) + { + if (ISDB (DB_BASIC)) + fmt = _("Prerequisite '%s' is newer than target '%s'.\n"); + } + else if (ISDB (DB_VERBOSE)) + fmt = _("Prerequisite '%s' is older than target '%s'.\n"); + + if (fmt) + { + print_spaces (depth); + printf (fmt, dep_name (d), file->name); + fflush (stdout); + } + } + } + + /* Here depth returns to the value it had when we were called. */ + depth--; + + if (file->double_colon && file->deps == 0) + { + must_make = 1; + DBF (DB_BASIC, + _("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")); + } + else if (!must_make && file->cmds != 0 && always_make_flag) + { + must_make = 1; + DBF (DB_VERBOSE, _("Making '%s' due to always-make flag.\n")); + } + + if (!must_make) + { + if (ISDB (DB_VERBOSE)) + { + print_spaces (depth); + printf (_("No need to remake target '%s'"), file->name); + if (!streq (file->name, file->hname)) + printf (_("; using VPATH name '%s'"), file->hname); + puts ("."); + fflush (stdout); + } + + /* Since make has not created this file, make should not remove it, + even if the file is intermediate. */ + file->secondary = 1; + + notice_finished_file (file); + + /* Since we don't need to remake the file, convert it to use the + VPATH filename if we found one. hfile will be either the + local name if no VPATH or the VPATH name if one was found. */ + + while (file) + { + file->name = file->hname; + file = file->prev; + } + + return us_success; + } + + 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)) + { + DB (DB_BASIC, (_(" Ignoring VPATH name '%s'.\n"), file->hname)); + file->ignore_vpath = 1; + } + + /* Now, take appropriate actions to remake the file. */ + remake_file (file); + + if (file->command_state != cs_finished) + { + DBF (DB_VERBOSE, _("Recipe of '%s' is being run.\n")); + return us_success; + } + + switch (file->update_status) + { + case us_failed: + DBF (DB_BASIC, _("Failed to remake target file '%s'.\n")); + break; + case us_success: + DBF (DB_BASIC, _("Successfully remade target file '%s'.\n")); + break; + case us_question: + DBF (DB_BASIC, _("Target file '%s' needs to be remade under -q.\n")); + break; + case us_none: + break; + } + + file->updated = 1; + 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 + touches FILE. + + On return, FILE->update_status will no longer be us_none if it was. */ + +void +notice_finished_file (struct file *file) +{ + struct dep *d; + int ran = file->command_state == cs_running; + int touched = 0; + + file->command_state = cs_finished; + file->updated = 1; + + if (touch_flag + /* The update status will be: + 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; + } + else + { + 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) + { + /* 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. */ + commands_started++; + + /* Request for the timestamp to be updated (and distributed + to the double-colon entries). Simply setting ran=1 would + almost have done the trick, but messes up with the also_make + updating logic below. */ + touched = 1; + } + } + } + + if (file->mtime_before_update == UNKNOWN_MTIME) + file->mtime_before_update = file->last_mtime; + + if ((ran && !file->phony) || touched) + { + int i = 0; + + /* If -n, -t, or -q and all the commands are recursive, we ran them so + really check the target's mtime again. Otherwise, assume the target + would have been updated. */ + + if ((question_flag || just_print_flag || touch_flag) && file->cmds) + { + for (i = file->cmds->ncommand_lines; i > 0; --i) + if (! (file->cmds->lines_flags[i-1] & COMMANDS_RECURSE)) + break; + } + + /* If there were no commands at all, it's always new. */ + + else if (file->is_target && file->cmds == 0) + i = 1; + + file->last_mtime = i == 0 ? UNKNOWN_MTIME : NEW_MTIME; + } + + if (file->double_colon) + { + /* If this is a double colon rule and it is the last one to be + updated, propagate the change of modification time to all the + double-colon entries for this file. + + We do it on the last update because it is important to handle + individual entries as separate rules with separate timestamps + while they are treated as targets and then as one rule with the + unified timestamp when they are considered as a prerequisite + of some target. */ + + struct file *f; + FILE_TIMESTAMP max_mtime = file->last_mtime; + + /* Check that all rules were updated and at the same time find + the max timestamp. We assume UNKNOWN_MTIME is newer then + any other value. */ + for (f = file->double_colon; f != 0 && f->updated; f = f->prev) + if (max_mtime != UNKNOWN_MTIME + && (f->last_mtime == UNKNOWN_MTIME || f->last_mtime > max_mtime)) + max_mtime = f->last_mtime; + + if (f == 0) + for (f = file->double_colon; f != 0; f = f->prev) + f->last_mtime = max_mtime; + } + + 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); + } + + /* If the target was created by an implicit rule, and it was updated, + warn about any of its also_make targets that don't exist. */ + if (file->tried_implicit && file->also_make) + check_also_make (file); + } + 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 = us_success; +} + +/* Check whether another file (whose mtime is THIS_MTIME) needs updating on + account of a dependency which is file FILE. If it does, store 1 in + *MUST_MAKE_PTR. In the process, update any non-intermediate files that + FILE depends on (including FILE itself). Return nonzero if any updating + failed. */ + +static enum update_status +check_dep (struct file *file, unsigned int depth, + FILE_TIMESTAMP this_mtime, int *must_make_ptr) +{ + struct file *ofile; + struct dep *d; + enum update_status dep_status = us_success; + + ++depth; + start_updating (file); + + /* We might change file if we find a different one via vpath; + remember this one to turn off updating. */ + ofile = file; + + if (file->phony || !file->intermediate) + { + /* If this is a non-intermediate file, update it and record whether it + is newer than THIS_MTIME. */ + FILE_TIMESTAMP mtime; + dep_status = update_file (file, depth); + check_renamed (file); + mtime = file_mtime (file); + check_renamed (file); + if (mtime == NONEXISTENT_MTIME || mtime > this_mtime) + *must_make_ptr = 1; + } + else + { + /* FILE is an intermediate file. */ + FILE_TIMESTAMP mtime; + + if (!file->phony && file->cmds == 0 && !file->tried_implicit) + { + try_implicit_rule (file, depth); + 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; + } + + check_renamed (file); + mtime = file_mtime (file); + check_renamed (file); + if (mtime != NONEXISTENT_MTIME && mtime > this_mtime) + /* If the intermediate file actually exists and is newer, then we + should remake from it. */ + *must_make_ptr = 1; + 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; + 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) + { + /* 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 = 0; + + set_command_state (file, cs_not_started); + } + + ld = 0; + /* Perform second expansion and enter each dependency name as a file. + We only need to do this if second_expansion has been defined; if it + hasn't then all deps were expanded as the makefile was read in. */ + if (second_expansion) + expand_deps (file); + + d = file->deps; + while (d != 0) + { + enum update_status new; + int maybe_make; + + if (is_updating (d->file)) + { + OSS (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; + free_dep (d); + d = ld->next; + } + continue; + } + + d->file->parent = file; + maybe_make = *must_make_ptr; + new = check_dep (d->file, depth, this_mtime, &maybe_make); + if (new > dep_status) + dep_status = new; + + if (! d->ignore_mtime) + *must_make_ptr = maybe_make; + check_renamed (d->file); + if (dep_status && !keep_going_flag) + break; + + if (d->file->command_state == cs_running + || d->file->command_state == cs_deps_running) + deps_running = 1; + + ld = d; + d = d->next; + } + + if (deps_running) + /* Record that some of FILE's deps are still being made. + This tells the upper levels to wait on processing it until the + commands are finished. */ + set_command_state (file, cs_deps_running); + } + } + + finish_updating (file); + finish_updating (ofile); + + return dep_status; +} + +/* Touch FILE. Return us_success if successful, us_failed if not. */ + +#define TOUCH_ERROR(call) do{ perror_with_name ((call), file->name); \ + return us_failed; }while(0) + +static enum update_status +touch_file (struct file *file) +{ + if (!run_silent) + OS (message, 0, "touch %s", file->name); + + /* 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) ? us_failed : us_success; + else +#endif + { + int fd; + + EINTRLOOP (fd, open (file->name, O_RDWR | O_CREAT, 0666)); + if (fd < 0) + TOUCH_ERROR ("touch: open: "); + else + { + 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. */ + EINTRLOOP (e, read (fd, &buf, 1)); + if (e < 0) + TOUCH_ERROR ("touch: read: "); + { + off_t o; + EINTRLOOP (o, lseek (fd, 0L, 0)); + if (o < 0L) + TOUCH_ERROR ("touch: lseek: "); + } + EINTRLOOP (e, write (fd, &buf, 1)); + if (e < 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); + EINTRLOOP (fd, open (file->name, O_RDWR | O_TRUNC, 0666)); + if (fd < 0) + TOUCH_ERROR ("touch: open: "); + } + (void) close (fd); + } + } + + return us_success; +} + +/* Having checked and updated the dependencies of FILE, + do whatever is appropriate to remake FILE itself. + Return the status from executing FILE's commands. */ + +static void +remake_file (struct file *file) +{ + if (file->cmds == 0) + { + if (file->phony) + /* 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 = us_success; + else + { + /* This is a dependency file we cannot remake. Fail. */ + if (!rebuilding_makefiles || !file->dontcare) + complain (file); + file->update_status = us_failed; + } + } + else + { + chop_commands (file->cmds); + + /* The normal case: start some commands. */ + if (!touch_flag || file->cmds->any_recurse) + { + execute_file_commands (file); + return; + } + + /* This tells notice_finished_file it is ok to touch the file. */ + 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'. + 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 + replacement is done. If that fails, a library (-lLIBNAME) is tried and + the library's actual name (/lib/libLIBNAME.a, etc.) is substituted into + FILE. */ + +FILE_TIMESTAMP +f_mtime (struct file *file, int search) +{ + FILE_TIMESTAMP mtime; + unsigned int propagate_timestamp; + + /* File's mtime is not known; must get it from the system. */ + +#ifndef NO_ARCHIVES + if (ar_name (file->name)) + { + /* This file is an archive-member reference. */ + + char *arname, *memname; + struct file *arfile; + time_t member_date; + + /* Find the archive's name. */ + 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. */ + 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. */ + + char *name; + size_t arlen, memlen; + + arlen = strlen (arfile->hname); + memlen = strlen (memname); + + 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, strcache_add (name)); + else + 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; + + member_date = ar_member_date (file->hname); + mtime = (member_date == (time_t) -1 + ? NONEXISTENT_MTIME + : file_timestamp_cons (file->hname, member_date, 0)); + } + else +#endif + { + 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)) + { + size_t name_len; + + 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. */ +#ifndef VMS + name_len = strlen (name) - strlen (file->name) - 1; +#else + name_len = strlen (name) - strlen (file->name); + if (name[name_len - 1] == '/') + name_len--; +#endif + if (gpath_search (name, name_len)) + { + rename_file (file, name); + check_renamed (file); + return file_mtime (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 + "newer" than. Updating their dependents could just result in loops. + So notify the user of the anomaly with a warning. + + We only need to do this once, for now. */ + + if (!clock_skew_detected + && mtime != NONEXISTENT_MTIME && mtime != NEW_MTIME + && !file->updated) + { + static FILE_TIMESTAMP adjusted_now; + + FILE_TIMESTAMP adjusted_mtime = mtime; + +#if defined(WINDOWS32) || defined(__MSDOS__) + /* Experimentation has shown that FAT filesystems can set file times + up to 3 seconds into the future! Play it safe. */ + +#define FAT_ADJ_OFFSET (FILE_TIMESTAMP) 3 + + FILE_TIMESTAMP adjustment = FAT_ADJ_OFFSET << FILE_TIMESTAMP_LO_BITS; + if (ORDINARY_MTIME_MIN + adjustment <= adjusted_mtime) + adjusted_mtime -= adjustment; +#elif defined(__EMX__) + /* FAT filesystems round time to the nearest even second! + Allow for any file (NTFS or FAT) to perhaps suffer from this + brain damage. */ + FILE_TIMESTAMP adjustment = (((FILE_TIMESTAMP_S (adjusted_mtime) & 1) == 0 + && FILE_TIMESTAMP_NS (adjusted_mtime) == 0) + ? (FILE_TIMESTAMP) 1 << FILE_TIMESTAMP_LO_BITS + : 0); +#endif + + /* If the file's time appears to be in the future, update our + concept of the present and try once more. */ + if (adjusted_now < adjusted_mtime) + { + int resolution; + FILE_TIMESTAMP now = file_timestamp_now (&resolution); + adjusted_now = now + (resolution - 1); + if (adjusted_now < adjusted_mtime) + { + double from_now = + (FILE_TIMESTAMP_S (mtime) - FILE_TIMESTAMP_S (now) + + ((FILE_TIMESTAMP_NS (mtime) - FILE_TIMESTAMP_NS (now)) + / 1e9)); + char from_now_string[100]; + + if (from_now >= 100.0 && from_now < (double) ULONG_MAX) + sprintf (from_now_string, "%lu", (unsigned long) from_now); + else + sprintf (from_now_string, "%.2g", from_now); + OSS (error, NILF, + _("Warning: File '%s' has modification time %s s in the future"), + file->name, from_now_string); + clock_skew_detected = 1; + } + } + } + + /* Store the mtime into all the entries for this file for which it is safe + to do so: avoid propagating timestamps to double-colon rules that haven't + been examined so they're run or not based on the pre-update timestamp. */ + if (file->double_colon) + file = file->double_colon; + + propagate_timestamp = file->updated; + 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. */ + if (mtime != NONEXISTENT_MTIME && file->command_state == cs_not_started + && !file->tried_implicit && file->intermediate) + file->intermediate = 0; + + if (file->updated == propagate_timestamp) + file->last_mtime = mtime; + file = file->prev; + } + while (file != 0); + + return mtime; +} + + +/* Return the mtime of the file or archive-member reference NAME. */ + +/* First, we check with stat(). If the file does not exist, then we return + NONEXISTENT_MTIME. If it does, and the symlink check flag is set, then + examine each indirection of the symlink and find the newest mtime. + This causes one duplicate stat() when -L is being used, but the code is + much cleaner. */ + +static FILE_TIMESTAMP +name_mtime (const char *name) +{ + FILE_TIMESTAMP mtime; +#if defined(WINDOWS32) + struct STAT st; +#else + struct stat st; +#endif + int e; + +#if defined(WINDOWS32) + { + char tem[MAX_PATH+1], *tstart, *tend; + const char *p = name + strlen (name); + + /* Remove any trailing slashes and "."/"..". MS-Windows stat + fails on valid directories if NAME ends in a slash, and we need + to emulate the Posix behavior where stat on "foo/" or "foo/." + succeeds ONLY if "foo" is a directory. */ + if (p > name) + { + memcpy (tem, name, p - name + 1); + tstart = tem; + if (tstart[1] == ':') + tstart += 2; + tend = tem + (p - name - 1); + if (*tend == '.' && tend > tstart) + tend--; + if (*tend == '.' && tend > tstart) + tend--; + for ( ; tend > tstart && ISDIRSEP (*tend); tend--) + *tend = '\0'; + } + else + { + tem[0] = '\0'; + tend = &tem[0]; + } + +#if defined(WINDOWS32) + e = STAT (tem, &st); +#else + e = stat (tem, &st); +#endif + if (e == 0 && !_S_ISDIR (st.st_mode) && tend < tem + (p - name - 1)) + { + errno = ENOTDIR; + e = -1; + } + } +#else + EINTRLOOP (e, stat (name, &st)); +#endif + if (e == 0) + mtime = FILE_TIMESTAMP_STAT_MODTIME (name, st); + else if (errno == ENOENT || errno == ENOTDIR) + mtime = NONEXISTENT_MTIME; + else + { + perror_with_name ("stat: ", name); + return NONEXISTENT_MTIME; + } + + /* If we get here we either found it, or it doesn't exist. + If it doesn't exist see if we can use a symlink mtime instead. */ + +#ifdef MAKE_SYMLINKS +#ifndef S_ISLNK +# define S_ISLNK(_m) (((_m)&S_IFMT)==S_IFLNK) +#endif + if (check_symlink_flag && strlen (name) <= GET_PATH_MAX) + { + PATH_VAR (lpath); + + /* Check each symbolic link segment (if any). Find the latest mtime + amongst all of them (and the target file of course). + Note that we have already successfully dereferenced all the links + above. So, if we run into any error trying to lstat(), or + readlink(), or whatever, something bizarre-o happened. Just give up + and use whatever mtime we've already computed at that point. */ + strcpy (lpath, name); + while (1) + { + FILE_TIMESTAMP ltime; + PATH_VAR (lbuf); + long llen; + char *p; + + EINTRLOOP (e, lstat (lpath, &st)); + if (e) + { + /* Just take what we have so far. */ + if (errno != ENOENT && errno != ENOTDIR) + perror_with_name ("lstat: ", lpath); + break; + } + + /* If this is not a symlink, we're done (we started with the real + file's mtime so we don't need to test it again). */ + if (!S_ISLNK (st.st_mode)) + break; + + /* If this mtime is newer than what we had, keep the new one. */ + ltime = FILE_TIMESTAMP_STAT_MODTIME (lpath, st); + if (ltime > mtime) + mtime = ltime; + + /* Set up to check the file pointed to by this link. */ + EINTRLOOP (llen, readlink (lpath, lbuf, GET_PATH_MAX - 1)); + if (llen < 0) + { + /* Eh? Just take what we have. */ + perror_with_name ("readlink: ", lpath); + break; + } + lbuf[llen] = '\0'; + + /* If the target is fully-qualified or the source is just a + filename, then the new path is the target. Otherwise it's the + source directory plus the target. */ + if (lbuf[0] == '/' || (p = strrchr (lpath, '/')) == NULL) + strcpy (lpath, lbuf); + else if ((p - lpath) + llen + 2 > GET_PATH_MAX) + /* Eh? Path too long! Again, just go with what we have. */ + break; + else + /* Create the next step in the symlink chain. */ + strcpy (p+1, lbuf); + } + } +#endif + + return mtime; +} + + +/* Search for a library file specified as -lLIBNAME, searching for a + suitable library file in the system library directories and the VPATH + directories. */ + +static const char * +library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr) +{ + static const char *dirs[] = + { +#ifndef _AMIGA + "/lib", + "/usr/lib", +#endif +#if defined(WINDOWS32) && !defined(LIBDIR) +/* + * This is completely up to the user at product install time. Just define + * a placeholder. + */ +#define LIBDIR "." +#endif + LIBDIR, /* Defined by configuration. */ + 0 + }; + + const char *file = 0; + char *libpatterns; + FILE_TIMESTAMP mtime; + + /* Loop variables for the libpatterns value. */ + char *p; + const char *p2; + size_t len; + size_t liblen; + + /* Information about the earliest (in the vpath sequence) match. */ + unsigned int best_vpath = 0, best_path = 0; + + const char **dp; + + libpatterns = xstrdup (variable_expand ("$(.LIBPATTERNS)")); + + /* Skip the '-l'. */ + lib += 2; + liblen = strlen (lib); + + /* Loop through all the patterns in .LIBPATTERNS, and search on each one. + To implement the linker-compatible behavior we have to search through + all entries in .LIBPATTERNS and choose the "earliest" one. */ + p2 = libpatterns; + while ((p = find_next_token (&p2, &len)) != 0) + { + static char *buf = NULL; + static size_t buflen = 0; + static size_t libdir_maxlen = 0; + static unsigned int std_dirs = 0; + char *libbuf; + + /* 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. */ + OS (error, NILF, + _(".LIBPATTERNS element '%s' is not a pattern"), p); + p[len] = c; + continue; + } + p4 = variable_buffer_output (variable_buffer, p, p3-p); + p4 = variable_buffer_output (p4, lib, liblen); + p4 = variable_buffer_output (p4, p3+1, len - (p3-p)); + p[len] = c; + + libbuf = variable_buffer; + } + + /* 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); + /* This by definition will have the best index, so stop now. */ + break; + } + + /* Now try VPATH search on that. */ + + { + unsigned int vpath_index, path_index; + const char* f = vpath_search (libbuf, mtime_ptr ? &mtime : NULL, + &vpath_index, &path_index); + if (f) + { + /* If we have a better match, record it. */ + if (file == 0 || + vpath_index < best_vpath || + (vpath_index == best_vpath && path_index < best_path)) + { + file = f; + best_vpath = vpath_index; + best_path = path_index; + + if (mtime_ptr != 0) + *mtime_ptr = mtime; + } + } + } + + /* Now try the standard set of directories. */ + + if (!buflen) + { + for (dp = dirs; *dp != 0; ++dp) + { + size_t l = strlen (*dp); + if (l > libdir_maxlen) + libdir_maxlen = l; + std_dirs++; + } + buflen = strlen (libbuf); + buf = xmalloc (libdir_maxlen + buflen + 2); + } + else if (buflen < strlen (libbuf)) + { + buflen = strlen (libbuf); + buf = xrealloc (buf, libdir_maxlen + buflen + 2); + } + + { + /* Use the last std_dirs index for standard directories. This + was it will always be greater than the VPATH index. */ + unsigned int vpath_index = ~((unsigned int)0) - std_dirs; + + for (dp = dirs; *dp != 0; ++dp) + { + sprintf (buf, "%s/%s", *dp, libbuf); + mtime = name_mtime (buf); + if (mtime != NONEXISTENT_MTIME) + { + if (file == 0 || vpath_index < best_vpath) + { + file = strcache_add (buf); + best_vpath = vpath_index; + + if (mtime_ptr != 0) + *mtime_ptr = mtime; + } + } + + vpath_index++; + } + } + + } + + free (libpatterns); + return file; +} diff --git a/local/recipes/dev/gnu-make/source/src/remote-cstms.c b/local/recipes/dev/gnu-make/source/src/remote-cstms.c new file mode 100644 index 0000000000..c8543f9fd9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/remote-cstms.c @@ -0,0 +1,297 @@ +/* GNU Make remote job exportation interface to the Customs daemon. + THIS CODE IS NOT SUPPORTED BY THE GNU PROJECT. + Please do not send bug reports or questions about it to + the Make maintainers. + +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" + +#include "filedef.h" +#include "job.h" +#include "commands.h" +#include "debug.h" + +#if HAVE_SYS_TIME_H +# include +#endif +#include + +#include "customs.h" + +char *remote_description = "Customs"; + +/* 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" + +/* ExportPermit gotten by start_remote_job_p, and used by start_remote_job. */ +static ExportPermit permit; + +/* Normalized path name of the current directory. */ +static char *normalized_cwd; + +/* Call once at startup even if no commands are run. */ + +void +remote_setup (void) +{ +} + +/* Called before exit. */ + +void +remote_cleanup (void) +{ +} + +/* Return nonzero if the next job should be done remotely. */ + +int +start_remote_job_p (int first_p) +{ + static int inited = 0; + int status; + int njobs; + + if (!inited) + { + /* Allow the user to turn off job exportation (useful while he is + debugging Customs, for example). */ + if (getenv ("GNU_MAKE_NO_CUSTOMS") != 0) + { + inited = -1; + return 0; + } + + if (ISDB (DB_JOBS)) + Rpc_Debug (1); + + /* Ping the daemon once to see if it is there. */ + inited = Customs_Ping () == RPC_SUCCESS ? 1 : -1; + + if (starting_directory == 0) + /* 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; + } + } + + if (inited < 0) + return 0; + + njobs = job_slots_used; + if (!first_p) + 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 */ + if (max_load_average < 0 && njobs == 0 || njobs < max_load_average) + return 0; + + status = Customs_Host (EXPORT_SAME, &permit); + if (status != RPC_SUCCESS) + { + DB (DB_JOBS, (_("Customs won't export: %s\n"), + Rpc_ErrorMessage (status))); + return 0; + } + + return !CUSTOMS_FAIL (&permit.addr); +} + +/* Start a remote job running the command in ARGV, with environment from + ENVP. It gets standard input from STDIN_FD. On failure, return + nonzero. On success, return zero, and set *USED_STDIN to nonzero if it + will actually use STDIN_FD, zero if not, set *ID_PTR to a unique + identification, and set *IS_REMOTE to nonzero if the job is remote, zero + if it is local (meaning *ID_PTR is a process ID). */ + +int +start_remote_job (char **argv, char **envp, int stdin_fd, + int *is_remote, pid_t *id_ptr, int *used_stdin) +{ + char waybill[MAX_DATA_SIZE], msg[128]; + struct hostent *host; + struct timeval timeout; + struct sockaddr_in sin; + int len; + int retsock, retport, sock; + Rpc_Stat status; + pid_t pid; + + /* Create the return socket. */ + retsock = Rpc_UdpCreate (True, 0); + if (retsock < 0) + { + O (error, NILF, "exporting: Couldn't create return socket."); + return 1; + } + + /* Get the return socket's port number. */ + len = sizeof (sin); + if (getsockname (retsock, (struct sockaddr *) &sin, &len) < 0) + { + (void) close (retsock); + perror_with_name ("exporting: ", "getsockname"); + return 1; + } + retport = sin.sin_port; + + /* Create the TCP socket for talking to the remote child. */ + sock = Rpc_TcpCreate (False, 0); + + /* Create a WayBill to give to the server. */ + len = Customs_MakeWayBill (&permit, normalized_cwd, argv[0], argv, + envp, retport, waybill); + + /* Modify the waybill for the child's uid/gid. */ + { + WayBill *wb = (WayBill *) waybill; + wb->ruid = wb->euid; + wb->rgid = wb->egid; + } + + /* Send the request to the server, timing out in 20 seconds. */ + timeout.tv_usec = 0; + timeout.tv_sec = 20; + sin.sin_family = AF_INET; + 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); + + host = gethostbyaddr ((char *)&permit.addr, sizeof(permit.addr), AF_INET); + + { + const char *hnm = host ? host->h_name : inet_ntoa (permit.addr); + size_t hlen = strlen (hnm); + + if (status != RPC_SUCCESS) + { + const char *err = Rpc_ErrorMessage (status); + (void) close (retsock); + (void) close (sock); + error (NILF, hlen + strlen (err), + "exporting to %s: %s", hnm, err); + return 1; + } + else if (msg[0] != 'O' || msg[1] != 'k' || msg[2] != '\0') + { + (void) close (retsock); + (void) close (sock); + error (NILF, hlen + strlen (msg), "exporting to %s: %s", hnm, msg); + return 1; + } + else + { + error (NILF, hlen + INTSTR_LENGTH, + "*** exported to %s (id %u)", hnm, permit.id); + } + + fflush (stdout); + fflush (stderr); + } + + pid = vfork (); + if (pid < 0) + { + /* The fork failed! */ + perror_with_name ("fork", ""); + return 1; + } + else if (pid == 0) + { + /* Child side. Run 'export' to handle the connection. */ + static char sock_buf[INTSTR_LENGTH], retsock_buf[INTSTR_LENGTH]; + static char id_buf[INTSTR_LENGTH]; + static char *new_argv[6] = + { EXPORT_COMMAND, "-id", sock_buf, retsock_buf, id_buf, 0 }; + + /* Set up the arguments. */ + (void) sprintf (sock_buf, "%d", sock); + (void) sprintf (retsock_buf, "%d", retsock); + (void) sprintf (id_buf, "%x", permit.id); + + /* Get the right stdin. */ + if (stdin_fd != 0) + (void) dup2 (stdin_fd, 0); + + /* Unblock signals in the child. */ + unblock_all_sigs (); + + /* Run the command. */ + exec_command (new_argv, envp); + } + + /* Parent side. Return the 'export' process's ID. */ + (void) close (retsock); + (void) close (sock); + *is_remote = 0; + *id_ptr = pid; + *used_stdin = 1; + return 0; +} + +/* Get the status of a dead remote child. Block waiting for one to die + if BLOCK is nonzero. Set *EXIT_CODE_PTR to the exit status, *SIGNAL_PTR + to the termination signal or zero if it exited normally, and *COREDUMP_PTR + nonzero if it dumped core. Return the ID of the child that died, + 0 if we would have to block and !BLOCK, or < 0 if there were none. */ + +int +remote_status (int *exit_code_ptr, int *signal_ptr, int *coredump_ptr, + int block) +{ + return -1; +} + +/* Block asynchronous notification of remote child death. + If this notification is done by raising the child termination + signal, do not block that signal. */ +void +block_remote_children (void) +{ + return; +} + +/* Restore asynchronous notification of remote child death. + If this is done by raising the child termination signal, + do not unblock that signal. */ +void +unblock_remote_children (void) +{ + return; +} + +/* Send signal SIG to child ID. Return 0 if successful, -1 if not. */ +int +remote_kill (pid_t id, int sig) +{ + return -1; +} diff --git a/local/recipes/dev/gnu-make/source/src/remote-stub.c b/local/recipes/dev/gnu-make/source/src/remote-stub.c new file mode 100644 index 0000000000..d7cc260c5d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/remote-stub.c @@ -0,0 +1,99 @@ +/* Template for the remote job exportation interface to GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" +#include "filedef.h" +#include "job.h" +#include "commands.h" + + +char *remote_description = 0; + +/* Call once at startup even if no commands are run. */ + +void +remote_setup (void) +{ +} + +/* Called before exit. */ + +void +remote_cleanup (void) +{ +} + +/* Return nonzero if the next job should be done remotely. */ + +int +start_remote_job_p (int first_p UNUSED) +{ + return 0; +} + +/* Start a remote job running the command in ARGV, + with environment from ENVP. It gets standard input from STDIN_FD. On + failure, return nonzero. On success, return zero, and set *USED_STDIN + to nonzero if it will actually use STDIN_FD, zero if not, set *ID_PTR to + a unique identification, and set *IS_REMOTE to zero if the job is local, + nonzero if it is remote (meaning *ID_PTR is a process ID). */ + +int +start_remote_job (char **argv UNUSED, char **envp UNUSED, int stdin_fd UNUSED, + int *is_remote UNUSED, pid_t *id_ptr UNUSED, + int *used_stdin UNUSED) +{ + return -1; +} + +/* Get the status of a dead remote child. Block waiting for one to die + if BLOCK is nonzero. Set *EXIT_CODE_PTR to the exit status, *SIGNAL_PTR + to the termination signal or zero if it exited normally, and *COREDUMP_PTR + nonzero if it dumped core. Return the ID of the child that died, + 0 if we would have to block and !BLOCK, or < 0 if there were none. */ + +int +remote_status (int *exit_code_ptr UNUSED, int *signal_ptr UNUSED, + int *coredump_ptr UNUSED, int block UNUSED) +{ + errno = ECHILD; + return -1; +} + +/* Block asynchronous notification of remote child death. + If this notification is done by raising the child termination + signal, do not block that signal. */ +void +block_remote_children (void) +{ + return; +} + +/* Restore asynchronous notification of remote child death. + If this is done by raising the child termination signal, + do not unblock that signal. */ +void +unblock_remote_children (void) +{ + return; +} + +/* Send signal SIG to child ID. Return 0 if successful, -1 if not. */ +int +remote_kill (pid_t id UNUSED, int sig UNUSED) +{ + return -1; +} diff --git a/local/recipes/dev/gnu-make/source/src/rule.c b/local/recipes/dev/gnu-make/source/src/rule.c new file mode 100644 index 0000000000..0fc64bc871 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/rule.c @@ -0,0 +1,622 @@ +/* Pattern and suffix rule internals for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" + +#include + +#include "filedef.h" +#include "dep.h" +#include "job.h" +#include "commands.h" +#include "variable.h" +#include "rule.h" + +static void freerule (struct rule *rule, struct rule *lastrule); + +/* Chain of all pattern rules. */ + +struct rule *pattern_rules; + +/* Pointer to last rule in the chain, so we can add onto the end. */ + +struct rule *last_pattern_rule; + +/* Number of rules in the chain. */ + +unsigned int num_pattern_rules; + +/* Maximum number of target patterns of any pattern rule. */ + +unsigned int max_pattern_targets; + +/* Maximum number of dependencies of any pattern rule. */ + +unsigned int max_pattern_deps; + +/* Maximum length of the name of a dependencies of any pattern rule. */ + +size_t max_pattern_dep_length; + +/* Pointer to structure for the file .SUFFIXES + whose dependencies are the suffixes to be searched. */ + +struct file *suffix_file; + +/* Maximum length of a suffix. */ + +static size_t maxsuffix; + +/* Return the rule definition: space separated rule targets, followed by + either a colon or two colons in the case of a terminal rule, followed by + space separated rule prerequisites, followed by a pipe, followed by + order-only prerequisites, if present. */ + +const char * +get_rule_defn (struct rule *r) +{ + if (r->_defn == NULL) + { + size_t len = 8; /* Reserve for ":: ", " | ", and nul. */ + unsigned int k; + char *p; + const char *sep = ""; + const struct dep *dep, *ood = 0; + + for (k = 0; k < r->num; ++k) + len += r->lens[k] + 1; + + for (dep = r->deps; dep; dep = dep->next) + len += strlen (dep_name (dep)) + (dep->wait_here ? CSTRLEN (" .WAIT") : 0) + 1; + + p = r->_defn = xmalloc (len); + for (k = 0; k < r->num; ++k, sep = " ") + p = mempcpy (mempcpy (p, sep, strlen (sep)), r->targets[k], r->lens[k]); + *p++ = ':'; + if (r->terminal) + *p++ = ':'; + + /* Copy all normal dependencies; note any order-only deps. */ + for (dep = r->deps; dep; dep = dep->next) + if (dep->ignore_mtime == 0) + { + if (dep->wait_here) + p = mempcpy (p, " .WAIT", CSTRLEN (" .WAIT")); + p = mempcpy (mempcpy (p, " ", 1), dep_name (dep), + strlen (dep_name (dep))); + } + else if (ood == 0) + ood = dep; + + /* Copy order-only deps, if we have any. */ + for (sep = " | "; ood; ood = ood->next, sep = " ") + if (ood->ignore_mtime) + { + p = mempcpy (p, sep, strlen (sep)); + if (ood->wait_here) + p = mempcpy (p, ".WAIT ", CSTRLEN (".WAIT ")); + p = mempcpy (p, dep_name (ood), strlen (dep_name (ood))); + } + *p = '\0'; + } + + return r->_defn; +} + + +/* Compute the maximum dependency length and maximum number of dependencies of + all implicit rules. Also sets the subdir flag for a rule when appropriate, + possibly removing the rule completely when appropriate. + + Add any global EXTRA_PREREQS here as well. */ + +void +snap_implicit_rules (void) +{ + char *name = NULL; + size_t namelen = 0; + struct rule *rule; + struct dep *dep; + struct dep *prereqs = expand_extra_prereqs (lookup_variable (STRING_SIZE_TUPLE(".EXTRA_PREREQS"))); + unsigned int pre_deps = 0; + + max_pattern_dep_length = 0; + + for (dep = prereqs; dep; dep = dep->next) + { + const char *d = dep_name (dep); + size_t l = strlen (d); + + if (dep->need_2nd_expansion) + /* When pattern_search allocates a buffer, allow 5 bytes per each % to + substitute each % with $(*F) while avoiding realloc. */ + while ((d = strchr (d, '%')) != 0) + { + l += 4; + ++d; + } + + if (l > max_pattern_dep_length) + max_pattern_dep_length = l; + ++pre_deps; + } + + num_pattern_rules = max_pattern_targets = max_pattern_deps = 0; + + for (rule = pattern_rules; rule; rule = rule->next) + { + unsigned int ndeps = pre_deps; + struct dep *lastdep = NULL; + + ++num_pattern_rules; + + if (rule->num > max_pattern_targets) + max_pattern_targets = rule->num; + + for (dep = rule->deps; dep != 0; dep = dep->next) + { + const char *dname = dep_name (dep); + size_t len = strlen (dname); + +#ifdef VMS + const char *p = strrchr (dname, ']'); + const char *p2; + if (p == 0) + p = strrchr (dname, ':'); + p2 = p ? strchr (p, '%') : 0; +#else + const char *p = strrchr (dname, '/'); + const char *p2 = p ? strchr (p, '%') : 0; +#endif + ndeps++; + + if (len > max_pattern_dep_length) + max_pattern_dep_length = len; + + if (!dep->next) + lastdep = dep; + + if (p2) + { + /* There is a slash before the % in the dep name. + Extract the directory name. */ + if (p == dname) + ++p; + if ((size_t) (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 (prereqs) + { + if (lastdep) + lastdep->next = copy_dep_chain (prereqs); + else + rule->deps = copy_dep_chain (prereqs); + } + + if (ndeps > max_pattern_deps) + max_pattern_deps = ndeps; + } + + free (name); + free_dep_chain (prereqs); +} + +/* 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 SOURCE is nil, it means there should be no deps. */ + +static void +convert_suffix_rule (const char *target, const char *source, + struct commands *cmds) +{ + const char **names, **percents; + struct dep *deps; + + names = xmalloc (sizeof (const char *)); + percents = xmalloc (sizeof (const char *)); + + if (target == 0) + { + /* Special case: TARGET being nil means we are defining a '.X.a' suffix + rule; the target pattern is always '(%.o)'. */ +#ifdef VMS + *names = strcache_add_len ("(%.obj)", 7); +#else + *names = strcache_add_len ("(%.o)", 5); +#endif + *percents = *names + 1; + } + else + { + /* Construct the target name. */ + size_t len = strlen (target); + char *p = alloca (1 + len + 1); + p[0] = '%'; + memcpy (p + 1, target, len + 1); + *names = strcache_add_len (p, len + 1); + *percents = *names; + } + + if (source == 0) + deps = 0; + else + { + /* Construct the dependency name. */ + size_t len = strlen (source); + char *p = alloca (1 + len + 1); + p[0] = '%'; + memcpy (p + 1, source, len + 1); + deps = alloc_dep (); + deps->name = strcache_add_len (p, len + 1); + } + + create_pattern_rule (names, percents, 1, 0, deps, cmds, 0); +} + +/* Convert old-style suffix rules to pattern rules. + All rules for the suffixes on the .SUFFIXES list are converted and added to + the chain of pattern rules. */ + +void +convert_to_pattern (void) +{ + struct dep *d, *d2; + char *rulename; + + /* We will compute every potential suffix rule (.x.y) from the list of + suffixes in the .SUFFIXES target's dependencies and see if it exists. + First find the longest of the suffixes. */ + + maxsuffix = 0; + for (d = suffix_file->deps; d != 0; d = d->next) + { + size_t l = strlen (dep_name (d)); + if (l > maxsuffix) + maxsuffix = l; + } + + /* Space to construct the suffix rule target name. */ + rulename = alloca ((maxsuffix * 2) + 1); + + for (d = suffix_file->deps; d != 0; d = d->next) + { + size_t slen; + + /* Make a rule that is just the suffix, with no deps or commands. + This rule exists solely to disqualify match-anything rules. */ + convert_suffix_rule (dep_name (d), 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); + + /* Add every other suffix to this one and see if it exists as a + two-suffix rule. */ + slen = strlen (dep_name (d)); + memcpy (rulename, dep_name (d), slen); + + for (d2 = suffix_file->deps; d2 != 0; d2 = d2->next) + { + struct file *f; + size_t s2len; + + 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); + + /* No target, or no commands: it can't be a suffix rule. */ + if (f == 0 || f->cmds == 0) + continue; + + /* POSIX says that suffix rules can't have prerequisites. + In POSIX mode, don't make this a suffix rule. Previous versions + of GNU make did treat this as a suffix rule and ignored the + prerequisites, which is bad. In the future we'll do the same as + POSIX, but for now preserve the old behavior and warn about it. */ + if (f->deps != 0) + { + if (posix_pedantic) + continue; + error (&f->cmds->fileinfo, 0, + _("warning: ignoring prerequisites on suffix rule definition")); + } + + 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); + } + } +} + + +/* Install the pattern rule RULE (whose fields have been filled in) at the end + of the list (so that any rules previously defined will take precedence). + If this rule duplicates a previous one (identical target and dependencies), + the old one is replaced if OVERRIDE is nonzero, otherwise this new one is + thrown out. When an old rule is replaced, the new one is put at the end of + the list. Return nonzero if RULE is used; zero if not. */ + +static int +new_pattern_rule (struct rule *rule, int override) +{ + struct rule *r, *lastrule; + unsigned int i, j; + + rule->in_use = 0; + rule->terminal = 0; + + rule->next = 0; + + /* Search for an identical rule. */ + lastrule = 0; + 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; + /* 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; + } + } + } + } + + matched:; + + if (r == 0) + { + /* There was no rule to replace. */ + if (pattern_rules == 0) + pattern_rules = rule; + else + last_pattern_rule->next = rule; + last_pattern_rule = rule; + } + + return 1; +} + + +/* 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. */ + +void +install_pattern_rule (struct pspec *p, int terminal) +{ + struct rule *r; + const char *ptr; + + r = xmalloc (sizeof (struct rule)); + + r->num = 1; + r->targets = xmalloc (sizeof (const char *)); + r->suffixes = xmalloc (sizeof (const char *)); + r->lens = xmalloc (sizeof (unsigned int)); + r->_defn = NULL; + + r->lens[0] = (unsigned int) strlen (p->target); + r->targets[0] = p->target; + r->suffixes[0] = find_percent_cached (&r->targets[0]); + assert (r->suffixes[0] != NULL); + ++r->suffixes[0]; + + ptr = p->dep; + r->deps = PARSE_SIMPLE_SEQ ((char **)&ptr, struct dep); + + if (new_pattern_rule (r, 0)) + { + r->terminal = terminal ? 1 : 0; + r->cmds = xmalloc (sizeof (struct commands)); + r->cmds->fileinfo.filenm = 0; + r->cmds->fileinfo.lineno = 0; + r->cmds->fileinfo.offset = 0; + /* These will all be string literals, but we malloc space for them + 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; + } +} + + +/* Free all the storage used in RULE and take it out of the + pattern_rules chain. LASTRULE is the rule whose next pointer + points to RULE. */ + +static void +freerule (struct rule *rule, struct rule *lastrule) +{ + struct rule *next = rule->next; + + free_dep_chain (rule->deps); + + /* MSVC erroneously warns without a cast here. */ + free ((void *)rule->targets); + free ((void *)rule->suffixes); + free (rule->lens); + free ((void *) rule->_defn); + + /* 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 + 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. */ + + free (rule); + + if (pattern_rules == rule) + if (lastrule != 0) + abort (); + else + pattern_rules = next; + else if (lastrule != 0) + lastrule->next = next; + if (last_pattern_rule == rule) + last_pattern_rule = lastrule; +} + +/* Create a new pattern rule with the targets in the nil-terminated array + TARGETS. TARGET_PERCENTS is an array of pointers to the % in each element + of TARGETS. N is the number of items in the array (not counting the nil + element). The new rule has dependencies DEPS and commands from COMMANDS. + It is a terminal rule if TERMINAL is nonzero. This rule overrides + identical rules with different commands if OVERRIDE is nonzero. + + The storage for TARGETS and its elements and TARGET_PERCENTS is used and + must not be freed until the rule is destroyed. */ + +void +create_pattern_rule (const char **targets, const char **target_percents, + unsigned short n, int terminal, struct dep *deps, + struct commands *commands, int override) +{ + unsigned int i; + struct rule *r = xmalloc (sizeof (struct rule)); + + r->num = n; + r->cmds = commands; + r->deps = deps; + r->targets = targets; + r->suffixes = target_percents; + r->lens = xmalloc (n * sizeof (unsigned int)); + r->_defn = NULL; + + for (i = 0; i < n; ++i) + { + r->lens[i] = (unsigned int) strlen (targets[i]); + assert (r->suffixes[i] != NULL); + ++r->suffixes[i]; + } + + if (new_pattern_rule (r, override)) + r->terminal = terminal ? 1 : 0; +} + +/* Print the data base of rules. */ + +static void /* Useful to call from gdb. */ +print_rule (struct rule *r) +{ + fputs (get_rule_defn (r), stdout); + putchar ('\n'); + + if (r->cmds != 0) + print_commands (r->cmds); +} + +void +print_rule_data_base (void) +{ + unsigned int rules, terminal; + struct rule *r; + + puts (_("\n# Implicit Rules")); + + rules = terminal = 0; + for (r = pattern_rules; r != 0; r = r->next) + { + ++rules; + + putchar ('\n'); + print_rule (r); + + if (r->terminal) + ++terminal; + } + + if (rules == 0) + puts (_("\n# No implicit rules.")); + else + { + printf (_("\n# %u implicit rules, %u (%.1f%%) terminal."), + rules, terminal, (double) terminal / (double) rules * 100.0); + } + + if (num_pattern_rules != rules) + { + /* This can happen if a fatal error was detected while reading the + makefiles and thus count_implicit_rule_limits wasn't called yet. */ + if (num_pattern_rules != 0) + ONN (fatal, NILF, _("BUG: num_pattern_rules is wrong! %u != %u"), + num_pattern_rules, rules); + } +} diff --git a/local/recipes/dev/gnu-make/source/src/rule.h b/local/recipes/dev/gnu-make/source/src/rule.h new file mode 100644 index 0000000000..cadac3f3b1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/rule.h @@ -0,0 +1,59 @@ +/* Definitions for using pattern rules in GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + + +/* Structure used for pattern (implicit) rules. */ + +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. */ + char *_defn; /* Definition of the rule. */ + unsigned short num; /* Number of targets. */ + char terminal; /* If terminal (double-colon). */ + char in_use; /* If in use by a parent pattern_search. */ + }; + +/* For calling install_pattern_rule. */ +struct pspec + { + const char *target, *dep, *commands; + }; + + +extern struct rule *pattern_rules; +extern struct rule *last_pattern_rule; +extern unsigned int num_pattern_rules; + +extern unsigned int max_pattern_deps; +extern unsigned int max_pattern_targets; +extern size_t max_pattern_dep_length; + +extern struct file *suffix_file; + + +void snap_implicit_rules (void); +void convert_to_pattern (void); +void install_pattern_rule (struct pspec *p, int terminal); +void create_pattern_rule (const char **targets, const char **target_percents, + unsigned short num, int terminal, struct dep *deps, + struct commands *commands, int override); +const char *get_rule_defn (struct rule *rule); +void print_rule_data_base (void); diff --git a/local/recipes/dev/gnu-make/source/src/shuffle.c b/local/recipes/dev/gnu-make/source/src/shuffle.c new file mode 100644 index 0000000000..d1a52a0da2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/shuffle.c @@ -0,0 +1,237 @@ +/* Provide prerequisite shuffle support. +Copyright (C) 2022 Free Software 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 . */ + +#include "makeint.h" + +#include "shuffle.h" + +#include "filedef.h" +#include "dep.h" + +/* Supported shuffle modes. */ +static void random_shuffle_array (void ** a, size_t len); +static void reverse_shuffle_array (void ** a, size_t len); +static void identity_shuffle_array (void ** a, size_t len); + +/* The way goals and rules are shuffled during update. */ +enum shuffle_mode + { + /* No shuffle data is populated or used. */ + sm_none, + /* Random within dependency list. */ + sm_random, + /* Inverse order. */ + sm_reverse, + /* identity order. Differs from SM_NONE by explicitly populating + the traversal order. */ + sm_identity, + }; + +/* Shuffle configuration. */ +static struct + { + enum shuffle_mode mode; + unsigned int seed; + void (*shuffler) (void **a, size_t len); + char strval[INTSTR_LENGTH + 1]; + } config = { sm_none, 0, NULL, "" }; + +/* Return string value of --shuffle= option passed. + If none was passed or --shuffle=none was used function + returns NULL. */ +const char * +shuffle_get_mode () +{ + return config.strval[0] == '\0' ? NULL : config.strval; +} + +void +shuffle_set_mode (const char *cmdarg) +{ + /* Parse supported '--shuffle' mode. */ + if (strcasecmp (cmdarg, "reverse") == 0) + { + config.mode = sm_reverse; + config.shuffler = reverse_shuffle_array; + strcpy (config.strval, "reverse"); + } + else if (strcasecmp (cmdarg, "identity") == 0) + { + config.mode = sm_identity; + config.shuffler = identity_shuffle_array; + strcpy (config.strval, "identity"); + } + else if (strcasecmp (cmdarg, "none") == 0) + { + config.mode = sm_none; + config.shuffler = NULL; + config.strval[0] = '\0'; + } + else + { + if (strcasecmp (cmdarg, "random") == 0) + config.seed = make_rand (); + else + { + /* Assume explicit seed. */ + const char *err; + config.seed = make_toui (cmdarg, &err); + if (err) + OSS (fatal, NILF, _("invalid shuffle mode: %s: '%s'"), err, cmdarg); + } + + config.mode = sm_random; + config.shuffler = random_shuffle_array; + sprintf (config.strval, "%u", config.seed); + } +} + +/* Shuffle array elements using RAND(). */ +static void +random_shuffle_array (void **a, size_t len) +{ + size_t i; + for (i = 0; i < len; i++) + { + void *t; + + /* Pick random element and swap. */ + unsigned int j = make_rand () % len; + if (i == j) + continue; + + /* Swap. */ + t = a[i]; + a[i] = a[j]; + a[j] = t; + } +} + +/* Shuffle array elements using reverse order. */ +static void +reverse_shuffle_array (void **a, size_t len) +{ + size_t i; + for (i = 0; i < len / 2; i++) + { + void *t; + + /* Pick mirror and swap. */ + size_t j = len - 1 - i; + + /* Swap. */ + t = a[i]; + a[i] = a[j]; + a[j] = t; + } +} + +/* Shuffle array elements using identity order. */ +static void +identity_shuffle_array (void **a UNUSED, size_t len UNUSED) +{ + /* No-op! */ +} + +/* Shuffle list of dependencies by populating '->shuf' + field in each 'struct dep'. */ +static void +shuffle_deps (struct dep *deps) +{ + size_t ndeps = 0; + struct dep *dep; + void **da; + void **dp; + + for (dep = deps; dep; dep = dep->next) + { + /* Do not reshuffle prerequisites if any .WAIT is present. */ + if (dep->wait_here) + return; + + ndeps++; + } + + if (ndeps == 0) + return; + + /* Allocate array of all deps, store, shuffle, write back. */ + da = xmalloc (sizeof (struct dep *) * ndeps); + + /* Store locally. */ + for (dep = deps, dp = da; dep; dep = dep->next, dp++) + *dp = dep; + + /* Shuffle. */ + config.shuffler (da, ndeps); + + /* Write back. */ + for (dep = deps, dp = da; dep; dep = dep->next, dp++) + dep->shuf = *dp; + + free (da); +} + +/* Shuffle 'deps' of each 'file' recursively. */ +static void +shuffle_file_deps_recursive (struct file *f) +{ + struct dep *dep; + + /* Implicit rules do not always provide any depends. */ + if (!f) + return; + + /* Avoid repeated shuffles and loops. */ + if (f->was_shuffled) + return; + f->was_shuffled = 1; + + shuffle_deps (f->deps); + + /* Shuffle dependencies. */ + for (dep = f->deps; dep; dep = dep->next) + shuffle_file_deps_recursive (dep->file); +} + +/* Shuffle goal dependencies first, then shuffle dependency list + of each file reachable from goaldep recursively. Used by + --shuffle flag to introduce artificial non-determinism in build + order. .*/ + +void +shuffle_deps_recursive (struct dep *deps) +{ + struct dep *dep; + + /* Exit early if shuffling was not requested. */ + if (config.mode == sm_none) + return; + + /* Do not reshuffle prerequisites if .NOTPARALLEL was specified. */ + if (not_parallel) + return; + + /* Set specific seed at the top level of recursion. */ + if (config.mode == sm_random) + make_seed (config.seed); + + shuffle_deps (deps); + + /* Shuffle dependencies. */ + for (dep = deps; dep; dep = dep->next) + shuffle_file_deps_recursive (dep->file); +} diff --git a/local/recipes/dev/gnu-make/source/src/shuffle.h b/local/recipes/dev/gnu-make/source/src/shuffle.h new file mode 100644 index 0000000000..6c7faa4bc0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/shuffle.h @@ -0,0 +1,26 @@ +/* Declarations for target shuffling support. +Copyright (C) 2022-2022 Free Software 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 . */ + +struct dep; +struct goaldep; + +void shuffle_set_mode (const char *cmdarg); +const char *shuffle_get_mode (void); +void shuffle_deps_recursive (struct dep* g); + +#define shuffle_goaldeps_recursive(_g) do{ \ + shuffle_deps_recursive ((struct dep *)_g); \ + } while(0) diff --git a/local/recipes/dev/gnu-make/source/src/signame.c b/local/recipes/dev/gnu-make/source/src/signame.c new file mode 100644 index 0000000000..d4374a301e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/signame.c @@ -0,0 +1,254 @@ +/* Convert between signal names and numbers. +Copyright (C) 1990-2022 Free Software 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 . */ + +#include "makeint.h" + +/* If the system provides strsignal, we don't need it. */ + +#if !HAVE_STRSIGNAL + +/* If the system provides sys_siglist, we'll use that. + Otherwise create our own. + */ + +#if !HAVE_DECL_SYS_SIGLIST + +/* Some systems do not define NSIG in . */ +#ifndef NSIG +#ifdef _NSIG +#define NSIG _NSIG +#else +#define NSIG 32 +#endif +#endif + +/* There is too much variation in Sys V signal numbers and names, so + we must initialize them at runtime. */ + +static const char *undoc; + +static const char *sys_siglist[NSIG]; + +/* Table of abbreviations for signals. Note: A given number can + appear more than once with different abbreviations. */ +#define SIG_TABLE_SIZE (NSIG*2) + +typedef struct + { + int number; + const char *abbrev; + } num_abbrev; + +static num_abbrev sig_table[SIG_TABLE_SIZE]; + +/* Number of elements of sig_table used. */ +static int sig_table_nelts = 0; + +/* Enter signal number NUMBER into the tables with ABBREV and NAME. */ + +static void +init_sig (int number, const char *abbrev, const char *name) +{ + /* If this value is ever greater than NSIG it seems like it'd be a bug in + the system headers, but... better safe than sorry. We know, for + example, that this isn't always true on VMS. */ + + if (number >= 0 && number < NSIG) + sys_siglist[number] = name; + + if (sig_table_nelts < SIG_TABLE_SIZE) + { + sig_table[sig_table_nelts].number = number; + sig_table[sig_table_nelts++].abbrev = abbrev; + } +} + +static int +signame_init (void) +{ + int i; + + undoc = xstrdup (_("unknown signal")); + + /* Initialize signal names. */ + for (i = 0; i < NSIG; i++) + sys_siglist[i] = undoc; + + /* Initialize signal names. */ +#if defined (SIGHUP) + init_sig (SIGHUP, "HUP", _("Hangup")); +#endif +#if defined (SIGINT) + init_sig (SIGINT, "INT", _("Interrupt")); +#endif +#if defined (SIGQUIT) + init_sig (SIGQUIT, "QUIT", _("Quit")); +#endif +#if defined (SIGILL) + init_sig (SIGILL, "ILL", _("Illegal Instruction")); +#endif +#if defined (SIGTRAP) + init_sig (SIGTRAP, "TRAP", _("Trace/breakpoint trap")); +#endif + /* If SIGIOT == SIGABRT, we want to print it as SIGABRT because + SIGABRT is in ANSI and POSIX.1 and SIGIOT isn't. */ +#if defined (SIGABRT) + init_sig (SIGABRT, "ABRT", _("Aborted")); +#endif +#if defined (SIGIOT) + init_sig (SIGIOT, "IOT", _("IOT trap")); +#endif +#if defined (SIGEMT) + init_sig (SIGEMT, "EMT", _("EMT trap")); +#endif +#if defined (SIGFPE) + init_sig (SIGFPE, "FPE", _("Floating point exception")); +#endif +#if defined (SIGKILL) + init_sig (SIGKILL, "KILL", _("Killed")); +#endif +#if defined (SIGBUS) + init_sig (SIGBUS, "BUS", _("Bus error")); +#endif +#if defined (SIGSEGV) + init_sig (SIGSEGV, "SEGV", _("Segmentation fault")); +#endif +#if defined (SIGSYS) + init_sig (SIGSYS, "SYS", _("Bad system call")); +#endif +#if defined (SIGPIPE) + init_sig (SIGPIPE, "PIPE", _("Broken pipe")); +#endif +#if defined (SIGALRM) + init_sig (SIGALRM, "ALRM", _("Alarm clock")); +#endif +#if defined (SIGTERM) + init_sig (SIGTERM, "TERM", _("Terminated")); +#endif +#if defined (SIGUSR1) + init_sig (SIGUSR1, "USR1", _("User defined signal 1")); +#endif +#if defined (SIGUSR2) + init_sig (SIGUSR2, "USR2", _("User defined signal 2")); +#endif + /* If SIGCLD == SIGCHLD, we want to print it as SIGCHLD because that + is what is in POSIX.1. */ +#if defined (SIGCHLD) + init_sig (SIGCHLD, "CHLD", _("Child exited")); +#endif +#if defined (SIGCLD) + init_sig (SIGCLD, "CLD", _("Child exited")); +#endif +#if defined (SIGPWR) + init_sig (SIGPWR, "PWR", _("Power failure")); +#endif +#if defined (SIGTSTP) + init_sig (SIGTSTP, "TSTP", _("Stopped")); +#endif +#if defined (SIGTTIN) + init_sig (SIGTTIN, "TTIN", _("Stopped (tty input)")); +#endif +#if defined (SIGTTOU) + init_sig (SIGTTOU, "TTOU", _("Stopped (tty output)")); +#endif +#if defined (SIGSTOP) + init_sig (SIGSTOP, "STOP", _("Stopped (signal)")); +#endif +#if defined (SIGXCPU) + init_sig (SIGXCPU, "XCPU", _("CPU time limit exceeded")); +#endif +#if defined (SIGXFSZ) + init_sig (SIGXFSZ, "XFSZ", _("File size limit exceeded")); +#endif +#if defined (SIGVTALRM) + init_sig (SIGVTALRM, "VTALRM", _("Virtual timer expired")); +#endif +#if defined (SIGPROF) + init_sig (SIGPROF, "PROF", _("Profiling timer expired")); +#endif +#if defined (SIGWINCH) + /* "Window size changed" might be more accurate, but even if that + is all that it means now, perhaps in the future it will be + extended to cover other kinds of window changes. */ + init_sig (SIGWINCH, "WINCH", _("Window changed")); +#endif +#if defined (SIGCONT) + init_sig (SIGCONT, "CONT", _("Continued")); +#endif +#if defined (SIGURG) + 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 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) + init_sig (SIGWIND, "WIND", _("SIGWIND")); +#endif +#if defined (SIGPHONE) + init_sig (SIGPHONE, "PHONE", _("SIGPHONE")); +#endif +#if defined (SIGPOLL) + init_sig (SIGPOLL, "POLL", _("I/O possible")); +#endif +#if defined (SIGLOST) + init_sig (SIGLOST, "LOST", _("Resource lost")); +#endif +#if defined (SIGDANGER) + init_sig (SIGDANGER, "DANGER", _("Danger signal")); +#endif +#if defined (SIGINFO) + init_sig (SIGINFO, "INFO", _("Information request")); +#endif +#if defined (SIGNOFP) + init_sig (SIGNOFP, "NOFP", _("Floating point co-processor not available")); +#endif + + return 1; +} + +#endif /* HAVE_DECL_SYS_SIGLIST */ + + +char * +strsignal (int sig) +{ + static char buf[] = "Signal 12345678901234567890"; + +#if ! HAVE_DECL_SYS_SIGLIST +# if HAVE_DECL__SYS_SIGLIST +# define sys_siglist _sys_siglist +# elif HAVE_DECL___SYS_SIGLIST +# define sys_siglist __sys_siglist +# else + static int sig_initted = 0; + + if (!sig_initted) + sig_initted = signame_init (); +# endif +#endif + + if (sig > 0 && sig < NSIG) + return (char *) sys_siglist[sig]; + + sprintf (buf, "Signal %d", sig); + return buf; +} + +#endif /* HAVE_STRSIGNAL */ diff --git a/local/recipes/dev/gnu-make/source/src/strcache.c b/local/recipes/dev/gnu-make/source/src/strcache.c new file mode 100644 index 0000000000..f081ea75dc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/strcache.c @@ -0,0 +1,330 @@ +/* Constant string caching for GNU Make. +Copyright (C) 2006-2022 Free Software 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 . */ + +#include "makeint.h" + +#include +#include + +#include "hash.h" + +/* 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. 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. */ +}; + +/* 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) +#define 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 + buffers will be filled in. However, GNU make has so many smaller strings + that this doesn't seem to be much of an issue in practice. + */ +static struct strcache * +new_cache (struct strcache **head, sc_buflen_t buflen) +{ + struct strcache *new = xmalloc (buflen + CACHE_BUFFER_OFFSET); + new->end = 0; + new->count = 0; + new->bytesfree = buflen; + + new->next = *head; + *head = new; + + ++total_buffers; + return new; +} + +static const char * +copy_string (struct strcache *sp, const char *str, sc_buflen_t len) +{ + /* Add the string to this cache. */ + char *res = &sp->buffer[sp->end]; + + memmove (res, str, len); + res[len++] = '\0'; + sp->end += len; + sp->bytesfree -= len; + ++sp->count; + + return res; +} + +static const char * +add_string (const char *str, sc_buflen_t len) +{ + const char *res; + struct strcache *sp; + struct strcache **spp = &strcache; + /* We need space for the nul char. */ + sc_buflen_t sz = len + 1; + + ++total_strings; + total_size += sz; + + /* If the string we want is too large to fit into a single buffer, then + no existing cache is large enough. Add it directly to the fullcache. */ + if (sz > BUFSIZE) + { + sp = new_cache (&fullcache, sz); + return copy_string (sp, str, len); + } + + /* Find the first cache with enough free space. */ + for (; *spp != NULL; spp = &(*spp)->next) + if ((*spp)->bytesfree > sz) + break; + sp = *spp; + + /* If nothing is big enough, make a new cache at the front. */ + if (sp == NULL) + { + sp = new_cache (&strcache, BUFSIZE); + spp = &strcache; + } + + /* Add the string to this cache. */ + res = copy_string (sp, str, 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. */ + if (total_strings > 20 && sp->bytesfree < (total_size / total_strings) + 1) + { + *spp = sp->next; + sp->next = fullcache; + fullcache = sp; + } + + return res; +} + +/* For strings too large for the strcache, we just save them in a list. */ +struct hugestring { + struct hugestring *next; /* The next string. */ + char buffer[1]; /* The string. */ +}; + +static struct hugestring *hugestrings = NULL; + +static const char * +add_hugestring (const char *str, size_t len) +{ + struct hugestring *new = xmalloc (sizeof (struct hugestring) + len); + memcpy (new->buffer, str, len); + new->buffer[len] = '\0'; + + new->next = hugestrings; + hugestrings = new; + + return new->buffer; +} + +/* Hash table of strings in the cache. */ + +static unsigned long +str_hash_1 (const void *key) +{ + return_ISTRING_HASH_1 ((const char *) key); +} + +static unsigned long +str_hash_2 (const void *key) +{ + return_ISTRING_HASH_2 ((const char *) key); +} + +static int +str_hash_cmp (const void *x, const void *y) +{ + return_ISTRING_COMPARE ((const char *) x, (const char *) y); +} + +static struct hash_table strings; +static unsigned long total_adds = 0; + +static const char * +add_hash (const char *str, size_t len) +{ + char *const *slot; + const char *key; + + /* If it's too large for the string cache, just copy it. + We don't bother trying to match these. */ + if (len > USHRT_MAX - 1) + return add_hugestring (str, len); + + /* Look up the string in the hash. If it's there, return it. */ + slot = (char *const *) hash_find_slot (&strings, str); + key = *slot; + + /* Count the total number of add operations we performed. */ + ++total_adds; + + if (!HASH_VACANT (key)) + return key; + + /* Not there yet so add it to a buffer, then into the hash table. */ + key = add_string (str, (sc_buflen_t)len); + hash_insert_at (&strings, key, slot); + return key; +} + +/* Returns true if the string is in the cache; false if not. */ +int +strcache_iscached (const char *str) +{ + struct strcache *sp; + + for (sp = strcache; sp != 0; sp = sp->next) + if (str >= sp->buffer && str < sp->buffer + sp->end) + return 1; + for (sp = fullcache; sp != 0; sp = sp->next) + if (str >= sp->buffer && str < sp->buffer + sp->end) + return 1; + + { + struct hugestring *hp; + for (hp = hugestrings; hp != 0; hp = hp->next) + if (str == hp->buffer) + return 1; + } + + return 0; +} + +/* If the string is already in the cache, return a pointer to the cached + version. If not, add it then return a pointer to the cached version. + Note we do NOT take control of the string passed in. */ +const char * +strcache_add (const char *str) +{ + return add_hash (str, strlen (str)); +} + +const char * +strcache_add_len (const char *str, size_t len) +{ + /* If we're not given a nul-terminated string we have to create one, because + the hashing functions expect it. */ + if (str[len] != '\0') + { + char *key = alloca (len + 1); + memcpy (key, str, len); + key[len] = '\0'; + str = key; + } + + return add_hash (str, len); +} + +void +strcache_init (void) +{ + hash_init (&strings, 8000, str_hash_1, str_hash_2, str_hash_cmp); +} + + +/* Generate some stats output. */ + +void +strcache_print_stats (const char *prefix) +{ + const struct strcache *sp; + unsigned long numbuffs = 0, fullbuffs = 0; + unsigned long totfree = 0, maxfree = 0, minfree = BUFSIZE; + + if (! strcache) + { + printf (_("\n%s No strcache buffers\n"), prefix); + return; + } + + /* 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; + + totfree += bf; + maxfree = (bf > maxfree ? bf : maxfree); + minfree = (bf < minfree ? bf : minfree); + + ++numbuffs; + } + for (sp = fullcache; sp != NULL; sp = sp->next) + { + sc_buflen_t bf = sp->bytesfree; + + totfree += bf; + maxfree = (bf > maxfree ? bf : maxfree); + minfree = (bf < minfree ? bf : minfree); + + ++numbuffs; + ++fullbuffs; + } + + /* 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 (_("%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"), + prefix, (sc_buflen_t)BUFSIZE, strcache->end, strcache->count, + (unsigned int) (strcache->end / strcache->count)); + + if (numbuffs) + { + /* Show information about non-current buffers. */ + unsigned long sz = total_size - strcache->end; + unsigned long cnt = total_strings - strcache->count; + sc_buflen_t avgfree = (sc_buflen_t) (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); + } + + 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/local/recipes/dev/gnu-make/source/src/variable.c b/local/recipes/dev/gnu-make/source/src/variable.c new file mode 100644 index 0000000000..0bd9963b38 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/variable.c @@ -0,0 +1,1957 @@ +/* Internals of variables for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" + +#include + +#include "filedef.h" +#include "debug.h" +#include "dep.h" +#include "job.h" +#include "commands.h" +#include "variable.h" +#include "os.h" +#include "rule.h" +#ifdef WINDOWS32 +#include "pathstuff.h" +#endif +#include "hash.h" + +/* Incremented every time we enter target_environment(). */ +unsigned long long env_recursion = 0; + +/* Incremented every time we add or remove a global variable. */ +static unsigned long variable_changenum = 0; + +/* Chain of all pattern-specific variables. */ + +static struct pattern_var *pattern_vars = NULL; + +/* Pointer to the last struct in the pack of a specific size, from 1 to 255.*/ + +static struct pattern_var *last_pattern_vars[256]; + +/* Create a new pattern-specific variable struct. The new variable is + inserted into the PATTERN_VARS list in the shortest patterns first + order to support the shortest stem matching (the variables are + matched in the reverse order so the ones with the longest pattern + will be considered first). Variables with the same pattern length + are inserted in the definition order. */ + +struct pattern_var * +create_pattern_var (const char *target, const char *suffix) +{ + size_t len = strlen (target); + struct pattern_var *p = xcalloc (sizeof (struct pattern_var)); + + if (pattern_vars != 0) + { + if (len < 256 && last_pattern_vars[len] != 0) + { + p->next = last_pattern_vars[len]->next; + last_pattern_vars[len]->next = p; + } + else + { + /* Find the position where we can insert this variable. */ + struct pattern_var **v; + + for (v = &pattern_vars; ; v = &(*v)->next) + { + /* Insert at the end of the pack so that patterns with the + same length appear in the order they were defined .*/ + + if (*v == 0 || (*v)->len > len) + { + p->next = *v; + *v = p; + break; + } + } + } + } + else + { + pattern_vars = p; + p->next = 0; + } + + p->target = target; + p->len = len; + p->suffix = suffix + 1; + + if (len < 256) + last_pattern_vars[len] = p; + + return p; +} + +/* Look up a target in the pattern-specific variable list. */ + +static struct pattern_var * +lookup_pattern_var (struct pattern_var *start, const char *target, + size_t targlen) +{ + struct pattern_var *p; + + for (p = start ? start->next : pattern_vars; p != 0; p = p->next) + { + const char *stem; + size_t stemlen; + + if (p->len > targlen) + /* It can't possibly match. */ + continue; + + /* From the lengths of the filename and the pattern parts, + find the stem: the part of the filename that matches the %. */ + stem = target + (p->suffix - p->target - 1); + stemlen = targlen - p->len + 1; + + /* Compare the text in the pattern before the stem, if any. */ + if (stem > target && !strneq (p->target, target, stem - target)) + continue; + + /* Compare the text in the pattern after the stem, if any. + We could test simply using streq, but this way we compare the + first two characters immediately. This saves time in the very + common case where the first character matches because it is a + period. */ + if (*p->suffix == stem[stemlen] + && (*p->suffix == '\0' || streq (&p->suffix[1], &stem[stemlen+1]))) + break; + } + + return p; +} + +/* Hash table of all global variable definitions. */ + +static unsigned long +variable_hash_1 (const void *keyv) +{ + struct variable const *key = (struct variable const *) keyv; + return_STRING_N_HASH_1 (key->name, key->length); +} + +static unsigned long +variable_hash_2 (const void *keyv) +{ + struct variable const *key = (struct variable const *) keyv; + return_STRING_N_HASH_2 (key->name, key->length); +} + +static int +variable_hash_cmp (const void *xv, const void *yv) +{ + struct variable const *x = (struct variable const *) xv; + struct variable const *y = (struct variable const *) yv; + int result = x->length - y->length; + if (result) + return result; + return_STRING_N_COMPARE (x->name, y->name, x->length); +} + +#ifndef VARIABLE_BUCKETS +#define VARIABLE_BUCKETS 523 +#endif +#ifndef PERFILE_VARIABLE_BUCKETS +#define PERFILE_VARIABLE_BUCKETS 23 +#endif +#ifndef SMALL_SCOPE_VARIABLE_BUCKETS +#define SMALL_SCOPE_VARIABLE_BUCKETS 13 +#endif + +static struct variable_set global_variable_set; +static struct variable_set_list global_setlist + = { 0, &global_variable_set, 0 }; +struct variable_set_list *current_variable_set_list = &global_setlist; + +/* Implement variables. */ + +void +init_hash_global_variable_set (void) +{ + hash_init (&global_variable_set.table, VARIABLE_BUCKETS, + variable_hash_1, variable_hash_2, variable_hash_cmp); +} + +/* Define variable named NAME with value VALUE in SET. VALUE is copied. + LENGTH is the length of NAME, which does not need to be null-terminated. + ORIGIN specifies the origin of the variable (makefile, command line + or environment). + If RECURSIVE is nonzero a flag is set in the variable saying + that it should be recursively re-expanded. */ + +struct variable * +define_variable_in_set (const char *name, size_t length, + const char *value, enum variable_origin origin, + int recursive, struct variable_set *set, + const floc *flocp) +{ + struct variable *v; + struct variable **var_slot; + struct variable var_key; + + if (set == NULL) + set = &global_variable_set; + + var_key.name = (char *) name; + var_key.length = (unsigned int) length; + var_slot = (struct variable **) hash_find_slot (&set->table, &var_key); + v = *var_slot; + +#ifdef VMS + /* VMS does not populate envp[] with DCL symbols and logical names which + historically are mapped to environment variables. + If the variable is not yet defined, then we need to check if getenv() + can find it. Do not do this for origin == o_env to avoid infinite + recursion */ + if (HASH_VACANT (v) && (origin != o_env)) + { + struct variable * vms_variable; + char * vname = alloca (length + 1); + char * vvalue; + + strncpy (vname, name, length); + vvalue = getenv(vname); + + /* Values starting with '$' are probably foreign commands. + We want to treat them as Shell aliases and not look them up here */ + if ((vvalue != NULL) && (vvalue[0] != '$')) + { + vms_variable = lookup_variable(name, length); + /* Refresh the slot */ + var_slot = (struct variable **) hash_find_slot (&set->table, + &var_key); + v = *var_slot; + } + } +#endif + + if (env_overrides && origin == o_env) + origin = o_env_override; + + 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; + + /* 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 ((int) origin >= (int) v->origin) + { + free (v->value); + v->value = xstrdup (value); + if (flocp != 0) + v->fileinfo = *flocp; + else + v->fileinfo.filenm = 0; + v->origin = origin; + v->recursive = recursive; + } + return v; + } + + /* Create a new variable definition and add it to the hash table. */ + + v = xcalloc (sizeof (struct variable)); + v->name = xstrndup (name, length); + v->length = (unsigned int) length; + hash_insert_at (&set->table, v, var_slot); + if (set == &global_variable_set) + ++variable_changenum; + + v->value = xstrdup (value); + if (flocp != 0) + v->fileinfo = *flocp; + v->origin = origin; + v->recursive = recursive; + + v->export = v_default; + v->exportable = 1; + /* Check the nul-terminated variable name. */ + name = v->name; + if (*name != '_' && (*name < 'A' || *name > 'Z') + && (*name < 'a' || *name > 'z')) + v->exportable = 0; + else + { + for (++name; *name != '\0'; ++name) + if (*name != '_' && (*name < 'a' || *name > 'z') + && (*name < 'A' || *name > 'Z') && !ISDIGIT(*name)) + break; + + if (*name != '\0') + v->exportable = 0; + } + + return v; +} + + +/* Undefine variable named NAME in SET. LENGTH is the length of NAME, which + does not need to be null-terminated. ORIGIN specifies the origin of the + variable (makefile, command line or environment). */ + +static void +free_variable_name_and_value (const void *item) +{ + 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, size_t length, + enum variable_origin origin, + struct variable_set *set) +{ + struct variable *v; + struct variable **var_slot; + struct variable var_key; + + if (set == NULL) + set = &global_variable_set; + + var_key.name = (char *) name; + var_key.length = (unsigned int) length; + var_slot = (struct variable **) hash_find_slot (&set->table, &var_key); + + if (env_overrides && origin == o_env) + origin = o_env_override; + + v = *var_slot; + if (! HASH_VACANT (v)) + { + if (env_overrides && v->origin == o_env) + /* V came from in the environment. Since it was defined + before the switches were parsed, it wasn't affected by -e. */ + v->origin = o_env_override; + + /* Undefine only if this undefinition is from an equal or stronger + source than the variable definition. */ + if ((int) origin >= (int) v->origin) + { + hash_delete_at (&set->table, var_slot); + free_variable_name_and_value (v); + free (v); + if (set == &global_variable_set) + ++variable_changenum; + } + } +} + +/* If the variable passed in is "special", handle its special nature. + Currently there are two such variables, both used for introspection: + .VARIABLES expands to a list of all the variables defined in this instance + of make. + .TARGETS expands to a list of all the targets defined in this + instance of make. + Returns the variable reference passed in. */ + +#define EXPANSION_INCREMENT(_l) ((((_l) / 500) + 1) * 500) + +static struct variable * +lookup_special_var (struct variable *var) +{ + static unsigned long last_changenum = 0; + + /* This one actually turns out to be very hard, due to the way the parser + records targets. The way it works is that target information is collected + internally until make knows the target is completely specified. Only when + it sees that some new construct (a new target or variable) is defined does + make know that the previous one is done. In short, this means that if + you do this: + + all: + + TARGS := $(.TARGETS) + + then $(TARGS) won't contain "all", because it's not until after the + variable is created that the previous target is completed. + + Changing this would be a major pain. I think a less complex way to do it + would be to pre-define the target files as soon as the first line is + parsed, then come back and do the rest of the definition as now. That + would allow $(.TARGETS) to be correct without a major change to the way + the parser works. + + if (streq (var->name, ".TARGETS")) + var->value = build_target_list (var->value); + else + */ + + if (variable_changenum != last_changenum && streq (var->name, ".VARIABLES")) + { + size_t max = EXPANSION_INCREMENT (strlen (var->value)); + size_t len; + char *p; + struct variable **vp = (struct variable **) global_variable_set.table.ht_vec; + struct variable **end = &vp[global_variable_set.table.ht_size]; + + /* Make sure we have at least MAX bytes in the allocated buffer. */ + var->value = xrealloc (var->value, max); + + /* Walk through the hash of variables, constructing a list of names. */ + p = var->value; + len = 0; + for (; vp < end; ++vp) + if (!HASH_VACANT (*vp)) + { + struct variable *v = *vp; + int l = v->length; + + len += l + 1; + if (len > max) + { + size_t off = p - var->value; + + max += EXPANSION_INCREMENT (l + 1); + var->value = xrealloc (var->value, max); + p = &var->value[off]; + } + + p = mempcpy (p, v->name, l); + *(p++) = ' '; + } + *(p-1) = '\0'; + + /* Remember the current variable change number. */ + last_changenum = variable_changenum; + } + + return 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 + on the variable, or nil if no such variable is defined. */ + +struct variable * +lookup_variable (const char *name, size_t length) +{ + const struct variable_set_list *setlist; + struct variable var_key; + int is_parent = 0; + + var_key.name = (char *) name; + var_key.length = (unsigned int) length; + + for (setlist = current_variable_set_list; + setlist != 0; setlist = setlist->next) + { + const struct variable_set *set = setlist->set; + struct variable *v; + + 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; + + is_parent |= setlist->next_is_parent; + } + +#ifdef VMS + /* VMS doesn't populate envp[] with DCL symbols and logical names, which + historically are mapped to environment variables and returned by + getenv(). */ + { + char *vname = alloca (length + 1); + char *value; + strncpy (vname, name, length); + vname[length] = 0; + value = getenv (vname); + if (value != 0) + { + char *sptr; + int scnt; + + sptr = value; + scnt = 0; + + while ((sptr = strchr (sptr, '$'))) + { + scnt++; + sptr++; + } + + if (scnt > 0) + { + char *nvalue; + char *nptr; + + nvalue = alloca (strlen (value) + scnt + 1); + sptr = value; + nptr = nvalue; + + while (*sptr) + { + if (*sptr == '$') + { + *nptr++ = '$'; + *nptr++ = '$'; + } + else + { + *nptr++ = *sptr; + } + sptr++; + } + + *nptr = '\0'; + return define_variable (vname, length, nvalue, o_env, 1); + + } + + return define_variable (vname, length, value, o_env, 1); + } + } +#endif /* VMS */ + + return 0; +} + +/* 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 + on the variable, or nil if no such variable is defined. */ + +struct variable * +lookup_variable_in_set (const char *name, size_t length, + const struct variable_set *set) +{ + struct variable var_key; + + var_key.name = (char *) name; + var_key.length = (unsigned int) length; + + return (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key); +} + +/* Initialize FILE's variable set list. If FILE already has a variable set + list, the topmost variable set is left intact, but the the rest of the + chain is replaced with FILE->parent's setlist. If FILE is a double-colon + rule, then we will use the "root" double-colon target's variable set as the + parent of FILE's variable set. + + If we're READING a makefile, don't do the pattern variable search now, + since the pattern variable might not have been defined yet. */ + +void +initialize_file_variables (struct file *file, int reading) +{ + struct variable_set_list *l = file->variables; + + if (l == 0) + { + l = (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); + file->variables = l; + } + + /* If this is a double-colon, then our "parent" is the "root" target for + this double-colon rule. Since that rule has the same name, parent, + etc. we can just use its variables as the "next" for ours. */ + + if (file->double_colon && file->double_colon != file) + { + initialize_file_variables (file->double_colon, reading); + l->next = file->double_colon->variables; + l->next_is_parent = 0; + return; + } + + if (file->parent == 0) + l->next = &global_setlist; + else + { + initialize_file_variables (file->parent, reading); + l->next = file->parent->variables; + } + l->next_is_parent = 1; + + /* If we're not reading makefiles and we haven't looked yet, see if + we can find pattern variables for this target. */ + + if (!reading && !file->pat_searched) + { + struct pattern_var *p; + const size_t targlen = strlen (file->name); + + p = lookup_pattern_var (0, file->name, targlen); + if (p != 0) + { + struct variable_set_list *global = current_variable_set_list; + + /* We found at least one. Set up a new variable set to accumulate + all the pattern variables that match this target. */ + + file->pat_variables = create_new_variable_set (); + current_variable_set_list = file->pat_variables; + + do + { + /* We found one, so insert it into the set. */ + + struct variable *v; + + if (p->variable.flavor == f_simple) + { + v = define_variable_loc ( + p->variable.name, strlen (p->variable.name), + p->variable.value, p->variable.origin, + 0, &p->variable.fileinfo); + + v->flavor = f_simple; + } + else + { + v = do_variable_definition ( + &p->variable.fileinfo, p->variable.name, + p->variable.value, p->variable.origin, + p->variable.flavor, 1); + } + + /* Also mark it as a per-target and copy export status. */ + v->per_target = p->variable.per_target; + v->export = p->variable.export; + v->private_var = p->variable.private_var; + } + while ((p = lookup_pattern_var (p, file->name, targlen)) != 0); + + current_variable_set_list = global; + } + file->pat_searched = 1; + } + + /* If we have a pattern variable match, set it up. */ + + if (file->pat_variables != 0) + { + file->pat_variables->next = l->next; + file->pat_variables->next_is_parent = l->next_is_parent; + l->next = file->pat_variables; + l->next_is_parent = 0; + } +} + +/* Pop the top set off the current variable set list, + and free all its storage. */ + +struct variable_set_list * +create_new_variable_set (void) +{ + struct variable_set_list *setlist; + struct variable_set *set; + + set = xmalloc (sizeof (struct variable_set)); + hash_init (&set->table, SMALL_SCOPE_VARIABLE_BUCKETS, + variable_hash_1, variable_hash_2, variable_hash_cmp); + + setlist = (struct variable_set_list *) + xmalloc (sizeof (struct variable_set_list)); + setlist->set = set; + setlist->next = current_variable_set_list; + setlist->next_is_parent = 0; + + return setlist; +} + +/* Create a new variable set and push it on the current setlist. + If we're pushing a global scope (that is, the current scope is the global + scope) then we need to "push" it the other way: file variable sets point + directly to the global_setlist so we need to replace that with the new one. + */ + +struct variable_set_list * +push_new_variable_scope (void) +{ + current_variable_set_list = create_new_variable_set (); + if (current_variable_set_list->next == &global_setlist) + { + /* It was the global, so instead of new -> &global we want to replace + &global with the new one and have &global -> new, with current still + pointing to &global */ + struct variable_set *set = current_variable_set_list->set; + current_variable_set_list->set = global_setlist.set; + global_setlist.set = set; + current_variable_set_list->next = global_setlist.next; + global_setlist.next = current_variable_set_list; + current_variable_set_list = &global_setlist; + } + return (current_variable_set_list); +} + +void +pop_variable_scope (void) +{ + struct variable_set_list *setlist; + struct variable_set *set; + + /* Can't call this if there's no scope to pop! */ + assert (current_variable_set_list->next != NULL); + + if (current_variable_set_list != &global_setlist) + { + /* We're not pointing to the global setlist, so pop this one. */ + setlist = current_variable_set_list; + set = setlist->set; + current_variable_set_list = setlist->next; + } + else + { + /* This set is the one in the global_setlist, but there is another global + set beyond that. We want to copy that set to global_setlist, then + delete what used to be in global_setlist. */ + setlist = global_setlist.next; + set = global_setlist.set; + global_setlist.set = setlist->set; + global_setlist.next = setlist->next; + global_setlist.next_is_parent = setlist->next_is_parent; + } + + /* Free the one we no longer need. */ + free (setlist); + hash_map (&set->table, free_variable_name_and_value); + hash_free (&set->table, 1); + free (set); +} + +/* Merge FROM_SET into TO_SET, freeing unused storage in FROM_SET. */ + +static void +merge_variable_sets (struct variable_set *to_set, + struct variable_set *from_set) +{ + struct variable **from_var_slot = (struct variable **) from_set->table.ht_vec; + struct variable **from_var_end = from_var_slot + from_set->table.ht_size; + + int inc = to_set == &global_variable_set ? 1 : 0; + + 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); + variable_changenum += inc; + } + else + { + /* GKM FIXME: delete in from_set->table */ + free (from_var->value); + free (from_var); + } + } +} + +/* Merge SETLIST1 into SETLIST0, freeing unused storage in SETLIST1. */ + +void +merge_variable_set_lists (struct variable_set_list **setlist0, + struct variable_set_list *setlist1) +{ + struct variable_set_list *to = *setlist0; + struct variable_set_list *last0 = 0; + + /* If there's nothing to merge, stop now. */ + if (!setlist1 || setlist1 == &global_setlist) + return; + + if (to) + { + /* These loops rely on the fact that all setlists terminate with the + global setlist (before NULL). If not, arguably we SHOULD die. */ + + /* Make sure that setlist1 is not already a subset of setlist0. */ + while (to != &global_setlist) + { + if (to == setlist1) + return; + to = to->next; + } + + to = *setlist0; + while (setlist1 != &global_setlist && to != &global_setlist) + { + struct variable_set_list *from = setlist1; + setlist1 = setlist1->next; + + merge_variable_sets (to->set, from->set); + + last0 = to; + to = to->next; + } + } + + if (setlist1 != &global_setlist) + { + if (last0 == 0) + *setlist0 = setlist1; + else + last0->next = setlist1; + } +} + +/* Define the automatic variables, and record the addresses + of their structures so we can change their values quickly. */ + +void +define_automatic_variables (void) +{ + struct variable *v; + char buf[200]; + + sprintf (buf, "%u", makelevel); + 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); + 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, + and use $COMSPEC as the default $SHELL when appropriate. */ + { + static char shell_str[] = "SHELL"; + const int shlen = sizeof (shell_str) - 1; + struct variable *mshp = lookup_variable ("MAKESHELL", 9); + struct variable *comp = lookup_variable ("COMSPEC", 7); + + /* $(MAKESHELL) overrides $(SHELL) even if -e is in effect. */ + if (mshp) + (void) define_variable (shell_str, shlen, + mshp->value, o_env_override, 0); + else if (comp) + { + /* $(COMSPEC) shouldn't override $(SHELL). */ + struct variable *shp = lookup_variable (shell_str, shlen); + + if (!shp) + (void) define_variable (shell_str, shlen, comp->value, o_env, 0); + } + } +#elif defined(__EMX__) + { + static char shell_str[] = "SHELL"; + const int shlen = sizeof (shell_str) - 1; + struct variable *shell = lookup_variable (shell_str, shlen); + struct variable *replace = lookup_variable ("MAKESHELL", 9); + + /* if $MAKESHELL is defined in the environment assume o_env_override */ + if (replace && *replace->value && replace->origin == o_env) + replace->origin = o_env_override; + + /* if $MAKESHELL is not defined use $SHELL but only if the variable + 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; + } + + /* Some people do not like cmd to be used as the default + if $SHELL is not defined in the Makefile. + With -DNO_CMD_DEFAULT you can turn off this behaviour */ +# ifndef NO_CMD_DEFAULT + /* otherwise use $COMSPEC */ + if (!replace || !*replace->value) + replace = lookup_variable ("COMSPEC", 7); + + /* otherwise use $OS2_SHELL */ + if (!replace || !*replace->value) + replace = lookup_variable ("OS2_SHELL", 9); +# else +# warning NO_CMD_DEFAULT: GNU make will not use CMD.EXE as default shell +# endif + + if (replace && *replace->value) + /* overwrite $SHELL */ + (void) define_variable (shell_str, shlen, replace->value, + replace->origin, 0); + else + /* provide a definition if there is none */ + (void) define_variable (shell_str, shlen, default_shell, + o_default, 0); + } + +#endif + + /* This won't override any definition, but it will provide one if there + isn't one there. */ + v = define_variable_cname ("SHELL", default_shell, o_default, 0); +#ifdef __MSDOS__ + v->export = v_export; /* Export always SHELL. */ +#endif + + /* On MSDOS we do use SHELL from environment, since it isn't a standard + environment variable on MSDOS, so whoever sets it, does that on purpose. + On OS/2 we do not use SHELL from environment but we have already handled + that problem above. */ +#if !defined(__MSDOS__) && !defined(__EMX__) + /* Don't let SHELL come from the environment. */ + if (*v->value == '\0' || v->origin == o_env || v->origin == o_env_override) + { + free (v->value); + v->origin = o_file; + v->value = xstrdup (default_shell); + } +#endif + + /* Make sure MAKEFILES gets exported if it is set. */ + v = define_variable_cname ("MAKEFILES", "", o_default, 0); + v->export = v_ifset; + + /* Define the magic D and F variables in terms of + the automatic variables they are variations of. */ + +#if 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 ("export) + { + case v_export: + break; + + case v_noexport: + return 0; + + case v_ifset: + if (v->origin == o_default) + return 0; + break; + + case v_default: + if (v->origin == o_default || v->origin == o_automatic) + /* Only export default variables by explicit request. */ + return 0; + + /* The variable doesn't have a name that can be exported. */ + if (! v->exportable) + return 0; + + if (! export_all_variables + && v->origin != o_command + && v->origin != o_env && v->origin != o_env_override) + return 0; + break; + } + + return 1; +} + +/* Create a new environment for FILE's commands. + If FILE is nil, this is for the 'shell' function. + The child's MAKELEVEL variable is incremented. + If recursive is true then we're running a recursive make, else not. */ + +char ** +target_environment (struct file *file, int recursive) +{ + struct variable_set_list *set_list; + struct variable_set_list *s; + struct hash_table table; + struct variable **v_slot; + struct variable **v_end; + char **result_0; + char **result; + const char *invalid = NULL; + /* If we got no value from the environment then never add the default. */ + int added_SHELL = shell_var.value == 0; + int found_makelevel = 0; + int found_mflags = 0; + int found_makeflags = 0; + + /* If file is NULL we're creating the target environment for $(shell ...) + Remember this so we can just ignore recursion. */ + if (!file) + ++env_recursion; + + /* We need to update makeflags if (a) we're not recurive, (b) jobserver_auth + is enabled, and (c) we need to add invalidation. */ + if (!recursive && jobserver_auth) + invalid = jobserver_get_invalid_auth (); + + if (file) + set_list = file->variables; + else + set_list = current_variable_set_list; + + hash_init (&table, VARIABLE_BUCKETS, + variable_hash_1, variable_hash_2, variable_hash_cmp); + + /* Run through all the variable sets in the list, accumulating variables + in TABLE. We go from most specific to least, so the first variable we + encounter is the keeper. */ + for (s = set_list; s != 0; s = s->next) + { + struct variable_set *set = s->set; + int isglobal = set == &global_variable_set; + + 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 **evslot; + struct variable *v = *v_slot; + + evslot = (struct variable **) hash_find_slot (&table, v); + + if (HASH_VACANT (*evslot)) + { + /* If we're not global, or we are and should export, add it. */ + if (!isglobal || should_export (v)) + hash_insert_at (&table, v, evslot); + } + else if ((*evslot)->export == v_default) + /* We already have a variable but we don't know its status. */ + (*evslot)->export = v->export; + } + } + + result = result_0 = xmalloc ((table.ht_fill + 3) * sizeof (char *)); + + v_slot = (struct variable **) table.ht_vec; + v_end = v_slot + table.ht_size; + for ( ; v_slot < v_end; v_slot++) + if (! HASH_VACANT (*v_slot)) + { + struct variable *v = *v_slot; + char *value = v->value; + char *cp = NULL; + + /* This might be here because it was a target-specific variable that + we didn't know the status of when we added it. */ + if (! should_export (v)) + continue; + + /* 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) + value = cp = recursively_expand_for_file (v, file); + + /* If this is the SHELL variable remember we already added it. */ + if (!added_SHELL && streq (v->name, "SHELL")) + { + added_SHELL = 1; + goto setit; + } + + /* If this is MAKELEVEL, update it. */ + if (!found_makelevel && streq (v->name, MAKELEVEL_NAME)) + { + char val[INTSTR_LENGTH + 1]; + sprintf (val, "%u", makelevel + 1); + free (cp); + value = cp = xstrdup (val); + found_makelevel = 1; + goto setit; + } + + /* If we need to reset jobserver, check for MAKEFLAGS / MFLAGS. */ + if (invalid) + { + if (!found_makeflags && streq (v->name, MAKEFLAGS_NAME)) + { + char *mf; + char *vars; + found_makeflags = 1; + + if (!strstr (value, " --" JOBSERVER_AUTH_OPT "=")) + goto setit; + + /* The invalid option must come before variable overrides. */ + vars = strstr (value, " -- "); + if (!vars) + mf = xstrdup (concat (2, value, invalid)); + else + { + size_t lf = vars - value; + size_t li = strlen (invalid); + mf = xmalloc (strlen (value) + li + 1); + strcpy (mempcpy (mempcpy (mf, value, lf), invalid, li), + vars); + } + free (cp); + value = cp = mf; + if (found_mflags) + invalid = NULL; + goto setit; + } + + if (!found_mflags && streq (v->name, "MFLAGS")) + { + const char *mf; + found_mflags = 1; + + if (!strstr (value, " --" JOBSERVER_AUTH_OPT "=")) + goto setit; + + if (v->origin != o_env) + goto setit; + mf = concat (2, value, invalid); + free (cp); + value = cp = xstrdup (mf); + if (found_makeflags) + invalid = NULL; + goto setit; + } + } + +#ifdef WINDOWS32 + if (streq (v->name, "Path") || streq (v->name, "PATH")) + { + if (!cp) + cp = xstrdup (value); + value = convert_Path_to_windows32 (cp, ';'); + goto setit; + } +#endif + + setit: + *result++ = xstrdup (concat (3, v->name, "=", value)); + free (cp); + } + + if (!added_SHELL) + *result++ = xstrdup (concat (3, shell_var.name, "=", shell_var.value)); + + if (!found_makelevel) + { + char val[MAKELEVEL_LENGTH + 1 + INTSTR_LENGTH + 1]; + sprintf (val, "%s=%u", MAKELEVEL_NAME, makelevel + 1); + *result++ = xstrdup (val); + } + + *result = NULL; + + hash_free (&table, 0); + + if (!file) + --env_recursion; + + return result_0; +} + +static struct variable * +set_special_var (struct variable *var) +{ + if (streq (var->name, RECIPEPREFIX_NAME)) + { + /* The user is resetting the command introduction prefix. This has to + happen immediately, so that subsequent rules are interpreted + properly. */ + cmd_prefix = var->value[0]=='\0' ? RECIPEPREFIX_DEFAULT : var->value[0]; + } + else if (streq (var->name, MAKEFLAGS_NAME)) + decode_env_switches (STRING_SIZE_TUPLE(MAKEFLAGS_NAME)); + + 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. */ + +static char * +shell_result (const char *p) +{ + char *buf; + size_t 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 floc *flocp, const char *varname, + const char *value, enum variable_origin origin, + enum variable_flavor flavor, int target_var) +{ + const char *p; + char *alloc_value = NULL; + struct variable *v; + int append = 0; + int conditional = 0; + + /* Calculate the variable's new value in VALUE. */ + + switch (flavor) + { + 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 + target-specific variable. */ + p = alloc_value = allocated_variable_expand (value); + break; + case f_expand: + { + /* A POSIX "var :::= value" assignment. Expand the value, then it + becomes a recursive variable. After expansion convert all '$' + tokens to '$$' to resolve to '$' when recursively expanded. */ + char *t = allocated_variable_expand (value); + char *np = alloc_value = xmalloc (strlen (t) * 2 + 1); + p = t; + while (p[0] != '\0') + { + if (p[0] == '$') + *(np++) = '$'; + *(np++) = *(p++); + } + *np = '\0'; + p = alloc_value; + free (t); + 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. */ + v = lookup_variable (varname, strlen (varname)); + if (v) + goto done; + + conditional = 1; + flavor = f_recursive; + /* FALLTHROUGH */ + case f_recursive: + /* A recursive variable definition "var = value". + The value is used verbatim. */ + p = value; + break; + case f_append: + case f_append_value: + { + /* If we have += but we're in a target variable context, we want to + append only with other variables in the context of this target. */ + if (target_var) + { + append = 1; + v = lookup_variable_in_set (varname, strlen (varname), + current_variable_set_list->set); + + /* Don't append from the global set if a previous non-appending + target-specific variable definition exists. */ + if (v && !v->append) + append = 0; + } + else + v = lookup_variable (varname, strlen (varname)); + + if (v == 0) + { + /* There was no old value. + This becomes a normal recursive definition. */ + p = value; + flavor = f_recursive; + } + else + { + /* Paste the old and new values together in VALUE. */ + + size_t oldlen, vallen; + const char *val; + char *tp = NULL; + + val = value; + if (v->recursive) + /* The previous definition of the variable was recursive. + The new value is the unexpanded old and new values. */ + flavor = f_recursive; + else if (flavor != f_append_value) + /* The previous definition of the variable was simple. + The new value comes from the old value, which was expanded + when it was set; and from the expanded new value. Allocate + memory for the expansion as we may still need the rest of the + buffer if we're looking at a target-specific variable. */ + val = tp = allocated_variable_expand (val); + + /* If the new value is empty, nothing to do. */ + vallen = strlen (val); + if (!vallen) + { + alloc_value = tp; + goto done; + } + + oldlen = strlen (v->value); + p = alloc_value = xmalloc (oldlen + 1 + vallen + 1); + + if (oldlen) + { + memcpy (alloc_value, v->value, oldlen); + alloc_value[oldlen] = ' '; + ++oldlen; + } + + memcpy (&alloc_value[oldlen], val, vallen + 1); + + free (tp); + } + } + break; + case f_bogus: + default: + /* Should not be possible. */ + abort (); + } + +#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, + $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 + the Makefile override $SHELL from the environment. But first, we + look for the basename of the shell in the directory where SHELL= + points, and along the $PATH; if it is found in any of these places, + we define $SHELL to be the actual pathname of the shell. Thus, if + you have bash.exe installed as d:/unix/bash.exe, and d:/unix is on + your $PATH, then SHELL=/usr/local/bin/bash will have the effect of + defining SHELL to be "d:/unix/bash.exe". */ + if ((origin == o_file || origin == o_override) + && strcmp (varname, "SHELL") == 0) + { + PATH_VAR (shellpath); + extern char * __dosexec_find_on_path (const char *, char *[], char *); + + /* See if we can find "/bin/sh.exe", "/bin/sh.com", etc. */ + if (__dosexec_find_on_path (p, NULL, shellpath)) + { + char *tp; + + for (tp = shellpath; *tp; tp++) + if (*tp == '\\') + *tp = '/'; + + 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++) + if (*tp == '\\') + *tp = '/'; + + v = define_variable_loc (varname, strlen (varname), + shellpath, origin, + flavor == f_recursive, flocp); + } + else + v = lookup_variable (varname, strlen (varname)); + + free (path_string); + } + } + else +#endif /* __MSDOS__ */ +#ifdef WINDOWS32 + if ((origin == o_file || origin == o_override || origin == o_command) + && streq (varname, "SHELL")) + { + extern const char *default_shell; + + /* Call shell locator function. If it returns TRUE, then + set no_default_sh_exe to indicate sh was found and + set new value for SHELL variable. */ + + if (find_and_set_default_shell (p)) + { + v = define_variable_in_set (varname, strlen (varname), default_shell, + origin, flavor == f_recursive, + (target_var + ? current_variable_set_list->set + : NULL), + flocp); + no_default_sh_exe = 0; + } + else + { + char *tp = alloc_value; + + alloc_value = allocated_variable_expand (p); + + if (find_and_set_default_shell (alloc_value)) + { + v = define_variable_in_set (varname, strlen (varname), p, + origin, flavor == f_recursive, + (target_var + ? current_variable_set_list->set + : NULL), + flocp); + no_default_sh_exe = 0; + } + else + v = lookup_variable (varname, strlen (varname)); + + free (tp); + } + } + else + v = NULL; + + /* If not $SHELL, or if $SHELL points to a program we didn't find, + just process this variable "as usual". */ + if (!v) +#endif + + /* If we are defining variables inside an $(eval ...), we might have a + different variable context pushed, not the global context (maybe we're + inside a $(call ...) or something. Since this function is only ever + invoked in places where we want to define globally visible variables, + make sure we define this variable in the global set. */ + + v = define_variable_in_set (varname, strlen (varname), p, origin, + flavor == f_recursive || flavor == f_expand, + (target_var + ? current_variable_set_list->set : NULL), + flocp); + v->append = append; + v->conditional = conditional; + + done: + free (alloc_value); + return v->special ? set_special_var (v) : v; +} + +/* Parse P (a null-terminated string) as a variable definition. + + If it is not a variable definition, return NULL and the contents of *VAR + are undefined, except NAME points to the first non-space character or EOS. + + If it is a variable definition, return a pointer to the char after the + 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 *str, struct variable *var) +{ + const char *p = str; + const char *end = NULL; + + NEXT_TOKEN (p); + var->name = (char *)p; + var->length = 0; + + /* Walk through STR until we find a valid assignment operator. Each time + through this loop P points to the next character to consider. */ + while (1) + { + int c = *p++; + + /* If we find a comment or EOS, it's not a variable definition. */ + if (STOP_SET (c, MAP_COMMENT|MAP_NUL)) + return NULL; + + if (ISBLANK (c)) + { + /* Variable names can't contain spaces so if this is the second set + of spaces we know it's not a variable assignment. */ + if (end) + return NULL; + end = p - 1; + NEXT_TOKEN (p); + continue; + } + + /* If we found = we're done! */ + if (c == '=') + { + if (!end) + end = p - 1; + var->flavor = f_recursive; + break; + } + + if (c == ':') + { + if (!end) + end = p - 1; + + /* We need to distinguish :=, ::=, and :::=, and : outside of an + assignment (which means this is not a variable definition). */ + c = *p++; + if (c == '=') + { + var->flavor = f_simple; + break; + } + if (c == ':') + { + c = *p++; + if (c == '=') + { + var->flavor = f_simple; + break; + } + if (c == ':' && *p++ == '=') + { + var->flavor = f_expand; + break; + } + } + return NULL; + } + + /* See if it's one of the other two-byte operators. */ + if (*p == '=') + { + switch (c) + { + case '+': + var->flavor = f_append; + break; + case '?': + var->flavor = f_conditional; + break; + case '!': + var->flavor = f_shell; + break; + default: + goto other; + } + + if (!end) + end = p - 1; + ++p; + break; + } + + other: + /* We found a char which is not part of an assignment operator. + If we've seen whitespace, then we know this is not a variable + assignment since variable names cannot contain whitespace. */ + if (end) + return NULL; + + if (c == '$') + { + /* Skip any variable reference, to ensure we don't treat chars + inside the reference as assignment operators. */ + char closeparen; + unsigned int count; + + c = *p++; + switch (c) + { + case '(': + closeparen = ')'; + break; + case '{': + closeparen = '}'; + break; + case '\0': + return NULL; + default: + /* '$$' or '$X': skip it. */ + continue; + } + + /* P now points past the opening paren or brace. Count parens or + braces until we find the closing paren/brace. */ + for (count = 1; *p != '\0'; ++p) + { + if (*p == closeparen && --count == 0) + { + ++p; + break; + } + if (*p == c) + ++count; + } + } + } + + /* We found a valid variable assignment: END points to the char after the + end of the variable name and P points to the char after the =. */ + var->length = (unsigned int) (end - 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 + variable' is returned. If LINE is not a variable definition, NULL is + returned. */ + +struct variable * +assign_variable_definition (struct variable *v, const char *line) +{ + char *name; + + if (!parse_variable_definition (line, v)) + return NULL; + + /* Expand the name, so "$(foo)bar = baz" works. */ + 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') + O (fatal, &v->fileinfo, _("empty variable name")); + + return v; +} + +/* Try to interpret LINE (a null-terminated string) as a variable definition. + + ORIGIN may be o_file, o_override, o_env, o_env_override, + or o_command specifying that the variable definition comes + from a makefile, an override directive, the environment with + or without the -e switch, or the command line. + + See the comments for assign_variable_definition(). + + If LINE was recognized as a variable definition, a pointer to its 'struct + variable' is returned. If LINE is not a variable definition, NULL is + returned. */ + +struct variable * +try_variable_definition (const floc *flocp, const char *line, + enum variable_origin origin, int target_var) +{ + struct variable v; + struct variable *vp; + + if (flocp != 0) + v.fileinfo = *flocp; + else + v.fileinfo.filenm = 0; + + if (!assign_variable_definition (&v, line)) + return 0; + + vp = do_variable_definition (flocp, v.name, v.value, + origin, v.flavor, target_var); + + free (v.name); + + return vp; +} + +/* Print information for variable V, prefixing it with PREFIX. */ + +static void +print_variable (const void *item, void *arg) +{ + const struct variable *v = item; + const char *prefix = arg; + const char *origin; + + switch (v->origin) + { + case o_automatic: + origin = _("automatic"); + break; + case o_default: + origin = _("default"); + break; + case o_env: + origin = _("environment"); + break; + case o_file: + origin = _("makefile"); + break; + case o_env_override: + origin = _("environment under -e"); + break; + case o_command: + origin = _("command line"); + break; + case o_override: + origin = _("'override' directive"); + break; + case o_invalid: + abort (); + } + fputs ("# ", stdout); + fputs (origin, stdout); + if (v->private_var) + fputs (" private", stdout); + if (v->fileinfo.filenm) + printf (_(" (from '%s', line %lu)"), + v->fileinfo.filenm, v->fileinfo.lineno + v->fileinfo.offset); + putchar ('\n'); + fputs (prefix, stdout); + + /* Is this a 'define'? */ + if (v->recursive && strchr (v->value, '\n') != 0) + printf ("define %s\n%s\nendef\n", v->name, v->value); + else + { + char *p; + + printf ("%s %s= ", v->name, v->recursive ? v->append ? "+" : "" : ":"); + + /* 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); + else if (v->recursive) + fputs (v->value, stdout); + else + /* 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). */ + +static void +print_variable_set (struct variable_set *set, const char *prefix, int pauto) +{ + hash_map_arg (&set->table, (pauto ? print_auto_variable : print_variable), + (void *)prefix); + + fputs (_("# variable set hash-table stats:\n"), stdout); + fputs ("# ", stdout); + hash_print_stats (&set->table, stdout); + putc ('\n', stdout); +} + +/* Print the data base of variables. */ + +void +print_variable_data_base (void) +{ + puts (_("\n# Variables\n")); + + print_variable_set (&global_variable_set, "", 0); + + puts (_("\n# Pattern-specific Variable Values")); + + { + struct pattern_var *p; + unsigned int rules = 0; + + for (p = pattern_vars; p != 0; p = p->next) + { + ++rules; + printf ("\n%s :\n", p->target); + print_variable (&p->variable, (void *)"# "); + } + + if (rules == 0) + puts (_("\n# No pattern-specific variable values.")); + else + printf (_("\n# %u pattern-specific variable values"), rules); + } +} + + +/* Print all the local variables of FILE. */ + +void +print_file_variables (const struct file *file) +{ + if (file->variables != 0) + print_variable_set (file->variables->set, "# ", 1); +} + +void +print_target_variables (const struct file *file) +{ + if (file->variables != 0) + { + size_t l = strlen (file->name); + char *t = alloca (l + 3); + + memcpy (t, file->name, l); + t[l] = ':'; + t[l+1] = ' '; + t[l+2] = '\0'; + + hash_map_arg (&file->variables->set->table, print_noauto_variable, t); + } +} + +#ifdef WINDOWS32 +void +sync_Path_environment () +{ + static char *environ_path = NULL; + char *oldpath = environ_path; + char *path = allocated_variable_expand ("PATH=$(PATH)"); + + if (!path) + return; + + /* Convert PATH into something WINDOWS32 world can grok. */ + convert_Path_to_windows32 (path, ';'); + + environ_path = path; + putenv (environ_path); + free (oldpath); +} +#endif diff --git a/local/recipes/dev/gnu-make/source/src/variable.h b/local/recipes/dev/gnu-make/source/src/variable.h new file mode 100644 index 0000000000..d377a47f52 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/variable.h @@ -0,0 +1,249 @@ +/* Definitions for using variables in GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "hash.h" + +struct file; + +/* Codes in a variable definition saying where the definition came from. + 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. */ + }; + +enum variable_flavor + { + f_bogus, /* Bogus (error) */ + f_simple, /* Simple definition (:= or ::=) */ + f_recursive, /* Recursive definition (=) */ + f_expand, /* POSIX :::= assignment */ + f_append, /* Appending definition (+=) */ + f_conditional, /* Conditional definition (?=) */ + f_shell, /* Shell assignment (!=) */ + f_append_value /* Append unexpanded value */ + }; + +enum variable_export +{ + v_default = 0, /* 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. */ +}; + +/* Structure that represents one variable definition. + Each bucket of the hash table is a chain of these, + chained through 'next'. */ + +#define EXP_COUNT_BITS 15 /* This gets all the bitfields into 32 bits */ +#define EXP_COUNT_MAX ((1<1, allow this many self-referential + expansions. */ + enum variable_flavor + flavor ENUM_BITFIELD (3); /* Variable flavor. */ + enum variable_origin + origin ENUM_BITFIELD (3); /* Variable origin. */ + enum variable_export + export ENUM_BITFIELD (2); /* Export control. */ + }; + +/* Structure that represents a variable set. */ + +struct variable_set + { + 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. */ + int next_is_parent; /* True if next is a parent target. */ + }; + +/* Structure used for pattern-specific variables. */ + +struct pattern_var + { + struct pattern_var *next; + const char *suffix; + const char *target; + size_t len; + struct variable variable; + }; + +extern unsigned long long env_recursion; +extern char *variable_buffer; +extern struct variable_set_list *current_variable_set_list; +extern struct variable *default_goal_var; +extern struct variable shell_var; + +/* expand.c */ +#ifndef SIZE_MAX +# define SIZE_MAX ((size_t)~(size_t)0) +#endif + +char *variable_buffer_output (char *ptr, const char *string, size_t length); +char *variable_expand (const char *line); +char *variable_expand_for_file (const char *line, struct file *file); +char *allocated_variable_expand_for_file (const char *line, struct file *file); +#define allocated_variable_expand(line) \ + allocated_variable_expand_for_file (line, (struct file *) 0) +char *expand_argument (const char *str, const char *end); +char *variable_expand_string (char *line, const char *string, size_t length); +char *initialize_variable_output (void); +void install_variable_buffer (char **bufp, size_t *lenp); +void restore_variable_buffer (char *buf, size_t len); + +/* function.c */ +int handle_function (char **op, const char **stringp); +int pattern_matches (const char *pattern, const char *percent, const char *str); +char *subst_expand (char *o, const char *text, const char *subst, + const char *replace, size_t slen, size_t rlen, + int by_word); +char *patsubst_expand_pat (char *o, const char *text, const char *pattern, + const char *replace, const char *pattern_percent, + const char *replace_percent); +char *patsubst_expand (char *o, const char *text, char *pattern, char *replace); +char *func_shell_base (char *o, char **argv, int trim_newlines); +void shell_completed (int exit_code, int exit_sig); + +/* expand.c */ +char *recursively_expand_for_file (struct variable *v, struct file *file); +#define recursively_expand(v) recursively_expand_for_file (v, NULL) + +/* variable.c */ +struct variable_set_list *create_new_variable_set (void); +void free_variable_set (struct variable_set_list *); +struct variable_set_list *push_new_variable_scope (void); +void pop_variable_scope (void); +void define_automatic_variables (void); +void initialize_file_variables (struct file *file, int reading); +void print_file_variables (const struct file *file); +void print_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 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, + struct variable *v); +struct variable *assign_variable_definition (struct variable *v, const char *line); +struct variable *try_variable_definition (const floc *flocp, const 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 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, size_t length); +struct variable *lookup_variable_in_set (const char *name, size_t length, + const struct variable_set *set); + +struct variable *define_variable_in_set (const char *name, size_t length, + const char *value, + enum variable_origin origin, + int recursive, + struct variable_set *set, + const floc *flocp); + +/* Define a variable in the current variable set. */ + +#define define_variable(n,l,v,o,r) \ + define_variable_in_set((n),(l),(v),(o),(r),\ + current_variable_set_list->set,NILF) + +/* Define a variable with a constant name in the current variable set. */ + +#define define_variable_cname(n,v,o,r) \ + define_variable_in_set((n),(sizeof (n) - 1),(v),(o),(r),\ + current_variable_set_list->set,NILF) + +/* Define a variable with a location in the current variable set. */ + +#define define_variable_loc(n,l,v,o,r,f) \ + define_variable_in_set((n),(l),(v),(o),(r),\ + current_variable_set_list->set,(f)) + +/* Define a variable with a location in the global variable set. */ + +#define define_variable_global(n,l,v,o,r,f) \ + define_variable_in_set((n),(l),(v),(o),(r),NULL,(f)) + +/* Define a variable in FILE's variable set. */ + +#define define_variable_for_file(n,l,v,o,r,f) \ + define_variable_in_set((n),(l),(v),(o),(r),(f)->variables->set,NILF) + +void undefine_variable_in_set (const char *name, size_t length, + enum variable_origin origin, + struct variable_set *set); + +/* Remove variable from the current variable set. */ + +#define undefine_variable_global(n,l,o) \ + undefine_variable_in_set((n),(l),(o),NULL) + +/* Warn that NAME is an undefined variable. */ + +#define warn_undefined(n,l) do{\ + if (warn_undefined_variables_flag) \ + error (reading_file, (l), \ + _("warning: undefined variable '%.*s'"), \ + (int)(l), (n)); \ + }while(0) + +char **target_environment (struct file *file, int recursive); + +struct pattern_var *create_pattern_var (const char *target, + const char *suffix); + +extern int export_all_variables; + +#define MAKELEVEL_NAME "MAKELEVEL" +#define MAKELEVEL_LENGTH (CSTRLEN (MAKELEVEL_NAME)) diff --git a/local/recipes/dev/gnu-make/source/src/version.c b/local/recipes/dev/gnu-make/source/src/version.c new file mode 100644 index 0000000000..b96e0303dc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/version.c @@ -0,0 +1,33 @@ +/* Record version and build host architecture for GNU make. +Copyright (C) 1988-2022 Free Software 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 . */ + +/* We use 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 makeint.h was found in $srcdir). */ +#include + +#ifndef MAKE_HOST +# define MAKE_HOST "unknown" +#endif + +const char *version_string = PACKAGE_VERSION; +const char *make_host = MAKE_HOST; + +/* + Local variables: + version-control: never + End: + */ diff --git a/local/recipes/dev/gnu-make/source/src/vms_exit.c b/local/recipes/dev/gnu-make/source/src/vms_exit.c new file mode 100644 index 0000000000..ebcebcdeaf --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vms_exit.c @@ -0,0 +1,95 @@ +/* vms_exit.c + * + * Wrapper for the VMS exit() command to translate UNIX codes to be + * encoded for POSIX, but also have VMS severity levels. + * The posix_exit() variant only sets a severity level for status code 1. + * + * Author: John E. Malmberg + */ + +/* Copyright (C) 2014-2022 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 +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 . */ + + +/* Per copyright assignment agreement with the Free Software Foundation + this software may be available under under other license agreements + and copyrights. */ + +#include + +#include +void +decc$exit (int status); +#ifndef C_FACILITY_NO +# define C_FACILITY_NO 0x350000 +#endif + +/* Lowest legal non-success VMS exit code is 8 */ +/* GNU make only defines codes 0, 1, 2 */ +/* So assume any exit code > 8 is a VMS exit code */ + +#ifndef MAX_EXPECTED_EXIT_CODE +# define MAX_EXPECTED_EXIT_CODE 7 +#endif + +/* Build a Posix Exit with VMS severity */ +void +vms_exit (int status) +{ + int vms_status; + /* Fake the __posix_exit with severity added */ + /* Undocumented correct way to do this. */ + vms_status = 0; + + /* The default DECC definition is not compatible with doing a POSIX_EXIT */ + /* So fix it. */ + if (status == EXIT_FAILURE) + status = MAKE_FAILURE; + + /* Trivial case exit success */ + if (status == 0) + decc$exit (STS$K_SUCCESS); + + /* Is this a VMS status then just take it */ + if (status > MAX_EXPECTED_EXIT_CODE) + { + /* Make sure that the message inhibit is set since message has */ + /* already been displayed. */ + vms_status = status | STS$M_INHIB_MSG; + decc$exit (vms_status); + } + + /* Unix status codes are limited to 1 byte, so anything larger */ + /* is a probably a VMS exit code and needs to be passed through */ + /* A lower value can be set for a macro. */ + /* Status 0 is always passed through as it is converted to SS$_NORMAL */ + /* Always set the message inhibit bit */ + vms_status = C_FACILITY_NO | 0xA000 | STS$M_INHIB_MSG; + vms_status |= (status << 3); + + /* STS$K_ERROR is for status that stops makefile that a simple */ + /* Rerun of the makefile will not fix. */ + + if (status == MAKE_FAILURE) + vms_status |= STS$K_ERROR; + else if (status == MAKE_TROUBLE) + { + /* Make trouble is for when make was told to do nothing and */ + /* found that a target was not up to date. Since a second */ + /* of make will produce the same condition, this is of */ + /* Error severity */ + vms_status |= STS$K_ERROR; + } + decc$exit (vms_status); +} diff --git a/local/recipes/dev/gnu-make/source/src/vms_export_symbol.c b/local/recipes/dev/gnu-make/source/src/vms_export_symbol.c new file mode 100644 index 0000000000..a1a7c16b40 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vms_export_symbol.c @@ -0,0 +1,527 @@ +/* File: vms_export_symbol.c + * + * Some programs need special environment variables deported as DCL + * DCL symbols. + */ + +/* Copyright (C) 2014-2022 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 +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 . */ + + +/* Per copyright assignment agreement with the Free Software Foundation + this software may be available under under other license agreements + and copyrights. */ + + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#pragma member_alignment save +#pragma nomember_alignment longword +struct item_list_3 +{ + unsigned short len; + unsigned short code; + void * bufadr; + unsigned short * retlen; +}; + + +#pragma member_alignment + +int +LIB$GET_SYMBOL (const struct dsc$descriptor_s * symbol, + struct dsc$descriptor_s * value, + unsigned short * value_len, + const unsigned long * table); + +int +LIB$SET_SYMBOL (const struct dsc$descriptor_s * symbol, + const struct dsc$descriptor_s * value, + const unsigned long * table); + +int +LIB$DELETE_SYMBOL (const struct dsc$descriptor_s * symbol, + const unsigned long * table); + +#define MAX_DCL_SYMBOL_LEN (255) +#if __CRTL_VER >= 70302000 && !defined(__VAX) +# define MAX_DCL_SYMBOL_VALUE (8192) +#else +# define MAX_DCL_SYMBOL_VALUE (1024) +#endif + +struct dcl_symbol +{ + struct dcl_symbol * link; + struct dsc$descriptor_s name_desc; + struct dsc$descriptor_s value_desc; + char name[MAX_DCL_SYMBOL_LEN + 1]; /* + 1 byte for null terminator */ + char value[MAX_DCL_SYMBOL_VALUE +1]; /* + 1 byte for null terminator */ + char pad[3]; /* Pad structure to longword alignment */ +}; + +static struct dcl_symbol * vms_dcl_symbol_head = NULL; + +/* Restore symbol state to original condition. */ +static unsigned long +clear_dcl_symbol (struct dcl_symbol * symbol) +{ + + const unsigned long symtbl = LIB$K_CLI_LOCAL_SYM; + int status; + + if (symbol->value_desc.dsc$w_length == (unsigned short)-1) + status = LIB$DELETE_SYMBOL (&symbol->name_desc, &symtbl); + else + status = LIB$SET_SYMBOL (&symbol->name_desc, + &symbol->value_desc, &symtbl); + return status; +} + + +/* Restore all exported symbols to their original conditions */ +static void +clear_exported_symbols (void) +{ + + struct dcl_symbol * symbol; + + symbol = vms_dcl_symbol_head; + + /* Walk the list of symbols. This is done during exit, + * so no need to free memory. + */ + while (symbol != NULL) + { + clear_dcl_symbol (symbol); + symbol = symbol->link; + } + +} + + +/* Restore the symbol back to the original value + * symbol name is either a plain name or of the form "symbol=name" where + * the name portion is ignored. + */ +void +vms_restore_symbol (const char * string) +{ + + struct dcl_symbol * symbol; + char name[MAX_DCL_SYMBOL_LEN + 1]; + int status; + char * value; + int name_len; + + symbol = vms_dcl_symbol_head; + + /* Isolate the name from the value */ + value = strchr (string, '='); + if (value != NULL) + { + /* Copy the name from the string */ + name_len = (value - string); + } + else + name_len = strlen (string); + + if (name_len > MAX_DCL_SYMBOL_LEN) + name_len = MAX_DCL_SYMBOL_LEN; + + strncpy (name, string, name_len); + name[name_len] = 0; + + /* Walk the list of symbols. The saved symbol is not freed + * symbols are likely to be overwritten multiple times, so this + * saves time in saving them each time. + */ + while (symbol != NULL) + { + int result; + result = strcmp (symbol->name, name); + if (result == 0) + { + clear_dcl_symbol (symbol); + break; + } + symbol = symbol->link; + } +} + +int +vms_export_dcl_symbol (const char * name, const char * value) +{ + + struct dcl_symbol * symbol; + struct dcl_symbol * next; + struct dcl_symbol * link; + int found; + const unsigned long symtbl = LIB$K_CLI_LOCAL_SYM; + struct dsc$descriptor_s value_desc; + int string_len; + int status; + char new_value[MAX_DCL_SYMBOL_VALUE + 1]; + char * dollarp; + + next = vms_dcl_symbol_head; + link = vms_dcl_symbol_head; + + /* Is symbol already exported? */ + found = 0; + while ((found == 0) && (link != NULL)) + { + int x; + found = !strncasecmp (link->name, name, MAX_DCL_SYMBOL_LEN); + if (found) + symbol = link; + next = link; + link = link->link; + } + + /* New symbol, set it up */ + if (found == 0) + { + symbol = malloc (sizeof (struct dcl_symbol)); + if (symbol == NULL) + return SS$_INSFMEM; + + /* Construct the symbol descriptor, used for both saving + * the old symbol and creating the new symbol. + */ + symbol->name_desc.dsc$w_length = strlen (name); + if (symbol->name_desc.dsc$w_length > MAX_DCL_SYMBOL_LEN) + symbol->name_desc.dsc$w_length = MAX_DCL_SYMBOL_LEN; + + strncpy (symbol->name, name, symbol->name_desc.dsc$w_length); + symbol->name[symbol->name_desc.dsc$w_length] = 0; + symbol->name_desc.dsc$a_pointer = symbol->name; + symbol->name_desc.dsc$b_dtype = DSC$K_DTYPE_T; + symbol->name_desc.dsc$b_class = DSC$K_CLASS_S; + + /* construct the value descriptor, used only for saving + * the old symbol. + */ + symbol->value_desc.dsc$a_pointer = symbol->value; + symbol->value_desc.dsc$w_length = MAX_DCL_SYMBOL_VALUE; + symbol->value_desc.dsc$b_dtype = DSC$K_DTYPE_T; + symbol->value_desc.dsc$b_class = DSC$K_CLASS_S; + } + + if (found == 0) + { + unsigned long old_symtbl; + unsigned short value_len; + + /* Look up the symbol */ + status = LIB$GET_SYMBOL (&symbol->name_desc, &symbol->value_desc, + &value_len, &old_symtbl); + if (!$VMS_STATUS_SUCCESS (status)) + value_len = (unsigned short)-1; + else if (old_symtbl != symtbl) + value_len = (unsigned short)-1; + + symbol->value_desc.dsc$w_length = value_len; + + /* Store it away */ + if (value_len != (unsigned short) -1) + symbol->value[value_len] = 0; + + /* Make sure atexit scheduled */ + if (vms_dcl_symbol_head == NULL) + { + vms_dcl_symbol_head = symbol; + atexit (clear_exported_symbols); + } + else + { + /* Extend the chain */ + next->link = symbol; + } + } + + /* Create or replace a symbol */ + value_desc.dsc$a_pointer = new_value; + string_len = strlen (value); + if (string_len > MAX_DCL_SYMBOL_VALUE) + string_len = MAX_DCL_SYMBOL_VALUE; + + strncpy (new_value, value, string_len); + new_value[string_len] = 0; + + /* Special handling for GNU Make. GNU Make doubles the dollar signs + * in environment variables read in from getenv(). Make exports symbols + * with the dollar signs already doubled. So all $$ must be converted + * back to $. + * If the first $ is not doubled, then do not convert at all. + */ + dollarp = strchr (new_value, '$'); + while (dollarp && dollarp[1] == '$') + { + int left; + dollarp++; + left = string_len - (dollarp - new_value - 1); + string_len--; + if (left > 0) + { + memmove (dollarp, &dollarp[1], left); + dollarp = strchr (&dollarp[1], '$'); + } + else + { + /* Ended with $$, simple case */ + dollarp[1] = 0; + break; + } + } + value_desc.dsc$w_length = string_len; + value_desc.dsc$b_dtype = DSC$K_DTYPE_T; + value_desc.dsc$b_class = DSC$K_CLASS_S; + status = LIB$SET_SYMBOL (&symbol->name_desc, &value_desc, &symtbl); + return status; +} + +/* export a DCL symbol using a string in the same syntax as putenv */ +int +vms_putenv_symbol (const char * string) +{ + + char name[MAX_DCL_SYMBOL_LEN + 1]; + int status; + char * value; + int name_len; + + /* Isolate the name from the value */ + value = strchr (string, '='); + if (value == NULL) + { + errno = EINVAL; + return -1; + } + + /* Copy the name from the string */ + name_len = (value - string); + if (name_len > MAX_DCL_SYMBOL_LEN) + name_len = MAX_DCL_SYMBOL_LEN; + + strncpy (name, string, name_len); + name[name_len] = 0; + + /* Skip past the "=" */ + value++; + + /* Export the symbol */ + status = vms_export_dcl_symbol (name, value); + + /* Convert the error to Unix format */ + if (!$VMS_STATUS_SUCCESS (status)) + { + errno = EVMSERR; + vaxc$errno = status; + return -1; + } + return 0; +} + +#if __CRTL_VER >= 70301000 +# define transpath_parm transpath +#else +static char transpath[MAX_DCL_SYMBOL_VALUE]; +#endif + +/* Helper callback routine for converting Unix paths to VMS */ +static int +to_vms_action (char * vms_spec, int flag, char * transpath_parm) +{ + strncpy (transpath, vms_spec, MAX_DCL_SYMBOL_VALUE - 1); + transpath[MAX_DCL_SYMBOL_VALUE - 1] = 0; + return 0; +} + +#ifdef __DECC +# pragma message save + /* Undocumented extra parameter use triggers a ptrmismatch warning */ +# pragma message disable ptrmismatch +#endif + +/* Create a foreign command only visible to children */ +int +create_foreign_command (const char * command, const char * image) +{ + char vms_command[MAX_DCL_SYMBOL_VALUE + 1]; + int status; + + vms_command[0] = '$'; + vms_command[1] = 0; + if (image[0] == '/') + { +#if __CRTL_VER >= 70301000 + /* Current decc$to_vms is reentrant */ + decc$to_vms (image, to_vms_action, 0, 1, &vms_command[1]); +#else + /* Older decc$to_vms is not reentrant */ + decc$to_vms (image, to_vms_action, 0, 1); + strncpy (&vms_command[1], transpath, MAX_DCL_SYMBOL_VALUE - 1); + vms_command[MAX_DCL_SYMBOL_VALUE] = 0; +#endif + } + else + { + strncpy (&vms_command[1], image, MAX_DCL_SYMBOL_VALUE - 1); + vms_command[MAX_DCL_SYMBOL_VALUE] = 0; + } + status = vms_export_dcl_symbol (command, vms_command); + + return status; +} +#ifdef __DECC +# pragma message restore +#endif + + +#ifdef DEBUG + +int +main(int argc, char ** argv, char **env) +{ + + char value[MAX_DCL_SYMBOL_VALUE +1]; + int status = 0; + int putenv_status; + int vms_status; + struct dsc$descriptor_s name_desc; + struct dsc$descriptor_s value_desc; + const unsigned long symtbl = LIB$K_CLI_LOCAL_SYM; + unsigned short value_len; + unsigned long old_symtbl; + int result; + const char * vms_command = "vms_export_symbol"; + const char * vms_image = "test_image.exe"; + const char * vms_symbol1 = "test_symbol1"; + const char * value1 = "test_value1"; + const char * vms_symbol2 = "test_symbol2"; + const char * putenv_string = "test_symbol2=value2"; + const char * value2 = "value2"; + + /* Test creating a foreign command */ + vms_status = create_foreign_command (vms_command, vms_image); + if (!$VMS_STATUS_SUCCESS (vms_status)) + { + printf("Create foreign command failed: %d\n", vms_status); + status = 1; + } + + name_desc.dsc$a_pointer = (char *)vms_command; + name_desc.dsc$w_length = strlen (vms_command); + name_desc.dsc$b_dtype = DSC$K_DTYPE_T; + name_desc.dsc$b_class = DSC$K_CLASS_S; + + value_desc.dsc$a_pointer = value; + value_desc.dsc$w_length = MAX_DCL_SYMBOL_VALUE; + value_desc.dsc$b_dtype = DSC$K_DTYPE_T; + value_desc.dsc$b_class = DSC$K_CLASS_S; + + vms_status = LIB$GET_SYMBOL (&name_desc, &value_desc, + &value_len, &old_symtbl); + if (!$VMS_STATUS_SUCCESS (vms_status)) + { + printf ("lib$get_symbol for command failed: %d\n", vms_status); + status = 1; + } + + value[value_len] = 0; + result = strncasecmp (&value[1], vms_image, value_len - 1); + if (result != 0) + { + printf ("create_foreign_command failed! expected '%s', got '%s'\n", + vms_image, &value[1]); + status = 1; + } + + /* Test exporting a symbol */ + vms_status = vms_export_dcl_symbol (vms_symbol1, value1); + if (!$VMS_STATUS_SUCCESS (vms_status)) + { + printf ("vms_export_dcl_symbol for command failed: %d\n", vms_status); + status = 1; + } + + name_desc.dsc$a_pointer = (char *)vms_symbol1; + name_desc.dsc$w_length = strlen (vms_symbol1); + vms_status = LIB$GET_SYMBOL(&name_desc, &value_desc, + &value_len, &old_symtbl); + if (!$VMS_STATUS_SUCCESS(vms_status)) + { + printf ("lib$get_symbol for command failed: %d\n", vms_status); + status = 1; + } + + value[value_len] = 0; + result = strncmp (value, value1, value_len); + if (result != 0) + { + printf ("vms_export_dcl_symbol failed! expected '%s', got '%s'\n", + value1, value); + status = 1; + } + + /* Test putenv for DCL symbols */ + putenv_status = vms_putenv_symbol (putenv_string); + if (putenv_status != 0) + { + perror ("vms_putenv_symbol"); + status = 1; + } + + name_desc.dsc$a_pointer = (char *)vms_symbol2; + name_desc.dsc$w_length = strlen(vms_symbol2); + vms_status = LIB$GET_SYMBOL (&name_desc, &value_desc, + &value_len, &old_symtbl); + if (!$VMS_STATUS_SUCCESS (vms_status)) + { + printf ("lib$get_symbol for command failed: %d\n", vms_status); + status = 1; + } + + value[value_len] = 0; + result = strncmp (value, value2, value_len); + if (result != 0) + { + printf ("vms_putenv_symbol failed! expected '%s', got '%s'\n", + value2, value); + status = 1; + } + + vms_restore_symbol (putenv_string); + vms_status = LIB$GET_SYMBOL (&name_desc, &value_desc, + &value_len, &old_symtbl); + if ($VMS_STATUS_SUCCESS (vms_status)) + { + printf ("lib$get_symbol for command succeeded, should have failed\n"); + status = 1; + } + + exit (status); +} + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/vms_progname.c b/local/recipes/dev/gnu-make/source/src/vms_progname.c new file mode 100644 index 0000000000..1d6edbdf5c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vms_progname.c @@ -0,0 +1,463 @@ +/* File: vms_progname.c + * + * This module provides a fixup of the program name. + * + * This module is designed to be a plug in replacement for the + * progname module used by many GNU utilities with a few enhancements + * needed for GNU Make. + * + * It does not support the HAVE_DECL_PROGRAM_INVOCATION_* macros at this + * time. + * + * Make sure that the program_name string is set as close as possible to + * what the original command was given. + * + * When run from DCL, The argv[0] element is initialized with an absolute + * path name. The decc$ feature logical names can control the format + * of this pathname. In some cases it causes the UNIX format name to be + * formatted incorrectly. + * + * This DCL provided name is usually incompatible with what is expected to + * be provided by Unix programs and needs to be replaced. + * + * When run from an exec() call, the argv[0] element is initialized by the + * program. This name is compatible with what is expected to be provided + * by Unix programs and should be passed through unchanged. + * + * The DCL provided name can be detected because it always contains the + * device name. + * + * DCL examples: + * devname:[dir]program.exe;1 Normal VMS - remove path and .EXE;n + * devname:[dir]facility$program.exe;1 Facility also needs removal. + * /devname/dir/program.exe + * /DISK$VOLUME/dir/program.exe.1 Bug version should not be there. + * /DISK$VOLUME/dir/program. Bug Period should not be there. + * + */ + +/* Copyright (C) 2014-2022 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 +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 . */ + + +/* Per copyright assignment agreement with the Free Software Foundation + this software may be available under under other license agreements + and copyrights. */ + + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#ifdef USE_PROGNAME_H +# include "progname.h" +#endif + +#pragma member_alignment save +#pragma nomember_alignment longword +struct item_list_3 +{ + unsigned short len; + unsigned short code; + void * bufadr; + unsigned short * retlen; +}; + +struct filescan_itmlst_2 +{ + unsigned short length; + unsigned short itmcode; + char * component; +}; + +#pragma member_alignment + +int +SYS$GETDVIW (unsigned long efn, + unsigned short chan, + const struct dsc$descriptor_s * devnam, + const struct item_list_3 * itmlst, + void * iosb, + void (* astadr)(unsigned long), + unsigned long astprm, + void * nullarg); + +int +SYS$FILESCAN (const struct dsc$descriptor_s * srcstr, + struct filescan_itmlst_2 * valuelist, + unsigned long * fldflags, + struct dsc$descriptor_s *auxout, + unsigned short * retlen); + +/* String containing name the program is called with. + To be initialized by main(). */ + +const char *program_name = NULL; + +static int internal_need_vms_symbol = 0; + +static char vms_new_nam[256]; + +int +need_vms_symbol (void) +{ + return internal_need_vms_symbol; +} + + +void +set_program_name (const char *argv0) +{ + int status; + int result; + +#ifdef DEBUG + printf ("original argv0 = %s\n", argv0); +#endif + + /* Posix requires non-NULL argv[0] */ + if (argv0 == NULL) + { + fputs ("A NULL argv[0] was passed through an exec system call.\n", + stderr); + abort (); + } + + program_name = argv0; + result = 0; + internal_need_vms_symbol = 0; + + /* If the path name starts with a /, then it is an absolute path */ + /* that may have been generated by the CRTL instead of the command name */ + /* If it is the device name between the slashes, then this was likely */ + /* from the run command and needs to be fixed up. */ + /* If the DECC$POSIX_COMPLIANT_PATHNAMES is set to 2, then it is the */ + /* DISK$VOLUME that will be present, and it will still need to be fixed. */ + if (argv0[0] == '/') + { + char * nextslash; + int length; + struct item_list_3 itemlist[3]; + unsigned short dvi_iosb[4]; + char alldevnam[64]; + unsigned short alldevnam_len; + struct dsc$descriptor_s devname_dsc; + char diskvolnam[256]; + unsigned short diskvolnam_len; + + internal_need_vms_symbol = 1; + + /* Get some information about the disk */ + /*--------------------------------------*/ + itemlist[0].len = (sizeof alldevnam) - 1; + itemlist[0].code = DVI$_ALLDEVNAM; + itemlist[0].bufadr = alldevnam; + itemlist[0].retlen = &alldevnam_len; + itemlist[1].len = (sizeof diskvolnam) - 1 - 5; + itemlist[1].code = DVI$_VOLNAM; + itemlist[1].bufadr = &diskvolnam[5]; + itemlist[1].retlen = &diskvolnam_len; + itemlist[2].len = 0; + itemlist[2].code = 0; + + /* Add the prefix for the volume name. */ + /* SYS$GETDVI will append the volume name to this */ + strcpy (diskvolnam, "DISK$"); + + nextslash = strchr (&argv0[1], '/'); + if (nextslash != NULL) + { + length = nextslash - argv0 - 1; + + /* Cast needed for HP C compiler diagnostic */ + devname_dsc.dsc$a_pointer = (char *)&argv0[1]; + devname_dsc.dsc$w_length = length; + devname_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + devname_dsc.dsc$b_class = DSC$K_CLASS_S; + + status = SYS$GETDVIW (EFN$C_ENF, 0, &devname_dsc, itemlist, + dvi_iosb, NULL, 0, 0); + if (!$VMS_STATUS_SUCCESS (status)) + { + /* If the sys$getdviw fails, then this path was passed by */ + /* An exec() program and not from DCL, so do nothing */ + /* An example is "/tmp/program" where tmp: does not exist */ +#ifdef DEBUG + printf ("sys$getdviw failed with status %d\n", status); +#endif + result = 0; + } + else if (!$VMS_STATUS_SUCCESS (dvi_iosb[0])) + { +#ifdef DEBUG + printf ("sys$getdviw failed with iosb %d\n", dvi_iosb[0]); +#endif + result = 0; + } + else + { + char * devnam; + int devnam_len; + char argv_dev[64]; + + /* Null terminate the returned alldevnam */ + alldevnam[alldevnam_len] = 0; + devnam = alldevnam; + devnam_len = alldevnam_len; + + /* Need to skip past any leading underscore */ + if (devnam[0] == '_') + { + devnam++; + devnam_len--; + } + + /* And remove the trailing colon */ + if (devnam[devnam_len - 1] == ':') + { + devnam_len--; + devnam[devnam_len] = 0; + } + + /* Null terminate the returned volnam */ + diskvolnam_len += 5; + diskvolnam[diskvolnam_len] = 0; + + /* Check first for normal CRTL behavior */ + if (devnam_len == length) + { + strncpy (vms_new_nam, &argv0[1], length); + vms_new_nam[length] = 0; + result = (strcasecmp (devnam, vms_new_nam) == 0); + } + + /* If we have not got a match, check for POSIX Compliant */ + /* behavior. To be more accurate, we could also check */ + /* to see if that feature is active. */ + if ((result == 0) && (diskvolnam_len == length)) + { + strncpy (vms_new_nam, &argv0[1], length); + vms_new_nam[length] = 0; + result = (strcasecmp (diskvolnam, vms_new_nam) == 0); + } + } + } + } + else + { + /* The path did not start with a slash, so it could be VMS format */ + /* If it is vms format, it has a volume/device in it as it must */ + /* be an absolute path */ + struct dsc$descriptor_s path_desc; + int status; + unsigned long field_flags; + struct filescan_itmlst_2 item_list[5]; + char * volume; + char * name; + int name_len; + char * ext; + + path_desc.dsc$a_pointer = (char *)argv0; /* cast ok */ + path_desc.dsc$w_length = strlen (argv0); + path_desc.dsc$b_dtype = DSC$K_DTYPE_T; + path_desc.dsc$b_class = DSC$K_CLASS_S; + + /* Don't actually need to initialize anything buf itmcode */ + /* I just do not like uninitialized input values */ + + /* Sanity check, this must be the same length as input */ + item_list[0].itmcode = FSCN$_FILESPEC; + item_list[0].length = 0; + item_list[0].component = NULL; + + /* If the device is present, then it if a VMS spec */ + item_list[1].itmcode = FSCN$_DEVICE; + item_list[1].length = 0; + item_list[1].component = NULL; + + /* we need the program name and type */ + item_list[2].itmcode = FSCN$_NAME; + item_list[2].length = 0; + item_list[2].component = NULL; + + item_list[3].itmcode = FSCN$_TYPE; + item_list[3].length = 0; + item_list[3].component = NULL; + + /* End the list */ + item_list[4].itmcode = 0; + item_list[4].length = 0; + item_list[4].component = NULL; + + status = SYS$FILESCAN ((const struct dsc$descriptor_s *)&path_desc, + item_list, &field_flags, NULL, NULL); + + + if ($VMS_STATUS_SUCCESS (status) && + (item_list[0].length == path_desc.dsc$w_length) && + (item_list[1].length != 0)) + { + + char * dollar; + int keep_ext; + int i; + + /* We need the filescan to be successful, */ + /* same length as input, and a volume to be present */ + internal_need_vms_symbol = 1; + + /* We will assume that we only get to this path on a version */ + /* of VMS that does not support the EFS character set */ + + /* There may be a xxx$ prefix on the image name. Linux */ + /* programs do not handle that well, so strip the prefix */ + name = item_list[2].component; + name_len = item_list[2].length; + dollar = strrchr (name, '$'); + if (dollar != NULL) + { + dollar++; + name_len = name_len - (dollar - name); + name = dollar; + } + + strncpy (vms_new_nam, name, name_len); + vms_new_nam[name_len] = 0; + + /* Commit to using the new name */ + program_name = vms_new_nam; + + /* We only keep the extension if it is not ".exe" */ + keep_ext = 0; + ext = item_list[3].component; + + if (item_list[3].length != 1) + { + keep_ext = 1; + if (item_list[3].length == 4) + { + if ((ext[1] == 'e' || ext[1] == 'E') && + (ext[2] == 'x' || ext[2] == 'X') && + (ext[3] == 'e' || ext[3] == 'E')) + keep_ext = 0; + } + } + + if (keep_ext == 1) + strncpy (&vms_new_nam[name_len], ext, item_list[3].length); + } + } + + if (result) + { + char * lastslash; + char * dollar; + char * dotexe; + char * lastdot; + char * extension; + + /* This means it is probably the name from a DCL command */ + /* Find the last slash which separates the file from the */ + /* path. */ + lastslash = strrchr (argv0, '/'); + + if (lastslash != NULL) { + int i; + + lastslash++; + + /* There may be a xxx$ prefix on the image name. Linux */ + /* programs do not handle that well, so strip the prefix */ + dollar = strrchr (lastslash, '$'); + + if (dollar != NULL) { + dollar++; + lastslash = dollar; + } + + strcpy (vms_new_nam, lastslash); + + /* In UNIX mode + EFS character set, there should not be a */ + /* version present, as it is not possible when parsing to */ + /* tell if it is a version or part of the UNIX filename as */ + /* UNIX programs use numeric extensions for many reasons. */ + + lastdot = strrchr (vms_new_nam, '.'); + if (lastdot != NULL) { + int i; + + i = 1; + while (isdigit ((unsigned char) lastdot[i])) { + i++; + } + if (lastdot[i] == 0) { + *lastdot = 0; + } + } + + /* Find the .exe on the name (case insensitive) and toss it */ + dotexe = strrchr (vms_new_nam, '.'); + if (dotexe != NULL) { + if ((dotexe[1] == 'e' || dotexe[1] == 'E') && + (dotexe[2] == 'x' || dotexe[2] == 'X') && + (dotexe[3] == 'e' || dotexe[3] == 'E') && + (dotexe[4] == 0)) { + + *dotexe = 0; + } else { + /* Also need to handle a null extension because of a */ + /* CRTL bug. */ + if (dotexe[1] == 0) { + *dotexe = 0; + } + } + } + + /* Commit to new name */ + program_name = vms_new_nam; + + } else { + /* There is no way that the code should ever get here */ + /* As we already verified that the '/' was present */ + fprintf (stderr, "Sanity failure somewhere we lost a '/'\n"); + } + } +} + +#ifdef DEBUG + +int +main (int argc, char ** argv, char **env) +{ + + char command[1024]; + + set_program_name (argv[0]); + + printf ("modified argv[0] = %s\n", program_name); + + return 0; +} +#endif diff --git a/local/recipes/dev/gnu-make/source/src/vmsdir.h b/local/recipes/dev/gnu-make/source/src/vmsdir.h new file mode 100644 index 0000000000..0f8fe3ada3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vmsdir.h @@ -0,0 +1,76 @@ +/* dirent.h for vms +Copyright (C) 1996-2022 Free Software 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 . */ + +#ifndef VMSDIR_H +#define VMSDIR_H + +#include + +#define MAXNAMLEN 255 + +#ifndef __DECC +#if !defined (__GNUC__) && !defined (__ALPHA) +typedef unsigned long u_long; +typedef unsigned short u_short; +#endif +#endif + +struct direct +{ + off_t d_off; + u_long d_fileno; + u_short d_reclen; + u_short d_namlen; + char d_name[MAXNAMLEN + 1]; +}; + +#undef DIRSIZ +#define DIRSIZ(dp) \ + (((sizeof (struct direct) \ + - (MAXNAMLEN+1) \ + + ((dp)->d_namlen+1)) \ + + 3) & ~3) + +#define d_ino d_fileno /* compatibility */ + + +/* + * Definitions for library routines operating on directories. + */ + +typedef struct DIR +{ + struct direct dir; + char d_result[MAXNAMLEN + 1]; +#if defined (__ALPHA) || defined (__DECC) + struct FAB fab; +#else + struct fabdef fab; +#endif +} DIR; + +#ifndef NULL +#define NULL 0 +#endif + +#define rewinddir(dirp) seekdir((dirp), (long)0) + +DIR *opendir (); +struct direct *readdir (DIR *dfd); +int closedir (DIR *dfd); +const char *vmsify (const char *name, int type); + +#endif /* VMSDIR_H */ diff --git a/local/recipes/dev/gnu-make/source/src/vmsfunctions.c b/local/recipes/dev/gnu-make/source/src/vmsfunctions.c new file mode 100644 index 0000000000..499f3393d3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vmsfunctions.c @@ -0,0 +1,226 @@ +/* VMS functions +Copyright (C) 1996-2022 Free Software 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 . */ + +#include "makeint.h" +#include "debug.h" +#include "job.h" + +#include +#include + +#ifdef __DECC +#include +#endif + +#include +#include "vmsdir.h" + +#ifdef HAVE_VMSDIR_H + +DIR * +opendir (char *dspec) +{ + struct DIR *dir = xcalloc (sizeof (struct DIR)); + struct NAM *dnam = xmalloc (sizeof (struct NAM)); + struct FAB *dfab = &dir->fab; + char *searchspec = xmalloc (MAXNAMLEN + 1); + + *dfab = cc$rms_fab; + *dnam = cc$rms_nam; + sprintf (searchspec, "%s*.*;", dspec); + + dfab->fab$l_fna = searchspec; + dfab->fab$b_fns = strlen (searchspec); + dfab->fab$l_nam = dnam; + + *dnam = cc$rms_nam; + dnam->nam$l_esa = searchspec; + dnam->nam$b_ess = MAXNAMLEN; + + if (! (sys$parse (dfab) & 1)) + { + free (dir); + free (dnam); + free (searchspec); + return (NULL); + } + + return dir; +} + +#define uppercasify(str) \ + do \ + { \ + char *tmp; \ + for (tmp = (str); *tmp != '\0'; tmp++) \ + if (islower ((unsigned char)*tmp)) \ + *tmp = toupper ((unsigned char)*tmp); \ + } \ + while (0) + +struct direct * +readdir (DIR *dir) +{ + struct FAB *dfab = &dir->fab; + struct NAM *dnam = (struct NAM *)(dfab->fab$l_nam); + struct direct *dentry = &dir->dir; + int i; + + memset (dentry, 0, sizeof *dentry); + + dnam->nam$l_rsa = dir->d_result; + dnam->nam$b_rss = MAXNAMLEN; + + DB (DB_VERBOSE, (".")); + + if (!((i = sys$search (dfab)) & 1)) + { + DB (DB_VERBOSE, (_("sys$search() failed with %d\n"), i)); + return (NULL); + } + + dentry->d_off = 0; + if (dnam->nam$w_fid == 0) + dentry->d_fileno = 1; + else + dentry->d_fileno = dnam->nam$w_fid[0] + (dnam->nam$w_fid[1] << 16); + + dentry->d_reclen = sizeof (struct direct); + dentry->d_namlen = dnam->nam$b_name + dnam->nam$b_type; + strncpy (dentry->d_name, dnam->nam$l_name, dentry->d_namlen); + dentry->d_name[dentry->d_namlen] = '\0'; + +#ifdef HAVE_CASE_INSENSITIVE_FS + uppercasify (dentry->d_name); +#endif + + return (dentry); +} + +int +closedir (DIR *dir) +{ + if (dir != NULL) + { + struct FAB *dfab = &dir->fab; + struct NAM *dnam = (struct NAM *)(dfab->fab$l_nam); + if (dnam != NULL) + free (dnam->nam$l_esa); + free (dnam); + free (dir); + } + + return 0; +} +#endif /* compiled for OpenVMS prior to V7.x */ + +/* Argv0 will be a full vms file specification, like + node$dka100:[utils.gnumake]make.exe;47 + prefix it with "mcr " to make it a vms command, executable for DCL. */ +const char * +vms_command(const char* argv0) +{ + size_t l = strlen(argv0) + 1; + char* s = xmalloc(l + 4); + memcpy(s, "mcr ", 4); + memcpy(s+4, argv0, l); + return s; +} + +/* Argv0 aka argv[0] will be a full vms file specification, like + node$dka100:[utils.gnumake]make.exe;47, set up by the CRTL. + The vms progname should be ^^^^, the file name without + file type .exe and ;version. + Use sys$parse to get the name part of the file specification. That is + in the above example, pick up "make" and return a copy of that string. + If something goes wrong in sys$parse (unlikely, this is a VMS/CRTL supplied + file specification) or if there is an empty name part (not easy to produce, + but it is possible) just return "make". + Some notes ... + NAM[L]$M_SYNCHK requests a syntax check, only. + NAM is for ODS2 names (shorter parts, output usually converted to UPPERCASE). + NAML is for ODS2/ODS5 names (longer parts, output unchanged). + NAM$M_NO_SHORT_UPCASE may not be available for older versions of VMS. + NAML is not available on older versions of VMS (NAML$C_BID not defined). + argv[0] on older versions of VMS (no extended parse style and no + CRTL feature DECC$ARGV_PARSE_STYLE) is always in lowercase. */ +const char * +vms_progname(const char* argv0) +{ + int status; + static struct FAB fab; + char *progname; + const char *fallback = "make"; + +#ifdef NAML$C_BID + static char esa[NAML$C_MAXRSS]; + static struct NAML naml; +#else + static char esa[NAM$C_MAXRSS]; + static struct NAM nam; +#endif + + fab = cc$rms_fab; + fab.fab$l_fna = (char*)argv0; + fab.fab$b_fns = strlen(argv0); + +#ifdef NAML$C_BID + fab.fab$l_naml = &naml; + naml = cc$rms_naml; + naml.naml$l_long_expand = esa; + naml.naml$l_long_expand_alloc = NAML$C_MAXRSS; + naml.naml$b_nop = NAML$M_SYNCHK; + naml.naml$l_input_flags = NAML$M_NO_SHORT_OUTPUT; +#else + fab.fab$l_nam = &nam; + nam = cc$rms_nam; + nam.nam$l_esa = esa; + nam.nam$b_ess = NAM$C_MAXRSS; +# ifdef NAM$M_NO_SHORT_UPCASE + nam.nam$b_nop = NAM$M_SYNCHK | NAM$M_NO_SHORT_UPCASE; +# else + nam.nam$b_nop = NAM$M_SYNCHK; +# endif +#endif + + status = sys$parse(&fab); + if (!(status & 1)) + return fallback; + +#ifdef NAML$C_BID + if (naml.naml$l_long_name_size == 0) + return fallback; + progname = xmalloc(naml.naml$l_long_name_size + 1); + memcpy(progname, naml.naml$l_long_name, naml.naml$l_long_name_size); + progname[naml.naml$l_long_name_size] = '\0'; +#else + if (nam.nam$b_name == 0) + return fallback; + progname = xmalloc(nam.nam$b_name + 1); +# ifdef NAM$M_NO_SHORT_UPCASE + memcpy(progname, nam.nam$l_name, nam.nam$b_name); +# else + { + int i; + for (i = 0; i < nam.nam$b_name; i++) + progname[i] = tolower(nam.nam$l_name[i]); + } +# endif + progname[nam.nam$b_name] = '\0'; +#endif + + return progname; +} diff --git a/local/recipes/dev/gnu-make/source/src/vmsify.c b/local/recipes/dev/gnu-make/source/src/vmsify.c new file mode 100644 index 0000000000..7c3426eddb --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vmsify.c @@ -0,0 +1,1005 @@ +/* vmsify.c -- Module for vms <-> unix file name conversion +Copyright (C) 1996-2022 Free Software 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 . */ + +/* Written by Klaus Kämpf (kkaempf@progis.de) + of proGIS Software, Aachen, Germany */ + + +#include +#include +#include + +#include "makeint.h" + +#if VMS +#include +#include +#include +#include +#include +#include +#include +#include +/* Initialize a string descriptor (struct dsc$descriptor_s) for an + arbitrary string. ADDR is a pointer to the first character + of the string, and LEN is the length of the string. */ + +#define INIT_DSC_S(dsc, addr, len) do { \ + (dsc).dsc$b_dtype = DSC$K_DTYPE_T; \ + (dsc).dsc$b_class = DSC$K_CLASS_S; \ + (dsc).dsc$w_length = (len); \ + (dsc).dsc$a_pointer = (addr); \ +} while (0) + +/* Initialize a string descriptor (struct dsc$descriptor_s) for a + NUL-terminated string. S is a pointer to the string; the length + is determined by calling strlen(). */ + +#define INIT_DSC_CSTRING(dsc, s) INIT_DSC_S(dsc, s, strlen(s)) +#endif + +/* + copy 'from' to 'to' up to but not including 'upto' + return 0 if eos on from + return 1 if upto found + + return 'to' at last char + 1 + return 'from' at match + 1 or eos if no match + + if as_dir == 1, change all '.' to '_' + else change all '.' but the last to '_' +*/ + +static int +copyto (char **to, const char **from, char upto, int as_dir) +{ + const char *s; + + s = strrchr (*from, '.'); + + while (**from) + { + if (**from == upto) + { + do + { + (*from)++; + } + while (**from == upto); + return 1; + } + if (**from == '.') + { + if ((as_dir == 1) + || (*from != s)) + **to = '_'; + else + **to = '.'; + } + else + { +#ifdef HAVE_CASE_INSENSITIVE_FS + if (isupper ((unsigned char)**from)) + **to = tolower ((unsigned char)**from); + else +#endif + **to = **from; + } + (*to)++; + (*from)++; + } + + return 0; +} + + +/* + get translation of logical name + +*/ + +static char * +trnlog (const char *name) +{ + int stat; + static char reslt[1024]; + $DESCRIPTOR (reslt_dsc, reslt); + short resltlen; + struct dsc$descriptor_s name_dsc; + char *s; + + /* + * the string isn't changed, but there is no string descriptor with + * "const char *dsc$a_pointer" + */ + INIT_DSC_CSTRING (name_dsc, (char *)name); + + stat = lib$sys_trnlog (&name_dsc, &resltlen, &reslt_dsc); + + if ((stat&1) == 0) + { + return ""; + } + if (stat == SS$_NOTRAN) + { + return ""; + } + reslt[resltlen] = '\0'; + + s = xmalloc (resltlen+1); + strcpy (s, reslt); + return s; +} + +static char * +showall (char *s) +{ + static char t[512]; + char *pt; + + pt = t; + if (strchr (s, '\\') == 0) + return s; + while (*s) + { + if (*s == '\\') + { + *pt++ = *s; + } + *pt++ = *s++; + } + return pt; +} + + +enum namestate { N_START, N_DEVICE, N_OPEN, N_DOT, N_CLOSED, N_DONE }; + +/* + convert unix style name to vms style + type = 0 -> name is a full name (directory and filename part) + type = 1 -> name is a directory + type = 2 -> name is a filename without directory + + The following conversions are applied + (0) (1) (2) + input full name dir name file name + +1 ./ [] .dir +2 ../ .dir + +3 // : :[000000] :000000.dir +4 //a a: a: a: +5 //a/ a: a: a:000000.dir + +9 / [000000] [000000] 000000.dir +10 /a [000000]a [a] [000000]a +11 /a/ [a] [a] [000000]a.dir +12 /a/b [a]b [a.b] [a]b +13 /a/b/ [a.b] [a.b] [a]b.dir +14 /a/b/c [a.b]c [a.b.c] [a.b]c +15 /a/b/c/ [a.b.c] [a.b.c] [a.b]c.dir + +16 a a [.a] a +17 a/ [.a] [.a] a.dir +18 a/b [.a]b [.a.b] [.a]b +19 a/b/ [.a.b] [.a.b] [.a]b.dir +20 a/b/c [.a.b]c [.a.b.c] [.a.b]c +21 a/b/c/ [.a.b.c] [.a.b.c] [.a.b]c.dir + +22 a.b.c a_b.c [.a_b_c] a_b_c.dir + +23 [x][y]z [x.y]z [x.y]z [x.y]z +24 [x][.y]z [x.y]z [x.y]z [x.y]z + +25 filenames with '$' are left unchanged if they contain no '/' +25 filenames with ':' are left unchanged +26 filenames with a single pair of '[' ']' are left unchanged + + The input string is not written to. The result is also const because + it's a static buffer; we don't want to change it. +*/ + +const char * +vmsify (const char *name, int type) +{ +/* max 255 device + max 39 directory + max 39 filename + max 39 filetype + max 5 version +*/ +/* todo: VMSMAXPATHLEN is defined for ODS2 names: it needs to be adjusted. */ +#define VMSMAXPATHLEN 512 + + enum namestate nstate; + static char vmsname[VMSMAXPATHLEN+1]; + const char *fptr; + const char *t; + char *vptr; + int as_dir; + int count; + const char *s; + const char *s1; + const char *s2; + + if (name == 0) + return 0; + fptr = name; + vptr = vmsname; + nstate = N_START; + + /* case 25a */ + t = strpbrk (name, "$:"); + + if (t != 0) + { +// const char *s1; +// const char *s2; + + if (type == 1) + { + s1 = strchr (t+1, '['); + s2 = strchr (t+1, ']'); + } + + if (*t == '$') + { + if (strchr (name, '/') == 0) + { + strcpy (vmsname, name); + if ((type == 1) && (s1 != 0) && (s2 == 0)) + strcat (vmsname, "]"); + return vmsname; + } + } + else + { + strcpy (vmsname, name); + if ((type == 1) && (s1 != 0) && (s2 == 0)) + strcat (vmsname, "]"); + return vmsname; + } + } + + /* case 26 */ + t = strchr (name, '['); + + if (t != 0) + { +// const char *s; +// const char *s1 = strchr (t+1, '['); + s1 = strchr (t+1, '['); + if (s1 == 0) + { + strcpy (vmsname, name); + if ((type == 1) && (strchr (t+1, ']') == 0)) + strcat (vmsname, "]"); + return vmsname; + } + s1--; + if (*s1 != ']') + { + strcpy (vmsname, name); + return vmsname; /* not ][, keep unchanged */ + } + + /* we have ][ */ + + s = name; + + /* s -> starting char + s1 -> ending ']' */ + do + { + strncpy (vptr, s, s1-s); /* copy up to but not including ']' */ + vptr += s1-s; + if (*s1 == 0) + break; + s = s1 + 1; /* s -> char behind ']' */ + if (*s != '[') /* was '][' ? */ + break; /* no, last ] found, exit */ + s++; + if (*s != '.') + *vptr++ = '.'; + s1 = strchr (s, ']'); + if (s1 == 0) /* no closing ] */ + s1 = s + strlen (s); + } + while (1); + + *vptr++ = ']'; + + fptr = s; + + } + else /* no [ in name */ + { + int state = 0; + int rooted = 1; /* flag if logical is rooted, else insert [000000] */ + + do + { + switch (state) + { + case 0: /* start of loop */ + if (*fptr == '/') + { + fptr++; + state = 1; + } + else if (*fptr == '.') + { + fptr++; + state = 10; + } + else + state = 2; + break; + + case 1: /* '/' at start */ + if (*fptr == '/') + { + fptr++; + state = 3; + } + else + state = 4; + break; + + case 2: /* no '/' at start */ + { + const char *s = strchr (fptr, '/'); + if (s == 0) /* no '/' (16) */ + { + if (type == 1) + { + strcpy (vptr, "[."); + vptr += 2; + } + copyto (&vptr, &fptr, 0, (type==1)); + if (type == 1) + *vptr++ = ']'; + state = -1; + } + else /* found '/' (17..21) */ + { + if ((type == 2) + && (*(s+1) == 0)) /* 17(2) */ + { + copyto (&vptr, &fptr, '/', 1); + state = 7; + } + else + { + strcpy (vptr, "[."); + vptr += 2; + copyto (&vptr, &fptr, '/', 1); + nstate = N_OPEN; + state = 9; + } + } + break; + } + + case 3: /* '//' at start */ + { +// const char *s; +// const char *s1; + char *vp; + while (*fptr == '/') /* collapse all '/' */ + fptr++; + if (*fptr == 0) /* just // */ + { + char cwdbuf[VMSMAXPATHLEN+1]; + + s1 = getcwd(cwdbuf, VMSMAXPATHLEN); + if (s1 == 0) + { + vmsname[0] = '\0'; + return vmsname; /* FIXME, err getcwd */ + } + s = strchr (s1, ':'); + if (s == 0) + { + vmsname[0] = '\0'; + return vmsname; /* FIXME, err no device */ + } + strncpy (vptr, s1, s-s1+1); + vptr += s-s1+1; + state = -1; + break; + } + + s = vptr; + + if (copyto (&vptr, &fptr, '/', 1) == 0) /* copy device part */ + { + *vptr++ = ':'; + state = -1; + break; + } + *vptr = ':'; + nstate = N_DEVICE; + if (*fptr == 0) /* just '//a/' */ + { + strcpy (vptr+1, "[000000]"); + vptr += 9; + state = -1; + break; + } + *vptr = 0; + /* check logical for [000000] insertion */ + vp = trnlog (s); + if (*vp != '\0') + { /* found translation */ + for (;;) /* loop over all nested logicals */ + { + char *vp2 = vp + strlen (vp) - 1; + if (*vp2 == ':') /* translation ends in ':' */ + { + vp2 = trnlog (vp); + free (vp); + if (*vp2 == 0) + { + rooted = 0; + break; + } + vp = vp2; + continue; /* next iteration */ + } + if (*vp2 == ']') /* translation ends in ']' */ + { + if (*(vp2-1) == '.') /* ends in '.]' */ + { + if (strncmp (fptr, "000000", 6) != 0) + rooted = 0; + } + else + { + strcpy (vmsname, s1); + vp = strchr (vmsname, ']'); + *vp = '.'; + nstate = N_DOT; + vptr = vp; + } + } + break; + } + free (vp); + } + else + rooted = 0; + + if (*vptr == 0) + { + nstate = N_DEVICE; + *vptr++ = ':'; + } + else + vptr++; + + if (rooted == 0) + { + nstate = N_DOT; + strcpy (vptr, "[000000."); + vptr += 8; + vp = vptr-1; + } + else + vp = 0; + + /* vp-> '.' after 000000 or NULL */ + + s = strchr (fptr, '/'); + if (s == 0) + { /* no next '/' */ + if (*(vptr-1) == '.') + *(vptr-1) = ']'; + else if (rooted == 0) + *vptr++ = ']'; + copyto (&vptr, &fptr, 0, (type == 1)); + state = -1; + break; + } + else + { + while (*(s+1) == '/') /* skip multiple '/' */ + s++; + } + + if ((rooted != 0) + && (*(vptr-1) != '.')) + { + *vptr++ = '['; + nstate = N_DOT; + } + else + if ((nstate == N_DOT) + && (vp != 0) + && (*(s+1) == 0)) + { + if (type == 2) + { + *vp = ']'; + nstate = N_CLOSED; + } + } + state = 9; + break; + } + case 4: /* single '/' at start (9..15) */ + if (*fptr == 0) + state = 5; + else + state = 6; + break; + + case 5: /* just '/' at start (9) */ + if (type != 2) + { + *vptr++ = '['; + nstate = N_OPEN; + } + strcpy (vptr, "000000"); + vptr += 6; + if (type == 2) + state = 7; + else + state = 8; + break; + + case 6: /* chars following '/' at start 10..15 */ + { + const char *s; + *vptr++ = '['; + nstate = N_OPEN; + s = strchr (fptr, '/'); + if (s == 0) /* 10 */ + { + if (type != 1) + { + strcpy (vptr, "000000]"); + vptr += 7; + } + copyto (&vptr, &fptr, 0, (type == 1)); + if (type == 1) + { + *vptr++ = ']'; + } + state = -1; + } + else /* 11..15 */ + { + if ( (type == 2) + && (*(s+1) == 0)) /* 11(2) */ + { + strcpy (vptr, "000000]"); + nstate = N_CLOSED; + vptr += 7; + } + copyto (&vptr, &fptr, '/', (*(vptr-1) != ']')); + state = 9; + } + break; + } + + case 7: /* add '.dir' and exit */ + if ((nstate == N_OPEN) + || (nstate == N_DOT)) + { + char *vp = vptr-1; + while (vp > vmsname) + { + if (*vp == ']') + { + break; + } + if (*vp == '.') + { + *vp = ']'; + break; + } + vp--; + } + } + strcpy (vptr, ".dir"); + vptr += 4; + state = -1; + break; + + case 8: /* add ']' and exit */ + *vptr++ = ']'; + state = -1; + break; + + case 9: /* 17..21, fptr -> 1st '/' + 1 */ + { + const char *s; + if (*fptr == 0) + { + if (type == 2) + { + state = 7; + } + else + state = 8; + break; + } + s = strchr (fptr, '/'); + if (s == 0) + { + if (type != 1) + { + if (nstate == N_OPEN) + { + *vptr++ = ']'; + nstate = N_CLOSED; + } + as_dir = 0; + } + else + { + if (nstate == N_OPEN) + { + *vptr++ = '.'; + nstate = N_DOT; + } + as_dir = 1; + } + } + else + { + while (*(s+1) == '/') + s++; + if ( (type == 2) + && (*(s+1) == 0)) /* 19(2), 21(2)*/ + { + if (nstate != N_CLOSED) + { + *vptr++ = ']'; + nstate = N_CLOSED; + } + as_dir = 1; + } + else + { + if (nstate == N_OPEN) + { + *vptr++ = '.'; + nstate = N_DOT; + } + as_dir = 1; + } + } + if ( (*fptr == '.') /* check for '..' or '../' */ + && (*(fptr+1) == '.') + && ((*(fptr+2) == '/') + || (*(fptr+2) == 0)) ) + { + char *vp; + fptr += 2; + if (*fptr == '/') + { + do + { + fptr++; + } + while (*fptr == '/'); + } + else if (*fptr == 0) + type = 1; + vptr--; /* vptr -> '.' or ']' */ + vp = vptr; + for (;;) + { + vp--; + if (*vp == '.') /* one back */ + { + vptr = vp; + nstate = N_OPEN; + break; + } + if (*vp == '[') /* top level reached */ + { + if (*fptr == 0) + { + strcpy (vp, "[000000]"); + vptr = vp + 8; + nstate = N_CLOSED; + s = 0; + break; + } + else + { + vptr = vp+1; + nstate = N_OPEN; + break; + } + } + } + } + else + { + copyto (&vptr, &fptr, '/', as_dir); + if (nstate == N_DOT) + nstate = N_OPEN; + } + if (s == 0) + { /* 18,20 */ + if (type == 1) + *vptr++ = ']'; + state = -1; + } + else + { + if (*(s+1) == 0) + { + if (type == 2) /* 19,21 */ + { + state = 7; + } + else + { + *vptr++ = ']'; + state = -1; + } + } + } + break; + } + + case 10: /* 1,2 first is '.' */ + if (*fptr == '.') + { + fptr++; + state = 11; + } + else + state = 12; + break; + + case 11: /* 2, '..' at start */ + count = 1; + if (*fptr != 0) + { + if (*fptr != '/') /* got ..xxx */ + { + strcpy (vmsname, name); + return vmsname; + } + do /* got ../ */ + { + fptr++; + while (*fptr == '/') fptr++; + if (*fptr != '.') + break; + if (*(fptr+1) != '.') + break; + fptr += 2; + if ((*fptr == 0) + || (*fptr == '/')) + count++; + } + while (*fptr == '/'); + } + { /* got '..' or '../' */ + char *vp; + char cwdbuf[VMSMAXPATHLEN+1]; + + vp = getcwd(cwdbuf, VMSMAXPATHLEN); + if (vp == 0) + { + vmsname[0] = '\0'; + return vmsname; /* FIXME, err getcwd */ + } + strcpy (vptr, vp); + vp = strchr (vptr, ']'); + if (vp != 0) + { + nstate = N_OPEN; + while (vp > vptr) + { + vp--; + if (*vp == '[') + { + vp++; + strcpy (vp, "000000]"); + state = -1; + break; + } + else if (*vp == '.') + { + if (--count == 0) + { + if (*fptr == 0) /* had '..' or '../' */ + { + *vp++ = ']'; + state = -1; + } + else /* had '../xxx' */ + { + state = 9; + } + *vp = '\0'; + break; + } + } + } + } + vptr += strlen (vptr); + } + break; + + case 12: /* 1, '.' at start */ + if (*fptr != 0) + { + if (*fptr != '/') + { + strcpy (vmsname, name); + return vmsname; + } + while (*fptr == '/') + fptr++; + } + + { + char *vp; + char cwdbuf[VMSMAXPATHLEN+1]; + + vp = getcwd(cwdbuf, VMSMAXPATHLEN); + if (vp == 0) + { + vmsname[0] = '\0'; + return vmsname; /*FIXME, err getcwd */ + } + strcpy (vptr, vp); + } + if (*fptr == 0) + { + state = -1; + break; + } + else + { + char *vp = strchr (vptr, ']'); + if (vp == 0) + { + state = -1; + break; + } + *vp = '\0'; + nstate = N_OPEN; + vptr += strlen (vptr); + state = 9; + } + break; + } + + } + while (state > 0); + + + } + + + /* directory conversion done + fptr -> filename part of input string + vptr -> free space in vmsname + */ + + *vptr++ = 0; + + return vmsname; +} + + + +/* + convert from vms-style to unix-style + + dev:[dir1.dir2] //dev/dir1/dir2/ +*/ + +const char * +unixify (const char *name) +{ + static char piece[512]; + const char *s; + char *p; + + if (strchr (name, '/') != 0) /* already in unix style */ + { + strcpy (piece, name); + return piece; + } + + p = piece; + *p = 0; + + /* device part */ + + s = strchr (name, ':'); + + if (s != 0) + { + int l = s - name; + *p++ = '/'; + *p++ = '/'; + strncpy (p, name, l); + p += l; + } + + /* directory part */ + + *p++ = '/'; + s = strchr (name, '['); + + if (s != 0) + { + s++; + switch (*s) + { + case ']': /* [] */ + strcat (p, "./"); + break; + case '-': /* [- */ + strcat (p, "../"); + break; + case '.': + strcat (p, "./"); /* [. */ + break; + default: + s--; + break; + } + s++; + while (*s) + { + if (*s == '.') + *p++ = '/'; + else + *p++ = *s; + s++; + if (*s == ']') + { + s++; + break; + } + } + if (*s != 0) /* more after ']' ?? */ + { + if (*(p-1) != '/') + *p++ = '/'; + strcpy (p, s); /* copy it anyway */ + } + } + + else /* no '[' anywhere */ + + { + *p++ = 0; + } + + /* force end with '/' */ + + if (*(p-1) != '/') + *p++ = '/'; + *p = 0; + + return piece; +} + +/* EOF */ diff --git a/local/recipes/dev/gnu-make/source/src/vmsjobs.c b/local/recipes/dev/gnu-make/source/src/vmsjobs.c new file mode 100644 index 0000000000..66381b8f7c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vmsjobs.c @@ -0,0 +1,1462 @@ +/* --------------- Moved here from job.c --------------- + This file must be #included in job.c, as it accesses static functions. + +Copyright (C) 1996-2022 Free Software 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 . */ + +#include +#include +#include + +/* TODO - VMS specific header file conditionally included in makeint.h */ + +#include +#include +void +decc$exit (int status); + +/* Lowest legal non-success VMS exit code is 8 */ +/* GNU make only defines codes 0, 1, 2 */ +/* So assume any exit code > 8 is a VMS exit code */ + +#ifndef MAX_EXPECTED_EXIT_CODE +# define MAX_EXPECTED_EXIT_CODE 7 +#endif + + +#if __CRTL_VER >= 70302000 && !defined(__VAX) +# define MAX_DCL_LINE_LENGTH 4095 +# define MAX_DCL_CMD_LINE_LENGTH 8192 +#else +# define MAX_DCL_LINE_LENGTH 255 +# define MAX_DCL_CMD_LINE_LENGTH 1024 +#endif +#define MAX_DCL_TOKEN_LENGTH 255 +#define MAX_DCL_TOKENS 127 + +enum auto_pipe { nopipe, add_pipe, dcl_pipe }; + +char *vmsify (char *name, int type); + +static int vms_jobsefnmask = 0; + +/* returns whether path is assumed to be a unix like shell. */ +int +_is_unixy_shell (const char *path) +{ + return vms_gnv_shell; +} + +#define VMS_GETMSG_MAX 256 +static char vms_strsignal_text[VMS_GETMSG_MAX + 2]; + +char * +vms_strsignal (int status) +{ + if (status <= MAX_EXPECTED_EXIT_CODE) + sprintf (vms_strsignal_text, "lib$spawn returned %x", status); + else + { + int vms_status; + unsigned short * msg_len; + unsigned char out[4]; + vms_status = SYS$GETMSG (status, &msg_len, + vms_strsignal_text, 7, *out); + } + + return vms_strsignal_text; +} + + +/* Wait for nchildren children to terminate */ +static void +vmsWaitForChildren (int *status) +{ + while (1) + { + if (!vms_jobsefnmask) + { + *status = 0; + return; + } + + *status = sys$wflor (32, vms_jobsefnmask); + } + return; +} + +static int ctrlYPressed= 0; +/* This is called at main or AST level. It is at AST level for DONTWAITFORCHILD + and at main level otherwise. In any case it is called when a child process + terminated. At AST level it won't get interrupted by anything except a + inner mode level AST. +*/ +static int +vmsHandleChildTerm (struct childbase *cbase) +{ + struct child *child = (struct child*)cbase; + struct child *lastc, *c; + int child_failed; + int exit_code; + + /* The child efn is 0 when a built-in or null command is executed + successfully with out actually creating a child. + */ + if (child->efn > 0) + { + vms_jobsefnmask &= ~(1 << (child->efn - 32)); + + lib$free_ef (&child->efn); + } + if (child->comname) + { + if (!ISDB (DB_JOBS) && !ctrlYPressed) + unlink (child->comname); + free (child->comname); + } + + (void) sigblock (fatal_signal_mask); + + /* First check to see if this is a POSIX exit status and handle */ + if ((child->cstatus & VMS_POSIX_EXIT_MASK) == VMS_POSIX_EXIT_MASK) + { + exit_code = (child->cstatus >> 3) & 255; + if (exit_code != MAKE_SUCCESS) + child_failed = 1; + } + else + { + child_failed = !$VMS_STATUS_SUCCESS (child->cstatus); + if (child_failed) + exit_code = child->cstatus; + } + + /* 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) + ; +#else + c = child; +#endif + + if ($VMS_STATUS_SUCCESS (child->vms_launch_status)) + { + /* Convert VMS success status to 0 for UNIX code to be happy */ + child->vms_launch_status = 0; + } + + /* Set the state flag to say the commands have finished. */ + c->file->command_state = cs_finished; + notice_finished_file (c->file); + + (void) sigsetmask (sigblock (0) & ~(fatal_signal_mask)); + + return 1; +} + +/* VMS: + Spawn a process executing the command in ARGV and return its pid. */ + +/* local helpers to make ctrl+c and ctrl+y working, see below */ +#include +#include +#include + +static int ctrlMask= LIB$M_CLI_CTRLY; +static int oldCtrlMask; +static int setupYAstTried= 0; +static unsigned short int chan= 0; + +static void +reEnableAst(void) +{ + lib$enable_ctrl (&oldCtrlMask,0); +} + +static int +astYHandler (void) +{ + struct child *c; + for (c = children; c != 0; c = c->next) + if (c->pid > 0) + 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; +} + +/* Check if a token is too long */ +#define INC_TOKEN_LEN_OR_RETURN(x) {token->length++; \ + if (token->length >= MAX_DCL_TOKEN_LENGTH) \ + { token->cmd_errno = ERANGE; return x; }} + +#define INC_TOKEN_LEN_OR_BREAK {token->length++; \ + if (token->length >= MAX_DCL_TOKEN_LENGTH) \ + { token->cmd_errno = ERANGE; break; }} + +#define ADD_TOKEN_LEN_OR_RETURN(add_len, x) {token->length += add_len; \ + if (token->length >= MAX_DCL_TOKEN_LENGTH) \ + { token->cmd_errno = ERANGE; return x; }} + +/* Check if we are out of space for more tokens */ +#define V_NEXT_TOKEN { if (cmd_tkn_index < MAX_DCL_TOKENS) \ + cmd_tokens[++cmd_tkn_index] = NULL; \ + else { token.cmd_errno = E2BIG; break; } \ + token.length = 0;} + + +#define UPDATE_TOKEN {cmd_tokens[cmd_tkn_index] = strdup(token.text); \ + V_NEXT_TOKEN;} + +#define EOS_ERROR(x) { if (*x == 0) { token->cmd_errno = ERANGE; break; }} + +struct token_info + { + char *text; /* Parsed text */ + int length; /* Length of parsed text */ + char *src; /* Pointer to source text */ + int cmd_errno; /* Error status of parse */ + int use_cmd_file; /* Force use of a command file */ + }; + + +/* Extract a Posix single quoted string from input line */ +static char * +posix_parse_sq (struct token_info *token) +{ + /* A Posix quoted string with no expansion unless in a string + Unix simulation means no lexical functions present. + */ + char * q; + char * p; + q = token->text; + p = token->src; + + *q++ = '"'; + p++; + INC_TOKEN_LEN_OR_RETURN (p); + + while (*p != '\'' && (token->length < MAX_DCL_TOKEN_LENGTH)) + { + EOS_ERROR (p); + if (*p == '"') + { + /* Embedded double quotes need to be doubled */ + *q++ = '"'; + INC_TOKEN_LEN_OR_BREAK; + *q = '"'; + } + else + *q = *p; + + q++; + p++; + INC_TOKEN_LEN_OR_BREAK; + } + *q++ = '"'; + p++; + INC_TOKEN_LEN_OR_RETURN (p); + *q = 0; + return p; +} + +/* Extract a Posix double quoted string from input line */ +static char * +posix_parse_dq (struct token_info *token) +{ + /* Unix mode: Any embedded \" becomes doubled. + \t is tab, \\, \$ leading character stripped. + $ character replaced with \' unless escaped. + */ + char * q; + char * p; + q = token->text; + p = token->src; + *q++ = *p++; + INC_TOKEN_LEN_OR_RETURN (p); + while (*p != 0) + { + if (*p == '\\') + { + switch(p[1]) + { + case 't': /* Convert tabs */ + *q = '\t'; + p++; + break; + case '\\': /* Just remove leading backslash */ + case '$': + p++; + *q = *p; + break; + case '"': + p++; + *q = *p; + *q++ = '"'; + INC_TOKEN_LEN_OR_BREAK; + default: /* Pass through unchanged */ + *q++ = *p++; + INC_TOKEN_LEN_OR_BREAK; + } + INC_TOKEN_LEN_OR_BREAK; + } + else if (*p == '$' && isalpha ((unsigned char) p[1])) + { + /* A symbol we should be able to substitute */ + *q++ = '\''; + INC_TOKEN_LEN_OR_BREAK; + *q = '\''; + INC_TOKEN_LEN_OR_BREAK; + token->use_cmd_file = 1; + } + else + { + *q = *p; + INC_TOKEN_LEN_OR_BREAK; + if (*p == '"') + { + p++; + q++; + break; + } + } + p++; + q++; + } + *q = 0; + return p; +} + +/* Extract a VMS quoted string or substitution string from input line */ +static char * +vms_parse_quotes (struct token_info *token) +{ + /* VMS mode, the \' means that a symbol substitution is starting + so while you might think you can just copy until the next + \'. Unfortunately the substitution can be a lexical function + which can contain embedded strings and lexical functions. + Messy, so both types need to be handled together. + */ + char * q; + char * p; + q = token->text; + p = token->src; + int parse_level[MAX_DCL_TOKENS + 1]; + int nest = 0; + + parse_level[0] = *p; + if (parse_level[0] == '\'') + token->use_cmd_file = 1; + + *q++ = *p++; + INC_TOKEN_LEN_OR_RETURN (p); + + + /* Copy everything until after the next single quote at nest == 0 */ + while (token->length < MAX_DCL_TOKEN_LENGTH) + { + EOS_ERROR (p); + *q = *p; + INC_TOKEN_LEN_OR_BREAK; + if ((*p == parse_level[nest]) && (p[1] != '"')) + { + if (nest == 0) + { + *q++ = *p++; + break; + } + nest--; + } + else + { + switch(*p) + { + case '\\': + /* Handle continuation on to next line */ + if (p[1] != '\n') + break; + p++; + p++; + *q = *p; + break; + case '(': + /* Parenthesis only in single quote level */ + if (parse_level[nest] == '\'') + { + nest++; + parse_level[nest] == ')'; + } + break; + case '"': + /* Double quotes only in parenthesis */ + if (parse_level[nest] == ')') + { + nest++; + parse_level[nest] == '"'; + } + break; + case '\'': + /* Symbol substitution only in double quotes */ + if ((p[1] == '\'') && (parse_level[nest] == '"')) + { + nest++; + parse_level[nest] == '\''; + *p++ = *q++; + token->use_cmd_file = 1; + INC_TOKEN_LEN_OR_BREAK; + break; + } + *q = *p; + } + } + p++; + q++; + /* Pass through doubled double quotes */ + if ((*p == '"') && (p[1] == '"') && (parse_level[nest] == '"')) + { + *p++ = *q++; + INC_TOKEN_LEN_OR_BREAK; + *p++ = *q++; + INC_TOKEN_LEN_OR_BREAK; + } + } + *q = 0; + return p; +} + +/* Extract a $ string from the input line */ +static char * +posix_parse_dollar (struct token_info *token) +{ + /* $foo becomes 'foo' */ + char * q; + char * p; + q = token->text; + p = token->src; + token->use_cmd_file = 1; + + p++; + *q++ = '\''; + INC_TOKEN_LEN_OR_RETURN (p); + + while ((isalnum ((unsigned char) *p)) || (*p == '_')) + { + *q++ = *p++; + INC_TOKEN_LEN_OR_BREAK; + } + *q++ = '\''; + while (1) + { + INC_TOKEN_LEN_OR_BREAK; + break; + } + *q = 0; + return p; +} + +const char *vms_filechars = "0123456789abcdefghijklmnopqrstuvwxyz" \ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ[]<>:/_-.$"; + +/* Simple text copy */ +static char * +parse_text (struct token_info *token, int assignment_hack) +{ + char * q; + char * p; + int str_len; + q = token->text; + p = token->src; + + /* If assignment hack, then this text needs to be double quoted. */ + if (vms_unix_simulation && (assignment_hack == 2)) + { + *q++ = '"'; + INC_TOKEN_LEN_OR_RETURN (p); + } + + *q++ = *p++; + INC_TOKEN_LEN_OR_RETURN (p); + + while (*p != 0) + { + str_len = strspn (p, vms_filechars); + if (str_len == 0) + { + /* Pass through backslash escapes in Unix simulation + probably will not work anyway. + All any character after a ^ otherwise to support EFS. + */ + if (vms_unix_simulation && (p[0] == '\\') && (p[1] != 0)) + str_len = 2; + else if ((p[0] == '^') && (p[1] != 0)) + str_len = 2; + else if (!vms_unix_simulation && (p[0] == ';')) + str_len = 1; + + if (str_len == 0) + { + /* If assignment hack, then this needs to be double quoted. */ + if (vms_unix_simulation && (assignment_hack == 2)) + { + *q++ = '"'; + INC_TOKEN_LEN_OR_RETURN (p); + } + *q = 0; + return p; + } + } + if (str_len > 0) + { + ADD_TOKEN_LEN_OR_RETURN (str_len, p); + strncpy (q, p, str_len); + p += str_len; + q += str_len; + *q = 0; + } + } + /* If assignment hack, then this text needs to be double quoted. */ + if (vms_unix_simulation && (assignment_hack == 2)) + { + *q++ = '"'; + INC_TOKEN_LEN_OR_RETURN (p); + } + return p; +} + +/* single character copy */ +static char * +parse_char (struct token_info *token, int count) +{ + char * q; + char * p; + q = token->text; + p = token->src; + + while (count > 0) + { + *q++ = *p++; + INC_TOKEN_LEN_OR_RETURN (p); + count--; + } + *q = 0; + return p; +} + +/* Build a command string from the collected tokens + and process built-ins now +*/ +static struct dsc$descriptor_s * +build_vms_cmd (char **cmd_tokens, + enum auto_pipe use_pipe_cmd, + int append_token) +{ + struct dsc$descriptor_s *cmd_dsc; + int cmd_tkn_index; + char * cmd; + int cmd_len; + int semicolon_seen; + + cmd_tkn_index = 0; + cmd_dsc = xmalloc (sizeof (struct dsc$descriptor_s)); + + /* Empty command? */ + if (cmd_tokens[0] == NULL) + { + cmd_dsc->dsc$a_pointer = NULL; + cmd_dsc->dsc$w_length = 0; + return cmd_dsc; + } + + /* Max DCL command + 1 extra token and trailing space */ + cmd = xmalloc (MAX_DCL_CMD_LINE_LENGTH + 256); + + cmd[0] = '$'; + cmd[1] = 0; + cmd_len = 1; + + /* Handle real or auto-pipe */ + if (use_pipe_cmd == add_pipe) + { + /* We need to auto convert to a pipe command */ + strcat (cmd, "pipe "); + cmd_len += 5; + } + + semicolon_seen = 0; + while (cmd_tokens[cmd_tkn_index] != NULL) + { + + /* Check for buffer overflow */ + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + + /* Eliminate double ';' */ + if (semicolon_seen && (cmd_tokens[cmd_tkn_index][0] == ';')) + { + semicolon_seen = 0; + free (cmd_tokens[cmd_tkn_index++]); + if (cmd_tokens[cmd_tkn_index] == NULL) + break; + } + + /* Special handling for CD built-in */ + if (strncmp (cmd_tokens[cmd_tkn_index], "builtin_cd", 11) == 0) + { + int result; + semicolon_seen = 0; + free (cmd_tokens[cmd_tkn_index]); + cmd_tkn_index++; + if (cmd_tokens[cmd_tkn_index] == NULL) + break; + DB(DB_JOBS, (_("BUILTIN CD %s\n"), cmd_tokens[cmd_tkn_index])); + + /* TODO: chdir fails with some valid syntaxes */ + result = chdir (cmd_tokens[cmd_tkn_index]); + if (result != 0) + { + /* TODO: Handle failure better */ + free (cmd); + while (cmd_tokens[cmd_tkn_index] == NULL) + free (cmd_tokens[cmd_tkn_index++]); + cmd_dsc->dsc$w_length = -1; + cmd_dsc->dsc$a_pointer = NULL; + return cmd_dsc; + } + } + else if (strncmp (cmd_tokens[cmd_tkn_index], "exit", 5) == 0) + { + /* Copy the exit command */ + semicolon_seen = 0; + strcpy (&cmd[cmd_len], cmd_tokens[cmd_tkn_index]); + cmd_len += strlen (cmd_tokens[cmd_tkn_index]); + free (cmd_tokens[cmd_tkn_index++]); + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + + /* Optional whitespace */ + if (isspace ((unsigned char) cmd_tokens[cmd_tkn_index][0])) + { + strcpy (&cmd[cmd_len], cmd_tokens[cmd_tkn_index]); + cmd_len += strlen (cmd_tokens[cmd_tkn_index]); + free (cmd_tokens[cmd_tkn_index++]); + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + } + + /* There should be a status, but it is optional */ + if (cmd_tokens[cmd_tkn_index][0] == ';') + continue; + + /* If Unix simulation, add '((' */ + if (vms_unix_simulation) + { + strcpy (&cmd[cmd_len], "(("); + cmd_len += 2; + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + } + + /* Add the parameter */ + strcpy (&cmd[cmd_len], cmd_tokens[cmd_tkn_index]); + cmd_len += strlen (cmd_tokens[cmd_tkn_index]); + free (cmd_tokens[cmd_tkn_index++]); + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + + /* Add " * 8) .and. %x7f8) .or. %x1035a002" */ + if (vms_unix_simulation) + { + const char *end_str = " * 8) .and. %x7f8) .or. %x1035a002"; + strcpy (&cmd[cmd_len], end_str); + cmd_len += strlen (end_str); + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + } + continue; + } + + /* auto pipe needs spaces before semicolon */ + if (use_pipe_cmd == add_pipe) + if (cmd_tokens[cmd_tkn_index][0] == ';') + { + cmd[cmd_len++] = ' '; + semicolon_seen = 1; + if (cmd_len > MAX_DCL_CMD_LINE_LENGTH) + { + errno = E2BIG; + break; + } + } + else + { + char ch; + ch = cmd_tokens[cmd_tkn_index][0]; + if (!(ch == ' ' || ch == '\t')) + semicolon_seen = 0; + } + + strcpy (&cmd[cmd_len], cmd_tokens[cmd_tkn_index]); + cmd_len += strlen (cmd_tokens[cmd_tkn_index]); + + free (cmd_tokens[cmd_tkn_index++]); + + /* Skip the append tokens if they exist */ + if (cmd_tkn_index == append_token) + { + free (cmd_tokens[cmd_tkn_index++]); + if (isspace ((unsigned char) cmd_tokens[cmd_tkn_index][0])) + free (cmd_tokens[cmd_tkn_index++]); + free (cmd_tokens[cmd_tkn_index++]); + } + } + + cmd[cmd_len] = 0; + cmd_dsc->dsc$w_length = cmd_len; + cmd_dsc->dsc$a_pointer = cmd; + cmd_dsc->dsc$b_dtype = DSC$K_DTYPE_T; + cmd_dsc->dsc$b_class = DSC$K_CLASS_S; + + return cmd_dsc; +} + +pid_t +child_execute_job (struct childbase *child, int good_stdin UNUSED, char *argv) +{ + int i; + + static struct dsc$descriptor_s *cmd_dsc; + static struct dsc$descriptor_s pnamedsc; + int spflags = CLI$M_NOWAIT; + int status; + int comnamelen; + char procname[100]; + + char *p; + char *cmd_tokens[(MAX_DCL_TOKENS * 2) + 1]; /* whitespace does not count */ + char token_str[MAX_DCL_TOKEN_LENGTH + 1]; + struct token_info token; + int cmd_tkn_index; + int paren_level = 0; + enum auto_pipe use_pipe_cmd = nopipe; + int append_token = -1; + char *append_file = NULL; + int unix_echo_cmd = 0; /* Special handle Unix echo command */ + int assignment_hack = 0; /* Handle x=y command as piped command */ + + /* Parse IO redirection. */ + + child->comname = NULL; + + DB (DB_JOBS, ("child_execute_job (%s)\n", argv)); + + while (isspace ((unsigned char)*argv)) + argv++; + + if (*argv == 0) + { + /* Only a built-in or a null command - Still need to run term AST */ + child->cstatus = VMS_POSIX_EXIT_MASK; + child->vms_launch_status = SS$_NORMAL; + child->efn = 0; + vmsHandleChildTerm (child); + /* TODO what is this "magic number" */ + return 270163; /* Special built-in */ + } + + sprintf (procname, "GMAKE_%05x", getpid () & 0xfffff); + pnamedsc.dsc$w_length = strlen (procname); + pnamedsc.dsc$a_pointer = procname; + pnamedsc.dsc$b_dtype = DSC$K_DTYPE_T; + pnamedsc.dsc$b_class = DSC$K_CLASS_S; + + /* Old */ + /* Handle comments and redirection. + For ONESHELL, the redirection must be on the first line. Any other + redirection token is handled by DCL, that is, the pipe command with + redirection can be used, but it should not be used on the first line + for ONESHELL. */ + + /* VMS parser notes: + 1. A token is any of DCL verbs, qualifiers, parameters, or punctuation. + 2. Only MAX_DCL_TOKENS per line in both one line or command file mode. + 3. Each token limited to MAC_DCL_TOKEN_LENGTH + 4. If the line to DCL is greater than MAX_DCL_LINE_LENGTH then a + command file must be used. + 5. Currently a command file must be used symbol substitution is to + be performed. + 6. Currently limiting command files to 2 * MAX_DCL_TOKENS. + + Build both a command file token list and command line token list + until it is determined that the command line limits are exceeded. + */ + + cmd_tkn_index = 0; + cmd_tokens[cmd_tkn_index] = NULL; + p = argv; + + token.text = token_str; + token.length = 0; + token.cmd_errno = 0; + token.use_cmd_file = 0; + + while (*p != 0) + { + /* We can not build this command so give up */ + if (token.cmd_errno != 0) + break; + + token.src = p; + + switch (*p) + { + case '\'': + if (vms_unix_simulation || unix_echo_cmd) + { + p = posix_parse_sq (&token); + UPDATE_TOKEN; + break; + } + + /* VMS mode, the \' means that a symbol substitution is starting + so while you might think you can just copy until the next + \'. Unfortunately the substitution can be a lexical function + which can contain embedded strings and lexical functions. + Messy. + */ + p = vms_parse_quotes (&token); + UPDATE_TOKEN; + break; + case '"': + if (vms_unix_simulation) + { + p = posix_parse_dq (&token); + UPDATE_TOKEN; + break; + } + + /* VMS quoted string, can contain lexical functions with + quoted strings and nested lexical functions. + */ + p = vms_parse_quotes (&token); + UPDATE_TOKEN; + break; + + case '$': + if (vms_unix_simulation) + { + p = posix_parse_dollar (&token); + UPDATE_TOKEN; + break; + } + + /* Otherwise nothing special */ + p = parse_text (&token, 0); + UPDATE_TOKEN; + break; + case '\\': + if (p[1] == '\n') + { + /* Line continuation, remove it */ + p += 2; + break; + } + + /* Ordinary character otherwise */ + if (assignment_hack != 0) + assignment_hack++; + if (assignment_hack > 2) + { + assignment_hack = 0; /* Reset */ + if (use_pipe_cmd == nopipe) /* force pipe use */ + use_pipe_cmd = add_pipe; + token_str[0] = ';'; /* add ; token */ + token_str[1] = 0; + UPDATE_TOKEN; + } + p = parse_text (&token, assignment_hack); + UPDATE_TOKEN; + break; + case '!': + case '#': + /* Unix '#' is VMS '!' which comments out the rest of the line. + Historically the rest of the line has been skipped. + Not quite the right thing to do, as the f$verify lexical + function works in comments. But this helps keep the line + lengths short. + */ + unix_echo_cmd = 0; + while (*p != '\n' && *p != 0) + p++; + break; + case '(': + /* Subshell, equation, or lexical function argument start */ + p = parse_char (&token, 1); + UPDATE_TOKEN; + paren_level++; + break; + case ')': + /* Close out a paren level */ + p = parse_char (&token, 1); + UPDATE_TOKEN; + paren_level--; + /* TODO: Should we diagnose if paren_level goes negative? */ + break; + case '&': + if (isalpha ((unsigned char) p[1]) && !vms_unix_simulation) + { + /* VMS symbol substitution */ + p = parse_text (&token, 0); + token.use_cmd_file = 1; + UPDATE_TOKEN; + break; + } + if (use_pipe_cmd == nopipe) + use_pipe_cmd = add_pipe; + if (p[1] != '&') + p = parse_char (&token, 1); + else + p = parse_char (&token, 2); + UPDATE_TOKEN; + break; + case '|': + if (use_pipe_cmd == nopipe) + use_pipe_cmd = add_pipe; + if (p[1] != '|') + p = parse_char (&token, 1); + else + p = parse_char (&token, 2); + UPDATE_TOKEN; + break; + case ';': + /* Separator - convert to a pipe command. */ + unix_echo_cmd = 0; + case '<': + if (use_pipe_cmd == nopipe) + use_pipe_cmd = add_pipe; + p = parse_char (&token, 1); + UPDATE_TOKEN; + break; + case '>': + if (use_pipe_cmd == nopipe) + use_pipe_cmd = add_pipe; + if (p[1] == '>') + { + /* Parsing would have been simple until support for the >> + append redirect was added. + Implementation needs: + * if not exist output file create empty + * open/append gnv$make_temp??? output_file + * define/user sys$output gnv$make_temp??? + ** And all this done before the command previously tokenized. + * command previously tokenized + * close gnv$make_temp??? + */ + p = parse_char (&token, 2); + append_token = cmd_tkn_index; + token.use_cmd_file = 1; + } + else + p = parse_char (&token, 1); + UPDATE_TOKEN; + break; + case '/': + /* Unix path or VMS option start, read until non-path symbol */ + if (assignment_hack != 0) + assignment_hack++; + if (assignment_hack > 2) + { + assignment_hack = 0; /* Reset */ + if (use_pipe_cmd == nopipe) /* force pipe use */ + use_pipe_cmd = add_pipe; + token_str[0] = ';'; /* add ; token */ + token_str[1] = 0; + UPDATE_TOKEN; + } + p = parse_text (&token, assignment_hack); + UPDATE_TOKEN; + break; + case ':': + if ((p[1] == 0) || isspace ((unsigned char) p[1])) + { + /* Unix Null command - treat as comment until next command */ + unix_echo_cmd = 0; + p++; + while (*p != 0) + { + if (*p == ';') + { + /* Remove Null command from pipeline */ + p++; + break; + } + p++; + } + break; + } + + /* String assignment */ + /* := :== or : */ + if (p[1] != '=') + p = parse_char (&token, 1); + else if (p[2] != '=') + p = parse_char (&token, 2); + else + p = parse_char (&token, 3); + UPDATE_TOKEN; + break; + case '=': + /* = or == */ + /* If this is not an echo statement, this could be a shell + assignment. VMS requires the target to be quoted if it + is not a macro substitution */ + if (!unix_echo_cmd && vms_unix_simulation && (assignment_hack == 0)) + assignment_hack = 1; + if (p[1] != '=') + p = parse_char (&token, 1); + else + p = parse_char (&token, 2); + UPDATE_TOKEN; + break; + case '+': + case '-': + case '*': + p = parse_char (&token, 1); + UPDATE_TOKEN; + break; + case '.': + /* .xxx. operation, VMS does not require the trailing . */ + p = parse_text (&token, 0); + UPDATE_TOKEN; + break; + default: + /* Skip repetitive whitespace */ + if (isspace ((unsigned char) *p)) + { + p = parse_char (&token, 1); + + /* Force to a space or a tab */ + if ((token_str[0] != ' ') || + (token_str[0] != '\t')) + token_str[0] = ' '; + UPDATE_TOKEN; + + while (isspace ((unsigned char) *p)) + p++; + if (assignment_hack != 0) + assignment_hack++; + break; + } + + if (assignment_hack != 0) + assignment_hack++; + if (assignment_hack > 2) + { + assignment_hack = 0; /* Reset */ + if (use_pipe_cmd == nopipe) /* force pipe use */ + use_pipe_cmd = add_pipe; + token_str[0] = ';'; /* add ; token */ + token_str[1] = 0; + UPDATE_TOKEN; + } + p = parse_text (&token, assignment_hack); + if (strncasecmp (token.text, "echo", 4) == 0) + unix_echo_cmd = 1; + else if (strncasecmp (token.text, "pipe", 4) == 0) + use_pipe_cmd = dcl_pipe; + UPDATE_TOKEN; + break; + } + } + + /* End up here with a list of tokens to build a command line. + Deal with errors detected during parsing. + */ + if (token.cmd_errno != 0) + { + while (cmd_tokens[cmd_tkn_index] == NULL) + free (cmd_tokens[cmd_tkn_index++]); + child->cstatus = VMS_POSIX_EXIT_MASK | (MAKE_TROUBLE << 3); + child->vms_launch_status = SS$_ABORT; + child->efn = 0; + errno = token.cmd_errno; + return -1; + } + + /* Save any redirection to append file */ + if (append_token != -1) + { + int file_token; + char * lastdot; + char * lastdir; + char * raw_append_file; + file_token = append_token; + file_token++; + if (isspace ((unsigned char) cmd_tokens[file_token][0])) + file_token++; + raw_append_file = vmsify (cmd_tokens[file_token], 0); + /* VMS DCL needs a trailing dot if null file extension */ + lastdot = strrchr(raw_append_file, '.'); + lastdir = strrchr(raw_append_file, ']'); + if (lastdir == NULL) + lastdir = strrchr(raw_append_file, '>'); + if (lastdir == NULL) + lastdir = strrchr(raw_append_file, ':'); + if ((lastdot == NULL) || (lastdot > lastdir)) + { + append_file = xmalloc (strlen (raw_append_file) + 1); + strcpy (append_file, raw_append_file); + strcat (append_file, "."); + } + else + append_file = strdup(raw_append_file); + } + + cmd_dsc = build_vms_cmd (cmd_tokens, use_pipe_cmd, append_token); + if (cmd_dsc->dsc$a_pointer == NULL) + { + if (cmd_dsc->dsc$w_length < 0) + { + free (cmd_dsc); + child->cstatus = VMS_POSIX_EXIT_MASK | (MAKE_TROUBLE << 3); + child->vms_launch_status = SS$_ABORT; + child->efn = 0; + return -1; + } + + /* Only a built-in or a null command - Still need to run term AST */ + free (cmd_dsc); + child->cstatus = VMS_POSIX_EXIT_MASK; + child->vms_launch_status = SS$_NORMAL; + child->efn = 0; + vmsHandleChildTerm (child); + /* TODO what is this "magic number" */ + return 270163; /* Special built-in */ + } + + if (cmd_dsc->dsc$w_length > MAX_DCL_LINE_LENGTH) + token.use_cmd_file = 1; + + DB(DB_JOBS, (_("DCL: %s\n"), cmd_dsc->dsc$a_pointer)); + + /* Enforce the creation of a command file if "vms_always_use_cmd_file" is + non-zero. + Further, this way DCL reads the input stream and therefore does + 'forced' symbol substitution, which it doesn't do for one-liners when + they are 'lib$spawn'ed. + + Otherwise the behavior is: + + Create a *.com file if either the command is too long for + lib$spawn, or if a redirect appending to a file is desired, or + symbol substitition. + */ + + if (vms_always_use_cmd_file || token.use_cmd_file) + { + FILE *outfile; + int cmd_len; + + outfile = get_tmpfile (&child->comname); + + comnamelen = strlen (child->comname); + + /* The whole DCL "script" is executed as one action, and it behaves as + any DCL "script", that is errors stop it but warnings do not. Usually + the command on the last line, defines the exit code. However, with + redirections there is a prolog and possibly an epilog to implement + the redirection. Both are part of the script which is actually + executed. So if the redirection encounters an error in the prolog, + the user actions will not run; if in the epilog, the user actions + ran, but output is not captured. In both error cases, the error of + redirection is passed back and not the exit code of the actions. The + user should be able to enable DCL "script" verification with "set + verify". However, the prolog and epilog commands are not shown. Also, + if output redirection is used, the verification output is redirected + into that file as well. */ + fprintf (outfile, "$ gnv$$make_verify = \"''f$verify(0)'\"\n"); + fprintf (outfile, "$ gnv$$make_pid = f$getjpi(\"\",\"pid\")\n"); + fprintf (outfile, "$ on error then $ goto gnv$$make_error\n"); + + /* Handle append redirection */ + if (append_file != NULL) + { + /* If file does not exist, create it */ + fprintf (outfile, + "$ gnv$$make_al = \"gnv$$make_append''gnv$$make_pid'\"\n"); + fprintf (outfile, + "$ if f$search(\"%s\") .eqs. \"\" then create %s\n", + append_file, append_file); + + fprintf (outfile, + "$ open/append 'gnv$$make_al' %s\n", append_file); + + /* define sys$output to that file */ + fprintf (outfile, + "$ define/user sys$output 'gnv$$make_al'\n"); + DB (DB_JOBS, (_("Append output to %s\n"), append_file)); + free(append_file); + } + + fprintf (outfile, "$ gnv$$make_verify = f$verify(gnv$$make_verify)\n"); + + /* TODO: + Only for ONESHELL there will be several commands separated by + '\n'. But there can always be multiple continuation lines. + */ + + fprintf (outfile, "%s\n", cmd_dsc->dsc$a_pointer); + fprintf (outfile, "$ gnv$$make_status_2 = $status\n"); + fprintf (outfile, "$ goto gnv$$make_exit\n"); + + /* Exit and clean up */ + fprintf (outfile, "$ gnv$$make_error: ! 'f$verify(0)\n"); + fprintf (outfile, "$ gnv$$make_status_2 = $status\n"); + + if (append_token != -1) + { + fprintf (outfile, "$ deassign sys$output\n"); + fprintf (outfile, "$ close 'gnv$$make_al'\n"); + + DB (DB_JOBS, + (_("Append %.*s and cleanup\n"), comnamelen-3, child->comname)); + } + fprintf (outfile, "$ gnv$$make_exit: ! 'f$verify(0)\n"); + fprintf (outfile, + "$ exit 'gnv$$make_status_2' + (0*f$verify(gnv$$make_verify))\n"); + + fclose (outfile); + + free (cmd_dsc->dsc$a_pointer); + cmd_dsc->dsc$a_pointer = xmalloc (256 + 4); + sprintf (cmd_dsc->dsc$a_pointer, "$ @%s", child->comname); + cmd_dsc->dsc$w_length = strlen (cmd_dsc->dsc$a_pointer); + + DB (DB_JOBS, (_("Executing %s instead\n"), child->comname)); + } + + child->efn = 0; + while (child->efn < 32 || child->efn > 63) + { + status = LIB$GET_EF ((unsigned long *)&child->efn); + if (!$VMS_STATUS_SUCCESS (status)) + { + if (child->comname) + { + if (!ISDB (DB_JOBS)) + unlink (child->comname); + free (child->comname); + } + return -1; + } + } + + SYS$CLREF (child->efn); + + vms_jobsefnmask |= (1 << (child->efn - 32)); + + /* Export the child environment into DCL symbols */ + if (child->environment != 0) + { + char **ep = child->environment; + while (*ep != 0) + { + vms_putenv_symbol (*ep); + *ep++; + } + } + + /* + 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 :-) + */ + + if (!setupYAstTried) + tryToSetupYAst(); + child->vms_launch_status = lib$spawn (cmd_dsc, /* cmd-string */ + NULL, /* input-file */ + NULL, /* output-file */ + &spflags, /* flags */ + &pnamedsc, /* proc name */ + &child->pid, &child->cstatus, &child->efn, + 0, 0, + 0, 0, 0); + + status = child->vms_launch_status; + if ($VMS_STATUS_SUCCESS (status)) + { + status = sys$waitfr (child->efn); + vmsHandleChildTerm (child); + } +#else + child->vms_launch_status = lib$spawn (cmd_dsc, + NULL, + NULL, + &spflags, + &pnamedsc, + &child->pid, &child->cstatus, &child->efn, + vmsHandleChildTerm, child, + 0, 0, 0); + status = child->vms_launch_status; +#endif + + /* Free the pointer if not a command file */ + if (!vms_always_use_cmd_file && !token.use_cmd_file) + free (cmd_dsc->dsc$a_pointer); + free (cmd_dsc); + + if (!$VMS_STATUS_SUCCESS (status)) + { + switch (status) + { + case SS$_EXQUOTA: + errno = EPROCLIM; + break; + default: + errno = EFAIL; + } + } + + /* Restore the VMS symbols that were changed */ + if (child->environment != 0) + { + char **ep = child->environment; + while (*ep != 0) + { + vms_restore_symbol (*ep); + *ep++; + } + } + + /* TODO what is this "magic number" */ + return (status & 1) ? 270163 : -1 ; +} diff --git a/local/recipes/dev/gnu-make/source/src/vpath.c b/local/recipes/dev/gnu-make/source/src/vpath.c new file mode 100644 index 0000000000..9c95441f60 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/vpath.c @@ -0,0 +1,634 @@ +/* Implementation of pattern-matching file search paths for GNU Make. +Copyright (C) 1988-2022 Free Software 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 . */ + +#include "makeint.h" +#include "filedef.h" +#include "variable.h" +#ifdef WINDOWS32 +#include "pathstuff.h" +#endif + + +/* Structure used to represent a selective VPATH searchpath. */ + +struct vpath + { + 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. */ + size_t patlen; /* Length of the pattern. */ + const char **searchpath; /* Null-terminated list of directories. */ + size_t maxlen; /* Maximum length of any entry in the list. */ + }; + +/* Linked-list of all selective VPATHs. */ + +static struct vpath *vpaths; + +/* Structure for the general VPATH given in the variable. */ + +static struct vpath *general_vpath; + +/* Structure for GPATH given in the variable. */ + +static struct vpath *gpaths; + + +/* Reverse the chain of selective VPATH lists so they will be searched in the + order given in the makefiles and construct the list from the VPATH + variable. */ + +void +build_vpath_lists (void) +{ + struct vpath *new = 0; + struct vpath *old, *nexto; + char *p; + + /* Reverse the chain. */ + for (old = vpaths; old != 0; old = nexto) + { + nexto = old->next; + old->next = new; + new = old; + } + + vpaths = new; + + /* If there is a VPATH variable with a nonnull value, construct the + general VPATH list from it. We use variable_expand rather than just + calling lookup_variable so that it will be recursively expanded. */ + + { + /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ + int save = warn_undefined_variables_flag; + warn_undefined_variables_flag = 0; + + p = variable_expand ("$(strip $(VPATH))"); + + warn_undefined_variables_flag = save; + } + + if (*p != '\0') + { + /* Save the list of vpaths. */ + struct vpath *save_vpaths = vpaths; + char gp[] = "%"; + + /* Empty 'vpaths' so the new one will have no next, and 'vpaths' + will still be nil if P contains no existing directories. */ + vpaths = 0; + + /* Parse P. */ + construct_vpath_list (gp, p); + + /* Store the created path as the general path, + and restore the old list of vpaths. */ + general_vpath = vpaths; + vpaths = save_vpaths; + } + + /* If there is a GPATH variable with a nonnull value, construct the + GPATH list from it. We use variable_expand rather than just + calling lookup_variable so that it will be recursively expanded. */ + + { + /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ + int save = warn_undefined_variables_flag; + warn_undefined_variables_flag = 0; + + p = variable_expand ("$(strip $(GPATH))"); + + warn_undefined_variables_flag = save; + } + + if (*p != '\0') + { + /* Save the list of vpaths. */ + struct vpath *save_vpaths = vpaths; + char gp[] = "%"; + + /* Empty 'vpaths' so the new one will have no next, and 'vpaths' + will still be nil if P contains no existing directories. */ + vpaths = 0; + + /* Parse P. */ + construct_vpath_list (gp, p); + + /* Store the created path as the GPATH, + and restore the old list of vpaths. */ + gpaths = vpaths; + vpaths = save_vpaths; + } +} + +/* Construct the VPATH listing for the PATTERN and DIRPATH given. + + This function is called to generate selective VPATH lists and also for + the general VPATH list (which is in fact just a selective VPATH that + is applied to everything). The returned pointer is either put in the + linked list of all selective VPATH lists or in the GENERAL_VPATH + variable. + + 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 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 + root, "/"). The length of the longest entry in the list is put in + the structure as well. The new entry will be at the head of the + VPATHS chain. */ + +void +construct_vpath_list (char *pattern, char *dirpath) +{ + unsigned int elem; + char *p; + const char **vpath; + size_t maxvpath; + unsigned int maxelem; + const char *percent = NULL; + + if (pattern != 0) + percent = find_percent (pattern); + + if (dirpath == 0) + { + /* Remove matching listings. */ + struct vpath *path, *lastpath; + + 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. */ + /* MSVC erroneously warns without a cast here. */ + free ((void *)path->searchpath); + free (path); + } + else + lastpath = path; + + path = next; + } + + return; + } + +#ifdef WINDOWS32 + convert_vpath_to_windows32 (dirpath, ';'); +#endif + + /* Skip over any initial separators and blanks. */ + while (STOP_SET (*dirpath, MAP_BLANK|MAP_PATHSEP)) + ++dirpath; + + /* Figure out the maximum number of VPATH entries and put it in + MAXELEM. We start with 2, one before the first separator and one + nil (the list terminator) and increment our estimated number for + each separator or blank we find. */ + maxelem = 2; + p = dirpath; + while (*p != '\0') + if (STOP_SET (*p++, MAP_BLANK|MAP_PATHSEP)) + ++maxelem; + + vpath = xmalloc (maxelem * sizeof (const char *)); + maxvpath = 0; + + elem = 0; + p = dirpath; + while (*p != '\0') + { + char *v; + size_t len; + + /* Find the end of this entry. */ + 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 && ISDIRSEP (p[1]))) +#else + && *p != PATH_SEPARATOR_CHAR +#endif + && !ISBLANK (*p)) + ++p; + + len = p - v; + /* Make sure there's no trailing slash, + 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; + + /* 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 (STOP_SET (*p, MAP_BLANK|MAP_PATHSEP)) + ++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. */ + if (elem < (maxelem - 1)) + vpath = xrealloc ((void *)vpath, (elem+1) * sizeof (const char *)); + + /* Put the nil-pointer terminator on the end of the VPATH list. */ + vpath[elem] = NULL; + + /* Construct the vpath structure and put it into the linked list. */ + path = xmalloc (sizeof (struct vpath)); + path->searchpath = vpath; + path->maxlen = maxvpath; + path->next = vpaths; + vpaths = path; + + /* Set up the members. */ + path->pattern = strcache_add (pattern); + path->patlen = strlen (pattern); + path->percent = percent ? path->pattern + (percent - pattern) : 0; + } + else + /* There were no entries, so free whatever space we allocated. */ + /* MSVC erroneously warns without a cast here. */ + free ((void *)vpath); +} + +/* Search the GPATH list for a pathname string that matches the one passed + in. If it is found, return 1. Otherwise we return 0. */ + +int +gpath_search (const char *file, size_t len) +{ + if (gpaths && (len <= gpaths->maxlen)) + { + const char **gp; + for (gp = gpaths->searchpath; *gp != NULL; ++gp) + if (strneq (*gp, file, len) && (*gp)[len] == '\0') + return 1; + } + + return 0; +} + + +/* Search the given VPATH list for a directory where the name pointed to by + FILE exists. If it is found, we return a cached name of the existing file + and set *MTIME_PTR (if MTIME_PTR is not NULL) to its modtime (or zero if no + stat call was done). Also set the matching directory index in PATH_INDEX + if it is not NULL. Otherwise we return NULL. */ + +static const char * +selective_vpath_search (struct vpath *path, const char *file, + FILE_TIMESTAMP *mtime_ptr, unsigned int* path_index) +{ + int not_target; + char *name; + const char *n; + const char *filename; + const char **vpath = path->searchpath; + size_t maxvpath = path->maxlen; + unsigned int i; + size_t flen, name_dplen; + int exists = 0; + + /* Find out if *FILE is a target. + If and only if it is NOT a target, we will accept prospective + files that don't exist but are mentioned in a makefile. */ + { + struct file *f = lookup_file (file); + not_target = f == 0 || !f->is_target; + } + + flen = strlen (file); + + /* Split *FILE into a directory prefix and a name-within-directory. + NAME_DPLEN gets the length of the prefix; FILENAME gets the pointer to + the name-within-directory and FLEN is its length. */ + + n = strrchr (file, '/'); +#ifdef HAVE_DOS_PATHS + /* We need the rightmost slash or backslash. */ + { + const char *bslash = strrchr (file, '\\'); + if (!n || bslash > n) + n = bslash; + } +#endif + name_dplen = n != 0 ? n - file : 0; + filename = name_dplen > 0 ? n + 1 : file; + if (name_dplen > 0) + flen -= name_dplen + 1; + + /* Get enough space for the biggest VPATH entry, a slash, the directory + prefix that came with FILE, another slash (although this one may not + always be necessary), the filename, and a null terminator. */ + name = alloca (maxvpath + 1 + name_dplen + 1 + flen + 1); + + /* Try each VPATH entry. */ + for (i = 0; vpath[i] != 0; ++i) + { + int exists_in_cache = 0; + char *p = name; + size_t vlen = strlen (vpath[i]); + + /* Put the next VPATH entry into NAME at P and increment P past it. */ + p = mempcpy (p, vpath[i], vlen); + + /* Add the directory prefix already in *FILE. */ + if (name_dplen > 0) + { +#ifndef VMS + *p++ = '/'; +#else + /* VMS: if this is not in VMS format, treat as Unix format */ + if ((*p != ':') && (*p != ']') && (*p != '>')) + *p++ = '/'; +#endif + p = mempcpy (p, file, name_dplen); + } + +#ifdef HAVE_DOS_PATHS + /* Cause the next if to treat backslash and slash alike. */ + if (p != name && 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); + } + else +#else + /* VMS use a slash if no directory terminator present */ + if (p != name && p[-1] != '/' && p[-1] != ':' && + p[-1] != '>' && p[-1] != ']') + { + *p = '/'; + memcpy (p + 1, filename, flen + 1); + } + else +#endif + 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. + + 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. + + Special handling for -W / -o: make sure we preserve the special + values here. Actually this whole thing is a little bogus: I think + we should ditch the name/hname thing and look into the renamed + capability that already exists for files: that is, have a new struct + file* entry for the VPATH-found file, and set the renamed field if + we use it. + */ + { + struct file *f = lookup_file (name); + if (f != 0) + { + exists = not_target || f->is_target; + if (exists && mtime_ptr + && (f->last_mtime == OLD_MTIME || f->last_mtime == NEW_MTIME)) + { + *mtime_ptr = f->last_mtime; + mtime_ptr = 0; + } + } + } + + if (!exists) + { + /* That file wasn't mentioned in the makefile. + See if it actually exists. */ + +#ifdef VMS + /* For VMS syntax just use the original vpath */ + if (*p != '/') + exists_in_cache = exists = dir_file_exists_p (vpath[i], filename); + else +#endif + { + /* 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); + } + } + + 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. */ + + struct stat st; + +#ifndef VMS + /* Put the slash back in NAME. */ + *p = '/'; +#else + /* If the slash was removed, put it back */ + if (*p == 0) + *p = '/'; +#endif + + if (exists_in_cache) /* Makefile-mentioned file need not exist. */ + { + int e; + + EINTRLOOP (e, stat (name, &st)); /* Does it really exist? */ + if (e != 0) + { + exists = 0; + continue; + } + + /* Store the modtime into *MTIME_PTR for the caller. */ + if (mtime_ptr != 0) + { + *mtime_ptr = FILE_TIMESTAMP_STAT_MODTIME (name, st); + mtime_ptr = 0; + } + } + + /* We have found a file. + If we get here and mtime_ptr hasn't been set, record + UNKNOWN_MTIME to indicate this. */ + if (mtime_ptr != 0) + *mtime_ptr = UNKNOWN_MTIME; + + /* Store the name we found and return it. */ + + if (path_index) + *path_index = i; + + return strcache_add_len (name, (p + 1 - name) + flen); + } + } + + return 0; +} + + +/* Search the VPATH list whose pattern matches FILE for a directory where FILE + exists. If it is found, return the cached name of an existing file, and + set *MTIME_PTR (if MTIME_PTR is not NULL) to its modtime (or zero if no + stat call was done). Also set the matching directory index in VPATH_INDEX + and PATH_INDEX if they are not NULL. Otherwise we return 0. */ + +const char * +vpath_search (const char *file, FILE_TIMESTAMP *mtime_ptr, + unsigned int* vpath_index, unsigned int* path_index) +{ + struct vpath *v; + + /* If there are no VPATH entries or FILENAME starts at the root, + there is nothing we can do. */ + + if (file[0] == '/' +#ifdef HAVE_DOS_PATHS + || file[0] == '\\' || file[1] == ':' +#endif + || (vpaths == 0 && general_vpath == 0)) + return 0; + + if (vpath_index) + { + *vpath_index = 0; + *path_index = 0; + } + + for (v = vpaths; v != 0; v = v->next) + { + if (pattern_matches (v->pattern, v->percent, file)) + { + const char *p = selective_vpath_search ( + v, file, mtime_ptr, path_index); + if (p) + return p; + } + + if (vpath_index) + ++*vpath_index; + } + + + if (general_vpath != 0) + { + const char *p = selective_vpath_search ( + general_vpath, file, mtime_ptr, path_index); + if (p) + return p; + } + + return 0; +} + + + + +/* Print the data base of VPATH search paths. */ + +void +print_vpath_data_base (void) +{ + unsigned int nvpaths; + struct vpath *v; + + puts (_("\n# VPATH Search Paths\n")); + + nvpaths = 0; + for (v = vpaths; v != 0; v = v->next) + { + unsigned int i; + + ++nvpaths; + + 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); + } + + if (vpaths == 0) + puts (_("# No 'vpath' search paths.")); + else + printf (_("\n# %u 'vpath' search paths.\n"), nvpaths); + + if (general_vpath == 0) + 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); + + for (i = 0; path[i] != 0; ++i) + printf ("%s%c", path[i], + path[i + 1] == 0 ? '\n' : PATH_SEPARATOR_CHAR); + } +} diff --git a/local/recipes/dev/gnu-make/source/src/w32/compat/dirent.c b/local/recipes/dev/gnu-make/source/src/w32/compat/dirent.c new file mode 100644 index 0000000000..e9cb1d2ff7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/compat/dirent.c @@ -0,0 +1,196 @@ +/* Directory entry code for Window platforms. +Copyright (C) 1996-2022 Free Software 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 . */ + + +#include +#include +#include +#include +#include +#include +#include "dirent.h" + +#ifndef __MINGW32__ +DIR* +opendir(const char* pDirName) +{ + struct stat sb; + DIR* pDir; + char* pEndDirName; + size_t nBufferLen; + + /* sanity checks */ + if (!pDirName) { + errno = EINVAL; + return NULL; + } + if (stat(pDirName, &sb) != 0) { + errno = ENOENT; + return NULL; + } + if ((sb.st_mode & S_IFMT) != S_IFDIR) { + errno = ENOTDIR; + return NULL; + } + + /* allocate a DIR structure to return */ + pDir = (DIR *) malloc(sizeof (DIR)); + + if (!pDir) + return NULL; + + /* input directory name length */ + nBufferLen = strlen(pDirName); + + /* copy input directory name to DIR buffer */ + strcpy(pDir->dir_pDirectoryName, pDirName); + + /* point to end of the copied directory name */ + pEndDirName = &pDir->dir_pDirectoryName[nBufferLen - 1]; + + /* if directory name did not end in '/' or '\', add '/' */ + if ((*pEndDirName != '/') && (*pEndDirName != '\\')) { + pEndDirName++; + *pEndDirName = '/'; + } + + /* now append the wildcard character to the buffer */ + pEndDirName++; + *pEndDirName = '*'; + pEndDirName++; + *pEndDirName = '\0'; + + /* other values defaulted */ + pDir->dir_nNumFiles = 0; + pDir->dir_hDirHandle = INVALID_HANDLE_VALUE; + pDir->dir_ulCookie = __DIRENT_COOKIE; + + return pDir; +} + +void +closedir(DIR *pDir) +{ + /* got a valid pointer? */ + if (!pDir) { + errno = EINVAL; + return; + } + + /* sanity check that this is a DIR pointer */ + if (pDir->dir_ulCookie != __DIRENT_COOKIE) { + errno = EINVAL; + return; + } + + /* close the WINDOWS32 directory handle */ + if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE) + FindClose(pDir->dir_hDirHandle); + + free(pDir); + + return; +} + +struct dirent * +readdir(DIR* pDir) +{ + WIN32_FIND_DATA wfdFindData; + + if (!pDir) { + errno = EINVAL; + return NULL; + } + + /* sanity check that this is a DIR pointer */ + if (pDir->dir_ulCookie != __DIRENT_COOKIE) { + errno = EINVAL; + return NULL; + } + + if (pDir->dir_nNumFiles == 0) { + pDir->dir_hDirHandle = FindFirstFile(pDir->dir_pDirectoryName, &wfdFindData); + if (pDir->dir_hDirHandle == INVALID_HANDLE_VALUE) + return NULL; + } else if (!FindNextFile(pDir->dir_hDirHandle, &wfdFindData)) + return NULL; + + /* bump count for next call to readdir() */ + pDir->dir_nNumFiles++; + + /* fill in struct dirent values */ + pDir->dir_sdReturn.d_ino = (ino_t)-1; + strcpy(pDir->dir_sdReturn.d_name, wfdFindData.cFileName); + + if (wfdFindData.dwFileAttributes & FILE_ATTRIBUTE_DEVICE) + pDir->dir_sdReturn.d_type = DT_CHR; + else if (wfdFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + pDir->dir_sdReturn.d_type = DT_DIR; + else + pDir->dir_sdReturn.d_type = DT_REG; + + return &pDir->dir_sdReturn; +} + +void +rewinddir(DIR* pDir) +{ + if (!pDir) { + errno = EINVAL; + return; + } + + /* sanity check that this is a DIR pointer */ + if (pDir->dir_ulCookie != __DIRENT_COOKIE) { + errno = EINVAL; + return; + } + + /* close the WINDOWS32 directory handle */ + if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE) + if (!FindClose(pDir->dir_hDirHandle)) + errno = EBADF; + + /* reset members which control readdir() */ + pDir->dir_hDirHandle = INVALID_HANDLE_VALUE; + pDir->dir_nNumFiles = 0; + + return; +} + +void +seekdir(DIR* pDir, long nPosition) +{ + if (!pDir) + return; + + /* sanity check that this is a DIR pointer */ + if (pDir->dir_ulCookie != __DIRENT_COOKIE) + return; + + /* go back to beginning of directory */ + rewinddir(pDir); + + /* loop until we have found position we care about */ + for (--nPosition; nPosition && readdir(pDir); nPosition--); + + /* flag invalid nPosition value */ + if (nPosition) + errno = EINVAL; + + return; +} +#endif /* !__MINGW32__ */ diff --git a/local/recipes/dev/gnu-make/source/src/w32/compat/posixfcn.c b/local/recipes/dev/gnu-make/source/src/w32/compat/posixfcn.c new file mode 100644 index 0000000000..f1013ae2bf --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/compat/posixfcn.c @@ -0,0 +1,151 @@ +/* Replacements for Posix functions and Posix functionality for MS-Windows. + +Copyright (C) 2013-2022 Free Software 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 . */ + +#include "makeint.h" + +#include +#include +#include +#include +#include + +#include "dlfcn.h" + +#include "job.h" + +#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 */ + + +/* MS runtime's isatty returns non-zero for any character device, + including the null device, which is not what we want. */ +int +isatty (int fd) +{ + HANDLE fh = (HANDLE) _get_osfhandle (fd); + DWORD con_mode; + + if (fh == INVALID_HANDLE_VALUE) + { + errno = EBADF; + return 0; + } + if (GetConsoleMode (fh, &con_mode)) + return 1; + + errno = ENOTTY; + return 0; +} + +char * +ttyname (int fd) +{ + /* This "knows" that Make only asks about stdout and stderr. A more + sophisticated implementation should test whether FD is open for + input or output. We can do that by looking at the mode returned + by GetConsoleMode. */ + return "CONOUT$"; +} diff --git a/local/recipes/dev/gnu-make/source/src/w32/include/dirent.h b/local/recipes/dev/gnu-make/source/src/w32/include/dirent.h new file mode 100644 index 0000000000..2712e51d96 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/include/dirent.h @@ -0,0 +1,84 @@ +/* Windows version of dirent.h +Copyright (C) 1996-2022 Free Software 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 . */ + +#ifndef _DIRENT_H +#define _DIRENT_H + +#ifdef __MINGW32__ +# include +# include_next +#else + +#include +#include +#include +#include + +#ifndef NAME_MAX +#define NAME_MAX 255 +#endif + +#define __DIRENT_COOKIE 0xfefeabab + +/* File types for `d_type'. + Windows only supports DT_CHR, DT_DIR, and DT_REG. */ +enum + { + DT_UNKNOWN = 0, +# define DT_UNKNOWN DT_UNKNOWN + DT_FIFO = 1, +# define DT_FIFO DT_FIFO + DT_CHR = 2, +# define DT_CHR DT_CHR + DT_DIR = 4, +# define DT_DIR DT_DIR + DT_BLK = 6, +# define DT_BLK DT_BLK + DT_REG = 8, +# define DT_REG DT_REG + DT_LNK = 10, +# define DT_LNK DT_LNK + DT_SOCK = 12, +# define DT_SOCK DT_SOCK + DT_WHT = 14 +# define DT_WHT DT_WHT + }; + + +struct dirent + { + ino_t d_ino; /* unused - no equivalent on WINDOWS32. */ + unsigned char d_type; + char d_name[NAME_MAX+1]; /* must come last due to dir.c assumptions. */ + }; + +typedef struct dir_struct + { + ULONG dir_ulCookie; + HANDLE dir_hDirHandle; + DWORD dir_nNumFiles; + char dir_pDirectoryName[NAME_MAX+1]; + struct dirent dir_sdReturn; + } DIR; + +DIR *opendir(const char *); +struct dirent *readdir(DIR *); +void rewinddir(DIR *); +void closedir(DIR *); +void seekdir(DIR *, long); + +#endif /* !__MINGW32__ */ +#endif diff --git a/local/recipes/dev/gnu-make/source/src/w32/include/dlfcn.h b/local/recipes/dev/gnu-make/source/src/w32/include/dlfcn.h new file mode 100644 index 0000000000..dc1d529702 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/include/dlfcn.h @@ -0,0 +1,29 @@ +/* dlfcn.h replacement for MS-Windows build. +Copyright (C) 2013-2022 Free Software 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 . */ + +#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/local/recipes/dev/gnu-make/source/src/w32/include/pathstuff.h b/local/recipes/dev/gnu-make/source/src/w32/include/pathstuff.h new file mode 100644 index 0000000000..374d8056a2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/include/pathstuff.h @@ -0,0 +1,25 @@ +/* Definitions for Windows path manipulation. +Copyright (C) 1996-2022 Free Software 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 . */ + +#ifndef _PATHSTUFF_H +#define _PATHSTUFF_H + +char *convert_Path_to_windows32(char *Path, char to_delim); +char *convert_vpath_to_windows32(char *Path, char to_delim); +char *w32ify(const char *file, int resolve); +char *getcwd_fs(char *buf, int len); + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/w32/include/sub_proc.h b/local/recipes/dev/gnu-make/source/src/w32/include/sub_proc.h new file mode 100644 index 0000000000..83f71f617e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/include/sub_proc.h @@ -0,0 +1,64 @@ +/* Definitions for Windows process invocation. +Copyright (C) 1996-2022 Free Software 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 . */ + +#ifndef SUB_PROC_H +#define SUB_PROC_H + +/* + * Component Name: + * + * $Date$ + * + * $Source$ + * + * $Id$ + */ + +#define EXTERN_DECL(entry, args) extern entry args +#define VOID_DECL void + +EXTERN_DECL(HANDLE process_init, (VOID_DECL)); +EXTERN_DECL(HANDLE process_init_fd, (HANDLE stdinh, HANDLE stdouth, + HANDLE stderrh)); +EXTERN_DECL(long process_begin, (HANDLE proc, char **argv, char **envp, + char *exec_path, char *as_user)); +EXTERN_DECL(long process_pipe_io, (HANDLE proc, char *stdin_data, + int stdin_data_len)); +EXTERN_DECL(long process_file_io, (HANDLE proc)); +EXTERN_DECL(void process_cleanup, (HANDLE proc)); +EXTERN_DECL(HANDLE process_wait_for_any, (int block, DWORD* pdwWaitStatus)); +EXTERN_DECL(void process_register, (HANDLE proc)); +EXTERN_DECL(HANDLE process_easy, (char** argv, char** env, + int outfd, int errfd)); +EXTERN_DECL(BOOL process_kill, (HANDLE proc, int signal)); +EXTERN_DECL(BOOL process_table_full, (VOID_DECL)); +EXTERN_DECL(int process_table_usable_size, (VOID_DECL)); +EXTERN_DECL(int process_table_actual_size, (VOID_DECL)); +EXTERN_DECL(DWORD process_set_handles, (HANDLE *handles)); +EXTERN_DECL(DWORD process_wait_for_multiple_objects, (DWORD, const HANDLE*, BOOL, DWORD)); + +/* support routines */ +EXTERN_DECL(long process_errno, (HANDLE proc)); +EXTERN_DECL(long process_last_err, (HANDLE proc)); +EXTERN_DECL(long process_exit_code, (HANDLE proc)); +EXTERN_DECL(long process_signal, (HANDLE proc)); +EXTERN_DECL(char * process_outbuf, (HANDLE proc)); +EXTERN_DECL(char * process_errbuf, (HANDLE proc)); +EXTERN_DECL(int process_outcnt, (HANDLE proc)); +EXTERN_DECL(int process_errcnt, (HANDLE proc)); +EXTERN_DECL(void process_pipes, (HANDLE proc, int pipes[3])); + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/w32/include/w32err.h b/local/recipes/dev/gnu-make/source/src/w32/include/w32err.h new file mode 100644 index 0000000000..d67e84bd3a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/include/w32err.h @@ -0,0 +1,26 @@ +/* Definitions for Windows error handling. +Copyright (C) 1996-2022 Free Software 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 . */ + +#ifndef _W32ERR_H_ +#define _W32ERR_H_ + +#ifndef EXTERN_DECL +#define EXTERN_DECL(entry, args) entry args +#endif + +EXTERN_DECL(const char * map_windows32_error_to_string, (DWORD error)); + +#endif /* !_W32ERR_H */ diff --git a/local/recipes/dev/gnu-make/source/src/w32/pathstuff.c b/local/recipes/dev/gnu-make/source/src/w32/pathstuff.c new file mode 100644 index 0000000000..38dbc2a3e3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/pathstuff.c @@ -0,0 +1,270 @@ +/* Path conversion for Windows pathnames. +Copyright (C) 1996-2022 Free Software 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 . */ + +#include "makeint.h" +#include +#include +#include "pathstuff.h" + +/* + * Convert delimiter separated vpath to Canonical format. + */ +char * +convert_vpath_to_windows32(char *Path, char to_delim) +{ + char *etok; /* token separator for old Path */ + + /* + * Convert all spaces to delimiters. Note that pathnames which + * contain blanks get trounced here. Use 8.3 format as a workaround. + */ + for (etok = Path; etok && *etok; etok++) + if (ISBLANK ((unsigned char) *etok)) + *etok = to_delim; + + return (convert_Path_to_windows32(Path, to_delim)); +} + +/* + * Convert delimiter separated path to Canonical format. + */ +char * +convert_Path_to_windows32(char *Path, char to_delim) +{ + char *etok; /* token separator for old Path */ + char *p; /* points to element of old Path */ + + /* is this a multi-element Path ? */ + /* FIXME: Perhaps use ":;\"" in strpbrk to convert all quotes to + delimiters as well, as a way to handle quoted directories in + PATH? */ + for (p = Path, etok = strpbrk(p, ":;"); + etok; + etok = strpbrk(p, ":;")) + if ((etok - p) == 1) { + if (*(etok - 1) == ';' || + *(etok - 1) == ':') { + etok[-1] = to_delim; + etok[0] = to_delim; + p = ++etok; + continue; /* ignore empty bucket */ + } else if (!isalpha ((unsigned char) *p)) { + /* found one to count, handle things like '.' */ + *etok = to_delim; + p = ++etok; + } else if ((*etok == ':') && ((etok = strpbrk(etok+1, ":;")) != NULL)) { + /* found one to count, handle drive letter */ + *etok = to_delim; + p = ++etok; + } else + /* all finished, force abort */ + p += strlen(p); + } else if (*p == '"') { /* a quoted directory */ + for (p++; *p && *p != '"'; p++) /* skip quoted part */ + ; + etok = strpbrk(p, ":;"); /* find next delimiter */ + if (etok) { + *etok = to_delim; + p = ++etok; + } else + p += strlen(p); + } else { + /* found another one, no drive letter */ + *etok = to_delim; + p = ++etok; + } + + return Path; +} + +/* + * Convert to forward slashes. Resolve to full pathname optionally + */ +char * +w32ify(const char *filename, int resolve) +{ + static char w32_path[FILENAME_MAX]; + char *p; + + if (resolve) + { + char *fp = _fullpath (NULL, filename, sizeof (w32_path)); + strncpy (w32_path, fp, sizeof (w32_path) - 1); + free (fp); + } + else + strncpy(w32_path, filename, sizeof (w32_path) - 1); + + for (p = w32_path; p && *p; p++) + if (*p == '\\') + *p = '/'; + + return w32_path; +} + +char * +getcwd_fs(char* buf, int len) +{ + char *p = getcwd(buf, len); + + if (p) { + char *q = w32ify(buf, 0); + strncpy(buf, q, len); + } + + return p; +} + +#ifdef unused +/* + * Convert delimiter separated pathnames (e.g. PATH) or single file pathname + * (e.g. c:/foo, c:\bar) to NutC format. If we are handed a string that + * _NutPathToNutc() fails to convert, just return the path we were handed + * and assume the caller will know what to do with it (It was probably + * a mistake to try and convert it anyway due to some of the bizarre things + * that might look like pathnames in makefiles). + */ +char * +convert_path_to_nutc(char *path) +{ + int count; /* count of path elements */ + char *nutc_path; /* new NutC path */ + int nutc_path_len; /* length of buffer to allocate for new path */ + char *pathp; /* pointer to nutc_path used to build it */ + char *etok; /* token separator for old path */ + char *p; /* points to element of old path */ + char sep; /* what flavor of separator used in old path */ + char *rval; + + /* is this a multi-element path ? */ + for (p = path, etok = strpbrk(p, ":;"), count = 0; + etok; + etok = strpbrk(p, ":;")) + if ((etok - p) == 1) { + if (*(etok - 1) == ';' || + *(etok - 1) == ':') { + p = ++etok; + continue; /* ignore empty bucket */ + } else if (etok = strpbrk(etok+1, ":;")) + /* found one to count, handle drive letter */ + p = ++etok, count++; + else + /* all finished, force abort */ + p += strlen(p); + } else + /* found another one, no drive letter */ + p = ++etok, count++; + + if (count) { + count++; /* x1;x2;x3 <- need to count x3 */ + + /* + * Hazard a guess on how big the buffer needs to be. + * We have to convert things like c:/foo to /c=/foo. + */ + nutc_path_len = strlen(path) + (count*2) + 1; + nutc_path = xmalloc(nutc_path_len); + pathp = nutc_path; + *pathp = '\0'; + + /* + * Loop through PATH and convert one element of the path at at + * a time. Single file pathnames will fail this and fall + * to the logic below loop. + */ + for (p = path, etok = strpbrk(p, ":;"); + etok; + etok = strpbrk(p, ":;")) { + + /* don't trip up on device specifiers or empty path slots */ + if ((etok - p) == 1) + if (*(etok - 1) == ';' || + *(etok - 1) == ':') { + p = ++etok; + continue; + } else if ((etok = strpbrk(etok+1, ":;")) == NULL) + break; /* thing found was a WINDOWS32 pathname */ + + /* save separator */ + sep = *etok; + + /* terminate the current path element -- temporarily */ + *etok = '\0'; + +#ifdef __NUTC__ + /* convert to NutC format */ + if (_NutPathToNutc(p, pathp, 0) == FALSE) { + free(nutc_path); + rval = savestring(path, strlen(path)); + return rval; + } +#else + *pathp++ = '/'; + *pathp++ = p[0]; + *pathp++ = '='; + *pathp++ = '/'; + strcpy(pathp, &p[2]); +#endif + + pathp += strlen(pathp); + *pathp++ = ':'; /* use Unix style path separtor for new path */ + *pathp = '\0'; /* make sure we are null terminaed */ + + /* restore path separator */ + *etok = sep; + + /* point p to first char of next path element */ + p = ++etok; + + } + } else { + nutc_path_len = strlen(path) + 3; + nutc_path = xmalloc(nutc_path_len); + pathp = nutc_path; + *pathp = '\0'; + p = path; + } + + /* + * OK, here we handle the last element in PATH (e.g. c of a;b;c) + * or the path was a single filename and will be converted + * here. Note, testing p here assures that we don't trip up + * on paths like a;b; which have trailing delimiter followed by + * nothing. + */ + if (*p != '\0') { +#ifdef __NUTC__ + if (_NutPathToNutc(p, pathp, 0) == FALSE) { + free(nutc_path); + rval = savestring(path, strlen(path)); + return rval; + } +#else + *pathp++ = '/'; + *pathp++ = p[0]; + *pathp++ = '='; + *pathp++ = '/'; + strcpy(pathp, &p[2]); +#endif + } else + *(pathp-1) = '\0'; /* we're already done, don't leave trailing : */ + + rval = savestring(nutc_path, strlen(nutc_path)); + free(nutc_path); + return rval; +} + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/w32/subproc/misc.c b/local/recipes/dev/gnu-make/source/src/w32/subproc/misc.c new file mode 100644 index 0000000000..c611e090cf --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/subproc/misc.c @@ -0,0 +1,83 @@ +/* Process handling for Windows +Copyright (C) 1996-2022 Free Software 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 . */ + +#include +#include +#include +#include +#include +#include "proc.h" + + +/* + * Description: Convert a NULL string terminated UNIX environment block to + * an environment block suitable for a windows32 system call + * + * Returns: TRUE= success, FALSE=fail + * + * Notes/Dependencies: the environment block is sorted in case-insensitive + * order, is double-null terminated, and is a char *, not a char ** + */ +int _cdecl compare(const void *a1, const void *a2) +{ + return _stricoll(*((char**)a1),*((char**)a2)); +} +bool_t +arr2envblk(char **arr, char **envblk_out, size_t *envsize_needed) +{ + char **tmp; + size_t size_needed; + int arrcnt; + char *ptr; + + arrcnt = 0; + while (arr[arrcnt]) { + arrcnt++; + } + + tmp = (char**) calloc(arrcnt + 1, sizeof(char *)); + if (!tmp) { + return FALSE; + } + + arrcnt = 0; + size_needed = *envsize_needed = 0; + while (arr[arrcnt]) { + tmp[arrcnt] = arr[arrcnt]; + size_needed += strlen(arr[arrcnt]) + 1; + arrcnt++; + } + size_needed++; + *envsize_needed = size_needed; + + qsort((void *) tmp, (size_t) arrcnt, sizeof (char*), compare); + + ptr = *envblk_out = calloc(size_needed, 1); + if (!ptr) { + free(tmp); + return FALSE; + } + + arrcnt = 0; + while (tmp[arrcnt]) { + strcpy(ptr, tmp[arrcnt]); + ptr += strlen(tmp[arrcnt]) + 1; + arrcnt++; + } + + free(tmp); + return TRUE; +} diff --git a/local/recipes/dev/gnu-make/source/src/w32/subproc/proc.h b/local/recipes/dev/gnu-make/source/src/w32/subproc/proc.h new file mode 100644 index 0000000000..4133813ca8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/subproc/proc.h @@ -0,0 +1,29 @@ +/* Definitions for Windows +Copyright (C) 1996-2022 Free Software 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 . */ + +#ifndef _PROC_H +#define _PROC_H + +typedef int bool_t; + +#define E_SCALL 101 +#define E_IO 102 +#define E_NO_MEM 103 +#define E_FORK 104 + +extern bool_t arr2envblk(char **arr, char **envblk_out, size_t *envsize_needed); + +#endif diff --git a/local/recipes/dev/gnu-make/source/src/w32/subproc/sub_proc.c b/local/recipes/dev/gnu-make/source/src/w32/subproc/sub_proc.c new file mode 100644 index 0000000000..501afc3e6e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/subproc/sub_proc.c @@ -0,0 +1,1564 @@ +/* Process handling for Windows. +Copyright (C) 1996-2022 Free Software 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 . */ + +#include "makeint.h" + +#include +#include +#include +#include /* for _get_osfhandle */ +#ifdef _MSC_VER +# include /* for intptr_t */ +#else +# include +#endif +#include +#include /* for msvc _beginthreadex, _endthreadex */ +#include +#include + +#include "filedef.h" +#include "variable.h" +#include "sub_proc.h" +#include "proc.h" +#include "w32err.h" +#include "debug.h" +#include "os.h" + +#define GMAKE_MAXIMUM_WAIT_OBJECTS (MAXIMUM_WAIT_OBJECTS * MAXIMUM_WAIT_OBJECTS) + +/* We need to move these special-case return codes out-of-band */ +#define GMAKE_WAIT_TIMEOUT 0xFFFF0102L +#define GMAKE_WAIT_ABANDONED_0 0x00080000L + +static char *make_command_line(char *shell_name, char *exec_path, char **argv); + +typedef struct sub_process_t { + intptr_t sv_stdin[2]; + intptr_t sv_stdout[2]; + intptr_t sv_stderr[2]; + int using_pipes; + char *inp; + DWORD incnt; + char * volatile outp; + volatile DWORD outcnt; + char * volatile errp; + volatile DWORD errcnt; + pid_t pid; + int exit_code; + int signal; + long last_err; + long lerrno; +} sub_process; + +/* keep track of children so we can implement a waitpid-like routine */ +static sub_process *proc_array[GMAKE_MAXIMUM_WAIT_OBJECTS]; +static unsigned int proc_index = 0; +static unsigned int fake_exits_pending = 0; + +/* + * Address the scalability limit intrisic to WaitForMultipleOjects by + * calling WaitForMultipleObjects on 64 element chunks of the input + * array with 0 timeout. Exit with an appropriately conditioned result + * or repeat again every 10 ms if no handle has signaled and the + * requested timeout was not zero. + */ +DWORD process_wait_for_multiple_objects( + DWORD nCount, + const HANDLE *lpHandles, + BOOL bWaitAll, + DWORD dwMilliseconds +) +{ + assert(nCount <= GMAKE_MAXIMUM_WAIT_OBJECTS); + + if (nCount <= MAXIMUM_WAIT_OBJECTS) { + DWORD retVal = WaitForMultipleObjects(nCount, lpHandles, bWaitAll, dwMilliseconds); + return (retVal == WAIT_TIMEOUT) ? GMAKE_WAIT_TIMEOUT : retVal; + } else { + for (;;) { + DWORD objectCount = nCount; + int blockCount = 0; + DWORD retVal = 0; + + assert(bWaitAll == FALSE); /* This logic only works for this use case */ + assert(dwMilliseconds == 0 || dwMilliseconds == INFINITE); /* No support for timeouts */ + + for (; objectCount > 0; blockCount++) { + DWORD n = objectCount <= MAXIMUM_WAIT_OBJECTS ? objectCount : MAXIMUM_WAIT_OBJECTS; + objectCount -= n; + retVal = WaitForMultipleObjects(n, &lpHandles[blockCount * MAXIMUM_WAIT_OBJECTS], + FALSE, 0); + switch (retVal) { + case WAIT_TIMEOUT: + retVal = GMAKE_WAIT_TIMEOUT; + continue; + break; + case WAIT_FAILED: + fprintf(stderr,"WaitForMultipleOjbects failed waiting with error %lu\n", GetLastError()); + break; + default: + if (retVal >= WAIT_ABANDONED_0) { + assert(retVal < WAIT_ABANDONED_0 + MAXIMUM_WAIT_OBJECTS); + retVal += blockCount * MAXIMUM_WAIT_OBJECTS - WAIT_ABANDONED_0 + GMAKE_WAIT_ABANDONED_0; + } else { + assert(retVal < WAIT_OBJECT_0 + MAXIMUM_WAIT_OBJECTS); + retVal += blockCount * MAXIMUM_WAIT_OBJECTS; + } + break; + } + + return retVal; + + } + + if (dwMilliseconds == 0) return retVal; + + Sleep(10); /* Sleep for 10 ms */ + } + } +} + +/* + * Fill a HANDLE list with handles to wait for. + */ +DWORD +process_set_handles(HANDLE *handles) +{ + DWORD count = 0; + unsigned int i; + + /* 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[count++] = (HANDLE) proc_array[i]->pid; + } + + return count; +} + +/* + * When a process has been waited for, adjust the wait state + * array so that we don't wait for it again + */ +static void +process_adjust_wait_state(sub_process* pproc) +{ + unsigned int i; + + if (!proc_index) + return; + + for (i = 0; i < proc_index; i++) + if (proc_array[i]->pid == pproc->pid) + break; + + if (i < proc_index) { + proc_index--; + if (i != proc_index) + memmove(&proc_array[i], &proc_array[i+1], + (proc_index-i) * sizeof(sub_process*)); + proc_array[proc_index] = NULL; + } +} + +/* + * Waits for any of the registered child processes to finish. + */ +static sub_process * +process_wait_for_any_private(int block, DWORD* pdwWaitStatus) +{ + HANDLE handles[GMAKE_MAXIMUM_WAIT_OBJECTS]; + DWORD retval, which; + unsigned int i; + + if (!proc_index) + return NULL; + + /* build array of handles to wait for */ + for (i = 0; i < proc_index; i++) { + handles[i] = (HANDLE) proc_array[i]->pid; + + if (fake_exits_pending && proc_array[i]->exit_code) + break; + } + + /* wait for someone to exit */ + if (!fake_exits_pending) { + retval = process_wait_for_multiple_objects(proc_index, handles, FALSE, (block ? INFINITE : 0)); + which = retval - WAIT_OBJECT_0; + } else { + fake_exits_pending--; + retval = !WAIT_FAILED; + which = i; + } + + /* If the pointer is not NULL, set the wait status result variable. */ + if (pdwWaitStatus) + *pdwWaitStatus = (retval == GMAKE_WAIT_TIMEOUT) ? WAIT_TIMEOUT : retval; + + /* return pointer to process */ + if ((retval == GMAKE_WAIT_TIMEOUT) || (retval == WAIT_FAILED)) { + return NULL; + } + else { + sub_process* pproc = proc_array[which]; + process_adjust_wait_state(pproc); + return pproc; + } +} + +/* + * Terminate a process. + */ +BOOL +process_kill(HANDLE proc, int signal) +{ + sub_process* pproc = (sub_process*) proc; + pproc->signal = signal; + return (TerminateProcess((HANDLE) pproc->pid, signal)); +} + +/* + * Returns true when we have no more available slots in our process table. + */ +BOOL +process_table_full() +{ + extern int shell_function_pid; + + /* Reserve slots for jobserver_semaphore if we have one and the shell function if not active */ + return(proc_index >= GMAKE_MAXIMUM_WAIT_OBJECTS - jobserver_enabled() - (shell_function_pid == 0)); +} + +/* + * Returns the maximum number of job slots we can support when using the jobserver. + */ +int +process_table_usable_size() +{ + /* Reserve slots for jobserver_semaphore and shell function */ + return(GMAKE_MAXIMUM_WAIT_OBJECTS - 2); +} + +/* + * Returns the actual size of the process table. + */ +int +process_table_actual_size() +{ + return(GMAKE_MAXIMUM_WAIT_OBJECTS); +} + +/* + * Use this function to register processes you wish to wait for by + * calling process_file_io(NULL) or process_wait_any(). This must be done + * because it is possible for callers of this library to reuse the same + * handle for multiple processes launches :-( + */ +void +process_register(HANDLE proc) +{ + assert(proc_index < GMAKE_MAXIMUM_WAIT_OBJECTS); + proc_array[proc_index++] = (sub_process *) proc; +} + +/* + * Public function which works kind of like waitpid(). Wait for any + * of the children to die and return results. To call this function, + * you must do 1 of things: + * + * x = process_easy(...); + * + * or + * + * x = process_init_fd(); + * process_register(x); + * + * or + * + * x = process_init(); + * process_register(x); + * + * You must NOT then call process_pipe_io() because this function is + * not capable of handling automatic notification of any child + * death. + */ + +HANDLE +process_wait_for_any(int block, DWORD* pdwWaitStatus) +{ + sub_process* pproc = process_wait_for_any_private(block, pdwWaitStatus); + + if (!pproc) + return NULL; + else { + /* + * Ouch! can't tell caller if this fails directly. Caller + * will have to use process_last_err() + */ + (void) process_file_io(pproc); + return ((HANDLE) pproc); + } +} + +long +process_signal(HANDLE proc) +{ + if (proc == INVALID_HANDLE_VALUE) return 0; + return (((sub_process *)proc)->signal); +} + +long +process_last_err(HANDLE proc) +{ + if (proc == INVALID_HANDLE_VALUE) return ERROR_INVALID_HANDLE; + return (((sub_process *)proc)->last_err); +} + +long +process_exit_code(HANDLE proc) +{ + if (proc == INVALID_HANDLE_VALUE) return EXIT_FAILURE; + return (((sub_process *)proc)->exit_code); +} + +/* +2006-02: +All the following functions are currently unused. +All of them would crash gmake if called with argument INVALID_HANDLE_VALUE. +Hence whoever wants to use one of this functions must invent and implement +a reasonable error handling for this function. + +char * +process_outbuf(HANDLE proc) +{ + return (((sub_process *)proc)->outp); +} + +char * +process_errbuf(HANDLE proc) +{ + return (((sub_process *)proc)->errp); +} + +int +process_outcnt(HANDLE proc) +{ + return (((sub_process *)proc)->outcnt); +} + +int +process_errcnt(HANDLE proc) +{ + return (((sub_process *)proc)->errcnt); +} + +void +process_pipes(HANDLE proc, int pipes[3]) +{ + pipes[0] = ((sub_process *)proc)->sv_stdin[0]; + pipes[1] = ((sub_process *)proc)->sv_stdout[0]; + pipes[2] = ((sub_process *)proc)->sv_stderr[0]; + return; +} +*/ + + HANDLE +process_init() +{ + sub_process *pproc; + /* + * open file descriptors for attaching stdin/stdout/sterr + */ + HANDLE stdin_pipes[2]; + HANDLE stdout_pipes[2]; + HANDLE stderr_pipes[2]; + SECURITY_ATTRIBUTES inherit; + BYTE sd[SECURITY_DESCRIPTOR_MIN_LENGTH]; + + pproc = malloc(sizeof(*pproc)); + memset(pproc, 0, sizeof(*pproc)); + + /* We can't use NULL for lpSecurityDescriptor because that + uses the default security descriptor of the calling process. + Instead we use a security descriptor with no DACL. This + allows nonrestricted access to the associated objects. */ + + if (!InitializeSecurityDescriptor((PSECURITY_DESCRIPTOR)(&sd), + SECURITY_DESCRIPTOR_REVISION)) { + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + return((HANDLE)pproc); + } + + inherit.nLength = sizeof(inherit); + inherit.lpSecurityDescriptor = (PSECURITY_DESCRIPTOR)(&sd); + inherit.bInheritHandle = TRUE; + + /* By convention, parent gets pipe[0], and child gets pipe[1]. + This means the READ side of stdin pipe goes into pipe[1] and the + WRITE side of the stdout and stderr pipes go into pipe[1]. */ + if (CreatePipe( &stdin_pipes[1], &stdin_pipes[0], &inherit, 0) == FALSE || + CreatePipe( &stdout_pipes[0], &stdout_pipes[1], &inherit, 0) == FALSE || + CreatePipe( &stderr_pipes[0], &stderr_pipes[1], &inherit, 0) == FALSE) { + + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + return((HANDLE)pproc); + } + + /* Mark the parent sides of the pipes as non-inheritable. */ + if (SetHandleInformation(stdin_pipes[0], + HANDLE_FLAG_INHERIT, 0) == FALSE || + SetHandleInformation(stdout_pipes[0], + HANDLE_FLAG_INHERIT, 0) == FALSE || + SetHandleInformation(stderr_pipes[0], + HANDLE_FLAG_INHERIT, 0) == FALSE) { + + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + return((HANDLE)pproc); + } + pproc->sv_stdin[0] = (intptr_t) stdin_pipes[0]; + pproc->sv_stdin[1] = (intptr_t) stdin_pipes[1]; + pproc->sv_stdout[0] = (intptr_t) stdout_pipes[0]; + pproc->sv_stdout[1] = (intptr_t) stdout_pipes[1]; + pproc->sv_stderr[0] = (intptr_t) stderr_pipes[0]; + pproc->sv_stderr[1] = (intptr_t) stderr_pipes[1]; + + pproc->using_pipes = 1; + + pproc->lerrno = 0; + + return((HANDLE)pproc); +} + + + HANDLE +process_init_fd(HANDLE stdinh, HANDLE stdouth, HANDLE stderrh) +{ + sub_process *pproc; + + pproc = malloc(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; + + pproc->last_err = pproc->lerrno = 0; + } + + return((HANDLE)pproc); +} + + +static HANDLE +find_file(const char *exec_path, const char *path_var, + char *full_fname, DWORD full_len) +{ + HANDLE exec_handle; + char *fname; + char *ext; + DWORD req_len; + int i; + static const char *extensions[] = + /* Should .com come before no-extension case? */ + { ".exe", ".cmd", ".bat", "", ".com", NULL }; + + fname = xmalloc(strlen(exec_path) + 5); + strcpy(fname, exec_path); + ext = fname + strlen(fname); + + for (i = 0; extensions[i]; i++) { + strcpy(ext, extensions[i]); + if (((req_len = SearchPath (path_var, fname, NULL, full_len, + full_fname, NULL)) > 0 + /* For compatibility with previous code, which + used OpenFile, and with Windows operation in + general, also look in various default + locations, such as Windows directory and + Windows System directory. Warning: this also + searches PATH in the Make's environment, which + might not be what the Makefile wants, but it + seems to be OK as a fallback, after the + previous SearchPath failed to find on child's + PATH. */ + || (req_len = SearchPath (NULL, fname, NULL, full_len, + full_fname, NULL)) > 0) + && req_len <= full_len + && (exec_handle = + CreateFile(full_fname, + GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL)) != INVALID_HANDLE_VALUE) { + free(fname); + return(exec_handle); + } + } + + free(fname); + return 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 + * + * Returns: success <=> 0 + * + * Notes/Dependencies: + */ +long +process_begin( + HANDLE proc, + char **argv, + char **envp, + char *exec_path, + char *as_user) +{ + sub_process *pproc = (sub_process *)proc; + char *shell_name = 0; + int file_not_found=0; + HANDLE exec_handle; + char exec_fname[MAX_PATH]; + const char *path_var = NULL; + char **ep; + char buf[MAX_PATH]; + DWORD bytes_returned; + DWORD flags; + char *command_line; + STARTUPINFO startInfo; + PROCESS_INFORMATION procInfo; + char *envblk=NULL; + size_t envsize_needed = 0; + int pass_null_exec_path = 0; + + /* + * Shell script detection... if the exec_path starts with #! then + * we want to exec shell-script-name exec-path, not just exec-path + * NT doesn't recognize #!/bin/sh or #!/etc/Tivoli/bin/perl. We do not + * hard-code the path to the shell or perl or whatever: Instead, we + * assume it's in the path somewhere (generally, the NT tools + * bin directory) + */ + + /* Use the Makefile's value of PATH to look for the program to + execute, because it could be different from Make's PATH + (e.g., if the target sets its own value. */ + if (envp) + for (ep = envp; *ep; ep++) { + if (strncmp (*ep, "PATH=", 5) == 0 + || strncmp (*ep, "Path=", 5) == 0) { + path_var = *ep + 5; + break; + } + } + exec_handle = find_file(exec_path, path_var, + exec_fname, sizeof(exec_fname)); + + /* + * If we couldn't open the file, just assume that Windows will be + * somehow able to find and execute it. If the first character + * of the command is '/', assume they set SHELL to a Unixy shell + * that have some magic mounts known only to it, and run the whole + * command via $SHELL -c "COMMAND" instead. + */ + if (exec_handle == INVALID_HANDLE_VALUE) { + if (exec_path[0] == '/') { + char *new_argv0; + char **argvi = argv; + size_t arglen = 0; + + strcpy(buf, variable_expand ("$(SHELL)")); + shell_name = &buf[0]; + strcpy(exec_fname, "-c"); + /* Construct a single command string in argv[0]. */ + while (*argvi) { + arglen += strlen(*argvi) + 1; + argvi++; + } + new_argv0 = xmalloc(arglen + 1); + new_argv0[0] = '\0'; + for (argvi = argv; *argvi; argvi++) { + strcat(new_argv0, *argvi); + strcat(new_argv0, " "); + } + /* Remove the extra blank at the end. */ + new_argv0[arglen-1] = '\0'; + free(argv[0]); + argv[0] = new_argv0; + argv[1] = NULL; + } + else + file_not_found++; + } + else { + /* Attempt to read the first line of the file */ + if (ReadFile( exec_handle, + buf, sizeof(buf) - 1, /* leave room for trailing NULL */ + &bytes_returned, 0) == FALSE || bytes_returned < 2) { + + pproc->last_err = GetLastError(); + pproc->lerrno = E_IO; + CloseHandle(exec_handle); + return(-1); + } + if (buf[0] == '#' && buf[1] == '!') { + /* + * This is a shell script... Change the command line from + * exec_path args to shell_name exec_path args + */ + char *p; + + /* Make sure buf is NULL terminated */ + buf[bytes_returned] = 0; + /* + * Depending on the file system type, etc. the first line + * of the shell script may end with newline or newline-carriage-return + * Whatever it ends with, cut it off. + */ + p= strchr(buf, '\n'); + if (p) + *p = 0; + p = strchr(buf, '\r'); + if (p) + *p = 0; + + /* + * Find base name of shell + */ + shell_name = strrchr( buf, '/'); + if (shell_name) { + shell_name++; + } else { + shell_name = &buf[2];/* skipping "#!" */ + } + + } + CloseHandle(exec_handle); + } + + flags = 0; + + if (file_not_found) + command_line = make_command_line( shell_name, exec_path, argv); + 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) { + char *new_argv, *p; + char **argvi; + size_t arglen; + int i; + pass_null_exec_path = 1; + /* Rewrite argv[] replacing argv[0] with exec_fname. */ + for (argvi = argv + 1, arglen = strlen(exec_fname) + 1; + *argvi; + argvi++) { + arglen += strlen(*argvi) + 1; + } + new_argv = xmalloc(arglen); + p = strcpy(new_argv, exec_fname) + strlen(exec_fname) + 1; + for (argvi = argv + 1, i = 1; *argvi; argvi++, i++) { + strcpy(p, *argvi); + argv[i] = p; + p += strlen(*argvi) + 1; + } + argv[i] = NULL; + free (argv[0]); + argv[0] = new_argv; + } + command_line = make_command_line( shell_name, exec_fname, argv); + } + + if ( command_line == NULL ) { + pproc->last_err = 0; + pproc->lerrno = E_NO_MEM; + return(-1); + } + + if (envp) { + if (arr2envblk(envp, &envblk, &envsize_needed) == FALSE) { + pproc->lerrno = E_NO_MEM; + free( command_line ); + if ((pproc->last_err == ERROR_INVALID_PARAMETER + || pproc->last_err == ERROR_MORE_DATA) + && envsize_needed > 32*1024) { + fprintf (stderr, "CreateProcess failed, probably because environment is too large (%Iu bytes).\n", + envsize_needed); + } + pproc->last_err = 0; + return(-1); + } + } + + if (shell_name || file_not_found || pass_null_exec_path) { + exec_path = 0; /* Search for the program in %Path% */ + } else { + exec_path = exec_fname; + } + + /* + * Set up inherited stdin, stdout, stderr for child + */ + memset(&startInfo, '\0', sizeof(startInfo)); + GetStartupInfo(&startInfo); + startInfo.dwFlags = STARTF_USESTDHANDLES; + startInfo.lpReserved = 0; + startInfo.cbReserved2 = 0; + startInfo.lpReserved2 = 0; + startInfo.hStdInput = (HANDLE)pproc->sv_stdin[1]; + startInfo.hStdOutput = (HANDLE)pproc->sv_stdout[1]; + startInfo.hStdError = (HANDLE)pproc->sv_stderr[1]; + + if (as_user) { + free(envblk); + return -1; + } else { + DB (DB_JOBS, ("CreateProcess(%s,%s,...)\n", + exec_path ? exec_path : "NULL", + command_line ? command_line : "NULL")); + if (CreateProcess( + exec_path, + command_line, + NULL, + 0, /* default security attributes for thread */ + TRUE, /* inherit handles (e.g. helper pipes, oserv socket) */ + flags, + envblk, + 0, /* default starting directory */ + &startInfo, + &procInfo) == FALSE) { + + pproc->last_err = GetLastError(); + pproc->lerrno = E_FORK; + fprintf(stderr, "process_begin: CreateProcess(%s, %s, ...) failed.\n", + exec_path ? exec_path : "NULL", command_line); + free(envblk); + free( command_line ); + return(-1); + } + } + + pproc->pid = (pid_t)procInfo.hProcess; + /* Close the thread handle -- we'll just watch the process */ + CloseHandle(procInfo.hThread); + + /* Close the halves of the pipes we don't need */ + 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; + + free( command_line ); + free(envblk); + pproc->lerrno=0; + return 0; +} + + + +#if 0 /* unused */ +static DWORD +proc_stdin_thread(sub_process *pproc) +{ + DWORD in_done; + for (;;) { + if (WriteFile( (HANDLE) pproc->sv_stdin[0], pproc->inp, pproc->incnt, + &in_done, NULL) == FALSE) + _endthreadex(0); + /* This if should never be true for anonymous pipes, but gives + us a chance to change I/O mechanisms later. */ + if (in_done < pproc->incnt) { + pproc->incnt -= in_done; + pproc->inp += in_done; + } else { + _endthreadex(0); + } + } + return 0; /* for compiler warnings only.. not reached. */ +} + +static DWORD +proc_stdout_thread(sub_process *pproc) +{ + DWORD bufsize = 1024; + char c; + DWORD nread; + pproc->outp = malloc(bufsize); + if (pproc->outp == NULL) + _endthreadex(0); + pproc->outcnt = 0; + + for (;;) { + if (ReadFile( (HANDLE)pproc->sv_stdout[0], &c, 1, &nread, NULL) + == FALSE) { +/* map_windows32_error_to_string(GetLastError());*/ + _endthreadex(0); + } + if (nread == 0) + _endthreadex(0); + if (pproc->outcnt + nread > bufsize) { + bufsize += nread + 512; + pproc->outp = realloc(pproc->outp, bufsize); + if (pproc->outp == NULL) { + pproc->outcnt = 0; + _endthreadex(0); + } + } + pproc->outp[pproc->outcnt++] = c; + } + return 0; +} + +static DWORD +proc_stderr_thread(sub_process *pproc) +{ + DWORD bufsize = 1024; + char c; + DWORD nread; + pproc->errp = malloc(bufsize); + if (pproc->errp == NULL) + _endthreadex(0); + pproc->errcnt = 0; + + for (;;) { + if (ReadFile( (HANDLE)pproc->sv_stderr[0], &c, 1, &nread, NULL) == FALSE) { + map_windows32_error_to_string(GetLastError()); + _endthreadex(0); + } + if (nread == 0) + _endthreadex(0); + if (pproc->errcnt + nread > bufsize) { + bufsize += nread + 512; + pproc->errp = realloc(pproc->errp, bufsize); + if (pproc->errp == NULL) { + pproc->errcnt = 0; + _endthreadex(0); + } + } + pproc->errp[pproc->errcnt++] = c; + } + return 0; +} + + +/* + * Purpose: collects output from child process and returns results + * + * Description: + * + * Returns: + * + * Notes/Dependencies: + */ + long +process_pipe_io( + HANDLE proc, + char *stdin_data, + int stdin_data_len) +{ + sub_process *pproc = (sub_process *)proc; + bool_t stdin_eof = FALSE, stdout_eof = FALSE, stderr_eof = FALSE; + HANDLE childhand = (HANDLE) pproc->pid; + HANDLE tStdin = NULL, tStdout = NULL, tStderr = NULL; + unsigned int dwStdin, dwStdout, dwStderr; + HANDLE wait_list[4]; + DWORD wait_count; + DWORD wait_return; + HANDLE ready_hand; + bool_t child_dead = FALSE; + BOOL GetExitCodeResult; + + /* + * Create stdin thread, if needed + */ + pproc->inp = stdin_data; + pproc->incnt = stdin_data_len; + if (!pproc->inp) { + stdin_eof = TRUE; + CloseHandle((HANDLE)pproc->sv_stdin[0]); + pproc->sv_stdin[0] = 0; + } else { + tStdin = (HANDLE) _beginthreadex( 0, 1024, + (unsigned (__stdcall *) (void *))proc_stdin_thread, + pproc, 0, &dwStdin); + if (tStdin == 0) { + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + goto done; + } + } + + /* + * Assume child will produce stdout and stderr + */ + tStdout = (HANDLE) _beginthreadex( 0, 1024, + (unsigned (__stdcall *) (void *))proc_stdout_thread, pproc, 0, + &dwStdout); + tStderr = (HANDLE) _beginthreadex( 0, 1024, + (unsigned (__stdcall *) (void *))proc_stderr_thread, pproc, 0, + &dwStderr); + + if (tStdout == 0 || tStderr == 0) { + + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + goto done; + } + + + /* + * Wait for all I/O to finish and for the child process to exit + */ + + while (!stdin_eof || !stdout_eof || !stderr_eof || !child_dead) { + wait_count = 0; + if (!stdin_eof) { + wait_list[wait_count++] = tStdin; + } + if (!stdout_eof) { + wait_list[wait_count++] = tStdout; + } + if (!stderr_eof) { + wait_list[wait_count++] = tStderr; + } + if (!child_dead) { + wait_list[wait_count++] = childhand; + } + + wait_return = WaitForMultipleObjects(wait_count, wait_list, + FALSE, /* don't wait for all: one ready will do */ + child_dead? 1000 :INFINITE); /* after the child dies, subthreads have + one second to collect all remaining output */ + + if (wait_return == WAIT_FAILED) { +/* map_windows32_error_to_string(GetLastError());*/ + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + goto done; + } + + ready_hand = wait_list[wait_return - WAIT_OBJECT_0]; + + if (ready_hand == tStdin) { + CloseHandle((HANDLE)pproc->sv_stdin[0]); + pproc->sv_stdin[0] = 0; + CloseHandle(tStdin); + tStdin = 0; + stdin_eof = TRUE; + + } else if (ready_hand == tStdout) { + + CloseHandle((HANDLE)pproc->sv_stdout[0]); + pproc->sv_stdout[0] = 0; + CloseHandle(tStdout); + tStdout = 0; + stdout_eof = TRUE; + + } else if (ready_hand == tStderr) { + + CloseHandle((HANDLE)pproc->sv_stderr[0]); + pproc->sv_stderr[0] = 0; + CloseHandle(tStderr); + tStderr = 0; + stderr_eof = TRUE; + + } else if (ready_hand == childhand) { + + DWORD ierr; + GetExitCodeResult = GetExitCodeProcess(childhand, &ierr); + if (ierr == CONTROL_C_EXIT) { + pproc->signal = SIGINT; + } else { + pproc->exit_code = ierr; + } + if (GetExitCodeResult == FALSE) { + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + goto done; + } + child_dead = TRUE; + + } else { + + /* ?? Got back a handle we didn't query ?? */ + pproc->last_err = 0; + pproc->lerrno = E_FAIL; + goto done; + } + } + + done: + if (tStdin != 0) + CloseHandle(tStdin); + if (tStdout != 0) + CloseHandle(tStdout); + if (tStderr != 0) + CloseHandle(tStderr); + + if (pproc->lerrno) + return(-1); + else + return(0); + +} +#endif /* unused */ + +/* + * Purpose: collects output from child process and returns results + * + * Description: + * + * Returns: + * + * Notes/Dependencies: + */ + long +process_file_io( + HANDLE proc) +{ + sub_process *pproc; + HANDLE childhand; + DWORD wait_return; + BOOL GetExitCodeResult; + DWORD ierr; + + if (proc == NULL) + pproc = process_wait_for_any_private(1, 0); + else + pproc = (sub_process *)proc; + + /* some sort of internal error */ + if (!pproc) + return -1; + + childhand = (HANDLE) pproc->pid; + + /* + * This function is poorly named, and could also be used just to wait + * for child death if you're doing your own pipe I/O. If that is + * the case, close the pipe handles here. + */ + if (pproc->sv_stdin[0]) { + CloseHandle((HANDLE)pproc->sv_stdin[0]); + pproc->sv_stdin[0] = 0; + } + if (pproc->sv_stdout[0]) { + CloseHandle((HANDLE)pproc->sv_stdout[0]); + pproc->sv_stdout[0] = 0; + } + if (pproc->sv_stderr[0]) { + CloseHandle((HANDLE)pproc->sv_stderr[0]); + pproc->sv_stderr[0] = 0; + } + + /* + * Wait for the child process to exit + */ + + wait_return = WaitForSingleObject(childhand, INFINITE); + + if (wait_return != WAIT_OBJECT_0) { +/* map_windows32_error_to_string(GetLastError());*/ + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + goto done2; + } + + GetExitCodeResult = GetExitCodeProcess(childhand, &ierr); + if (ierr == CONTROL_C_EXIT) { + pproc->signal = SIGINT; + } else { + pproc->exit_code = ierr; + } + if (GetExitCodeResult == FALSE) { + pproc->last_err = GetLastError(); + pproc->lerrno = E_SCALL; + } + +done2: + if (pproc->lerrno) + return(-1); + else + return(0); + +} + +/* + * Description: Clean up any leftover handles, etc. It is up to the + * caller to manage and free the input, output, and stderr buffers. + */ + void +process_cleanup( + HANDLE proc) +{ + sub_process *pproc = (sub_process *)proc; + int i; + + if (pproc->using_pipes) { + for (i= 0; i <= 1; 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] + && (HANDLE)pproc->sv_stdout[i] != INVALID_HANDLE_VALUE) + CloseHandle((HANDLE)pproc->sv_stdout[i]); + if ((HANDLE)pproc->sv_stderr[i] + && (HANDLE)pproc->sv_stderr[i] != INVALID_HANDLE_VALUE) + CloseHandle((HANDLE)pproc->sv_stderr[i]); + } + } + if ((HANDLE)pproc->pid) + CloseHandle((HANDLE)pproc->pid); + + free(pproc); +} + + +/* + * Description: + * Create a command line buffer to pass to CreateProcess + * + * Returns: the buffer or NULL for failure + * Shell case: sh_name a:/full/path/to/script argv[1] argv[2] ... + * Otherwise: argv[0] argv[1] argv[2] ... + * + * Notes/Dependencies: + * CreateProcess does not take an argv, so this command creates a + * command line for the executable. + */ + +static char * +make_command_line( char *shell_name, char *full_exec_path, char **argv) +{ + int argc = 0; + char** argvi; + int* enclose_in_quotes = NULL; + int* enclose_in_quotes_i; + size_t bytes_required = 0; + char* command_line; + char* command_line_i; + int have_sh = 0; /* HAVE_CYGWIN_SHELL */ + int cygwin_mode = 0; /* HAVE_CYGWIN_SHELL */ + +#ifdef HAVE_CYGWIN_SHELL + cygwin_mode = 1; +#endif + + if (shell_name && full_exec_path) { + have_sh = cygwin_mode && strstr(full_exec_path, "sh.exe"); + bytes_required + = strlen(shell_name) + 1 + strlen(full_exec_path); + /* + * Skip argv[0] if any, when shell_name is given. + * The special case of "-c" in full_exec_path means + * argv[0] is not the shell name, but the command string + * to pass to the shell. + */ + if (*argv && strcmp(full_exec_path, "-c")) argv++; + /* + * Add one for the intervening space. + */ + if (*argv) bytes_required++; + } + + argvi = argv; + while (*(argvi++)) argc++; + + if (argc) { + enclose_in_quotes = (int*) calloc(1, argc * sizeof(int)); + + if (!enclose_in_quotes) { + return NULL; + } + } + + /* We have to make one pass through each argv[i] to see if we need + * to enclose it in ", so we might as well figure out how much + * memory we'll need on the same pass. + */ + + argvi = argv; + enclose_in_quotes_i = enclose_in_quotes; + while(*argvi) { + char* p = *argvi; + unsigned int backslash_count = 0; + + /* + * We have to enclose empty arguments in ". + */ + if (!(*p)) *enclose_in_quotes_i = 1; + + while(*p) { + switch (*p) { + case '\"': + /* + * We have to insert a backslash for each " + * and each \ that precedes the ". + */ + bytes_required += (backslash_count + 1); + backslash_count = 0; + break; + +#if !defined(HAVE_MKS_SHELL) && !defined(HAVE_CYGWIN_SHELL) + case '\\': + backslash_count++; + break; +#endif + /* + * At one time we set *enclose_in_quotes_i for '*' or '?' to suppress + * wildcard expansion in programs linked with MSVC's SETARGV.OBJ so + * that argv in always equals argv out. This was removed. Say you have + * such a program named glob.exe. You enter + * glob '*' + * at the sh command prompt. Obviously the intent is to make glob do the + * wildcarding instead of sh. If we set *enclose_in_quotes_i for '*' or '?', + * then the command line that glob would see would be + * glob "*" + * and the _setargv in SETARGV.OBJ would _not_ expand the *. + */ + case ' ': + case '\t': + *enclose_in_quotes_i = 1; + /* fall through */ + + default: + backslash_count = 0; + break; + } + + /* + * Add one for each character in argv[i]. + */ + bytes_required++; + + p++; + } + + if (*enclose_in_quotes_i) { + /* + * Add one for each enclosing ", + * and one for each \ that precedes the + * closing ". + */ + bytes_required += (backslash_count + 2); + } + + /* + * Add one for the intervening space. + */ + if (*(++argvi)) bytes_required++; + enclose_in_quotes_i++; + } + + /* + * Add one for the terminating NULL. + */ + bytes_required++; + + command_line = (char*) malloc(bytes_required); + + if (!command_line) { + free(enclose_in_quotes); + return NULL; + } + + command_line_i = command_line; + + if (shell_name && full_exec_path) { + while(*shell_name) { + *(command_line_i++) = *(shell_name++); + } + + *(command_line_i++) = ' '; + + while(*full_exec_path) { + *(command_line_i++) = *(full_exec_path++); + } + + if (*argv) { + *(command_line_i++) = ' '; + } + } + + argvi = argv; + enclose_in_quotes_i = enclose_in_quotes; + + while(*argvi) { + char* p = *argvi; + unsigned int backslash_count = 0; + + if (*enclose_in_quotes_i) { + *(command_line_i++) = '\"'; + } + + while(*p) { + if (*p == '\"') { + if (cygwin_mode && have_sh) { /* HAVE_CYGWIN_SHELL */ + /* instead of a \", cygwin likes "" */ + *(command_line_i++) = '\"'; + } else { + + /* + * We have to insert a backslash for the " + * and each \ that precedes the ". + */ + backslash_count++; + + while(backslash_count) { + *(command_line_i++) = '\\'; + backslash_count--; + }; + } +#if !defined(HAVE_MKS_SHELL) && !defined(HAVE_CYGWIN_SHELL) + } else if (*p == '\\') { + backslash_count++; + } else { + backslash_count = 0; +#endif + } + + /* + * Copy the character. + */ + *(command_line_i++) = *(p++); + } + + if (*enclose_in_quotes_i) { +#if !defined(HAVE_MKS_SHELL) && !defined(HAVE_CYGWIN_SHELL) + /* + * Add one \ for each \ that precedes the + * closing ". + */ + while(backslash_count--) { + *(command_line_i++) = '\\'; + }; +#endif + *(command_line_i++) = '\"'; + } + + /* + * Append an intervening space. + */ + if (*(++argvi)) { + *(command_line_i++) = ' '; + } + + enclose_in_quotes_i++; + } + + /* + * Append the terminating NULL. + */ + *command_line_i = '\0'; + + free(enclose_in_quotes); + return command_line; +} + +/* + * Description: Given an argv and optional envp, launch the process + * using the default stdin, stdout, and stderr handles. + * Also, register process so that process_wait_for_any_private() + * can be used via process_file_io(NULL) or + * process_wait_for_any(). + * + * Returns: + * + * Notes/Dependencies: + */ +HANDLE +process_easy( + char **argv, + char **envp, + int outfd, + int errfd) +{ + HANDLE hIn = INVALID_HANDLE_VALUE; + HANDLE hOut = INVALID_HANDLE_VALUE; + HANDLE hErr = INVALID_HANDLE_VALUE; + HANDLE hProcess, tmpIn, tmpOut, tmpErr; + DWORD e; + + if (process_table_full()) { + 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(), + 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(), + 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(), + 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); + + if (process_begin(hProcess, argv, envp, argv[0], NULL)) { + fake_exits_pending++; + /* process_begin() failed: make a note of that. */ + if (!((sub_process*) hProcess)->last_err) + ((sub_process*) hProcess)->last_err = -1; + ((sub_process*) hProcess)->exit_code = process_last_err(hProcess); + + /* close up unused handles */ + if (hIn != INVALID_HANDLE_VALUE) + CloseHandle(hIn); + if (hOut != INVALID_HANDLE_VALUE) + CloseHandle(hOut); + if (hErr != INVALID_HANDLE_VALUE) + CloseHandle(hErr); + } + + process_register(hProcess); + + return hProcess; +} diff --git a/local/recipes/dev/gnu-make/source/src/w32/subproc/w32err.c b/local/recipes/dev/gnu-make/source/src/w32/subproc/w32err.c new file mode 100644 index 0000000000..eb201034fd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/subproc/w32err.c @@ -0,0 +1,85 @@ +/* Error handling for Windows +Copyright (C) 1996-2022 Free Software 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 . */ + +#include +#include +#include "makeint.h" +#include "w32err.h" + +/* + * Description: the windows32 version of perror() + * + * Returns: a pointer to a static error + * + * Notes/Dependencies: I got this from + * comp.os.ms-windows.programmer.win32 + */ +const char * +map_windows32_error_to_string (DWORD ercode) { +/* + * 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 + */ + wsprintf (szMessageBuffer, "Error %ld\n", ercode); + + /* + * Special code for winsock error handling. + */ + if (ercode > WSABASEERR) { +#if 0 + HMODULE hModule = GetModuleHandle("wsock32"); + if (hModule != NULL) { + FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, + hModule, + ercode, + LANG_NEUTRAL, + szMessageBuffer, + sizeof(szMessageBuffer), + NULL); + FreeLibrary(hModule); + } +#else + O (fatal, NILF, szMessageBuffer); +#endif + } else { + /* + * Default system message handling + */ + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + ercode, + LANG_NEUTRAL, + szMessageBuffer, + sizeof(szMessageBuffer), + NULL); + } + return szMessageBuffer; +} diff --git a/local/recipes/dev/gnu-make/source/src/w32/w32os.c b/local/recipes/dev/gnu-make/source/src/w32/w32os.c new file mode 100644 index 0000000000..9c5dec2478 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/src/w32/w32os.c @@ -0,0 +1,514 @@ +/* Windows32-based operating system interface for GNU Make. +Copyright (C) 2016-2022 Free Software 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 . */ + +#include "makeint.h" + +#include +#include + +#include +#include +#include +#if _WIN32_WINNT > 0x0601 +#include +#endif +#include "pathstuff.h" +#include "sub_proc.h" +#include "w32err.h" +#include "os.h" +#include "debug.h" + +unsigned int +check_io_state () +{ + static unsigned int state = IO_UNKNOWN; + + /* We only need to compute this once per process. */ + if (state != IO_UNKNOWN) + return state; + + /* Could have used GetHandleInformation, but that isn't supported + on Windows 9X. */ + HANDLE outfd = (HANDLE)_get_osfhandle (fileno (stdout)); + HANDLE errfd = (HANDLE)_get_osfhandle (fileno (stderr)); + + if ((HANDLE)_get_osfhandle (fileno (stdin)) != INVALID_HANDLE_VALUE) + state |= IO_STDIN_OK; + if (outfd != INVALID_HANDLE_VALUE) + state |= IO_STDOUT_OK; + if (errfd != INVALID_HANDLE_VALUE) + state |= IO_STDERR_OK; + + if (ALL_SET (state, IO_STDOUT_OK|IO_STDERR_OK)) + { + unsigned int combined = 0; + + if (outfd == errfd) + combined = IO_COMBINED_OUTERR; + else + { + DWORD outtype = GetFileType (outfd), errtype = GetFileType (errfd); + + if (outtype == errtype + && outtype != FILE_TYPE_UNKNOWN && errtype != FILE_TYPE_UNKNOWN) + { + if (outtype == 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 outmode, errmode; + + /* 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 (outfd, &outmode) + && GetConsoleMode (errfd, &errmode) + && outmode == errmode) + combined = IO_COMBINED_OUTERR; + } + else + { + /* For disk files and pipes, compare their unique + attributes. */ + BY_HANDLE_FILE_INFORMATION outfi, errfi; + + /* 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 (outfd, &outfi) + && GetFileInformationByHandle (errfd, &errfi) + && outfi.dwVolumeSerialNumber == errfi.dwVolumeSerialNumber + && outfi.nFileIndexLow == errfi.nFileIndexLow + && outfi.nFileIndexHigh == errfi.nFileIndexHigh + && outfi.dwFileAttributes == errfi.dwFileAttributes) + combined = IO_COMBINED_OUTERR; + } + } + } + state |= combined; + } + + return state; +} + +/* 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, and also it returns a FILE* and we want a file + descriptor. Mostly borrowed from create_batch_file, see job.c. */ +int +os_anontmp () +{ + char temp_path[MAX_PATH+1]; + unsigned path_size = GetTempPath (sizeof (temp_path), temp_path); + int using_cwd = 0; + + /* These variables are 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. */ + 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); + using_cwd = 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) + return _open_osfhandle ((intptr_t)h, 0); + + { + 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 (!using_cwd) + { + path_size = GetCurrentDirectory (sizeof (temp_path), temp_path); + using_cwd = 1; + } + else + { + errno = EACCES; + return -1; + } + } + } + + if (uniq >= 0x10000) + errno = EEXIST; + return -1; +} + +#if defined(MAKE_JOBSERVER) + +/* This section provides OS-specific functions to support the jobserver. */ + +static char jobserver_semaphore_name[MAX_PATH + 1]; +static HANDLE jobserver_semaphore = NULL; + +unsigned int +jobserver_setup (int slots, const char *style) +{ + /* sub_proc.c is limited in the number of objects it can wait for. */ + + if (style && strcmp (style, "sem") != 0) + OS (fatal, NILF, _("Unknown jobserver auth style '%s'"), style); + + if (slots > process_table_usable_size()) + { + slots = process_table_usable_size(); + DB (DB_JOBS, (_("Jobserver slots limited to %d\n"), slots)); + } + + sprintf (jobserver_semaphore_name, "gmake_semaphore_%d", _getpid ()); + + jobserver_semaphore = CreateSemaphore ( + NULL, /* Use default security descriptor */ + slots, /* Initial count */ + slots, /* Maximum count */ + jobserver_semaphore_name); /* Semaphore name */ + + if (jobserver_semaphore == NULL) + { + DWORD err = GetLastError (); + const char *estr = map_windows32_error_to_string (err); + ONS (fatal, NILF, + _("creating jobserver semaphore: (Error %ld: %s)"), err, estr); + } + + return 1; +} + +unsigned int +jobserver_parse_auth (const char *auth) +{ + jobserver_semaphore = OpenSemaphore ( + SEMAPHORE_ALL_ACCESS, /* Semaphore access setting */ + FALSE, /* Child processes DON'T inherit */ + auth); /* Semaphore name */ + + if (jobserver_semaphore == NULL) + { + DWORD err = GetLastError (); + const char *estr = map_windows32_error_to_string (err); + fatal (NILF, strlen (auth) + INTSTR_LENGTH + strlen (estr), + _("internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"), + auth, err, estr); + } + DB (DB_JOBS, (_("Jobserver client (semaphore %s)\n"), auth)); + + return 1; +} + +char * +jobserver_get_auth () +{ + return xstrdup (jobserver_semaphore_name); +} + +const char * +jobserver_get_invalid_auth () +{ + /* Because we're using a semaphore we don't need to invalidate. */ + return NULL; +} + +unsigned int +jobserver_enabled () +{ + return jobserver_semaphore != NULL; +} + +/* Close jobserver semaphore */ +void +jobserver_clear () +{ + if (jobserver_semaphore != NULL) + { + CloseHandle (jobserver_semaphore); + jobserver_semaphore = NULL; + } +} + +void +jobserver_release (int is_fatal) +{ + if (! ReleaseSemaphore ( + jobserver_semaphore, /* handle to semaphore */ + 1, /* increase count by one */ + NULL)) /* not interested in previous count */ + { + if (is_fatal) + { + DWORD err = GetLastError (); + const char *estr = map_windows32_error_to_string (err); + ONS (fatal, NILF, + _("release jobserver semaphore: (Error %ld: %s)"), err, estr); + } + perror_with_name ("release_jobserver_semaphore", ""); + } +} + +unsigned int +jobserver_acquire_all () +{ + unsigned int tokens = 0; + while (1) + { + DWORD dwEvent = WaitForSingleObject ( + jobserver_semaphore, /* Handle to semaphore */ + 0); /* DON'T wait on semaphore */ + + if (dwEvent != WAIT_OBJECT_0) + return tokens; + + ++tokens; + } +} + +void +jobserver_signal () +{ +} + +void jobserver_pre_child (int recursive) +{ +} + +void jobserver_post_child (int recursive) +{ +} + +void +jobserver_pre_acquire () +{ +} + +/* Returns 1 if we got a token, or 0 if a child has completed. + The Windows implementation doesn't support load detection. */ +unsigned int +jobserver_acquire (int timeout) +{ + HANDLE *handles; + DWORD dwHandleCount; + DWORD dwEvent; + + handles = xmalloc(process_table_actual_size() * sizeof(HANDLE)); + + /* Add jobserver semaphore to first slot. */ + handles[0] = jobserver_semaphore; + + /* Build array of handles to wait for. */ + dwHandleCount = 1 + process_set_handles (&handles[1]); + + dwEvent = process_wait_for_multiple_objects ( + dwHandleCount, /* number of objects in array */ + handles, /* array of objects */ + FALSE, /* wait for any object */ + INFINITE); /* wait until object is signalled */ + + free(handles); + + if (dwEvent == WAIT_FAILED) + { + DWORD err = GetLastError (); + const char *estr = map_windows32_error_to_string (err); + ONS (fatal, NILF, + _("semaphore or child process wait: (Error %ld: %s)"), + err, estr); + } + + /* WAIT_OBJECT_0 indicates that the semaphore was signalled. */ + return dwEvent == WAIT_OBJECT_0; +} + +#endif /* MAKE_JOBSERVER */ + +#if !defined(NO_OUTPUT_SYNC) + +#define MUTEX_PREFIX "fnm:" + +/* Since we're using this with CreateMutex, NULL is invalid. */ +static HANDLE osync_handle = NULL; + +unsigned int +osync_enabled () +{ + return osync_handle != NULL; +} + +void +osync_setup () +{ + SECURITY_ATTRIBUTES secattr; + + /* 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; + + osync_handle = CreateMutex (&secattr, FALSE, NULL); + if (!osync_handle) + { + DWORD err = GetLastError (); + fprintf (stderr, "CreateMutex: error %lu\n", err); + errno = ENOLCK; + } +} + +char * +osync_get_mutex () +{ + char *mutex = NULL; + + if (osync_enabled ()) + { + /* Prepare the mutex handle string for our children. + 2 hex digits per byte + 2 characters for "0x" + null. */ + mutex = xmalloc ((2 * sizeof (osync_handle)) + 2 + 1); + sprintf (mutex, "0x%Ix", (unsigned long long)(DWORD_PTR)osync_handle); + } + + return mutex; +} + +unsigned int +osync_parse_mutex (const char *mutex) +{ + char *endp; + unsigned long long i; + + errno = 0; + i = strtoull (mutex, &endp, 16); + if (errno != 0) + OSS (fatal, NILF, _("cannot parse output sync mutex %s: %s"), + mutex, strerror (errno)); + if (endp[0] != '\0') + OS (fatal, NILF, _("invalid output sync mutex: %s"), mutex); + + osync_handle = (HANDLE) (DWORD_PTR) i; + + return 1; +} + +void +osync_clear () +{ + if (osync_handle) + { + CloseHandle (osync_handle); + osync_handle = NULL; + } +} + +unsigned int +osync_acquire () +{ + if (osync_enabled()) + { + DWORD result = WaitForSingleObject (osync_handle, INFINITE); + if (result == WAIT_FAILED || result == WAIT_TIMEOUT) + return 0; + } + + return 1; +} + +void +osync_release () +{ + if (osync_enabled()) + /* 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? */ + ReleaseMutex (osync_handle); +} + +#endif /* NO_OUTPUT_SYNC */ + +void +fd_inherit(int fd) +{ + HANDLE fh = (HANDLE)_get_osfhandle(fd); + + if (fh && fh != INVALID_HANDLE_VALUE) + SetHandleInformation(fh, HANDLE_FLAG_INHERIT, 1); +} + +void +fd_noinherit(int fd) +{ + HANDLE fh = (HANDLE)_get_osfhandle(fd); + + if (fh && fh != INVALID_HANDLE_VALUE) + SetHandleInformation(fh, HANDLE_FLAG_INHERIT, 0); +} + +void +fd_set_append (int fd) +{} diff --git a/local/recipes/dev/gnu-make/source/tests/README b/local/recipes/dev/gnu-make/source/tests/README new file mode 100644 index 0000000000..6ffa19a7c7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/README @@ -0,0 +1,100 @@ +The test suite was originally written by Steve McGee and Chris Arthur. +It is covered by the GNU General Public License (Version 2), described +in the file COPYING. It has been maintained as part of GNU make proper +since GNU make 3.78. + +This entire test suite, including all test files, are copyright and +distributed under the following terms: + + ----------------------------------------------------------------------------- + Copyright (C) 1992-2022 Free Software 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 . + ----------------------------------------------------------------------------- + +The test suite requires Perl. These days, you should have at least Perl 5.6. +Newer versions may be required: I don't test regularly with older versions +than what is installed by default on my development systems. + +The test suite assumes that the first "diff" it finds on your PATH is +GNU diff, but that only matters if a test fails. + +To run the test suite on a UNIX system, use "perl ./run_make_tests" +(or just "./run_make_tests" if you have a perl on your PATH). + +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 (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 +"gmake"). + +Tests cannot end with a "~" character, as the test suite will ignore any +that do (I was tired of having it run my Emacs backup files as tests :)) + +Also, sometimes the tests may behave strangely on networked +filesystems. You can use mkshadow to create a copy of the test suite in +/tmp or similar, and try again. If the error disappears, it's an issue +with your network or file server, not GNU make (I believe). This +shouldn't happen very often anymore: I've done a lot of work on the +tests to reduce the impacts of this situation. + +A directory named "work" will be created when the tests are run which +will contain any makefiles and "diff" files of tests that fail so that +you may look at them afterward to see the output of make and the +expected result. + +There is a -help option which will give you more information about the +other possible options for the test suite. + + +Open Issues +----------- + +The test suite has a number of problems which should be addressed. One VERY +serious one is that there is no real documentation. You just have to see the +existing tests. Use the newer tests: many of the tests haven't been updated +to use the latest/greatest test methods. See the ChangeLogs for pointers. + +The second serious problem is that it's not relocatable: when you build out of +the source tree it creates symlinks, which doesn't work on every system and is +just bogus to boot. + +The third serious problem is that it's not parallelizable: it scribbles all +over its installation directory and so can only test one make at a time. + +The fourth serious problem is that since the tests scribble all over the same +directory (a) they can interfere with each other and (b) we cannot preserve +the full environment for every test, if it involves creating temporary files +etc. as they must be deleted before the next test. + +To solve these the suite should create a separate directory for EVERY test, +local to the build directory, and all temporary files should exist in that +directory. The directory can be preserved on error, or removed if the test +succeeds (unless --keep is given). + + +Bugs +---- + +Any complaints/suggestions/bugs/etc. for the test suite itself should be +handled the same way as normal GNU make bugs/problems (see the README for GNU +make). + + + Paul D. Smith + Chris Arthur diff --git a/local/recipes/dev/gnu-make/source/tests/config-flags.pm.W32 b/local/recipes/dev/gnu-make/source/tests/config-flags.pm.W32 new file mode 100644 index 0000000000..9d2602bbce --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/config-flags.pm.W32 @@ -0,0 +1,9 @@ +# This is a -*-perl-*- script +# +# Set variables for Windows systems. + +%CONFIG_FLAGS = ( + USE_SYSTEM_GLOB => 'no' +); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/config-flags.pm.in b/local/recipes/dev/gnu-make/source/tests/config-flags.pm.in new file mode 100644 index 0000000000..90cd98016d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/config-flags.pm.in @@ -0,0 +1,20 @@ +# This is a -*-perl-*- script +# +# Set variables that were defined by configure, in case we need them +# during the tests. + +%CONFIG_FLAGS = ( + AM_LDFLAGS => '@AM_LDFLAGS@', + AR => '@AR@', + CC => '@CC@', + CFLAGS => '@CFLAGS@', + CPP => '@CPP@', + CPPFLAGS => '@CPPFLAGS@', + GUILE_CFLAGS => '@GUILE_CFLAGS@', + GUILE_LIBS => '@GUILE_LIBS@', + LDFLAGS => '@LDFLAGS@', + LIBS => '@LIBS@', + USE_SYSTEM_GLOB => '@USE_SYSTEM_GLOB@' +); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/config_flags_pm.com b/local/recipes/dev/gnu-make/source/tests/config_flags_pm.com new file mode 100755 index 0000000000..d02ea66775 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/config_flags_pm.com @@ -0,0 +1,54 @@ +$! +$! config_flags_pm.com - Build config-flags.pm on VMS. +$! +$! Just good enough to run the self tests for now. +$! +$! Copyright (C) 2014-2022 Free Software 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 . +$! +$! +$ open/read cfpm_in config-flags.pm.in +$! +$ outfile = "sys$disk:[]config-flags.pm" +$! +$ cflags = "/include=([],[.lib]" +$! +$ create 'outfile' +$ open/append cfpm 'outfile' +$! +$cfpm_read_loop: +$ read cfpm_in/end=cfpm_read_loop_end line_in +$ line_in_len = f$length(line_in) +$ if f$locate("@", line_in) .lt. line_in_len +$ then +$ part1 = f$element(0, "@", line_in) +$ key = f$element(1, "@", line_in) +$ part2 = f$element(2, "@", line_in) +$ value = "" +$ if key .eqs. "CC" then value = "CC" +$ if key .eqs. "CPP" then value = "CPP" +$ if key .eqs. "CFLAGS" then value = cflags +$ if key .eqs. "GUILE_CFLAGS" then value = cflags +$ if key .eqs. "USE_SYSTEM_GLOB" then value = "no" +$ write cfpm part1, value, part2 +$ goto cfpm_read_loop +$ endif +$ write cfpm line_in +$ goto cfpm_read_loop +$cfpm_read_loop_end: +$ close cfpm_in +$ close cfpm +$! diff --git a/local/recipes/dev/gnu-make/source/tests/guile.supp b/local/recipes/dev/gnu-make/source/tests/guile.supp new file mode 100644 index 0000000000..9e9b01ba33 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/mkshadow b/local/recipes/dev/gnu-make/source/tests/mkshadow new file mode 100755 index 0000000000..4615aecde6 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/mkshadow @@ -0,0 +1,57 @@ +#!/bin/sh +# +# 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-2022 Free Software 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 . + +case "$1" in + "") echo 'Usage: mkshadow '; exit 1 ;; +esac + +dest="$1" + +if [ ! -d "$dest" ]; then + echo "Destination directory '$dest' must exist!" + exit 1 +fi + +if [ ! -f run_make_tests ]; then + echo "The current directory doesn't appear to contain the test suite!" + exit 1 +fi + +suite=`pwd | sed 's%^/tmp_mnt%%'` +name=`basename "$suite"` + +files=`echo *` + +set -e + +mkdir "$dest/$name" +cd "$dest/$name" + +ln -s "$suite" .testdir + +for f in $files; do + ln -s .testdir/$f . +done + +rm -rf work + +echo "Shadow test suite created in '$dest/$name'." +exit 0 diff --git a/local/recipes/dev/gnu-make/source/tests/run_make_tests b/local/recipes/dev/gnu-make/source/tests/run_make_tests new file mode 100755 index 0000000000..b68b78494e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/run_make_tests @@ -0,0 +1,2 @@ +#!/bin/sh +exec perl $0.pl ${1+"$@"} diff --git a/local/recipes/dev/gnu-make/source/tests/run_make_tests.bat b/local/recipes/dev/gnu-make/source/tests/run_make_tests.bat new file mode 100644 index 0000000000..b90b6e3b0d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/run_make_tests.bat @@ -0,0 +1,21 @@ +@echo off +rem Copyright (C) 2017-2022 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 +rem the terms of the GNU General Public License as published by the Free +rem Software Foundation; either version 3 of the License, or (at your option) +rem any later version. +rem +rem GNU Make is distributed in the hope that it will be useful, but WITHOUT +rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. +rem more details. +rem +rem You should have received a copy of the GNU General Public License along +rem with this program. If not, see . + +setlocal +cd "%~dp0" + +perl -I. .\run_make_tests.pl %* diff --git a/local/recipes/dev/gnu-make/source/tests/run_make_tests.pl b/local/recipes/dev/gnu-make/source/tests/run_make_tests.pl new file mode 100644 index 0000000000..70dd1821b9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/run_make_tests.pl @@ -0,0 +1,730 @@ +#!/usr/bin/env perl +# -*-perl-*- + +# Test driver for the Make test suite + +# Usage: run_make_tests [testname] +# [-debug] +# [-help] +# [-verbose] +# [-keep] +# [-make ] +# (and others) + +# Copyright (C) 1992-2022 Free Software 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 . + +# Add the working directory to @INC and load the test driver +use FindBin; +use lib "$FindBin::Bin"; + +our $testsroot = $FindBin::Bin; + +require "test_driver.pl"; + +use File::Spec; + +use Cwd; +$cwdpath = cwd(); +($cwdvol, $cwddir, $_) = File::Spec->splitpath($cwdpath, 1); + +# Some target systems might not have the POSIX module... +$has_POSIX = eval { require "POSIX.pm" }; + +%FEATURES = (); +%DEFVARS = ( + AR => undef, + CC => undef +); + +$valgrind = 0; # invoke make with valgrind +$valgrind_args = ''; +$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 = undef; +$fqsrcdir = undef; +$srcvol = undef; + +# The location of the build directory +$blddir = undef; +$fqblddir = undef; +$bldvol = undef; + +$make_path = undef; +@make_command = (); + +$command_string = ''; + +$all_tests = 0; + +# Shell commands + +$sh_name = '/bin/sh'; +$is_posix_sh = 1; + +$CMD_rmfile = 'rm -f'; + +# rmdir broken in some Perls on VMS. +if ($^O eq 'VMS') +{ + require VMS::Filespec; + VMS::Filespec->import(); + + sub vms_rmdir { + my $vms_file = vmspath($_[0]); + $vms_file = fileify($vms_file); + my $ret = unlink(vmsify($vms_file)); + return $ret + }; + + *CORE::GLOBAL::rmdir = \&vms_rmdir; + + $CMD_rmfile = 'delete_file -no_ask'; +} + +%CONFIG_FLAGS = (); + +# Find the strings that will be generated for various error codes. +# We want them from the C locale regardless of our current locale. + +$ERR_no_such_file = undef; +$ERR_read_only_file = undef; +$ERR_unreadable_file = undef; +$ERR_nonexe_file = undef; +$ERR_exe_dir = undef; +$ERR_command_not_found = undef; + +#$SIG{INT} = sub { print STDERR "Caught a signal!\n"; die @_; }; + +sub valid_option +{ + local($option) = @_; + + if ($option =~ /^-make([-_]?path)?$/i) { + $make_path = shift @argv; + if (! -f $make_path) { + print "$option $make_path: Not found.\n"; + exit 1; + } + return 1; + } + + if ($option =~ /^-srcdir$/i) { + $srcdir = shift @argv; + if (! -f File::Spec->catfile($srcdir, 'src', 'gnumake.h')) { + print "$option $srcdir: Not a valid GNU make source directory.\n"; + exit 1; + } + return 1; + } + + if ($option =~ /^-all([-_]?tests)?$/i) { + $all_tests = 1; + return 1; + } + + if ($option =~ /^-(valgrind|memcheck)$/i) { + $valgrind = 1; + $valgrind_args = $memcheck_args; + return 1; + } + + if ($option =~ /^-massif$/i) { + $valgrind = 1; + $valgrind_args = $massif_args; + return 1; + } + +# This doesn't work--it _should_! Someone badly needs to fix this. +# +# elsif ($option =~ /^-work([-_]?dir)?$/) +# { +# $workdir = shift @argv; +# return 1; +# } + + return 0; +} + + +# This is an "all-in-one" function. Arguments are as follows: +# +# [0] (string): The makefile to be tested. undef means use the last one. +# [1] (string): Arguments to pass to make. +# [2] (string): Answer we should get back. +# [3] (integer): Exit code we expect. A missing code means 0 (success) + +$makefile = undef; +$old_makefile = undef; +$mkpath = undef; +$make_name = undef; +$helptool = 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#/$cwdpath/g; + s/#WORK#/$workdir/g; + # If we're using a shell + s/#HELPER#/$perl_name $helptool/g; + return $_; +} + +sub run_make_test +{ + local ($makestring, $options, $answer, $err_code, $timeout) = @_; + my @call = caller; + + # If the user specified a makefile string, create a new makefile to contain + # it. If the first value is not defined, use the last one (if there is + # one). + + if (! defined $makestring) { + defined $old_makefile + or die "run_make_test(undef) invoked before run_make_test('...')\n"; + $makefile = $old_makefile; + } elsif ($makestring) { + if (! defined($makefile)) { + $makefile = &get_tmpfile(); + } + + # Make sure it ends in a newline and substitute any special tokens. + $makestring && $makestring !~ /\n$/s and $makestring .= "\n"; + $makestring = subst_make_string($makestring); + + # Populate the makefile! + open(MAKEFILE, "> $makefile") or die "Failed to open $makefile: $!\n"; + print MAKEFILE $makestring; + close(MAKEFILE) or die "Failed to write $makefile: $!\n"; + } + + # Do the same processing on $answer as we did on $makestring. + 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, @call); + &compare_output($answer, &get_logfile(1)); + + $old_makefile = $makefile; + $makefile = undef; +} + +sub add_options { + my $cmd = shift; + + foreach (@_) { + if (ref($cmd)) { + push(@$cmd, ref($_) ? @$_ : $_); + } else { + $cmd .= ' '.(ref($_) ? "@$_" : $_); + } + } + + return $cmd; +} + +sub create_command { + return !$_[0] || ref($_[0]) ? [@make_command] : join(' ', @make_command); +} + +# The old-fashioned way... +# $options can be a scalar (string) or a ref to an array of options +# If it's a scalar the entire argument is passed to system/exec etc. as +# a single string. If it's a ref then the array is passed to system/exec. +# Using a ref should be preferred as it's more portable but all the older +# invocations use strings. +sub run_make_with_options { + my ($filename, $options, $logname, $expected_code, $timeout, @call) = @_; + @call = caller unless @call; + my $code; + my $command = create_command($options); + + $expected_code = 0 unless defined($expected_code); + + # Reset to reflect this one test. + $test_passed = 1; + + if ($filename) { + $command = add_options($command, '-f', $filename); + } + + if ($options) { + if (!ref($options) && $^O eq 'VMS') { + # Try to make sure arguments are properly quoted. + # This does not handle all cases. + # We should convert the tests to use array refs not strings + + # VMS uses double quotes instead of single quotes. + $options =~ s/\'/\"/g; + + # If the leading quote is inside non-whitespace, then the + # quote must be doubled, because it will be enclosed in another + # set of quotes. + $options =~ s/(\S)(\".*\")/$1\"$2\"/g; + + # Options must be quoted to preserve case if not already quoted. + $options =~ s/(\S+)/\"$1\"/g; + + # Special fixup for embedded quotes. + $options =~ s/(\"\".+)\"(\s+)\"(.+\"\")/$1$2$3/g; + + $options =~ s/(\A)(?:\"\")(.+)(?:\"\")/$1\"$2\"/g; + + # Special fixup for misc/general4 test. + $options =~ s/""\@echo" "cc""/\@echo cc"/; + $options =~ s/"\@echo link"""/\@echo link"/; + + # Remove shell escapes expected to be removed by bash + if ($options !~ /path=pre/) { + $options =~ s/\\//g; + } + + # special fixup for options/eval + $options =~ s/"--eval=\$\(info" "eval/"--eval=\$\(info eval/; + + print ("Options fixup = -$options-\n") if $debug; + } + + $command = add_options($command, $options); + } + + my $cmdstr = cmd2str($command); + $command_string = "# $call[1]:$call[2]:\n$cmdstr\n"; + + if ($valgrind) { + print VALGRIND "\n\nExecuting: $cmdstr\n"; + } + + { + my $old_timeout = $test_timeout; + $timeout and $test_timeout = $timeout; + + # If valgrind is enabled, turn off the timeout check + $valgrind and $test_timeout = 0; + + if (ref($command)) { + $code = run_command_with_output($logname, @$command); + } else { + $code = run_command_with_output($logname, $command); + } + $test_timeout = $old_timeout; + } + + # Check to see if we have Purify errors. If so, keep the logfile. + # For this to work you need to build with the Purify flag -exit-status=yes + + if ($pure_log && -f $pure_log) { + if ($code & 0x7000) { + $code &= ~0x7000; + + # If we have a purify log, save it + $tn = $pure_testname . ($num_of_logfiles ? ".$num_of_logfiles" : ""); + print("Renaming purify log file to $tn\n") if $debug; + rename($pure_log, "$tn") or die "Can't rename $pure_log to $tn: $!\n"; + ++$purify_errors; + } else { + unlink($pure_log); + } + } + + if ($code != $expected_code) { + print "Error running @make_command (expected $expected_code; got $code)\n$call[1]:$call[2]: $cmdstr\n"; + $test_passed = 0; + &create_file(get_runfile(), $command_string); + # If it's a SIGINT, stop here + if ($code & 127) { + print STDERR "\nCaught signal ".($code & 127)."!\n"; + ($code & 127) == 2 and exit($code); + } + return 0; + } + + if ($profile & $vos) { + system "add_profile @make_command"; + } + + return 1; +} + +sub print_usage +{ + &print_standard_usage ("run_make_tests", + "[-make MAKE_PATHNAME] [-srcdir SRCDIR] [-memcheck] [-massif]",); +} + +sub print_help +{ + &print_standard_help ( + "-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.", + "\tChange the default valgrind args with the VALGRIND_ARGS env var.", + "-massif", + "\tRun the test suite under valgrind's massif tool.", + "\tChange the default valgrind args with the VALGRIND_ARGS env var." + ); +} + +sub set_defaults +{ + # $profile = 1; + $testee = "GNU Make"; + $make_path = "make"; + $tmpfilesuffix = "mk"; + if ($port_type eq 'UNIX') { + $scriptsuffix = '.sh'; + } elsif ($port_type eq 'VMS') { + $scriptsuffix = '.com'; + } else { + $scriptsuffix = '.bat'; + } + + $ENV{LC_ALL} = $makeENV{LC_ALL}; + $ENV{LANG} = $makeENV{LANG}; + $ENV{LANGUAGE} = $makeENV{LANGUAGE}; + + use locale; + + my $loc = undef; + if ($has_POSIX) { + POSIX->import(qw(locale_h)); + # Windows has POSIX locale, but only LC_ALL not LC_MESSAGES + $loc = POSIX::setlocale(&POSIX::LC_ALL); + POSIX::setlocale(&POSIX::LC_ALL, 'C'); + } + + if (open(my $F, '<', 'file.none')) { + print "Opened non-existent file! Skipping related tests.\n"; + } else { + $ERR_no_such_file = "$!"; + } + + unlink('file.out'); + touch('file.out'); + + chmod(0444, 'file.out'); + if (open(my $F, '>', 'file.out')) { + print "Opened read-only file! Skipping related tests.\n"; + close($F); + } else { + $ERR_read_only_file = "$!"; + } + + $_ = `./file.out 2>&1`; + if ($? == 0) { + print "Executed non-executable file! Skipping related tests.\n"; + } else { + $ERR_nonexe_file = "$!"; + } + + if ($^O =~ /cygwin/i) { + # For some reason the execute here gives a different answer than make's + print "Skipping directory execution on $^O\n"; + } else { + $_ = `./. 2>&1`; + if ($? == 0) { + print "Executed directory! Skipping related tests.\n"; + } else { + $ERR_exe_dir = "$!"; + } + } + + chmod(0000, 'file.out'); + if (open(my $F, '<', 'file.out')) { + print "Opened unreadable file! Skipping related tests.\n"; + close($F); + } else { + $ERR_unreadable_file = "$!"; + } + + unlink('file.out') or die "Failed to delete file.out: $!\n"; + + $_ = `/bin/sh -c 'bad-command 2>&1'`; + if ($? == 0) { + print "Invoked invalid file! Skipping related tests.\n"; + } else { + chomp($_); + s/bad-command/#CMDNAME#/g; + $ERR_command_not_found = $_; + } + + $loc and POSIX::setlocale(&POSIX::LC_ALL, $loc); + + $ENV{LC_ALL} = $origENV{LC_ALL}; + $ENV{LANG} = $origENV{LANG}; + $ENV{LANGUAGE} = $origENV{LANGUAGE}; +} + +# This is no longer used: we import config-flags.pm instead +# sub parse_status +# { +# if (open(my $fh, '<', "$_[0]/config.status")) { +# while (my $line = <$fh>) { +# $line =~ m/^[SD]\["([^\"]+)"\]=" *(.*)"/ and $CONFIG_FLAGS{$1} = $2; +# } +# return 1; +# } +# return 0; +# } + +sub find_prog +{ + my $prog = $_[0]; + my ($v, $d, $f) = File::Spec->splitpath($prog); + + # If there's no directory then we need to search the PATH + if (! $d) { + foreach my $e (File::Spec->path()) { + $prog = File::Spec->catfile($e, $f); + if (-x $prog) { + ($v, $d, $f) = File::Spec->splitpath($prog); + last; + } + } + } + + return ($v, $d, $f); +} + +sub get_config +{ + return exists($CONFIG_FLAGS{$_[0]}) ? $CONFIG_FLAGS{$_[0]} : ''; +} + +sub set_more_defaults +{ + my $string; + + # Now that we have located make_path, locate the srcdir and blddir + my ($mpv, $mpd, $mpf) = find_prog($make_path); + + # We have a make program so try to compute the blddir. + if ($mpd) { + my $f = File::Spec->catpath($mpv, File::Spec->catdir($mpd, 'tests'), 'config-flags.pm'); + if (-f $f) { + $bldvol = $mpv; + $blddir = $mpd; + } + } + + # If srcdir wasn't provided on the command line, try to find it. + if (! $srcdir && $blddir) { + # See if the blddir is the srcdir + my $f = File::Spec->catpath($bldvol, File::Spec->catdir($blddir, 'src'), 'gnumake.h'); + if (-f $f) { + $srcdir = $blddir; + $srcvol = $bldvol; + } + } + + if (! $srcdir) { + # Not found, see if our parent is the source dir + my $f = File::Spec->catpath($cwdvol, File::Spec->catdir(File::Spec->updir(), 'src'), 'gnumake.h'); + if (-f $f) { + $srcdir = File::Spec->updir(); + $srcvol = $cwdvol; + } + } + + # If we have srcdir but not blddir, set them equal + if ($srcdir && !$blddir) { + $blddir = $srcdir; + $bldvol = $srcvol; + } + + # Load the config flags + if (!$blddir) { + warn "Cannot locate config-flags.pm (no blddir)\n"; + } else { + my $f = File::Spec->catpath($bldvol, File::Spec->catdir($blddir, 'tests'), 'config-flags.pm'); + if (! -f $f) { + warn "Cannot locate $f\n"; + } else { + unshift(@INC, File::Spec->catpath($bldvol, File::Spec->catdir($blddir, 'tests'), '')); + require "config-flags.pm"; + } + } + + # Find the full pathname of Make. For DOS systems this is more + # complicated, so we ask make itself. + if ($osname eq 'VMS') { + $port_type = 'VMS-DCL' unless defined $ENV{"SHELL"}; + # On VMS pre-setup make to be found with simply 'make'. + $make_path = 'make'; + } else { + create_file('make.mk', 'all:;$(info $(MAKE))'); + my $mk = `$make_path -sf make.mk`; + unlink('make.mk'); + $mk =~ s/\r?\n$//; + $mk or die "FATAL ERROR: Cannot determine the value of \$(MAKE)\n"; + $make_path = $mk; + } + ($mpv, $mpd, $mpf) = File::Spec->splitpath($make_path); + + # Ask make what shell to use + create_file('shell.mk', 'all:;$(info $(SHELL))'); + $sh_name = `$make_path -sf shell.mk`; + unlink('shell.mk'); + $sh_name =~ s/\r?\n$//; + if (! $sh_name) { + print "Cannot determine shell\n"; + $is_posix_sh = 0; + } else { + my $o = `$sh_name -c ': do nothing' 2>&1`; + $is_posix_sh = $? == 0 && $o eq ''; + } + + $string = `$make_path -v`; + $string =~ /^(GNU Make [^,\n]*)/ or die "$make_path is not GNU make. Version:\n$string"; + $testee_version = "$1\n"; + + create_file('null.mk', ''); + + my $redir = '2>&1'; + $redir = '' if os_name eq 'VMS'; + $string = `$make_path -f null.mk $redir`; + if ($string =~ /(.*): \*\*\* No targets\. Stop\./) { + $make_name = $1; + } else { + $make_name = $mpf; + } + + # prepend pwd if this is a relative path (ie, does not + # start with a slash, but contains one). Thanks for the + # clue, Roland. + + if ($mpd && !File::Spec->file_name_is_absolute($make_path) && $cwdvol == $mpv) { + $mkpath = File::Spec->catpath($cwdvol, File::Spec->catdir($cwd, $mpd), $mpf); + } else { + $mkpath = $make_path; + } + + # Not with the make program, so see if we can get it out of the makefile + if (! $srcdir && open(MF, '<', File::Spec->catfile(File::Spec->updir(), 'Makefile'))) { + local $/ = undef; + $_ = ; + close(MF); + /^abs_srcdir\s*=\s*(.*?)\s*$/m; + -f File::Spec->catfile($1, 'src', 'gnumake.h') and $srcdir = $1; + } + + # At this point we should have srcdir and blddir: get fq versions + $fqsrcdir = File::Spec->rel2abs($srcdir); + $fqblddir = File::Spec->rel2abs($blddir); + + # Find the helper tool + $helptool = File::Spec->catfile($fqsrcdir, 'tests', 'thelp.pl'); + + # It's difficult to quote this properly in all the places it's used so + # ensure it doesn't need to be quoted. + $helptool =~ s,\\,/,g if $port_type eq 'W32'; + $helptool =~ s, ,\\ ,g; + + # Get Purify log info--if any. + + if (exists $ENV{PURIFYOPTIONS} + && $ENV{PURIFYOPTIONS} =~ /.*-logfile=([^ ]+)/) { + $pure_log = $1 || ''; + $pure_log =~ s/%v/$make_name/; + $purify_errors = 0; + } + + $string = `$make_path -j 2 -f null.mk $redir`; + if ($string =~ /not supported/) { + $parallel_jobs = 0; + } + else { + $parallel_jobs = 1; + } + + unlink('null.mk'); + + create_file('features.mk', 'all:;$(info $(.FEATURES))'); + %FEATURES = map { $_ => 1 } split /\s+/, `$make_path -sf features.mk`; + unlink('features.mk'); + + # Find the default values for different built-in variables + my $s = "all:;\n"; + foreach (keys %DEFVARS) { + $s .= "\$(info $_=\$($_))\n"; + } + create_file('defvars.mk', $s); + foreach (split "\n", `$make_path -sf defvars.mk`) { + my @e = split /=/, $_, 2; + $DEFVARS{$e[0]} = $e[1]; + } + unlink('defvars.mk'); + + # Set up for valgrind, if requested. + + @make_command = ($make_path); + + if ($valgrind) { + my $args = $valgrind_args; + open(VALGRIND, "> valgrind.out") or die "Cannot open valgrind.out: $!\n"; + # -q --leak-check=yes + exists $ENV{VALGRIND_ARGS} and $args = $ENV{VALGRIND_ARGS}; + @make_command = ('valgrind', '--log-fd='.fileno(VALGRIND)); + push(@make_command, split(' ', $args)); + push(@make_command, $make_path); + # F_SETFD is 2 + fcntl(VALGRIND, 2, 0) or die "fcntl(setfd) failed: $!\n"; + system("echo Starting on `date` 1>&".fileno(VALGRIND)); + print "Enabled valgrind support.\n"; + } + + if ($debug) { + print "Port type: $port_type\n"; + print "Make command: @make_command\n"; + print "Shell path: $sh_name".($is_posix_sh ? ' (POSIX)' : '')."\n"; + print "#PWD#: $cwdpath\n"; + print "#PERL#: $perl_name\n"; + print "#MAKEPATH#: $mkpath\n"; + print "#MAKE#: $make_name\n"; + } +} + +sub setup_for_test +{ + $makefile = &get_tmpfile; + if (-f $makefile) { + unlink $makefile; + } + + # Get rid of any Purify logs. + if ($pure_log) { + ($pure_testname = $testname) =~ tr,/,_,; + $pure_testname = "$pure_log.$pure_testname"; + system("rm -f $pure_testname*"); + print("Purify testfiles are: $pure_testname*\n") if $debug; + } +} + +exit !&toplevel; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/archives b/local/recipes/dev/gnu-make/source/tests/scripts/features/archives new file mode 100644 index 0000000000..809bf21e21 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/archives @@ -0,0 +1,242 @@ +# -*-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; + +# In theory archive support exists on Windows but it doesn't use ar; +# someone will need to port this test. +$port_type eq 'W32' and return -1; + +# Create some .o files to work with +if ($osname eq 'VMS') { + # VMS AR needs real object files at this time. + foreach $afile ('a1', 'a2', 'a3') { + # Use non-standard extension to prevent implicit rules from recreating + # objects when the test tampers with the timestamp. + 1 while unlink "$afile.c1"; + 1 while unlink "$afile.o"; + open (MYFILE, ">$afile.c1"); + print MYFILE "int $afile(void) {return 1;}\n"; + close MYFILE; + system("cc $afile.c1 /object=$afile.o"); + } +} else { + utouch(-60, qw(a1.o a2.o a3.o)); +} + +# Fallback if configure did not find AR +my $ar = get_config('AR') || 'ar'; + +my $redir = '2>&1'; +$redir = '' if $osname eq 'VMS'; + +# This is the value from src/default.c +my $arflags = $osname eq 'aix' ? '-Xany -rv' : '-rv'; +my $arvar = "AR=$ar"; + +# Newer versions of binutils can be built with --enable-deterministic-archives +# which forces all timestamps (among other things) to always be 0, defeating +# GNU make's archive support. See if ar supports the U option to disable it. +unlink('libxx.a'); +$_ = `$ar ${arflags}U libxx.a a1.o $redir`; +if ($? == 0) { + $arflags = "${arflags}U"; + $arvar = "$arvar ARFLAGS=$arflags"; +} + +# Some versions of ar print different things on creation. Find out. +unlink('libxx.a'); +my $created = `$ar $arflags libxx.a a1.o $redir`; +$created =~ s/a1\.o/#OBJECT#/g; + +# Some versions of ar print different things on add. Find out. +my $add = `$ar $arflags libxx.a a2.o $redir`; +$add =~ s/a2\.o/#OBJECT#/g; + +# Some versions of ar print different things on replacement. Find out. +my $repl = `$ar $arflags libxx.a a2.o $redir`; +$repl =~ s/a2\.o/#OBJECT#/g; + +unlink('libxx.a'); + +# Very simple +($_ = $created) =~ s/#OBJECT#/a1.o/g; +my $answer = "$ar $arflags libxx.a a1.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a1.o'; +} +run_make_test('all: libxx.a(a1.o)', $arvar, $answer); + +# Multiple .o's. Add a new one to the existing library +($_ = $add) =~ s/#OBJECT#/a2.o/g; + +$answer = "$ar $arflags libxx.a a2.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a2.o'; +} +run_make_test('all: libxx.a(a1.o a2.o)', $arvar, $answer); + +# Touch one of the .o's so it's rebuilt +if ($port_type eq 'VMS-DCL') { + # utouch is not changing what VMS library compare is testing for. + # So do a real change by regenerating the file. + 1 while unlink('a1.o'); + # Later time stamp than last insertion. + sleep(2); + system('cc a1.c1 /object=a1.o'); + # Next insertion will have a later timestamp. + sleep(2); +} else { + utouch(-40, 'a1.o'); +} + +($_ = $repl) =~ s/#OBJECT#/a1.o/g; +$answer = "$ar $arflags libxx.a a1.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a1.o'; +} +run_make_test(undef, $arvar, $answer); + +# Use wildcards +$answer = "#MAKE#: Nothing to be done for 'all'.\n"; +run_make_test('all: libxx.a(*.o)', $arvar, $answer); + +# Touch one of the .o's so it's rebuilt +if ($port_type eq 'VMS-DCL') { + # utouch is not changing what VMS library compare is testing for. + # So do a real change by regenerating the file. + 1 while unlink('a1.o'); + # Make timestamp later than last insertion. + sleep(2); + system('cc a1.c1 /object=a1.o'); +} else { + utouch(-30, 'a1.o'); +} +($_ = $repl) =~ s/#OBJECT#/a1.o/g; +$answer = "$ar $arflags libxx.a a1.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a1.o'; +} +run_make_test(undef, $arvar, $answer); + +# Use both wildcards and simple names +if ($port_type eq 'VMS-DCL') { + # utouch is not changing what VMS library compare is testing for. + # So do a real change by regenerating the file. + 1 while unlink('a2.o'); + sleep(2); + system('cc a2.c1 /object=a2.o'); +} else { + utouch(-50, 'a2.o'); +} +($_ = $add) =~ s/#OBJECT#/a3.o/g; +$_ .= "$ar $arflags libxx.a a2.o\n"; +($_ .= $repl) =~ s/#OBJECT#/a2.o/g; +$answer = "$ar $arflags libxx.a a3.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a3.o'; +} + +run_make_test('all: libxx.a(a3.o *.o)', $arvar, $answer); + +# Check whitespace handling +if ($port_type eq 'VMS-DCL') { + # utouch is not changing what VMS library compare is testing for. + # So do a real change by regenerating the file. + 1 while unlink('a2.o'); + sleep(2); + system('cc a2.c1 /object=a2.o'); +} else { + utouch(-40, 'a2.o'); +} +($_ = $repl) =~ s/#OBJECT#/a2.o/g; +$answer = "$ar $arflags libxx.a a2.o\n$_"; +if ($port_type eq 'VMS-DCL') { + $answer = 'library /replace libxx.a a2.o'; +} +run_make_test('all: libxx.a( a3.o *.o )', $arvar, $answer); + +rmfiles(qw(a1.c1 a2.c1 a3.c1 a1.o a2.o a3.o libxx.a)); + +# Check non-archive targets +# See Savannah bug #37878 +$mk_string = q! +all: foo(bar).baz +foo(bar).baz: ; @echo '$@' +!; + +if ($port_type eq 'VMS-DCL') { + $mk_string =~ s/echo/write sys\$\$output/; + $mk_string =~ s/\'/\"/g; +} +run_make_test($mk_string, $arvar, "foo(bar).baz\n"); + +# Check renaming of archive targets. +# See Savannah bug #38442 + +mkdir('artest', 0777); +touch('foo.vhd'); +$mk_string = q! +DIR = artest +vpath % $(DIR) +default: lib(foo) +(%): %.vhd ; @cd $(DIR) && touch $(*F) && $(AR) $(ARFLAGS) $@ $(*F) >/dev/null 2>&1 && rm $(*F) +.PHONY: default +!; +if ($port_type eq 'VMS-DCL') { + $mk_string =~ s#= artest#= sys\$\$disk:\[.artest\]#; + $mk_string =~ s#lib\(foo\)#lib.tlb\(foo\)#; + $mk_string =~ s#; \@cd#; pipe SET DEFAULT#; + $mk_string =~ + s#touch \$\(\*F\)#touch \$\(\*F\) && library/create/text sys\$\$disk:\$\@#; + $mk_string =~ + s#library#if f\$\$search(\"\$\@\") \.eqs\. \"\" then library#; + # VMS needs special handling for null extension + $mk_string =~ s#\@ \$\(\*F\)#\@ \$\(\*F\)\.#; + $mk_string =~ s#>/dev/null 2>&1 ##; +} +run_make_test($mk_string, $arvar, ""); + +run_make_test(undef, $arvar, "#MAKE#: Nothing to be done for 'default'.\n"); + +unlink('foo.vhd'); +if ($osname eq 'VMS') { + remove_directory_tree("$cwdpath/artest"); +} else { + remove_directory_tree('artest'); +} + +# Check long names for archive members. +# See Savannah bug #54395 + +if ($osname ne 'VMS') { + my $pre = '1234567890123456'; + my $lib = 'libxx.a'; + my $cr = $created; + $cr =~ s/#OBJECT#/${pre}a/g; + my $ad = $add; + $ad =~ s/#OBJECT#/${pre}b/g; + + run_make_test(qq! +# Both member names > 16 characters long +default: $lib(${pre}a) $lib(${pre}b) + +(%): % ; \$(AR) \$(ARFLAGS) \$@ \$% + +$pre%: ; touch \$\@ +!, + $arvar, "touch ${pre}a\n$ar $arflags $lib ${pre}a\n${cr}touch ${pre}b\n$ar $arflags $lib ${pre}b\n${ad}rm ${pre}a ${pre}b\n"); + + # Run it again; nothing should happen + run_make_test(undef, $arvar, "#MAKE#: Nothing to be done for 'default'.\n"); + + unlink($lib); +} + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/comments b/local/recipes/dev/gnu-make/source/tests/scripts/features/comments new file mode 100644 index 0000000000..9257955f7b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/comments @@ -0,0 +1,35 @@ +$description = "The following test creates a makefile to test comments\n" + ."and comment continuation to the next line using a \n" + ."backslash within makefiles."; + +$details = "To test comments within a makefile, a semi-colon was placed \n" + ."after a comment was started. This should not be reported as\n" + ."an error since it is within a comment. We then continue the \n" + ."comment to the next line using a backslash. To test whether\n" + ."the comment really continued, we place an echo command with some\n" + ."text on the line which should never execute since it should be \n" + ."within a comment\n"; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE <<\EOF; +# Test comment vs semicolon parsing and line continuation +target: # this ; is just a comment \ + @echo This is within a comment. + @echo There should be no errors for this makefile. +EOF + +# 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 = "There should be no errors for this makefile.\n"; + +# COMPARE RESULTS + +&compare_output($answer,&get_logfile(1)) diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/conditionals b/local/recipes/dev/gnu-make/source/tests/scripts/features/conditionals new file mode 100644 index 0000000000..78344b9389 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/conditionals @@ -0,0 +1,162 @@ +# -*-perl-*- +$description = "Check GNU make conditionals."; + +$details = "Attempt various different flavors of GNU make conditionals."; + +run_make_test(' +arg1 = first +arg2 = second +arg3 = third +arg4 = cc +arg5 = second + +all: +ifeq ($(arg1),$(arg2)) + @echo arg1 equals arg2 +else + @echo arg1 NOT equal arg2 +endif + +ifeq \'$(arg2)\' "$(arg5)" + @echo arg2 equals arg5 +else + @echo arg2 NOT equal arg5 +endif + +ifneq \'$(arg3)\' \'$(arg4)\' + @echo arg3 NOT equal arg4 +else + @echo arg3 equal arg4 +endif + +ifndef undefined + @echo variable is undefined +else + @echo variable undefined is defined +endif +ifdef arg4 + @echo arg4 is defined +else + @echo arg4 is NOT defined +endif', + '', + 'arg1 NOT equal arg2 +arg2 equals arg5 +arg3 NOT equal arg4 +variable is undefined +arg4 is defined'); + + +# Test expansion of variables inside ifdef. + +run_make_test(' +foo = 1 + +FOO = foo +F = f + +DEF = no +DEF2 = no + +ifdef $(FOO) +DEF = yes +endif + +ifdef $(F)oo +DEF2 = yes +endif + + +DEF3 = no +FUNC = $1 +ifdef $(call FUNC,DEF)3 + DEF3 = yes +endif + +all:; @echo DEF=$(DEF) DEF2=$(DEF2) DEF3=$(DEF3)', + '', + 'DEF=yes DEF2=yes DEF3=yes'); + + +# Test all the different "else if..." constructs + +run_make_test(' +arg1 = first +arg2 = second +arg3 = third +arg4 = cc +arg5 = fifth + +result = + +ifeq ($(arg1),$(arg2)) + result += arg1 equals arg2 +else ifeq \'$(arg2)\' "$(arg5)" + result += arg2 equals arg5 +else ifneq \'$(arg3)\' \'$(arg3)\' + result += arg3 NOT equal arg4 +else ifndef arg5 + result += variable is undefined +else ifdef undefined + result += arg4 is defined +else + result += success +endif + + +all: ; @echo $(result)', + '', + 'success'); + + +# Test some random "else if..." construct nesting + +run_make_test(' +arg1 = first +arg2 = second +arg3 = third +arg4 = cc +arg5 = second + +ifeq ($(arg1),$(arg2)) + $(info failed 1) +else ifeq \'$(arg2)\' "$(arg2)" + ifdef undefined + $(info failed 2) + else + $(info success) + endif +else ifneq \'$(arg3)\' \'$(arg3)\' + $(info failed 3) +else ifdef arg5 + $(info failed 4) +else ifdef undefined + $(info failed 5) +else + $(info failed 6) +endif + +.PHONY: all +all: ; @:', + '', + 'success'); + +# SV 47960 : ensure variable assignments in non-taken legs don't cause problems +run_make_test(' +ifneq ($(FOO),yes) +target: +else +BAR = bar +target: +endif + @echo one +', + '', "one\n"); + + +# This tells the test driver that the perl test script executed properly. +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/default_names b/local/recipes/dev/gnu-make/source/tests/scripts/features/default_names new file mode 100644 index 0000000000..3ecbaab911 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/default_names @@ -0,0 +1,44 @@ +# -*-perl-*- + +$description = "This script tests to make sure that Make looks for +default makefiles in the correct order (GNUmakefile,makefile,Makefile)"; + +# Create a makefile called "GNUmakefile" +$makefile = "GNUmakefile"; + +open(MAKEFILE,"> $makefile"); +print MAKEFILE "FIRST: ; \@echo It chose GNUmakefile\n"; +close(MAKEFILE); + +# Create another makefile called "makefile" +open(MAKEFILE,"> makefile"); +print MAKEFILE "SECOND: ; \@echo It chose makefile\n"; +close(MAKEFILE); + +# DOS/W32/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 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"); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/dircache b/local/recipes/dev/gnu-make/source/tests/scripts/features/dircache new file mode 100644 index 0000000000..e5e846903a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/dircache @@ -0,0 +1,31 @@ +# -*-mode: perl-*- + +$description = "Test the directory cache behavior."; + +# The first wildcard should bring the entire directory into the cache Then we +# create a new file "behind make's back" then see if the next wildcard detects +# it. + +run_make_test(q! +_orig := $(wildcard ./*) +$(shell echo > anewfile) +_new := $(wildcard ./*) +$(info diff=$(filter-out $(_orig),$(_new))) +all:;@: +!, + '', "diff=./anewfile\n"); + +rmfiles('anewfile'); + +run_make_test(q! +_orig := $(wildcard ./*) +$(file >anewfile) +_new := $(wildcard ./*) +$(info diff=$(filter-out $(_orig),$(_new))) +all:;@: +!, + '', "diff=./anewfile\n"); + +rmfiles('anewfile'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/double_colon b/local/recipes/dev/gnu-make/source/tests/scripts/features/double_colon new file mode 100644 index 0000000000..a039b0a9a8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/double_colon @@ -0,0 +1,230 @@ +# -*-perl-*- +$description = "Test handling of double-colon rules."; + +$details = "\ +We test these features: + + - Multiple commands for the same (double-colon) target + - Different prerequisites for targets: only out-of-date + ones are rebuilt. + - Double-colon targets that aren't the goal target. + +Then we do the same thing for parallel builds: double-colon +targets should always be built serially."; + +# TEST 0: A simple double-colon rule that isn't the goal target. + +run_make_test(q! +all: baz + +foo:: f1.h ; @echo foo FIRST +foo:: f2.h ; @echo foo SECOND + +bar:: ; @echo aaa; sleep 1; echo aaa done +bar:: ; @echo bbb + +baz:: ; @echo aaa +baz:: ; @echo bbb + +biz:: ; @echo aaa +biz:: two ; @echo bbb + +two: ; @echo two + +f1.h f2.h: ; @echo $@ + +d :: ; @echo ok +d :: d ; @echo oops +!, + "all", "aaa\nbbb\n"); + +# TEST 1: As above, in parallel + +if ($parallel_jobs) { + run_make_test(undef, "-j10 all", "aaa\nbbb\n"); +} + +# TEST 2: A simple double-colon rule that is the goal target + +run_make_test(undef, "bar", "aaa\naaa done\nbbb\n"); + +# TEST 3: As above, in parallel + +if ($parallel_jobs) { + run_make_test(undef, "-j10 bar", "aaa\naaa done\nbbb\n"); +} + +# TEST 4: Each double-colon rule is supposed to be run individually + +&utouch(-5, 'f2.h'); +&touch('foo'); + +run_make_test(undef, "foo", "f1.h\nfoo FIRST\n"); + +# TEST 5: Again, in parallel. + +if ($parallel_jobs) { + run_make_test(undef, "-j10 foo", "f1.h\nfoo FIRST\n"); +} + +# TEST 6: Each double-colon rule is supposed to be run individually + +&utouch(-5, 'f1.h'); +unlink('f2.h'); +&touch('foo'); + +run_make_test(undef, "foo", "f2.h\nfoo SECOND\n"); + +# TEST 7: Again, in parallel. + +if ($parallel_jobs) { + run_make_test(undef, "-j10 foo", "f2.h\nfoo SECOND\n"); +} + +# TEST 8: Test circular dependency check; PR/1671 + +run_make_test(undef, "d", "ok\n$make_name: Circular d <- d dependency dropped.\noops\n"); + +# TEST 8: I don't grok why this is different than the above, but it is... +# +# Hmm... further testing indicates this might be timing-dependent? +# +#if ($parallel_jobs) { +# run_make_test(undef, "-j10 biz", "aaa\ntwo\nbbb\n"); +#} + +unlink('foo','f1.h','f2.h'); + + +# TEST 9: make sure all rules in s double colon family get executed +# (Savannah bug #14334). +# + +&touch('one'); +&touch('two'); + +run_make_test(' +.RECIPEPREFIX = > +.PHONY: all +all: result + +result:: one +> @echo $^ >>$@ +> @echo $^ + +result:: two +> @echo $^ >>$@ +> @echo $^ + +', +'', +'one +two'); + +unlink('result','one','two'); + +# TEST 10: SV 33399 : check for proper backslash handling + +run_make_test(' +a\ xb :: ; @echo one +a\ xb :: ; @echo two +', + '', "one\ntwo\n"); + +# Test 11: SV 44742 : All double-colon rules should be run in parallel build. + +run_make_test(' +.RECIPEPREFIX = > +result :: 01 +> @echo update +> @touch $@ +result :: 02 +> @echo update +> @touch $@ +result :: 03 +> @echo update +> @touch $@ +result :: 04 +> @echo update +> @touch $@ +result :: 05 +> @echo update +> @touch $@ +01 02 03 04 05: +> @touch 01 02 03 04 05 +', + '-j10 result', "update\nupdate\nupdate\nupdate\nupdate\n"); + +unlink('result', '01', '02', '03', '04', '05'); + +# Test 12: SV 44742 : Double-colon rules with parallelism + +run_make_test(' +root: all ; echo root +all:: ; echo all_one +all:: 3 ; echo all_two +%: ; sleep $* +', + '-rs -j2 1 2 root', "all_one\nall_two\nroot\n"); + +# SV 47995 : Parallel double-colon rules with FORCE + +run_make_test(' +all:: ; @echo one + +all:: joe ; @echo four + +joe: FORCE ; touch joe-is-forced + +FORCE: +', + '-j5', "one\ntouch joe-is-forced\nfour\n"); + +unlink('joe-is-forced'); + +# sv 60188. +# Even though test.x is explicitly mentioned, terminal pattern rules still +# apply only if the prerequisite exists. +touch('hello.z'); + +# subtest 1. test.x is explicitly mentioned. +run_make_test(q! +all: hello.z +%.z:: test.x ; touch $@ +%.x: ; +!, + '', "#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.z'); + +# subtest 2. hello.x is derived from the stem. +touch('hello.z'); + +run_make_test(q! +all: hello.z +%.z:: %.x; touch $@ +%.x: ; touch $@ +!, + '', "#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.z'); + +# subtest 3 +# hello.x is explicitly mentioned on an unrelated rule and thus is not an +# intermediate file. +# Terminal pattern rules do not apply anyway and there is no rule to built +# 'hello.x'. +touch('hello.z'); +run_make_test(q! +all: hello.z +%.z:: %.x; touch $@ +%.x: ; +unrelated: hello.x +!, + '', "#MAKE#: *** No rule to make target 'hello.x', needed by 'hello.z'. Stop.\n", 512); + +unlink('hello.z'); + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/echoing b/local/recipes/dev/gnu-make/source/tests/scripts/features/echoing new file mode 100644 index 0000000000..a666a26307 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/echoing @@ -0,0 +1,64 @@ +# -*-perl-*- +$description = "The following test creates a makefile to test command +echoing. It tests that when a command line starts with +a '\@', the echoing of that line is suppressed. It also +tests the -n option which tells make to ONLY echo the +commands and no execution happens. In this case, even +the commands with '\@' are printed. Lastly, it tests the +-s flag which tells make to prevent all echoing, as if +all commands started with a '\@'."; + +$details = "This test is similar to the 'clean' test except that a '\@' has +been placed in front of the delete command line. Four tests +are run here. First, make is run normally and the first echo +command should be executed. In this case there is no '\@' so +we should expect make to display the command AND display the +echoed message. Secondly, make is run with the clean target, +but since there is a '\@' at the beginning of the command, we +expect no output; just the deletion of a file which we check +for. Third, we give the clean target again except this time +we give make the -n option. We now expect the command to be +displayed but not to be executed. In this case we need only +to check the output since an error message would be displayed +if it actually tried to run the delete command again and the +file didn't exist. Lastly, we run the first test again with +the -s option and check that make did not echo the echo +command before printing the message.\n"; + +$example = "EXAMPLE_FILE"; + +touch($example); + +# TEST #1 +# ------- + +run_make_test(" +all: +\techo This makefile did not clean the dir... good +clean: +\t\@$CMD_rmfile $example\n", + '', 'echo This makefile did not clean the dir... good +This makefile did not clean the dir... good'); + +# TEST #2 +# ------- + +run_make_test(undef, 'clean', ''); +if (-f $example) { + $test_passed = 0; + unlink($example); +} + +# TEST #3 +# ------- + +run_make_test(undef, '-n clean', "$CMD_rmfile $example\n"); + + +# TEST #4 +# ------- + +run_make_test(undef, '-s', "This makefile did not clean the dir... good\n"); + + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/errors b/local/recipes/dev/gnu-make/source/tests/scripts/features/errors new file mode 100644 index 0000000000..2cdaf31ded --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/errors @@ -0,0 +1,118 @@ +# -*-perl-*- + +$description = "Test ignored failures in recipe command lines"; + +run_make_test(qq! +one: +\t-exit 1 +\texit 0 +two: +\texit 1 +\texit 0 +!, + "one", "exit 1\n#MAKE#: [#MAKEFILE#:3: one] Error 1 (ignored)\nexit 0\n"); + +# TEST #1 +# ------- + +run_make_test(undef, " -i two", + "exit 1\n#MAKE#: [#MAKEFILE#:6: two] Error 1 (ignored)\nexit 0\n"); + +# TEST #2 +# ------- + +# Test that error line offset works + +run_make_test(qq! +all: +\t\@echo hi +\t\@echo there +\t\@exit 1 +!, + '', "hi\nthere\n#MAKE#: *** [#MAKEFILE#:5: all] Error 1", 512); + +# Windows error look completely different :-/ + +sub errors_getinfo +{ + my ($cmd, $args) = @_; + if ($port_type eq 'W32') { + return (2, "process_begin: CreateProcess(NULL, $cmd $args, ...) failed.\nmake (e=2): The system cannot find the file specified."); + } + + return (127, "#MAKE#: $cmd: $ERR_no_such_file"); +} + +# TEST #3 +# ------- + +# Try failing due to unknown command +my $unk = './foobarbazbozblat'; +unlink($unk); + +my ($ernum, $erstr) = errors_getinfo($unk, "xx yy"); +run_make_test(qq! +one: ; -$unk xx yy +!, 'one', + "$unk xx yy\n$erstr\n#MAKE#: [#MAKEFILE#:2: one] Error $ernum (ignored)\n"); + +# TEST #4 +# ------- + +($ernum, $erstr) = errors_getinfo($unk, "aa bb"); +run_make_test(qq! +two: ; $unk aa bb +!, 'two -i', + "$unk aa bb\n$erstr\n#MAKE#: [#MAKEFILE#:2: two] Error $ernum (ignored)\n"); + +# TEST #5 +# ------- + +run_make_test(undef, 'two', + "$unk aa bb\n$erstr\n#MAKE#: *** [#MAKEFILE#:2: two] Error $ernum\n", 512); + +# SV #56918 : Test the unknown command as the second recipe line + +($ernum, $erstr) = errors_getinfo($unk, "qq rr"); +run_make_test(qq! +three: +\t\@echo one +\t$unk qq rr +!, 'three', + "one\n$unk qq rr\n$erstr\n#MAKE#: *** [#MAKEFILE#:4: three] Error $ernum\n", 512); + +# Try failing due to non-executable file + +if ($ERR_nonexe_file) { + my $noexe = './barfooblatboz'; + touch($noexe); + + run_make_test(qq! + one: ; -$noexe xx yy + two: ; $noexe aa bb + !, + 'one', "$noexe xx yy\n#MAKE#: $noexe: $ERR_nonexe_file\n#MAKE#: [#MAKEFILE#:2: one] Error 127 (ignored)\n"); + + unlink($noexe); +} + +# Try failing by "running" a directory + +if ($ERR_exe_dir) { + mkdir('sd', 0775) or print "mkdir: sd: $!\n"; + + run_make_test(q! +PATH := . +all: ; sd +!, + '', "sd\n#MAKE#: sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#:3: all] Error 127", 512); + + run_make_test(q! +all: ; ./sd +!, + '', "./sd\n#MAKE#: ./sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#:2: all] Error 127", 512); + + rmdir('sd'); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/escape b/local/recipes/dev/gnu-make/source/tests/scripts/features/escape new file mode 100644 index 0000000000..5157a977ec --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/escape @@ -0,0 +1,103 @@ +# -*-perl-*- +$description = "Test various types of escaping in makefiles."; + +$details = "\ +Make sure that escaping of ':' works in target names. +Make sure escaping of whitespace works in target names. +Make sure that escaping of '#' works. +Make sure that backslash before non-special characters are kept."; + + +# TEST 1 + +run_make_test(q! +ifdef NOESC +path = pre: +endif +ifdef ONEESC +path = pre\: +endif +ifdef TWOESC +path = pre\\\\: +endif + +$(path)foo : ; @echo "touch ($@)" + +foo\ bar: ; @echo "touch ($@)" + +sharp: foo\#bar.ext +foo\#bar.ext: ; @echo "foo#bar.ext = ($@)" +!, + '', + 'touch (foo)'); + +# TEST 2: This one should fail, since the ":" is unquoted. + +run_make_test(undef, + 'NOESC=1', + "#MAKEFILE#:12: *** target pattern contains no '%'. Stop.", + 512); + +# TEST 3: This one should work, since we escape the ":". + +run_make_test(undef, + 'ONEESC=1', + 'touch (pre:foo)'); + +# TEST 4: This one should fail, since the escape char is escaped. + +run_make_test(undef, + 'TWOESC=1', + "#MAKEFILE#:12: *** target pattern contains no '%'. Stop.", + 512); + +# TEST 5: This one should work + +run_make_test(undef, + ['foo bar'], + 'touch (foo bar)'); + +# TEST 6: Test escaped comments + +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"); + +# Test escaped comments in variable assignments +run_make_test(q! +self = $1 +foo := $(call self,#foo#)#foo +bar := $(call self,\#bar\#)#bar +all:;@echo '$(foo) $(bar)' +!, + '',"#foo# \\#bar\\#"); + +# Test escaped comments in variable assignments in a variable +run_make_test(q! +C = \# +self = $1 +foo := $(call self,$Cfoo$C)#foo +all:;@echo '$(foo)' +!, + '',"#foo#"); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/exec b/local/recipes/dev/gnu-make/source/tests/scripts/features/exec new file mode 100644 index 0000000000..f139cf8c8b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/exec @@ -0,0 +1,72 @@ +# -*-perl-*- + +use warnings; + +my $description = "Test that make can execute binaries as well as scripts with" + ." various shabangs and without a shbang"; +my $details = "The various shells that this test uses are the default" + ." /bin/sh, \$SHELL and the perl interpreter that is" + ." executing this test program. The shells are used for the value" + ." of SHELL inside the test makefile and also as a shbang in the" + ." executed script. There is also a test which executes a script" + ." that has no shbang."; + +# Only bother with this on UNIX systems +$port_type eq 'UNIX' or return -1; +$^O =~ /cygwin/ and return -1; + +my @shbangs = ('', '#!/bin/sh', "#!$perl_name"); +my @shells = ('', 'SHELL=/bin/sh'); + +# Try whatever shell the user has, as long as it's not a C shell. +# The C shell is not usable with make, due to not correctly handling +# file descriptors and possibly other issues. +my $usersh = $origENV{SHELL}; +if ($usersh !~ /csh/) { + push @shbangs, ("#!$usersh"); + push @shells, ("SHELL=$usersh"); +} + +my $answer = 'hello, world'; + +# tests [0-11] +# Have a makefile with various SHELL= exec a shell program with varios +# shbangs or without a shbang at all. +my $stem = './exec.cmd'; +my $k = 0; +for my $shbang (@shbangs) { + for my $shell (@shells) { + my $cmd = $k ? "$stem.$k" : $stem; + ++$k; + unlink $cmd; + open(CMD,"> $cmd"); + print CMD "$shbang\n"; + print CMD "printf \"$answer\\n\";\n"; + close(CMD); + chmod 0700, $cmd; + + run_make_test("# shbang=$shbang\n# shell=$shell" . q! +all:; @$(CMD) +!, "$shell CMD=$cmd", "$answer\n"); + + rmfiles($cmd); + } +} + +# tests [12-14] +# Exec a binary from a makefile that has SHELL=. +for my $shell (@shells) { + run_make_test(q! +all:; @#PERL# -e 'printf "$(ANSWER)\n"'; +!, "$shell ANSWER='$answer'", "$answer\n"); +} + +# test 15 +# Use perl as a shell. +run_make_test(q! +SHELL = #PERL# +.SHELLFLAGS = -e +all:; @printf "$(ANSWER)\n"; +!, "ANSWER='$answer'", "$answer\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/export b/local/recipes/dev/gnu-make/source/tests/scripts/features/export new file mode 100644 index 0000000000..ad58177b6b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/export @@ -0,0 +1,210 @@ +# -*-perl-*- +$description = "Check GNU make export/unexport commands."; + +$details = ""; + +# The test driver cleans out our environment for us so we don't have to worry +# about that here. + +&run_make_test(' +FOO = foo +BAR = bar +BOZ = boz + +export BAZ = baz +export BOZ + +BITZ = bitz +BOTZ = botz + +export BITZ BOTZ +unexport BOTZ + +ifdef EXPORT_ALL +export +endif + +ifdef UNEXPORT_ALL +unexport +endif + +ifdef EXPORT_ALL_PSEUDO +.EXPORT_ALL_VARIABLES: +endif + +.RECIPEPREFIX := > +all: +> @echo "FOO=$(FOO) BAR=$(BAR) BAZ=$(BAZ) BOZ=$(BOZ) BITZ=$(BITZ) BOTZ=$(BOTZ)" +> @echo "FOO=$$FOO BAR=$$BAR BAZ=$$BAZ BOZ=$$BOZ BITZ=$$BITZ BOTZ=$$BOTZ" +', + '', "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz +FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); + +# TEST 1: make sure vars inherited from the parent are exported + +$ENV{FOO} = 1; + +&run_make_test(undef, '', "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz +FOO=foo BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); + +# TEST 2: global export. Explicit unexport takes precedence. + +run_make_test(undef, "EXPORT_ALL=1" , + "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz +FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); + +# TEST 3: global unexport. Explicit export takes precedence. + +&run_make_test(undef, "UNEXPORT_ALL=1", + "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz +FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); + +# TEST 4: both: in the above makefile the unexport comes last so that rules. + +&run_make_test(undef, "EXPORT_ALL=1 UNEXPORT_ALL=1", + "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz +FOO= BAR= BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); + +# TEST 5: test the pseudo target. + +&run_make_test(undef, "EXPORT_ALL_PSEUDO=1", + "FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=botz +FOO=foo BAR=bar BAZ=baz BOZ=boz BITZ=bitz BOTZ=\n"); + +# TEST 6: Test the expansion of variables inside export + +&run_make_test(' +foo = f-ok +bar = b-ok + +FOO = foo +F = f + +BAR = bar +B = b + +export $(FOO) +export $(B)ar + +.RECIPEPREFIX := > +all: +> @echo foo=$(foo) bar=$(bar) +> @echo foo=$$foo bar=$$bar +', + "", "foo=f-ok bar=b-ok\nfoo=f-ok bar=b-ok\n"); + +# TEST 7: Test the expansion of variables inside unexport + +&run_make_test(' +foo = f-ok +bar = b-ok + +FOO = foo +F = f + +BAR = bar +B = b + +export foo bar + +unexport $(FOO) +unexport $(B)ar + +.RECIPEPREFIX := > +all: +> @echo foo=$(foo) bar=$(bar) +> @echo foo=$$foo bar=$$bar +', + '', "foo=f-ok bar=b-ok\nfoo= bar=\n"); + +# TEST 7: Test exporting multiple variables on the same line + +&run_make_test(' +A = a +B = b +C = c +D = d +E = e +F = f +G = g +H = h +I = i +J = j + +SOME = A B C + +export F G H I J + +export D E $(SOME) + +all: ; @echo A=$$A B=$$B C=$$C D=$$D E=$$E F=$$F G=$$G H=$$H I=$$I J=$$J +', + '', "A=a B=b C=c D=d E=e F=f G=g H=h I=i J=j\n"); + +# TEST 8: Test unexporting multiple variables on the same line + +@args{qw(A B C D E F G H I J)} = qw(1 2 3 4 5 6 7 8 9 10); +%ENV = (%ENV, %args); + +&run_make_test(' +A = a +B = b +C = c +D = d +E = e +F = f +G = g +H = h +I = i +J = j + +SOME = A B C + +unexport F G H I J + +unexport D E $(SOME) + +all: ; @echo A=$$A B=$$B C=$$C D=$$D E=$$E F=$$F G=$$G H=$$H I=$$I J=$$J +', + '', "A= B= C= D= E= F= G= H= I= J=\n"); + +# TEST 9: Check setting a variable named "export" + +&run_make_test(' +export = 123 +export export +export export = 456 +a: ; @echo "\$$(export)=$(export) / \$$export=$$export" +', + '', "\$(export)=456 / \$export=456\n"); + +# TEST 10: Check "export" as a target + +&run_make_test(' +a: export +export: ; @echo "$@" +', + '', "export\n"); + +# Check export and assignment of a variable on the same line + +$ENV{hello} = 'moon'; + +run_make_test(q! +all: ; @echo hello=$(hello) hello=$$hello +export hello=sun +!, + '', "hello=sun hello=sun\n"); + +# Check unexport and assignment of a variable on the same line + +$ENV{hello} = 'moon'; + +run_make_test(q! +all: ; @echo hello=$(hello) hello=$$hello +unexport hello=sun +!, + '', "hello=sun hello=\n"); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/grouped_targets b/local/recipes/dev/gnu-make/source/tests/scripts/features/grouped_targets new file mode 100644 index 0000000000..6b3c561741 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/grouped_targets @@ -0,0 +1,207 @@ +# -*-perl-*- + +$description = "This test is about grouped multiple targets indicated by &:"; +$details = "Here we test for requirements like\n" + ."- if multiple such targets are updated, the recipe is run once\n" + ."- parsing issues related to the &: syntax itself\n"; + +# Parsing: &: allowed without any targets. +run_make_test(q{ +.PHONY: all +&:; +all: ;@printf '' +}, +'', ""); + +# Parsing: &: works not preceded by whitespace. +run_make_test(q{ +foo&:;@echo foo +}, +'foo', "foo"); + +# Ordinary rule runs recipe four times for t1 t2 t3 t4. +# Grouped target rule runs recipe once; others are considered updated. +run_make_test(q{ +.PHONY: t1 t2 t3 t4 g1 g2 g3 g4 +t1 t2 t3 t4: ; @echo $@ +g1 g2 g3 g4 &: ; @echo $@ +}, +'t1 t2 t3 t4 g1 g2 g3 g4', +"t1\n" +."t2\n" +."t3\n" +."t4\n" +."g1\n" +."#MAKE#: Nothing to be done for 'g2'.\n" +."#MAKE#: Nothing to be done for 'g3'.\n" +."#MAKE#: Nothing to be done for 'g4'."); + +# Similar to previous test, but targets come from m1 phony +# rather than from the command line. We don't see "Nothing to +# be done for" messages. Also, note reversed order g4 g3 ... +# Thus the auto variable $@ is "g4" when that rule fires. +run_make_test(q{ +.PHONY: m1 t1 t2 t3 t4 g1 g2 g3 g4 +m1: t1 t2 t3 t4 g4 g3 g2 g1 +t1 t2 t3 t4: ; @echo $@ +g1 g2 g3 g4&: ; @echo $@ +}, +'', +"t1\nt2\nt3\nt4\ng4"); + +# Set a grouped target recipe for existing targets +run_make_test(q{ +.PHONY: M a b +M: a b +a: +a b&: ; @echo Y +b: +}, +'', +"Y"); + +# grouped targets require a recipe +run_make_test(q{ +.PHONY: M a b +M: a b +a b&: +}, +'', +"#MAKEFILE#:4: *** grouped targets must provide a recipe. Stop.", 512); + +# Pattern rules use grouped targets anyway so it's a no-op +run_make_test(q{ +.PHONY: M +M: a.q b.q +a.% b.%&: ; @echo Y +}, +'', +"Y"); + +# Double-colon grouped target rules. +run_make_test(q{ +.PHONY: M a b c d e f g h +M: a b +a b c&:: ; @echo X +c d e&:: ; @echo Y +f g h&:: ; @echo Z +}, +'', +"X"); + +run_make_test(q{ +.PHONY: M a b c d e f g h +M: c +a b c&:: ; @echo X +c d e&:: ; @echo Y +f g h&:: ; @echo Z +}, +'', +"X\nY"); + +run_make_test(q{ +.PHONY: M a b c d e f g h +M: a b c d e +a b c&:: ; @echo X +c d e&:: ; @echo Y +f g h&:: ; @echo Z +}, +'', +"X\nY"); + +run_make_test(q{ +.PHONY: M a b c d e f g h +M: d e +a b c&:: ; @echo X +c d e&:: ; @echo Y +f g h&:: ; @echo Z +}, +'', +"Y"); + +run_make_test(q{ +.PHONY: M a b c d e f g h +M: f g h +a b c&:: ; @echo X +c d e&:: ; @echo Y +f g h&:: ; @echo Z +}, +'', +"Z"); + +# sv 60188. +# Test that a file explicitly mentioned by the user and made by an implicit +# rule is not considered intermediate. + +touch('hello.z'); +touch('hello.q'); + +# subtest 1 +# hello.x is not explicitly mentioned and thus is an intermediate file. +run_make_test(q! +all: hello.z +%.z %.q: %.x ; touch $*.z $*.q +%.x: ; +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + +# subtest 2 +# test.x is explicitly mentioned and thus is not an intermediate file. +run_make_test(q! +all: hello.z +%.z %.q: %.x test.x ; @echo $*.z $*.q +%.x: ; +!, '', "hello.z hello.q\n"); + +# subtest 3 +# hello.x is explicitly mentioned on an unrelated rule and thus is not an +# intermediate file. +run_make_test(q! +all: hello.z +%.z %.q: %.x; @echo $*.z $*.q +%.x: ; +unrelated: hello.x +!, '', "hello.z hello.q\n"); + +unlink('hello.z'); +unlink('hello.q'); + +# SV 62809: Missing grouped target peer causes remake regardless of which +# target caused the rule to run. +touch(qw(gta)); # but not gtb +run_make_test(q! +gta gtb &: ; touch gta gtb +!, + 'gta', "touch gta gtb\n"); +unlink(qw(gta gtb)); + +# Ensure both goal targets are built if they depend on a grouped prereq +touch(qw(gta)); # but not gtb +run_make_test(q! +x1 x2: ; touch $@ + +x1: gta +x2: gtb + +gta gtb &: ; touch gta gtb +!, + 'x1 x2', "touch gta gtb\ntouch x1\ntouch x2\n"); + +# Now everything should be up to date +run_make_test(undef, 'x1 x2', + "#MAKE#: 'x1' is up to date.\n#MAKE#: 'x2' is up to date."); + +unlink(qw(x1 x2 gta gtb)); + +# If an also-make file is older than a prerequisite build both + +utouch(-20, 'gtb'); +utouch(-10, 'pre'); +touch(qw(gta)); +run_make_test(q! +gta gtb &: pre ; touch gta gtb +!, + 'gta', "touch gta gtb\n"); +unlink(qw(pre gta gtb)); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/implicit_search b/local/recipes/dev/gnu-make/source/tests/scripts/features/implicit_search new file mode 100644 index 0000000000..564dc5bb6a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/implicit_search @@ -0,0 +1,483 @@ +# -*-perl-*- + +$description = "Test implicit rule search."; + +$details = ""; + +# sv 48643 +# Each test has a %.c rule ahead of %.f rule. +# hello.f exists and hello.c is missing. + +unlink('hello.c', 'hello.tsk', 'hello.o', 'hello.x'); + +# Run every test with and without a suffix. +my @suffixes = ('', '.o'); +# Run every test with single and double colon rules. +my @rules = ('', ':'); + +for my $s (@suffixes) { +for my $r (@rules) { +touch('hello.f'); + +# Test that make finds the intended implicit rule based on existence of a +# prerequisite in the filesystem. +# +# '%.o: %.c' rule is skipped and '%.o: %.f' rule is chosen. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', "hello.f\n#MAKE#: Nothing to be done for 'all'."); + +# Test that make finds the intended implicit rule based on the explicit +# prerequisite of the top goal and despite the existence of a +# prerequisite in the filesystem. +# +# hello.c is an explicit prerequisite of the top target (hello.o or hello). +# hello.c ought to exist. +# hello.c prerequisite causes '%.o: %.c' rule to be chosen. +run_make_test(" +hello$s: hello.c +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', +"#MAKE#: *** No rule to make target 'hello.c', needed by 'hello$s'. Stop.\n", +512); + +# Test that make finds the intended implicit rule when the implicit +# prerequisite matches a target of an unrelated rule and despite the existence +# of a prerequisite of the other rule candidate in the filesystem. +# +# hello.c matches 'hello.c:' rule. This makes hello.c a target and thus ought +# to exist. +# hello.c prerequisite causes '%.o: %.c' rule to be chosen. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +hello.c:; @#HELPER# fail 1 +", '-r', "fail 1\n#MAKE#: *** [#MAKEFILE#:5: hello.c] Error 1\n", 512); + +# Test that make finds the intended implicit rule based on existence of a +# prerequisite in the filesystem, even when the prerequisite of another +# candidate rule is mentioned explicitly on an unrelated rule. +# +# '%.o: %.c' rule is skipped and '%.o: %.f' rule is chosen, even though hello.c +# is mentioned explicitly on 'unrelated: hello.c'. +# ought-to-exist does not apply to hello.c. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +unrelated: hello.c +", '-r', "hello.f\n#MAKE#: Nothing to be done for 'all'."); + +# Test that make finds the intended implicit rule based on existence of a +# prerequisite in the filesystem. +# +# '%.o: %.c' rule is skipped and '%.o: %.f' rule is chosen. +# Despite '%.o: %.c hello.c' rule having explicit prerequisite hello.c. +# ought-to-exist does not apply to hello.c. +run_make_test(" +all: hello$s +%$s:$r %.c hello.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', "hello.f\n#MAKE#: Nothing to be done for 'all'."); + +# '%.o: %.c' rule is skipped and '%.o: %.f' rule is chosen. +# '%.o: %.f hello.f' rule has explicit prerequisite hello.f. +# ought-to-exist does not apply to hello.c. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f hello.f; \$(info hello.f) +", '-r', "hello.f\n#MAKE#: Nothing to be done for 'all'."); + +# Rule '%: %.f' is chosen, because '%: %.f' requires no intermediates. +# '%: %.c', on the other hand, requires intemediate hello.c to be built by the +# default rule. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info \$<) +%$s:$r %.f; \$(info \$<) +.DEFAULT:; \$(info \$\@) true +unrelated: hello.c +", '-r', "hello.f\n#MAKE#: Nothing to be done for 'all'."); + + +# hello.f is missing. +# This time both hello.c and hello.f are missing and both '%: %.c' and '%: %.f' +# require an intermediate. +# The default rule builds intemerdiate hello.c. +# '%: %.c' rule is chosen to build hello. +unlink('hello.f'); +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info \$<) +%$s:$r %.f; \$(info \$<) +.DEFAULT:; \@\$(info \$\@) #HELPER# fail 1 +unrelated: hello.c +", '-r', "hello.c\nfail 1\n#MAKE#: *** [#MAKEFILE#:5: hello.c] Error 1\n", 512); + +# hello.f is missing. +# No rule is found, because hello.c is not mentioned explicitly. +run_make_test(" +all: hello$s +%$s:$r %.c; \$(info \$<) +%$s:$r %.f; \$(info \$<) +.DEFAULT:; \@\$(info \$\@) #HELPER# fail 1 +", '-r', "hello$s\nfail 1\n#MAKE#: *** [#MAKEFILE#:5: hello$s] Error 1\n", 512); + +} +} + +# Almost the same tests as above, but this time an intermediate is built. + +touch('hello.f'); +for my $s (@suffixes) { +for my $r (@rules) { + +my $result = "#MAKE#: *** No rule to make target 'hello.tsk', needed by 'all'. Stop.\n"; +my $rcode = 512; +if ($s or $r) { + $result = "hello.f\nhello.tsk\n#MAKE#: Nothing to be done for 'all'."; + $rcode = 0; +} + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', "$result", $rcode); + +run_make_test(" +all: hello.tsk +%.tsk: %$s hello$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', $result, $rcode); + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c hello$s; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', $result, $rcode); + +} +} + +for my $r (@rules) { + +# Circular dependency hello.o <- hello.tsk is dropped. +run_make_test(" +all: hello.tsk +%.tsk: %.o; \$(info hello.tsk) +%.o:$r %.c; \$(info hello.c) +%.o:$r %.f %.tsk; \$(info hello.f) +", '-r', +"#MAKE#: Circular hello.o <- hello.tsk dependency dropped.\nhello.f\nhello.tsk\n#MAKE#: Nothing to be done for 'all'."); + +} + + +for my $s (@suffixes) { +for my $r (@rules) { + +run_make_test(" +all: hello.tsk +hello$s: hello.c +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +", '-r', +"#MAKE#: *** No rule to make target 'hello.c', needed by 'hello$s'. Stop.\n", +512); +} +} + +for my $s (@suffixes) { +for my $r (@rules) { + +my $result = "#MAKE#: *** No rule to make target 'hello.tsk', needed by 'all'. Stop.\n"; +if ($s or $r) { + $result = "fail 1\n#MAKE#: *** [#MAKEFILE#:6: hello.c] Error 1\n"; +} + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +hello.c:; @#HELPER# fail 1 +", '-r', $result, 512); +} +} + + +for my $s (@suffixes) { +for my $r (@rules) { + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +unrelated: hello$s +", '-r', "hello.f\nhello.tsk\n#MAKE#: Nothing to be done for 'all'."); +} +} + +for my $s (@suffixes) { +for my $r (@rules) { + +my $result = "#MAKE#: *** No rule to make target 'hello.tsk', needed by 'all'. Stop.\n"; +my $rcode = 512; +if ($s or $r) { + $result = "hello.f\nhello.tsk\n#MAKE#: Nothing to be done for 'all'."; + $rcode = 0; +} + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c; \$(info hello.c) +%$s:$r %.f hello.f; \$(info hello.f) +", '-r', $result, $rcode); +} +} + +# One of the implicit rules has two prerequisites, hello.c and hello.x +# hello.c does not qualify as ought to exit. +# hello.x can be made from hello.z. +# This test exersizes the break, which prevents making hello.x as an +# intermediate from hello.z during compatibility search. +unlink('hello.f'); +touch('hello.z'); +for my $s (@suffixes) { +for my $r (@rules) { + +run_make_test(" +all: hello.tsk +%.tsk: %$s; \$(info hello.tsk) +%$s:$r %.c %.x; \$(info hello.c) +%$s:$r %.f; \$(info hello.f) +unrelated: hello$s +%.x:$r %.z; \$(info hello.z) +", '-r', +"#MAKE#: *** No rule to make target 'hello$s', needed by 'hello.tsk'. Stop.\n", +512); +} +} + +# Test that prerequisite 'hello.x' mentioned explicitly on an unrelated rule is +# not considered intermediate. +touch('hello.tsk'); +unlink('hello.x'); +run_make_test(" +all: hello.tsk +%.tsk: %.x; touch hello.tsk +%.x: ; +unrelated: hello.x +", '-r', "touch hello.tsk\n"); +unlink('hello.tsk'); + +touch ('hello.f'); +# Test implicit search of builtin rules. + +# %: %.c (and other builtin rules) are skipped. +# %: %.f is chosen. +run_make_test(q! +all: hello +!, 'FC="@echo f77" OUTPUT_OPTION=', "f77 hello.f -o hello\n"); + +# %.o: %.c (and other builtin rules) are skipped. +# %.o: %.f is chosen. +run_make_test(q! +all: hello.o +!, 'FC="@echo f77" OUTPUT_OPTION=', "f77 -c hello.f\n"); + + +# %: %.c is chosen. +# hello.c is an explicit prerequisite of the top target hello. +# hello.c ought to exist. +# hello.c prerequisite causes '%: %.c' rule to be chosen. +run_make_test(q! +hello: hello.c +!, 'FC="@echo f77" OUTPUT_OPTION=', +"#MAKE#: *** No rule to make target 'hello.c', needed by 'hello'. Stop.\n", +512); + +# %.o: %.c is chosen. +# hello.c is an explicit prerequisite of the top target hello.o. +# hello.c ought to exist. +# hello.c prerequisite causes '%.o: %.c' rule to be chosen. +run_make_test(q! +hello.o: hello.c +!, 'FC="@echo f77" OUTPUT_OPTION=', +"#MAKE#: *** No rule to make target 'hello.c', needed by 'hello.o'. Stop.\n", +512); + +# %: %.c (and other builtin rules) are skipped. +# %: %.f is chosen. +# ought-to-exist does not apply to hello.c. +run_make_test(q! +all: hello +unrelated: hello.c +!, 'FC="@echo f77" OUTPUT_OPTION=', "f77 hello.f -o hello\n"); + +# %.o: %.c (and other builtin rules) are skipped. +# %.o: %.f is chosen. +# ought-to-exist does not apply to hello.c. +run_make_test(q! +all: hello.o +unrelated: hello.c +!, 'FC="@echo f77" OUTPUT_OPTION=', "f77 -c hello.f\n"); + +# builtin rule %.o: %.f is removed. +# %.o: %.c (and other builtin rules) are skipped, because hello.c is missing. +# ought-to-exist does not apply to hello.c. +# %.o: %.c is chosen as a compatibility rule, because of hello.c. +run_make_test(q! +all: hello.o +unrelated: hello.c +%.o: %.f +!, '', +"#MAKE#: *** No rule to make target 'hello.c', needed by 'hello.o'. Stop.\n", +512); + + +# sv 17752. +# In this test the builtin match-anything rule '%: %.f' is used to build +# intermediate hello from hello.f, because hello is mentioned explicitly in +# the makefile. +run_make_test(q! +all: hello.tsk +%.tsk: %; $(info $@ from $<) +unrelated: hello +!, 'FC="@echo f77" OUTPUT_OPTION=', +"f77 hello.f -o hello\nhello.tsk from hello\n"); + +# In this test the builtin match-anything rule %: %.f cannot be used to build +# intermediate hello from hello.f, because hello is not mentioned explicitly in +# the makefile. +run_make_test(q! +all: hello.tsk +%.tsk: %; $(info $@ from $<) +!, 'FC="@echo f77" OUTPUT_OPTION=', +"#MAKE#: *** No rule to make target 'hello.tsk', needed by 'all'. Stop.\n", +512); + +# This is just like the one above, but compatibility rule '%.tsk: % %.x' has 2 +# prerequisites, '%' and '%.x'. +# '%' expands to 'hello' and matches the explicit 'hello' on the unrelated rule. +# '%.x' is an intermediate built from 'hello.xx' by rule '%.x: %.xx' during the +# second pass (intermed_ok == 1) of compatibility search. +# This test validates that compatibility search performs both intermed_ok == 0 +# and intermed_ok == 1 passes. +unlink('hello.x'); +touch('hello.xx'); +run_make_test(q! +all: hello.tsk +%.tsk: % %.x; $(info $@ from $^) +unrelated: hello +%.x: %.xx; $(info $@ from $<) +!, 'FC="@echo f77" OUTPUT_OPTION=', +"f77 hello.f -o hello\nhello.x from hello.xx\nhello.tsk from hello hello.x\n"); + +unlink('bye.o', 'bye.tsk', 'bye.x'); +# sv 21670. +# Default recipe is used to build bye.o. +run_make_test(q! +all: bye.tsk +%.tsk: %.o; $(info $@ from $<) +.DEFAULT:; $(info bye.o) +unrelated: bye.o +!, '-r', "bye.o\nbye.tsk from bye.o\n#MAKE#: Nothing to be done for 'all'."); + +touch('bye.xx'); +# This is just like the one above, but compatibility rule '%.tsk: %.o %.x' has 2 +# prerequisites, '%.o' and '%.x'. +# '%.o' expands to 'bye.o' and matches the explicit 'bye.o' on the unrelated rule. +# '%.x' is an intermediate built from 'bye.xx' by rule '%.x: %.xx' during the +# second pass (intermed_ok == 1) of compatibility search. +# This test validates that compatibility search performs both intermed_ok == 0 +# and intermed_ok == 1 passes. +run_make_test(q! +all: bye.tsk +%.tsk: %.o %.x; $(info $@ from $^) +.DEFAULT:; $(info bye.o) +unrelated: bye.o +%.x: %.xx; $(info $@ from $<) +!, '-r', +"bye.o\nbye.x from bye.xx\nbye.tsk from bye.o bye.x\n#MAKE#: Nothing to be done for 'all'."); + +unlink('hello.f', 'hello.z', 'hello.xx', 'bye.xx'); + + +# A target specific variable causes the file to be entered to the database as a +# prerequisite. Implicit search then treats this file as explicitly mentioned. +# Test that implicit search keeps target specific variables of this file intact. +# In this series of tests prerequisite 'hello.x' has a target specific variable +# and is built as an intermediate. Implicit search treats 'hello.x' as +# explicitly mentioned, but 'hello.x' does not qualify as ought-to-exist. +unlink('hello.x', 'hello.tsk'); + +# 'hello.x' is mentioned explicitly on the same implicit rule. +run_make_test(q! +all: hello.tsk +%.tsk: hello.x; $(info $@) +%.x:; $(flags) +hello.x: flags:=true +!, '-r', "true\nhello.tsk\n"); + +# Similar to the one above, but this time 'hello.x' is derived from the stem. +run_make_test(q! +all: hello.tsk +%.tsk: %.x; $(info $@) +%.x:; $(flags) +hello.x: flags:=true +!, '-r', "true\nhello.tsk\n"); + +# Similar to the one above, this time 'hello.x' is also mentioned explicitly on +# an unrelated rule. +run_make_test(q! +all: hello.tsk +%.tsk: %.x; $(info $@) +%.x:; $(flags) +hello.x: flags:=true +unrelated: hello.x +!, '-r', "true\nhello.tsk\n"); + +# 'hello.x' has a pattern specific variable. +run_make_test(q! +all: hello.tsk +%.tsk: %.x; $(info $@) +%.x:; $(flags) +%.x: flags:=true +!, '-r', "true\nhello.tsk\n"); + +# 'hello.x' has a target specific variable and a pattern specific variable. +run_make_test(q! +all: hello.tsk +%.tsk: %.x; $(info $@) +%.x:; $(flags) +hello.x: flags+=good +%.x: flags:=true +!, '-r', "true good\nhello.tsk\n"); + +# Intermediate prerequisite 'hello.x' has a target specific variable, a pattern +# specfic variable, matches on both rules '%.tsk: %.x' and 'big_%.tsk: %.x'. +run_make_test(q! +all: hello.tsk big_hello.tsk +%.tsk: %.x; $(info $@) +big_%.tsk: %.x; $(info $@) +%.x:; $(flags) +hello.x: flags+=good +%.x: flags:=true +!, '-r', "true good\nhello.tsk\nbig_hello.tsk\n"); + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/include b/local/recipes/dev/gnu-make/source/tests/scripts/features/include new file mode 100644 index 0000000000..69d67181cc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/include @@ -0,0 +1,465 @@ +# -*-mode: perl; rm-trailing-spaces: nil-*- + +$description = "Test various forms of the GNU make 'include' command."; + +$details = "\ +Test include, -include, sinclude and various regressions involving them. +Test extra whitespace at the end of the include, multiple -includes and +sincludes (should not give an error) and make sure that errors are reported +for targets that were also -included."; + +create_file('incl.mk', "ANOTHER: ; \@echo This is another included makefile\n"); + +run_make_test(qq!#Extra space at the end of the following file name +include incl.mk ! . q! +all: ; @echo There should be no errors for this makefile. + +-include nonexistent.mk +-include nonexistent.mk +sinclude nonexistent.mk +sinclude nonexistent-2.mk +-include makeit.mk +sinclude makeit.mk + +error: makeit.mk +!, + "all", "There should be no errors for this makefile.\n"); + +run_make_test(undef, "ANOTHER", "This is another included makefile\n"); + +unlink('incl.mk'); + +# Try to build the "error" target; this will fail since we don't know +# how to create makeit.mk, but we should also get a message (even though +# the -include suppressed it during the makefile read phase, we should +# see one during the makefile run phase). + +run_make_test + (' +-include foo.mk +error: foo.mk ; @echo $@ +', + '', + "#MAKE#: *** No rule to make target 'foo.mk', needed by 'error'. Stop.\n", + 512 + ); + +# The same as above with an additional include directory. + +mkdir('hellod', 0777); + +run_make_test + (' +-include foo.mk +error: foo.mk ; @echo $@ +', + '-Ihellod', + "#MAKE#: *** No rule to make target 'foo.mk', needed by 'error'. Stop.\n", + 512 + ); + +rmdir('hellod'); + +# Make sure that target-specific variables don't impact things. This could +# happen because a file record is created when a target-specific variable is +# set. + +run_make_test + (' +bar.mk: foo := baz +-include bar.mk +hello: ; @echo hello +', + '', + "hello\n" + ); + + +# Test inheritance of dontcare flag when rebuilding makefiles. +# +run_make_test(' +.PHONY: all +all: ; @: + +-include foo + +foo: bar; @: +', '', ''); + + +# Make sure that we don't die when the command fails but we dontcare. +# (Savannah bug #13216). +# +run_make_test(' +.PHONY: all +all:; @: + +-include foo + +foo: bar; @: + +bar:; @exit 1 +', '', ''); + +# Check include, sinclude, -include with no filenames. +# (Savannah bug #1761). + +run_make_test(' +.PHONY: all +all:; @: +include +-include +sinclude', '', ''); + + +# Test that the diagnostics is issued even if the target has been +# tried before with the dontcare flag (direct dependency case). +# +run_make_test(' +-include foo + +all: bar + +foo: baz +bar: baz +', +'', +"#MAKE#: *** No rule to make target 'baz', needed by 'bar'. Stop.\n", +512); + +# Test that the diagnostics is issued even if the target has been +# tried before with the dontcare flag (indirect dependency case). +# +run_make_test(' +-include foo + +all: bar + +foo: baz +bar: baz +baz: end +', +'', +"#MAKE#: *** No rule to make target 'end', needed by 'baz'. Stop.\n", +512); + +# Test include of make-able file doesn't show an error (Savannah #102) +run_make_test(q! +.PHONY: default +default:; @echo DONE + +inc1:; echo > $@ +include inc1 +include inc2 +inc2:; echo > $@ +!, + '', "echo > inc1\necho > inc2\nDONE\n"); + +rmfiles('inc1', 'inc2'); + +# Test include of make-able file doesn't show an error. +# Specify an additional include directory. + +mkdir('hellod', 0777); + +run_make_test(q! +.PHONY: default +default:; @echo DONE + +inc1:; echo > $@ +include inc1 +include inc2 +inc2:; echo > $@ +!, + '-Ihellod', "echo > inc1\necho > inc2\nDONE\n"); + +rmfiles('inc1', 'inc2'); + +# Test include of make-able file doesn't show an error. +# inc1 and inc2 are present in the specified include directory. +touch('hellod/inc1'); +touch('hellod/inc2'); + +run_make_test(q! +.PHONY: default +default:; @echo DONE + +inc1:; echo > $@ +include inc1 +include inc2 +inc2:; echo > $@ +!, + '-Ihellod', "DONE\n"); + +rmfiles('inc1', 'inc2', 'hellod/inc1', 'hellod/inc2'); + +rmdir('hellod'); + +# No target gets correct error +run_make_test("\n", '', '#MAKE#: *** No targets. Stop.', 512); + +# No target in included file either, still gets correct error. +touch('inc1.mk'); +run_make_test('include inc1.mk', '', '#MAKE#: *** No targets. Stop.', 512); +rmfiles('inc1.mk'); + +# Include same file multiple times + +run_make_test(q! +default:; @echo DEFAULT +include inc1 +inc1:; echo > $@ +include inc1 +!, + '', "echo > inc1\nDEFAULT\n"); + +rmfiles('inc1'); + +if (defined $ERR_no_such_file) { + + # Test that the diagnostics is issued even if the target has been + # tried before with the dontcare flag (include/-include case). + # + run_make_test(' +include bar +-include foo + +all: + +foo: baz +bar: baz +baz: end +', +'', + "#MAKEFILE#:2: bar: $ERR_no_such_file\n#MAKE#: *** No rule to make target 'end', needed by 'baz'. Stop.\n", + 512); + + # Test include of non-make-able file does show an error (Savannah #102) + run_make_test(q! +.PHONY: default +default:; @echo DONE + +inc1:; echo > $@ +include inc1 +include inc2 +!, + '', "echo > inc1\n#MAKEFILE#:7: inc2: $ERR_no_such_file\n#MAKE#: *** No rule to make target 'inc2'. Stop.\n", 512); + + rmfiles('inc1'); + + # Included file has a prerequisite that fails to build + + run_make_test(q! +default:; @echo DEFAULT +include inc1 +inc1: foo; echo > $@ +foo:; exit 1 +!, + '', "exit 1\n#MAKEFILE#:3: inc1: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: foo] Error 1\n", 512); + + rmfiles('inc1'); + + # Included file has a prerequisite we don't know how to build + + run_make_test(q! +default:; @echo DEFAULT +include inc1 +inc1: foo; echo > $@ +!, + '', "#MAKEFILE#:3: inc1: $ERR_no_such_file\n#MAKE#: *** No rule to make target 'foo', needed by 'inc1'. Stop.\n", 512); + + rmfiles('inc1'); + + # Check that included double-colon targets with no prerequisites aren't + # built. This should fail as hello.mk doesn't exist + + run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +include hello.mk +hello.mk:: ; echo 'FOO=bar' > $@ +!, + '', "#MAKEFILE#:4: hello.mk: $ERR_no_such_file", 512); + + # Check that included phony targets aren't built. + # This should fail as hello.mk doesn't exist + + run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +include hello.mk +hello.mk: ; echo 'FOO=bar' > $@ +.PHONY: hello.mk +!, + '', "#MAKEFILE#:4: hello.mk: $ERR_no_such_file", 512); +} + +if (defined $ERR_unreadable_file) { + # Including files that can't be read should show an error + unlink('inc1'); + create_file('inc1', 'FOO := foo'); + chmod 0000, 'inc1'; + + run_make_test(q! +include inc1 +all:;@echo $(FOO) +!, + '', "#MAKEFILE#:2: inc1: $ERR_unreadable_file\n#MAKE#: *** No rule to make target 'inc1'. Stop.", 512); + + # Including files that can't be read should show an error, even when there + # is a readable file in a subsequent include directory. + mkdir('hellod', 0777); + touch("hellod/inc1"); + + run_make_test(q! +include inc1 +all:;@echo $(FOO) +!, + '-Ihellod', "#MAKEFILE#:2: inc1: $ERR_unreadable_file\n#MAKE#: *** No rule to make target 'inc1'. Stop.", 512); + + # Unreadable files that we know how to successfully recreate should work + + run_make_test(sprintf(q! +all:;@echo $(FOO) +include inc1 +inc1:; @%s $@ && echo FOO := bar > $@ +!, $CMD_rmfile), + '', "bar"); + + # Unreadable files that we know how to successfully recreate should work. + # Even when there is a readable file in an additional include directory. + + unlink('inc1'); + create_file('inc1', 'FOO := foo'); + chmod 0000, 'inc1'; + + run_make_test(sprintf(q! +all:;@echo $(FOO) +include inc1 +inc1:; @%s $@ && echo FOO := bar > $@ +!, $CMD_rmfile), + '-Ihellod', "bar"); + + rmfiles('inc1', 'hellod/inc1'); + rmdir('hellod'); +} + +# Check that the order of remaking include files is correct: should remake +# them in the same order they were encountered in the makefile. SV 58735 + +run_make_test(q! +-include i1 i2 +-include i3 +-include i4 +%:;@echo $@ +all:; +!, + '', "i1\ni2\ni3\ni4\n#MAKE#: 'all' is up to date.\n"); + +# Check that included files work if created after the first include failed +# https://savannah.gnu.org/bugs/?57676 + +run_make_test(q! +default:; @echo $(hello) +-include hello.mk +$(shell echo hello=world >hello.mk) +include hello.mk +!, + '', "world\n"); + +unlink('hello.mk'); + +# Check that included double-colon targets with no prerequisites aren't built. +# This should succeed since hello.mk already exists + +touch('hello.mk'); + +run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +include hello.mk +hello.mk:: ; echo 'FOO=bar' > $@ +!, + '', 'FOO='); + +unlink('hello.mk'); + +# Check that included double-colon targets with no prerequisites aren't built. +# This should succeed due to -include + +run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +-include hello.mk +hello.mk:: ; echo 'FOO=bar' > $@ +!, + '', 'FOO='); + +# Check that phony targets aren't built. +# This should succeed since hello.mk already exists + +touch('hello.mk'); + +run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +include hello.mk +hello.mk: ; echo 'FOO=bar' > $@ +.PHONY: hello.mk +!, + '', 'FOO='); + +unlink('hello.mk'); + +# Check that included double-colon targets with no prerequisites aren't built. +# This should succeed due to -include + +run_make_test(q! +.PHONY: default +default:;@echo 'FOO=$(FOO)' +-include hello.mk +hello.mk: ; echo 'FOO=bar' > $@ +.PHONY: hello.mk +!, + '', 'FOO='); + +# SV 56301 Verify pattern rules creating optional includes. +# -k shouldn't matter when creating include files. + +run_make_test(q! +all:; @echo hello +-include inc_a.mk +include inc_b.mk +%_a.mk %_b.mk:; exit 1 +!, + '', "exit 1\n#MAKEFILE#:4: Failed to remake makefile 'inc_b.mk'.\n", 512); + +run_make_test(undef, '-k', "exit 1\n#MAKEFILE#:4: Failed to remake makefile 'inc_b.mk'.\n", 512); + +# It seems wrong to me that this gives a different error message, but at +# least it doesn't keep going. +run_make_test(q! +all:; @echo hello +include inc_a.mk +-include inc_b.mk +%_a.mk %_b.mk:; exit 1 +!, + '', "exit 1\n#MAKEFILE#:3: inc_a.mk: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: inc_a.mk] Error 1\n", 512); + +run_make_test(undef, '-k', "exit 1\n#MAKEFILE#:3: inc_a.mk: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: inc_a.mk] Error 1\n#MAKEFILE#:3: Failed to remake makefile 'inc_a.mk'.\n", 512); + +# Check the default makefiles... this requires us to invoke make with no +# arguments. Also check MAKEFILES + +if ($port_type eq 'W32') { + $defaults = "GNUmakefile\nmakefile\nMakefile\nmakefile.mak"; +} else { + $defaults = "GNUmakefile\nmakefile\nMakefile"; +} + +$ENV{MAKEFILES} = 'foobar barfoo'; +run_make_with_options(undef, ['-E', '%:;@echo $@', '-E', 'all:;', '-E', '-include bizbaz', '-E', '-include bazbiz'], get_logfile(0)); +$answer = "bizbaz\nbazbiz\nfoobar\nbarfoo\n$defaults\n#MAKE#: 'all' is up to date.\n"; +&compare_output(subst_make_string($answer), &get_logfile(1)); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/jobserver b/local/recipes/dev/gnu-make/source/tests/scripts/features/jobserver new file mode 100644 index 0000000000..8ecbe3458a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/jobserver @@ -0,0 +1,160 @@ +# -*-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; +} + +# Shorthand +my $np = '--no-print-directory'; + +# Simple test of MAKEFLAGS settings +run_make_test(q! +SHOW = $(patsubst --jobserver-auth=%,--jobserver-auth=,$(MAKEFLAGS)) +recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all +all:;@echo $@: "/$(SHOW)/" +!, + "-j2 $np", "recurse: /-j2 --jobserver-auth= $np/\nall: /-j2 --jobserver-auth= $np/\n"); + +# Setting parallelism with the environment +# Command line should take precedence over the environment +$ENV{MAKEFLAGS} = "-j2 $np"; +run_make_test(q! +SHOW = $(patsubst --jobserver-auth=%,--jobserver-auth=,$(MAKEFLAGS)) +recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all +all:;@echo $@: "/$(SHOW)/" +!, + '', "recurse: /-j2 --jobserver-auth= $np/\nall: /-j2 --jobserver-auth= $np/\n"); + +# Test override of -jN +$ENV{MAKEFLAGS} = "-j9 $np"; +run_make_test(q! +SHOW = $(patsubst --jobserver-auth=%,--jobserver-auth=,$(MAKEFLAGS)) +recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -j3 -f #MAKEFILE# recurse2 +recurse2: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all +all:;@echo $@: "/$(SHOW)/" +!, + "-j2 $np", "recurse: /-j2 --jobserver-auth= $np/\n#MAKE#[1]: warning: -j3 forced in submake: resetting jobserver mode.\nrecurse2: /-j3 --jobserver-auth= $np/\nall: /-j3 --jobserver-auth= $np/\n"); + +# Test override of -jN with -j +run_make_test(q! +SHOW = $(patsubst --jobserver-auth=%,--jobserver-auth=,$(MAKEFLAGS)) +recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -j -f #MAKEFILE# recurse2 +recurse2: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all +all:;@echo $@: "/$(SHOW)/" +!, + "-j2 $np", "recurse: /-j2 --jobserver-auth= $np/\n#MAKE#[1]: warning: -j0 forced in submake: resetting jobserver mode.\nrecurse2: /-j $np/\nall: /-j $np/\n"); + +# Don't put --jobserver-auth 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! +.RECIPEPREFIX = > +-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' > $@ +!, + "$np -j2", "#MAKE#[1]: warning: -j2 forced in submake: resetting jobserver mode.\nall\n"); + +unlink('inc.mk'); + +# Test recursion which is hidden from make. +# See Savannah bug #39934 +# Or Red Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=885474 +# Environments that don't use a pipe won't close access, so this won't happen. +if ($port_type ne 'W32') { + create_file('Makefile2', "vpath %.c ../\n", "foo:\n"); + + run_make_test(q! +default: ; @ #MAKEPATH# -f Makefile2 +!, + "--jobserver-style=pipe -j2 $np", +"#MAKE#[1]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. +#MAKE#[1]: Nothing to be done for 'foo'."); + + rmfiles('Makefile2'); +} + +# For Windows and named pipes, we don't need to worry about recursion +if ($port_type eq 'W32' || exists $FEATURES{'jobserver-fifo'}) { + create_file('Makefile2', "vpath %.c ../\n", "foo:\n"); + + run_make_test(q! +default: ; @ #MAKEPATH# -f Makefile2 +!, + "-j2 $np", +"#MAKE#[1]: Nothing to be done for 'foo'."); + + rmfiles('Makefile2'); +} + +# Ensure enter/leave directory messages appear before jobserver warnings + +run_make_test(q! +all: ; @$(MAKE) -C . -f #MAKEFILE# recurse -j1 +recurse: ; @echo hi +!, + '-w -j2', "#MAKE#: Entering directory '#PWD#' +#MAKE#[1]: Entering directory '#PWD#' +#MAKE#[1]: warning: -j1 forced in submake: resetting jobserver mode. +hi +#MAKE#[1]: Leaving directory '#PWD#' +#MAKE#: Leaving directory '#PWD#'\n"); + +# Check for invalid jobserver-style options + +run_make_test(q! +all: a +all a: ; @echo $@ +!, + '--jobserver-style=foo -j8', + "#MAKE#: *** Unknown jobserver auth style 'foo'. Stop.", 512); + +# sv 62908. +# Test that when mkfifo fails, make switches to pipe and succeeds. +# Force mkfifo to fail by attempting to create a fifo in a non existent +# directory. +# run_make_test does not allow matching a multiline pattern, therefore run the +# test twice. +# First time look for /$ERR_no_such_file/ to ensure mkfifo failed. +# Second time look for /Nothing to be done/ to ensure make succeeded. +if (exists $FEATURES{'jobserver-fifo'}) { + $ENV{TMPDIR} = "nosuchdir"; + run_make_test("all:\n", '-j2', "/$ERR_no_such_file/"); + + $ENV{TMPDIR} = "nosuchdir"; + run_make_test(undef, '-j2', "/Nothing to be done/"); + + # Verify that MAKE_TMPDIR is preferred if provided + $ENV{MAKE_TMPDIR} = '.'; + $ENV{TMPDIR} = 'nosuchdir'; + + run_make_test(q! +recurse: ; @$(MAKE) -f #MAKEFILE# all +all:;@echo "$$MAKEFLAGS" +!, + "-j2 --no-print-directory", "/--jobserver-auth=fifo:\\./"); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/load b/local/recipes/dev/gnu-make/source/tests/scripts/features/load new file mode 100644 index 0000000000..b462ed9cca --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/load @@ -0,0 +1,150 @@ +# -*-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 $cc = get_config('CC'); +if (! $cc) { + $verbose and print "Skipping load test: no CC defined\n"; + return -1; +} + +# 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 "gnumake.h" + +char* getenv (const char*); + +int plugin_is_GPL_compatible; + +int testload_gmk_setup (gmk_floc *); +int explicit_setup (gmk_floc *); + +int +testload_gmk_setup (gmk_floc *pos) +{ + (void)pos; + gmk_eval ("TESTLOAD = implicit", 0); + if (getenv("TESTAPI_KEEP")) + return -1; + return 1; +} + +int +explicit_setup (gmk_floc *pos) +{ + (void)pos; + gmk_eval ("TESTLOAD = explicit", 0); + if (getenv("TESTAPI_KEEP")) + return -1; + return 1; +} +EOF +close($F) or die "close: testload.c: $!\n"; + +# Make sure we can compile + +my $cppflags = get_config('CPPFLAGS') . ($srcdir ? " -I$srcdir/src" : ''); +my $cflags = get_config('CFLAGS') . ' -fPIC'; +my $ldflags = get_config('LDFLAGS') . ' -shared'; +my $sobuild = "$cc $cppflags $cflags $ldflags -o testload.so testload.c"; + +my $clog = `$sobuild 2>&1`; +if ($? != 0) { + $verbose and print "Failed to build testload.so:\n$sobuild\n$clog"; + return -1; +} + +# TEST 1 +run_make_test(q! +PRE := $(.LOADED) +load testload.so +POST := $(.LOADED) +all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD) +!, + '--warn-undefined-variables', "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 3 +# 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 4 +# 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"); + +# sv 63044. +# Test that the loaded shared object is present in .LOADED when the setup +# routine returns -1. +$ENV{TESTAPI_KEEP} = 1; +run_make_test(q! +PRE := $(.LOADED) +load testload.so +POST := $(.LOADED) +all: ; @echo pre=$(PRE) post=$(POST) $(TESTLOAD) +!, + '--warn-undefined-variables', "pre= post=testload.so implicit\n"); + +# Check that we don't auto-rebuild of loaded file that's out of date +# if we return -1 from the setup +utouch(-10, 'testload.so'); +touch('testload.c'); + +$ENV{TESTAPI_KEEP} = 1; +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, + '', "pre= post=testload.so implicit\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/local/recipes/dev/gnu-make/source/tests/scripts/features/loadapi b/local/recipes/dev/gnu-make/source/tests/scripts/features/loadapi new file mode 100644 index 0000000000..a72f1f1bb7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/loadapi @@ -0,0 +1,228 @@ +# -*-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 $cc = get_config('CC'); +if (! $cc) { + $verbose and print "Skipping load test: no CC defined\n"; + return -1; +} + +# 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 +#include + +#include "gnumake.h" + +char *getenv (const char*); + +int plugin_is_GPL_compatible; + +int testapi_gmk_setup (); + +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) + 1); + 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 (const gmk_floc *floc) +{ + const char *verbose = getenv ("TESTAPI_VERBOSE"); + + 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); + + if (verbose) + { + printf ("testapi_gmk_setup\n"); + + if (verbose[0] == '2') + printf ("%s:%lu\n", floc->filenm, floc->lineno); + } + + if (getenv ("TESTAPI_KEEP")) + return -1; + + return 1; +} +EOF +close($F) or die "close: testapi.c: $!\n"; + +# Make sure we can compile + +my $cflags = get_config('CFLAGS'); +my $cppflags = get_config('CPPFLAGS'); +my $ldflags = get_config('LDFLAGS'); +my $sobuild = "$cc ".($srcdir? "-I$srcdir/src":'')." $cppflags $cflags -shared -fPIC $ldflags -o testapi.so testapi.c"; + +my $clog = `$sobuild 2>&1`; +if ($? != 0) { + $verbose and print "Failed to build testapi.so:\n$sobuild\n$_"; + return -1; +} + +# 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"); + + +# During all subsequent tests testapi.so exists. +# +my @loads = ('', q! +load testapi.so +load testapi.so +-load testapi.so +-load testapi.so +$(eval load testapi.so) +$(eval -load testapi.so) +!); + +for my $extra_loads (@loads) { +my $n = 5; +if ($extra_loads) { + $n = 12; +} +# sv 63045. +# Test that having unloaded a shared object make loads it again, even if the +# shared object is not updated. +$ENV{TESTAPI_VERBOSE} = 1; +run_make_test(" +load testapi.so +$extra_loads +all:; \$(info \$(test-expand hello)) +testapi.so: force; \$(info \$@) +force:; +.PHONY: force +", '', "testapi_gmk_setup\ntestapi.so\ntestapi_gmk_setup\nhello\n#MAKE#: 'all' is up to date.\n"); + +# sv 63045. +# Same as above, but testapi_gmk_setup returned -1. +$ENV{TESTAPI_KEEP} = 1; +$ENV{TESTAPI_VERBOSE} = 1; +run_make_test(" +load testapi.so +$extra_loads +all:; \$(info \$(test-expand hello)) +testapi.so: force; \$(info \$@) +force:; +.PHONY: force +", '', "testapi_gmk_setup\nhello\n#MAKE#: 'all' is up to date.\n"); + +# sv 63045. +# Test that make exits, unless make can successfully update an unloaded shared +# object. +$ENV{TESTAPI_VERBOSE} = 1; +run_make_test(" +load testapi.so +$extra_loads +all:; \$(info \$(test-expand hello)) +testapi.so: force; @#HELPER# fail 1 +force:; +.PHONY: force +", '', "testapi_gmk_setup\nfail 1\n#MAKE#: *** [#MAKEFILE#:$n: testapi.so] Error 1\n", 512); + +# sv 63045. +# Same as above, but testapi_gmk_setup returned -1. +$ENV{TESTAPI_KEEP} = 1; +$ENV{TESTAPI_VERBOSE} = 1; +run_make_test(" +load testapi.so +$extra_loads +all:; \$(info \$(test-expand hello)) +testapi.so: force; @#HELPER# fail 1 +force:; +.PHONY: force +", '', "testapi_gmk_setup\nhello\n#MAKE#: 'all' is up to date.\n"); + +# sv 63100. +# Test that make supplies the correct floc when the shared object is loaded +# again. +$ENV{TESTAPI_VERBOSE} = 2; +run_make_test(" +load testapi.so +$extra_loads +all:; \$(info \$(test-expand hello)) +testapi.so: force; \$(info \$@) +force:; +.PHONY: force +", '', "testapi_gmk_setup\n#MAKEFILE#:2\ntestapi.so\ntestapi_gmk_setup\n#MAKEFILE#:2\nhello\n#MAKE#: 'all' is up to date.\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/local/recipes/dev/gnu-make/source/tests/scripts/features/mult_rules b/local/recipes/dev/gnu-make/source/tests/scripts/features/mult_rules new file mode 100644 index 0000000000..bddd501c6a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/mult_rules @@ -0,0 +1,88 @@ +$description = "\ +The following test creates a makefile to test the presence +of multiple rules for one target. One file can be the +target of several rules if at most one rule has commands; +the other rules can only have dependencies."; + +$details = "\ +The makefile created in this test contains two hardcoded rules +for foo.o and bar.o. It then gives another multiple target rule +with the same names as above but adding more dependencies. +Additionally, another variable extradeps is listed as a +dependency but is defined to be null. It can however be defined +on the make command line as extradeps=extra.h which adds yet +another dependency to the targets."; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE < $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "bigoutput littleoutput: test.h\n"; +print MAKEFILE "\t\@echo I am \$(subst output,,\$@)\n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&touch("test.h"); + +&run_make_with_options($makefile,"bigoutput",&get_logfile); + + +# Create the answer to what should be produced by this Makefile +$answer = "I am big\n"; + +&compare_output($answer,&get_logfile(1)); + +&run_make_with_options($makefile,"littleoutput",&get_logfile); +$answer = "I am little\n"; +&compare_output($answer,&get_logfile(1)); + +unlink "test.h"; + +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/order_only b/local/recipes/dev/gnu-make/source/tests/scripts/features/order_only new file mode 100644 index 0000000000..4ebdc2b8da --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/order_only @@ -0,0 +1,118 @@ +# -*-perl-*- +$description = "Test order-only prerequisites."; + +$details = "\ +Create makefiles with various combinations of normal and order-only +prerequisites and ensure they behave properly. Test the \$| variable."; + +# TEST #0 -- Basics + +run_make_test(' +%r: | baz ; @echo $< $^ $| +bar: foo +foo:;@: +baz:;@:', + '', "foo foo baz\n"); + +# TEST #1 -- First try: the order-only prereqs need to be built. + +run_make_test(q! +foo: bar | baz + @echo '$$^ = $^' + @echo '$$| = $|' + touch $@ + +.PHONY: baz + +bar baz: + touch $@!, + '', "touch bar\ntouch baz\n\$^ = bar\n\$| = baz\ntouch foo\n"); + + +# TEST #2 -- now we do it again: baz is PHONY but foo should _NOT_ be updated + +run_make_test(undef, '', "touch baz\n"); + +unlink(qw(foo bar baz)); + +# TEST #3 -- Make sure the order-only prereq was promoted to normal. + +run_make_test(q! +foo: bar | baz + @echo '$$^ = $^' + @echo '$$| = $|' + touch $@ + +foo: baz + +.PHONY: baz + +bar baz: + touch $@!, + '', "touch bar\ntouch baz\n\$^ = bar baz\n\$| = \ntouch foo\n"); + + +# TEST #4 -- now we do it again + +run_make_test(undef, '', "touch baz\n\$^ = bar baz\n\$| = \ntouch foo\n"); + +unlink(qw(foo bar baz)); + +# Test empty normal prereqs + +# TEST #5 -- make sure the parser was correct. + +run_make_test(q! +foo:| baz + @echo '$$^ = $^' + @echo '$$| = $|' + touch $@ + +.PHONY: baz + +baz: + touch $@!, + '', "touch baz\n\$^ = \n\$| = baz\ntouch foo\n"); + +# TEST #6 -- now we do it again: this time foo won't be built + +run_make_test(undef, '', "touch baz\n"); + +unlink(qw(foo baz)); + +# Test order-only in pattern rules + +# TEST #7 -- make sure the parser was correct. + +run_make_test(q! +%.w : %.x | baz + @echo '$$^ = $^' + @echo '$$| = $|' + touch $@ + +all: foo.w + +.PHONY: baz +foo.x baz: + touch $@!, + '', + "touch foo.x\ntouch baz\n\$^ = foo.x\n\$| = baz\ntouch foo.w\n"); + +# TEST #8 -- now we do it again: this time foo.w won't be built + +run_make_test(undef, '', "touch baz\n"); + +unlink(qw(foo.w foo.x baz)); + +# TEST #9 -- make sure that $< is set correctly in the face of order-only +# prerequisites in pattern rules. + +run_make_test(' +%r: | baz ; @echo $< $^ $| +bar: foo +foo:;@: +baz:;@:', + '', "foo foo baz\n"); + + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/output-sync b/local/recipes/dev/gnu-make/source/tests/scripts/features/output-sync new file mode 100644 index 0000000000..13a54ca08a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/output-sync @@ -0,0 +1,371 @@ +# -*-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; + + +# 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 subst_make_string("#HELPER# -q wait ../mksync.$_[0] sleep 1"); +} +sub output_sync_set { + return subst_make_string("#HELPER# -q file ../mksync.$_[0]"); +} + +@syncfiles = qw(mksync.foo mksync.foo_start mksync.bar mksync.bar_start); + +$tmout = 30; + +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 < bar/Makefile"); +print MAKEFILE <&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#MAKE#: [#MAKEFILE#:3: t1] Error 2 (ignored)\n"); + +rmfiles($m1); + +# Test $(error ...) functions in recipes + +run_make_test(q! +foo: $(OBJS) ; echo $(or $(filter %.o,$^),$(error fail)) +!, + '-O', "#MAKEFILE#:2: *** fail. Stop.\n", 512); + +# SV 47365: Make sure exec failure error messages are shown +# Needs to be ported to Windows +if ($port_type ne 'W32') { + run_make_test(q! +all:: ; @./foo bar baz +!, + '-O', "#MAKE#: ./foo: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:2: all] Error 127\n", 512); +} + +if ($port_type eq 'UNIX') { +# POSIX doesn't require sh to set PPID so test this +my $cmd = create_command(); +add_options($cmd, '-f', '/dev/null', '-E', q!all:;@echo $$PPID!); +my $fout = 'ppidtest.out'; +run_command_with_output($fout, @$cmd); +$_ = read_file_into_string($fout); +chomp($_); +if (/^[0-9]+$/) { +use POSIX (); +# SV 63157. +# Test that make removes temporary files, even when a signal is received. +# The general test_driver postprocessing will ensure the temporary file used +# to synchronize output and the jobserver fifo are both removed. +# sleep is needed to let make write its "... Terminated" message to the log +# file. +run_make_test(q! +pid:=$(shell echo $$PPID) +all:; @kill -TERM $(pid) && sleep 16 +!, '-O -j2', '/#MAKE#: \*\*\* \[#MAKEFILE#:3: all] Terminated/', POSIX::SIGTERM); +} + +unlink($fout); +} + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/override b/local/recipes/dev/gnu-make/source/tests/scripts/features/override new file mode 100644 index 0000000000..fff6c4e827 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/override @@ -0,0 +1,45 @@ +# -*-perl-*- + +$description = "Test the override directive on variable assignments."; + +$details = ""; + +# TEST 0: Basic override + +run_make_test(' +X = start +override recur = $(X) +override simple := $(X) +X = end +all: ; @echo "$(recur) $(simple)" +', + 'recur=I simple=J', "end start\n"); + +# TEST 1: Override with append + +run_make_test(' +X += X1 +override X += X2 +override Y += Y1 +Y += Y2 +all: ; @echo "$(X) $(Y)" +', + '', "X1 X2 Y1\n"); + +# TEST 2: Override with append to the command line + +run_make_test(undef, 'X=C Y=C', "C X2 C Y1\n"); + +# Test override of define/endef + +run_make_test(' +override define foo +@echo First comes the definition. +@echo Then comes the override. +endef +all: ; $(foo) +', + 'foo=Hello', "First comes the definition.\nThen comes the override.\n"); + + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/parallelism b/local/recipes/dev/gnu-make/source/tests/scripts/features/parallelism new file mode 100644 index 0000000000..98ee8a308e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/parallelism @@ -0,0 +1,248 @@ +# -*-perl-*- + +$description = "Test parallelism (-j) option."; +$details = ""; + +if (!$parallel_jobs) { + return -1; +} + +run_make_test(q! +all : def_1 def_2 def_3 +def_1 : ; @#HELPER# file ONE wait THREE out TWO +def_2 : ; @#HELPER# wait FOUR file THREE +def_3 : ; @#HELPER# wait ONE file FOUR!, + '-j4', "file ONE\nwait ONE\nfile FOUR\nwait FOUR\nfile THREE\nwait THREE\nTWO"); +rmfiles(qw(ONE TWO THREE FOUR)); + +# Verify -j added to MAKEFLAGS in the makefile +run_make_test(q! +MAKEFLAGS += -j4 +all : def_1 def_2 def_3 +def_1 : ; @#HELPER# file ONE wait THREE out TWO +def_2 : ; @#HELPER# wait FOUR file THREE +def_3 : ; @#HELPER# wait ONE file FOUR!, + '', "file ONE\nwait ONE\nfile FOUR\nwait FOUR\nfile THREE\nwait THREE\nTWO"); +rmfiles(qw(ONE TWO THREE FOUR)); + +# Command line should take precedence +run_make_test(q! +MAKEFLAGS += -j2 +all : def_1 def_2 def_3 +def_1 : ; @#HELPER# file ONE wait THREE out TWO +def_2 : ; @#HELPER# wait FOUR file THREE +def_3 : ; @#HELPER# wait ONE file FOUR!, + '-j4', "file ONE\nwait ONE\nfile FOUR\nwait FOUR\nfile THREE\nwait THREE\nTWO"); +rmfiles(qw(ONE TWO THREE FOUR)); + +# Test parallelism with included files. Here we sleep/echo while +# building the included files, to test that they are being built in +# parallel. +run_make_test(q! +all: 1 2; @#HELPER# out success +-include 1.inc 2.inc +.RECIPEPREFIX := > +1.inc: +> @#HELPER# file ONE.inc wait THREE.inc file TWO.inc +> @echo '1: ; @#HELPER# file ONE wait THREE file TWO' > $@ +2.inc: +> @#HELPER# wait ONE.inc file THREE.inc +> @echo '2: ; @#HELPER# wait ONE file THREE' > $@!, + "-j4", + "file ONE.inc\nwait ONE.inc\nfile THREE.inc\nwait THREE.inc\nfile TWO.inc\nfile ONE\nwait ONE\nfile THREE\nwait THREE\nfile TWO\nsuccess\n", 0, 7); +rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc)); + + +# Test parallelism with included files--this time recurse first and make +# sure the jobserver works. +run_make_test(q! +recurse: ; @$(MAKE) --no-print-directory -f #MAKEFILE# INC=yes all +all: 1 2; @#HELPER# out success + +INC = no +ifeq ($(INC),yes) +-include 1.inc 2.inc +endif + +1.inc: ; @#HELPER# file ONE.inc wait THREE.inc file TWO.inc; echo '1: ; @#HELPER# file ONE wait THREE file TWO' > $@ +2.inc: ; @#HELPER# wait ONE.inc file THREE.inc; echo '2: ; @#HELPER# wait ONE file THREE' > $@!, + "-j4", + "file ONE.inc\nwait ONE.inc\nfile THREE.inc\nwait THREE.inc\nfile TWO.inc\nfile ONE\nwait ONE\nfile THREE\nwait THREE\nfile TWO\nsuccess\n", 0, 7); +rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc)); + +# Grant Taylor reports a problem where tokens can be lost (not written back +# to the pipe when they should be): this happened when there is a $(shell ...) +# function in an exported recursive variable. I added some code to check +# for this situation and print a message if it occurred. This test used +# to trigger this code when I added it but no longer does after the fix. + +run_make_test(q! +export HI = $(shell $($@.CMD)) +first.CMD = #HELPER# out hi +second.CMD = #HELPER# sleep 4 + +.PHONY: all first second +all: first second + +first second: ; @#HELPER# out $@ sleep 1 out $@!, + '-j2', "first\nsleep 1\nfirst\nsecond\nsleep 1\nsecond", 0); + +# Michael Matz reported a bug where if make is running in +# parallel without -k and two jobs die in a row, but not too close to each +# other, then make will quit without waiting for the rest of the jobs to die. + +run_make_test(q! +.PHONY: all fail.1 fail.2 fail.3 ok +all: fail.1 ok fail.2 fail.3 + +fail.1: ; @#HELPER# -q sleep 1 out $@ file fail.1 fail 1 +fail.2: ; @#HELPER# -q sleep 2 out $@ wait fail.1 file fail.2 fail 1 +fail.3: ; @#HELPER# -q sleep 3 out $@ wait fail.2 file fail.3 fail 1 + +ok: ; @#HELPER# -q sleep 4 wait fail.3 out OK!, + '-rR -j5', "fail.1\nfail 1 +#MAKE#: *** [#MAKEFILE#:5: fail.1] Error 1 +#MAKE#: *** Waiting for unfinished jobs.... +fail.2\nfail 1 +#MAKE#: *** [#MAKEFILE#:6: fail.2] Error 1 +fail.3\nfail 1 +#MAKE#: *** [#MAKEFILE#:7: fail.3] Error 1 +OK", + 512); + +rmfiles(qw(fail.1 fail.2 fail.3)); + +# Test for Savannah bug #15641. +# +run_make_test(' +.PHONY: all +all:; @: + +-include foo.d + +foo.d: comp ; @#HELPER# out $@ + +comp: mod_a.o mod_b.o; @: + +mod_a.o mod_b.o: ; @#HELPER# fail 1 +', '-j2', "fail 1\nfail 1\n"); + + +# TEST #9 -- Savannah bugs 3330 and 15919 +# In earlier versions of make this will either give the wrong answer, or hang. + +utouch(-10, 'target'); +run_make_test('target: intermed ; #HELPER# file $@ + +.INTERMEDIATE: intermed +intermed: | phony ; #HELPER# file $@ + +.PHONY: phony +phony: ; : phony', '-rR -j', ': phony'); +rmfiles('target'); + +# TEST #11: Make sure -jN from MAKEFLAGS is processed even when we re-exec +# See Savannah bug #33873 + +$ENV{MAKEFLAGS} = '-j4'; + +run_make_test(q! +things = thing1 thing2 +all: $(things) +thing1:; @#HELPER# wait thing2start file $@start wait thing2end out $@end +thing2:; @#HELPER# file $@start wait thing1start file $@end +-include inc.mk +inc.mk: ; @touch $@ +!, + '', "file thing2start\nwait thing2start\nfile thing1start\nwait thing1start\nfile thing2end\nwait thing2end\nthing1end\n"); + +rmfiles(qw(inc.mk thing1start thing1end thing2start thing2end)); + +# Ensure intermediate/secondary files are not pruned incorrectly. +# See Savannah bug #30653 + +utouch(-15, 'file2'); +utouch(-10, 'file4'); +utouch(-5, 'file1'); + +run_make_test(q! +.INTERMEDIATE: file3 +file4: file3 ; @mv -f $< $@ +file3: file2 ; touch $@ +file2: file1 ; @touch $@ +!, + '--no-print-directory -j2', "touch file3"); + +rmfiles('file1', 'file2', 'file3', 'file4'); + +# Ensure that the jobserver is preserved across make re-exec. + +run_make_test(q! +all: one two +one: ;@ #HELPER# wait TWO file ONE +two: ;@ #HELPER# file TWO +include fff1.mk +fff1.mk: ; touch $@ +!, + '-j2', "touch fff1.mk\nfile TWO\nwait TWO\nfile ONE\n"); + +rmfiles('fff1.mk', 'ONE', 'TWO'); + +# Test if a sub-make needs to re-exec and the makefile is built via +# sub-make. Reported by Masahiro Yamada + +run_make_test(q! +all: ; @$(MAKE) -f #MAKEFILE# recurse + +recurse: one two ; @#HELPER# out $@ +one: ;@ #HELPER# wait TWO file ONE +two: ;@ #HELPER# file TWO + +mkinclude: ; touch fff1.mk + +ifeq ($(MAKECMDGOALS),recurse) +include fff1.mk +fff1.mk: ; @$(MAKE) -f #MAKEFILE# mkinclude +endif +!, + '--no-print-directory -j2', "touch fff1.mk\nfile TWO\nwait TWO\nfile ONE\nrecurse\n"); + +rmfiles('fff1.mk', 'ONE', 'TWO'); + + +# Make sure that all jobserver FDs are closed if we need to re-exec the +# master copy. +# +# First, find the "default" file descriptors we normally use +# Then make sure they're still used. +# +# Right now we don't have a way to run a makefile and capture the output +# without checking it, so we can't really write this test. + +# run_make_test(' +# submake: ; @$(MAKE) --no-print-directory -f #MAKEFILE# fdprint 5>output + +# dependfile: ; @echo FOO=bar > $@ + +# INCL := true + +# FOO=foo +# ifeq ($(INCL),true) +# -include dependfile +# endif + +# fdprint: ; @echo $(filter --jobserver%,$(MAKEFLAGS)) + +# recurse: ; @$(MAKE) --no-print-directory -f #MAKEFILE# submake INCL=true', +# '-j2 INCL=false fdprint', +# 'bar'); + +# rmfiles(qw(dependfile output)); + + +# # Do it again, this time where the include is done by the non-master make. +# run_make_test(undef, '-j2 recurse INCL=false', 'bar'); + +# rmfiles(qw(dependfile output)); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/patspecific_vars b/local/recipes/dev/gnu-make/source/tests/scripts/features/patspecific_vars new file mode 100644 index 0000000000..a530bba10a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/patspecific_vars @@ -0,0 +1,148 @@ +# -*-perl-*- +$description = "Test pattern-specific variable settings."; + +$details = "\ +Create a makefile containing various flavors of pattern-specific variable +settings, override and non-override, and using various variable expansion +rules, semicolon interference, etc."; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; +all: one.x two.x three.x +FOO = foo +BAR = bar +BAZ = baz +one.x: override FOO = one +%.x: BAR = two +t%.x: BAR = four +thr% : override BAZ = three +one.x two.x three.x: ; @echo $@: $(FOO) $(BAR) $(BAZ) +four.x: baz ; @echo $@: $(FOO) $(BAR) $(BAZ) +baz: ; @echo $@: $(FOO) $(BAR) $(BAZ) + +# test matching multiple patterns +a%: AAA = aaa +%b: BBB = ccc +a%: BBB += ddd +%b: AAA ?= xxx +%b: AAA += bbb +.PHONY: ab +ab: ; @echo $(AAA); echo $(BBB) +EOF + +close(MAKEFILE); + + +# TEST #1 -- basics + +&run_make_with_options($makefile, "", &get_logfile); +$answer = "one.x: one two baz\ntwo.x: foo four baz\nthree.x: foo four three\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST #2 -- try the override feature + +&run_make_with_options($makefile, "BAZ=five", &get_logfile); +$answer = "one.x: one two five\ntwo.x: foo four five\nthree.x: foo four three\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST #3 -- make sure patterns are inherited properly + +&run_make_with_options($makefile, "four.x", &get_logfile); +$answer = "baz: foo two baz\nfour.x: foo two baz\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST #4 -- test multiple patterns matching the same target + +&run_make_with_options($makefile, "ab", &get_logfile); +$answer = "aaa bbb\nccc ddd\n"; +&compare_output($answer,&get_logfile(1)); + +# TEST #5 -- test pattern-specific exported variables +# +run_make_test(' +/%: export foo := foo + +/bar: + @echo $(foo) $$foo +', '', 'foo foo'); + + +# TEST #6 -- test expansion of pattern-specific simple variables +# +run_make_test(' +.PHONY: all + +all: inherit := good $$t +all: bar baz + +b%: pattern := good $$t + +global := original $$t + + +# normal target +# +ifdef rec +bar: a = global: $(global) pattern: $(pattern) inherit: $(inherit) +else +bar: a := global: $(global) pattern: $(pattern) inherit: $(inherit) +endif + +bar: ; @echo \'normal: $a;\' + + +# pattern target +# +ifdef rec +%z: a = global: $(global) pattern: $(pattern) inherit: $(inherit) +else +%z: a := global: $(global) pattern: $(pattern) inherit: $(inherit) +endif + +%z: ; @echo \'pattern: $a;\' + + +global := new $$t +', +'', +'normal: global: original $t pattern: inherit: ; +pattern: global: original $t pattern: inherit: ;'); + + +# TEST #7 -- test expansion of pattern-specific recursive variables +# +run_make_test(undef, # reuse previous makefile +'rec=1', +'normal: 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 + +run_make_test(' +a%: override FOO += f1 +a%: FOO += f2 +ab: ; @echo "$(FOO)" +', + '', "f1\n"); + +run_make_test(undef, 'FOO=C', "C f1\n"); + +# TEST #9: Test shortest stem selection in pattern-specific variables. + +run_make_test(' +%-mt.x: x := two +%.x: x := one + +all: foo.x foo-mt.x + +foo.x: ;@echo $x +foo-mt.x: ;@echo $x +', +'', +"one\ntwo"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/patternrules b/local/recipes/dev/gnu-make/source/tests/scripts/features/patternrules new file mode 100644 index 0000000000..0b35408d78 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/patternrules @@ -0,0 +1,676 @@ +# -*-perl-*- + +$description = "Test pattern rules."; + +$details = ""; + +use Cwd; + +$dir = cwd; +$dir =~ s,.*/([^/]+)$,../$1,; + + +# TEST #0: Make sure that multiple patterns where the same target +# can be built are searched even if the first one fails +# to match properly. +# + +run_make_test(q! +.PHONY: all + +all: case.1 case.2 case.3 case.4 + +# We can't have this, due to "Implicit Rule Search Algorithm" step 5c +#xxx: void + +# 1 - existing file +%.1: void ; @exit 1 +%.1: #MAKEFILE# ; @exit 0 + +# 2 - phony +%.2: void ; @exit 1 +%.2: 2.phony ; @exit 0 +.PHONY: 2.phony + +# 3 - implicit-phony +%.3: void ; @exit 1 +%.3: 3.implicit-phony ; @exit 0 + +3.implicit-phony: + +# 4 - explicitly mentioned file made by an implicit rule +%.4: void ; @exit 1 +%.4: test.x ; @exit 0 +%.x: ; +!, + '', ''); + +# TEST #1: make sure files that are built via implicit rules are marked +# as targets (Savannah bug #12202). +# +run_make_test(' +TARGETS := foo foo.out + +.PHONY: all foo.in + +all: $(TARGETS) + +%: %.in ; @echo $@ + +%.out: % ; @echo $@ + +foo.in: ; @: + +', + '', "foo\nfoo.out"); + + +# TEST #2: make sure intermediate files that also happened to be +# prerequisites are not removed (Savannah bug #12267). +# +run_make_test(' +$(dir)/foo.o: + +$(dir)/foo.y: ; @echo $@ + +%.c: %.y ; touch $@ + +%.o: %.c ; @echo $@ + +.PHONY: install +install: $(dir)/foo.c + +', + "dir=$dir", "$dir/foo.y\ntouch $dir/foo.c\n$dir/foo.o"); + +unlink("$dir/foo.c"); + + +# TEST #3: make sure precious flag is set properly for targets +# that are built via implicit rules (Savannah bug #13218). +# +run_make_test(' +.DELETE_ON_ERROR: + +.PRECIOUS: %.bar + +%.bar:; @touch $@ && exit 1 + +$(dir)/foo.bar: + +', + "dir=$dir", + "#MAKE#: *** [#MAKEFILE#:6: $dir/foo.bar] Error 1", 512); + +unlink("$dir/foo.bar"); + + +# TEST #4: make sure targets of a matched implicit pattern rule are +# never considered intermediate (Savannah bug #13022). +# +run_make_test(' +.PHONY: all +all: foo.c foo.o + +%.h %.c: %.in ; touch $*.h ; touch $*.c + +%.o: %.c %.h ; echo $+ >$@ + +%.o: %.c ; @echo wrong rule + +foo.in: ; touch $@ + +', + '', "touch foo.in\ntouch foo.h ; touch foo.c\necho foo.c foo.h >foo.o\nrm foo.h"); + +unlink('foo.in', 'foo.h', 'foo.c', 'foo.o'); + +# TEST #5: make sure both prefix and suffix patterns work with multiple +# target patterns (Savannah bug #26593). +# +run_make_test(' +all: foo.s1 foo.s2 p1.foo p2.foo + +p1.% p2.%: %.orig ; @echo $@ +%.s1 %.s2: %.orig ; @echo $@ + +.PHONY: foo.orig +', + '', "foo.s1\np1.foo\n"); + +# TEST 6: Make sure that non-target files are still eligible to be created +# as part of implicit rule chaining. Savannah bug #17752. + +run_make_test(sprintf(q! +BIN = xyz +COPY = $(BIN).cp +SRC = $(BIN).c +allbroken: $(COPY) $(BIN) ; @echo ok +$(SRC): ; @echo 'main(){}' > $@ +%%.cp: %% ; @cp $< $@ +%% : %%.c ; @cp $< $@ +clean: ; @%s $(SRC) $(COPY) $(BIN) +!, $CMD_rmfile), + '', "ok\n"); + +unlink(qw(xyz xyz.cp xyz.c)); + +# TEST 7: Make sure that all prereqs of all "also_make" targets get created +# before any of the things that depend on any of them. Savannah bug #19108. + +run_make_test(q! +final: x ; @echo $@ +x: x.t1 x.t2 ; @echo $@ +x.t2: dep +dep: ; @echo $@ +%.t1 %.t2: ; @echo $*.t1 ; echo $*.t2 +!, + '', "dep\nx.t1\nx.t2\nx\nfinal\n"); + + +# TEST 8: Verify we can remove pattern rules. Savannah bug #18622. + +my @f = (qw(foo.w foo.ch)); +touch(@f); + +run_make_test(q! +CWEAVE := : + +# Disable builtin rules +%.tex : %.w +%.tex : %.w %.ch +!, + 'foo.tex', + "#MAKE#: *** No rule to make target 'foo.tex'. Stop.", 512); + +unlink(@f); + +# TEST #9: Test shortest stem selection in pattern rules. + +run_make_test(' +%.x: ;@echo one +%-mt.x: ;@echo two + +all: foo.x foo-mt.x +', + '', "one\ntwo"); + +# Test pattern rules building the same targets +# See SV 54233. + +touch('a.c'); + +# a.lnk isn't listed as removed, because it's not actually created +run_make_test(q! +all: a.elf a.dbg + +%.elf %.lnk: %.c ; : $*.elf $*.lnk + +%.elf %.dbg: %.lnk ; : $*.elf $*.dbg +!, + '-j2', ": a.elf a.lnk\n: a.elf a.dbg\n"); + +# SV 60435 : a.lnk is removed, because it is intermediate. +run_make_test(q! +all: a.elf a.dbg + +%.elf %.lnk: %.c ; touch $*.elf $*.lnk + +%.elf %.dbg: %.lnk ; touch $*.elf $*.dbg +!, + '-j2', "touch a.elf a.lnk\ntouch a.elf a.dbg\nrm a.lnk\n"); + +unlink('a.elf', 'a.dbg'); + +# SV 60435 : a.lnk is not intermediate, because it is explicitly mentioned. +run_make_test(q! +all: a.elf a.dbg + +%.elf %.lnk: %.c ; touch $*.elf $*.lnk + +%.elf %.dbg: %.lnk ; touch $*.elf $*.dbg + +install: a.lnk +.PHONY: install +!, + '-j2', "touch a.elf a.lnk\ntouch a.elf a.dbg\n"); + +unlink('a.c', 'a.elf', 'a.dbg', 'a.lnk'); + +# SV 56655: Test patterns matching files containing whitespace +touch('some file.yy'); +run_make_test(q! +%.xx : %.yy ; @echo matched +!, + '"some file.xx"', "matched\n"); + +unlink('some file.xx', 'some file.yy'); + + +# sv 60188. +# Test that a file explicitly mentioned by the user and made by an implicit +# rule is not considered intermediate. + +touch('hello.z'); +unlink('hello.x', 'test.x'); + +# subtest 1 +# hello.x is not explicitly mentioned and thus is an intermediate file. +run_make_test(q! +all: hello.z +%.z: %.x ; touch $@ +%.x: ; +!, + '', "#MAKE#: Nothing to be done for 'all'.\n"); + +# subtest 2 +# test.x is explicitly mentioned and thus is not an intermediate file. +run_make_test(q! +all: hello.z +%.z: %.x test.x ; touch $@ +%.x: ; +!, + '', "touch hello.z"); + +# subtest 3 +# hello.x is explicitly mentioned on an unrelated rule and thus is not an +# intermediate file. +touch('hello.z'); +run_make_test(q! +all: hello.z +%.z: %.x; touch $@ +%.x: ; +unrelated: hello.x +!, + '', "touch hello.z"); + +unlink('hello.z'); + +# sv 60188. +# Test that a file explicitly mentioned by the user and made by an implicit +# rule is not considered intermediate, even when the builtin rules are used. + +touch('hello.x'); +touch('test.x'); +touch('hello.tsk'); + +# subtest 1 +# hello.o is not explicitly mentioned and thus is an intermediate file. +run_make_test(q! +all: hello.tsk +%.tsk: %.z ; @echo $@ +%.z : %.x ; @echo $@ +!, + '', "#MAKE#: Nothing to be done for 'all'.\n"); + +# subtest 2 +# test.z is explicitly mentioned and thus is not an intermediate file. +# test.z is built first because until it's built we don't know if we +# need to rebuild the intermediate hello.z +run_make_test(q! +all: hello.tsk +%.tsk: %.z test.z ; @echo $@ +%.z : %.x ; @echo $@ +!, + '', "test.z\nhello.z\nhello.tsk\n"); + +# subtest 3 +# hello.o is not explicitly mentioned and thus is an intermediate file. +run_make_test(q! +all: hello.tsk +dep:=%.o +%.tsk: $(dep) ; @echo $@ +!, + '', "#MAKE#: Nothing to be done for 'all'.\n"); + +# subtest 4 +# Even when test.z is constructed from 2 variables it is still explicitly +# mentioned and thus is not an intermediate file. +# test.z is built first because until it's built we don't know if we +# need to rebuild the intermediate hello.z +run_make_test(q! +all: hello.tsk +name:=test +suf:=.z +%.tsk: %.z $(name)$(suf) ; @echo $@ +%.z: %.x ; @echo $@ +!, + '', "test.z\nhello.z\nhello.tsk\n"); + +unlink('hello.x', 'test.x', 'hello.tsk'); + +# Test that chained pattern rules with multiple targets remove all intermediate +# files. +# sv 60435. + +# subtest 1. +# a.1 and a.2 are intermediate and should be removed. + +run_make_test(q! +a.4: +%.4: %.1 %.15 ; cat $^ >$@ +%.1 %.15: ; touch $*.1 $*.15 +!, + '', "touch a.1 a.15\ncat a.1 a.15 >a.4\nrm a.15 a.1"); + +unlink('a.4'); + +# subtest 2. +# a.1 and a.2 are intermediate and should be removed. +# a.3 is explicit and should not be removed. +run_make_test(q! +a.4: +%.4: %.1 %.15 a.3 ; cat $^ >$@ +%.1 %.15: ; touch $*.1 $*.15 +%.3: ; touch $@ +!, + '', "touch a.3\ntouch a.1 a.15\ncat a.1 a.15 a.3 >a.4\nrm a.15 a.1"); + +unlink('a.3', 'a.4'); + +# subtest 3. +# a.1 and a.2 are intermediate and should be removed. +# a.3 is explicit and should not be removed. +run_make_test(q! +a.4: +%.4: %.1 %.15 a.3 ; cat $^ >$@ +%.1 %.15 %.3: ; touch $*.1 $*.15 $*.3 +!, + '', "touch a.1 a.15 a.3\ncat a.1 a.15 a.3 >a.4\nrm a.15 a.1"); + +unlink('a.3', 'a.4'); + +# subtest 4. +# a.1 and a.2 are intermediate and should be removed. +# a.3 is explicit and should not be removed. +run_make_test(q! +a.4: +%.4: %.1 %.15 a.3 ; cat $^ >$@ +%.3 %.1 %.15: ; touch $*.1 $*.15 $*.3 +!, + '', "touch a.1 a.15 a.3\ncat a.1 a.15 a.3 >a.4\nrm a.15 a.1"); + +unlink('a.3', 'a.4'); + +# subtest 5. +# a.1 and a.2 are intermediate and should be removed. +# a.3 is explicit and should not be removed. +run_make_test(q! +a.4: +%.4: a.3 %.1 %.15 ; cat $^ >$@ +%.1 %.15 %.3: ; touch $*.1 $*.15 $*.3 +!, + '', "touch a.1 a.15 a.3\ncat a.3 a.1 a.15 >a.4\nrm a.15 a.1"); + +unlink('a.3', 'a.4'); + +# subtest 6. +# a.2 is intermediate and should be removed. +# a.1 is mentioned explicitly on an unrelated rule and should not be removed. +run_make_test(q! +a.3: +%.3: %.1 %.2 ; cat $^ >$@ +%.1 %.2: ; touch $*.1 $*.2 +install: a.1 +.PHONY: install +!, + '', "touch a.1 a.2\ncat a.1 a.2 >a.3\nrm a.2"); + +unlink('a.1', 'a.3'); + +# Test removal of intermediate files. + +# subtest 1. +# hello.x is removed, because it is intermediate. +run_make_test(q! +hello.tsk: +%.tsk: %.x; touch $@ +%.x: ; touch $@ +!, + '', "touch hello.x\ntouch hello.tsk\nrm hello.x"); + +unlink('hello.tsk'); + +# subtest 2. +# Even though hello.x is intermediate, it is not removed, because it is not +# created. +touch('hello.x'); + +run_make_test(q! +hello.tsk: +%.tsk: %.x; touch $@ +%.x: ; touch $@ +!, + '', "touch hello.tsk"); + +unlink('hello.x', 'hello.tsk'); + +# subtest 2. +# Even though hello.x is intermediate, it is not removed, because it is not +# created. +run_make_test(q! +hello.tsk: +%.tsk: %.x; touch $@ +%.x: ; : $@ +!, + '', ": hello.x\ntouch hello.tsk"); + +unlink('hello.tsk'); + +# A target explicitly listed as a prerequisite of a pattern rule, is still +# considered mentioned and "ought to exist". + +run_make_test(q! +1.all: 1.q ; touch $@ +%.q: 1.r ; touch $@ +%.r: ; touch $@ +!, + '', "touch 1.r\ntouch 1.q\ntouch 1.all\n"); + +unlink('1.all', '1.q', '1.r'); + +# SV 63098: Verify that missing also_made in pattern rules gives a warning but +# doesn't fail. + +run_make_test(q! +%a %b : ; touch $*a +!, + 'gta', "touch gta\n#MAKEFILE#:2: warning: pattern recipe did not update peer target 'gtb'.\n"); +unlink(qw(gta)); + +# We don't warn if we didn't update the file +utouch(-10, qw(gta)); +run_make_test(q! +%a %b : xyzzy ; $(OP) +xyzzy: ; +ifdef RUN +OP = @echo no +endif +!, + '-rR gta', "#MAKE#: 'gta' is up to date.\n"); + +run_make_test(undef, '-rR gta RUN=1', "no\n"); +unlink(qw(gta)); + +run_make_test(q! +all:; +include gta +%a %b : ; touch $*a +!, + '', "touch gta\n#MAKEFILE#:4: warning: pattern recipe did not update peer target 'gtb'.\n#MAKE#: 'all' is up to date."); +unlink(qw(gta)); + +run_make_test(q! +%.c %.h : %.y; touch $*.c +%.o: %.c; touch $@ +foo.y: ; touch $@ +!, + 'foo.o', "touch foo.y\ntouch foo.c\n#MAKEFILE#:2: warning: pattern recipe did not update peer target 'foo.h'.\ntouch foo.o\nrm foo.c"); +unlink(qw(foo.y foo.c foo.o)); + +if (0) { +# SV 12078: Missing grouped pattern peer causes remake regardless of which +# target caused the rule to run. +touch(qw(gta)); # but not gtb +run_make_test(q! +%a %b : ; touch $*a $*b +!, + 'gta', "touch gta gtb\n"); +unlink(qw(gta gtb)); + +# Ensure both goal targets are built if they depend on a grouped pattern +touch(qw(gta)); # but not gtb +run_make_test(q! +x y: ; touch $@ + +x: gta +y: gtb + +%a %b : ; touch $*a $*b +!, + 'x y', "touch gta gtb\ntouch x\ntouch y\n"); + +# Now everything should be up to date +run_make_test(undef, 'x y', + "#MAKE#: 'x' is up to date.\n#MAKE#: 'y' is up to date."); + +unlink(qw(x y gta gtb)); + +# sv 12078 : make sure we notice when all targets need to be rebuilt +# a.1st exists but b.1st doesn't: make sure a.2nd is out of date as well + +utouch(-20, 'a.1st'); +utouch(-10, 'a.2nd', 'b.2nd'); + +run_make_test(q! +1st := a.1st b.1st +2nd := ${1st:.1st=.2nd} +.PHONY: all +all: ${2nd} +a.% b.% : ; touch a.$* b.$* +${2nd}: %.2nd: %.1st ; cp $< $@ +! + , '', "touch a.1st b.1st\ncp a.1st a.2nd\ncp b.1st b.2nd\n"); + +unlink(qw(a.1st b.1st a.2nd b.2nd)); + +# Variation: b.1st exists but is newer + +utouch(-20, 'a.1st'); +utouch(-10, 'a.2nd', 'b.2nd'); +touch(qw(b.1st)); + +run_make_test(undef, '', "cp b.1st b.2nd\n"); + +unlink(qw(a.1st b.1st a.2nd b.2nd)); +} + +# sv 62206. + +# The following combinations are generated with and without second expansion. +# 1. +# all: bye.x +# %.x: ... +# +# 2. +# all: lib/bye.x +# %.x: ... +# +# 3. +# all: lib/bye.x +# lib/%.x: ... +# +# The following combination is not generated, because there is no rule to +# build bye.x, no stem substitution takes place, not of interest of this test. +# 4. +# all: bye.x +# lib/%.x: ... + +my @dir = ('', 'lib/'); # With and without last slash. +my @secondexpansion = ('', '.SECONDEXPANSION:'); + +for my $se (@secondexpansion) { +for my $d (@dir) { # The directory of the prerequisite of 'all'. +for my $r (@dir) { # The directory of the target in the rule definition. +(!$d && $r) && next; # Combination 4. +my $dollar = $se ? '$' : ''; + +# The prerequisite should only have directory if the prerequisite of 'all' has +# it and if the prequisite pattern in the rule definition does not have it. +# That is combination 2. +my $pdir = $d && !$r ? $d : ''; + +my $prereqs = "${pdir}bye.1"; + +# One func, one %. +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(firstword %.1); \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + +$prereqs = "${pdir}bye.1 ${pdir}bye.2"; + +# Multiple funcs, each has one %. +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(firstword %.1) $dollar\$(firstword %.2); \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + +$prereqs = "${pdir}bye.1 ${pdir}bye.2 ${pdir}bye.3 ${pdir}bye.4"; + +# Multiple funcs, each has multiple %. +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(wordlist 1, 99, %.1 %.2) $dollar\$(wordlist 1, 99, %.3 %.4); \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + +$prereqs = "${pdir}bye.1 ${pdir}bye.2 ${pdir}bye.3 ${pdir}bye.4"; + +# Nested functions. +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(wordlist 1, 99, $dollar\$(wordlist 1, 99, %.1 %.2)) $dollar\$(wordlist 1, 99, $dollar\$(wordlist 1,99, %.3 %.4)); \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + +$prereqs = "${pdir}bye1%2% ${pdir}bye ${pdir}3bye4%5 ${pdir}6bye ${pdir}bye7%8 ${pdir}bye9 ${pdir}bye10% ${pdir}11bye12 13"; + +# Multiple funcs, each has multiple words, each word has multiple %, sole %, +# various corner cases. +# Make should substitute the first % and only the first % in each word with the +# stem. +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(wordlist 1, 99, %1%2% % 3%4%5 6%) %7%8 %9 $dollar\$(wordlist 1, 99, %10% 11%12) 13; \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + +if ($port_type eq 'UNIX') { +# Test that make does not use some hardcoded array of a finite size on stack. +# Long prerequisite name. This prerequisite name is over 66K long. +my $prefix = 'abcdefgh' x 128 x 33; # 33K long. +my $suffix = 'stuvwxyz' x 128 x 33; # 33K long. +$prereqs = "${pdir}${prefix}bye${suffix}.1 ${pdir}${prefix}bye${suffix}.2"; + +run_make_test(" +$se +all: ${d}bye.x +$r%.x: $dollar\$(wordlist 1, 99, ${prefix}%${suffix}.1 ${prefix}%${suffix}.2); \$(info \$@ from \$^) +.PHONY: $prereqs +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); +} + +} +} +} + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/quoting b/local/recipes/dev/gnu-make/source/tests/scripts/features/quoting new file mode 100644 index 0000000000..b7d95268b3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/quoting @@ -0,0 +1,31 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to test using \n" . + "quotes within makefiles."; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE <<'EOM'; +TEXFONTS = NICEFONT +DEFINES = -DDEFAULT_TFM_PATH=\".:$(TEXFONTS)\" +test: ; @"echo" 'DEFINES = $(DEFINES)' +EOM + +# 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 = 'DEFINES = -DDEFAULT_TFM_PATH=\".:NICEFONT\"' . "\n"; + +# COMPARE RESULTS + +&compare_output($answer,&get_logfile(1)); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/recursion b/local/recipes/dev/gnu-make/source/tests/scripts/features/recursion new file mode 100644 index 0000000000..d225c13750 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/recursion @@ -0,0 +1,67 @@ +# -*-perl-*- +$description = "Test recursion."; + +$details = "DETAILS"; + +# Test some basic recursion. +run_make_test(' +.RECIPEPREFIX := | +all: +| $(MAKE) -f #MAKEFILE# foo +foo: +| @echo $(MAKE) +| @echo MAKELEVEL = $(MAKELEVEL) +| $(MAKE) -f #MAKEFILE# last +last: +| @echo $(MAKE) +| @echo MAKELEVEL = $(MAKELEVEL) +| @echo THE END +', + ('CFLAGS=-O -w' . ($parallel_jobs ? ' -j 2' : '')), + ($vos + ? "#MAKE#: Entering directory '#PWD#' +make 'CFLAGS=-O' -f #MAKEFILE# foo +make CFLAGS=-O +MAKELEVEL = 0 +make 'CFLAGS=-O' -f #MAKEFILE# last +make CFLAGS=-O +MAKELEVEL = 0 +THE END +#MAKE#: Leaving directory '#PWD#'" + : "#MAKE#: Entering directory '#PWD#' +#MAKEPATH# -f #MAKEFILE# foo +#MAKE#[1]: Entering directory '#PWD#' +#MAKEPATH# +MAKELEVEL = 1 +#MAKEPATH# -f #MAKEFILE# last +#MAKE#[2]: Entering directory '#PWD#' +#MAKEPATH# +MAKELEVEL = 2 +THE END +#MAKE#[2]: Leaving directory '#PWD#' +#MAKE#[1]: Leaving directory '#PWD#' +#MAKE#: Leaving directory '#PWD#'")); + + +# Test command line overrides. +run_make_test(' +recur: all ; @$(MAKE) --no-print-directory -f #MAKEFILE# a=AA all +all: ; @echo "MAKEOVERRIDES = $(MAKEOVERRIDES)" +', + 'a=ZZ', + 'MAKEOVERRIDES = a=ZZ +MAKEOVERRIDES = a=AA +'); + +# SV 46013: Ensure that MAKEOVERRIDES is passed even if set in the makefile +run_make_test(q! +ifeq ($(MAKELEVEL),0) +MAKEOVERRIDES += FOO+=bar +endif +.PHONY: M R +M: ; @$(MAKE) --no-print-directory -f #MAKEFILE# R +R: ; @echo '$(FOO)' +!, + '', 'bar'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/reinvoke b/local/recipes/dev/gnu-make/source/tests/scripts/features/reinvoke new file mode 100644 index 0000000000..07cbbfbe91 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/reinvoke @@ -0,0 +1,180 @@ +# -*-mode: perl-*- + +$description = "Test GNU make's auto-reinvocation feature."; + +$details = "\ +If the makefile or one it includes can be rebuilt then it is, and make +is reinvoked. We create a rule to rebuild the makefile from a temp +file, then touch the temp file to make it newer than the makefile."; + +$omkfile = $makefile; + +&utouch(-600, 'incl.mk'); +# For some reason if we don't do this then the test fails for systems +# with sub-second timestamps, maybe + NFS? Not sure. +&utouch(-1, 'incl-1.mk'); + +run_make_test(' +all: ; @echo running rules. + +#MAKEFILE# incl.mk: incl-1.mk ; @echo rebuilding $@; echo >> $@ + +include incl.mk', + '', "rebuilding incl.mk\nrunning rules.\n"); + +# Make sure updating the makefile itself also works + +&utouch(-600, $omkfile); + +run_make_test(undef, '', "rebuilding #MAKEFILE#\nrunning rules.\n"); + +&rmfiles('incl.mk', 'incl-1.mk'); + + +# In this test we create an included file that's out-of-date, but then +# the rule doesn't update it. Make shouldn't re-exec. + +&utouch(-600, 'b','a'); +#&utouch(-10, 'a'); +&touch('c'); + +run_make_test(' +all: ; @echo hello + +a : b ; echo >> $@ + +b : c ; test -f $@ || echo >> $@ + +c: ; echo >> $@ + +include $(F)', + 'F=a', "test -f b || echo >> b\nhello\n"); + +# Now try with the file we're not updating being the actual file we're +# including: this and the previous one test different parts of the code. + +run_make_test(undef, 'F=b', "test -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'); + +# If ANY makefile is rebuilt then we should re-exec + +run_make_test(' +all: ; @echo RESTARTS=$(MAKE_RESTARTS) + +m1.d: ; @echo $@; touch $@ + +m2.d: m1.d ; @test -f $< || { echo $@; touch $@; } + +include m1.d +-include m2.d +', + '', "m1.d\nRESTARTS=1\n"); + +unlink('m1.d', 'm2.d'); + +# Same as before but be sure we get error messages for un-created makefiles +run_make_test(' +all: ; @echo RESTARTS=$(MAKE_RESTARTS) + +m1.d: ; @echo $@; touch $@ + +m2.d: m1.d ; @test -f $< || { echo $@; touch $@; } + +include m1.d m2.d +', '', + # This runs afoul of https://savannah.gnu.org/bugs/?61226 + 0 ? "m1.d\n#MAKEFILE#:8: m2.d: $ERR_no_such_file" + : "m1.d\nRESTARTS=1", + 0 ? 512 : 0); + +unlink('m1.d', 'm2.d'); + +# sv 61226. +# This set of four cases tests two aspects of make. +# +# 1. If a rule has no prerequisites or recipe, and the target of the rule is a +# nonexistent file, then make imagines this target to have been updated +# whenever its rule is run. +# +# 2. Make does not re-execute itself in this case of imagined target. +# +# Test case 1. +# Make imagines hello.d was updated by a rule without recipe and without +# prereqs. +# This should succeed. +# Make should not re-execute itself. +run_make_test(' +hello.o: hello.d; $(info RESTARTS=$(MAKE_RESTARTS)) +hello.d: +include hello.d +', '', "RESTARTS=\n#MAKE#: 'hello.o' is up to date."); + +# Test case 2. +# Make imagines hello.d was updated by a rule with a recipe and without +# prereqs. +# This should succeed. +# Make should not re-execute itself. +run_make_test(' +hello.o: hello.d; $(info RESTARTS=$(MAKE_RESTARTS)) +hello.d:; $(info $@) +include hello.d +', '', "hello.d\nRESTARTS=\n#MAKE#: 'hello.o' is up to date."); + +&touch('hello.td'); +# Test case 3. +# Make imagines hello.d was updated by a rule without a recipe and with +# prereqs. +# This should succeed. +# Make should not re-execute itself. +run_make_test(' +hello.o: hello.d; $(info RESTARTS=$(MAKE_RESTARTS)) +hello.d: hello.td +include hello.d +', '', "RESTARTS=\n#MAKE#: 'hello.o' is up to date."); + +# Test case 4. +# Same test as three tests above, but the rule has both recipe and prereqs. +# Make should report this error. +run_make_test(' +hello.o: hello.d; $(info $@) +hello.d: hello.td; $(info $@) +include hello.d +', '', + # This runs afoul of https://savannah.gnu.org/bugs/?61226 + 0 ? "hello.d\n#MAKEFILE#:4: hello.d: $ERR_no_such_file" + : "hello.d\nhello.o\n#MAKE#: 'hello.o' is up to date.", + 0 ? 512 : 0); + +unlink('hello.td'); + +# Test DV 62088 : make sure we don't re-invoke for stdin makefiles. +# The test framework doesn't seem to have a good way to do this. + +create_file('input.mk', "all:;\$(info all)\n"); + +close(STDIN); +open(STDIN, "<", 'input.mk') || die "input.mk: $!\n"; + +run_make_test('', '-sf -', "all\n"); + +close(STDIN); +unlink('input.mk'); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/rule_glob b/local/recipes/dev/gnu-make/source/tests/scripts/features/rule_glob new file mode 100644 index 0000000000..2d377e7ead --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/scripts/features/se_explicit b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_explicit new file mode 100644 index 0000000000..d1247d40af --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_explicit @@ -0,0 +1,504 @@ +# -*-perl-*- +$description = "Test second expansion in ordinary rules."; + +$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: +endif +foo$$bar: bar$$baz bar$$biz ; @echo '$@ : $^' +PRE = one two +bar$$baz: $$(PRE) +baraz: $$(PRE) +PRE = three four +.DEFAULT: ; @echo '$@' +!, + '', + "$prereq\nbar\$biz\nfoo\$bar : bar\$baz bar\$biz"); + +run_make_test(undef, 'SE=1', "three\nfour\nbariz\nfoo\$bar : baraz bariz"); + +# TEST #1: automatic variables. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +foo: bar baz + +foo: biz | buz + +foo: $$@.1 \ + $$<.2 \ + $$(addsuffix .3,$$^) \ + $$(addsuffix .4,$$+) \ + $$|.5 \ + $$*.6 + +!, +'', +'bar +baz +biz +buz +foo.1 +bar.2 +bar.3 +baz.3 +biz.3 +bar.4 +baz.4 +biz.4 +buz.5 +.6 +'); + + +# Test #2: target/pattern -specific variables. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +foo.x: $$a $$b + +foo.x: a := bar + +%.x: b := baz +!, +'', +'bar +baz +'); + + +# Test #3: order of prerequisites. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +all: foo bar baz + +# Subtest #1 +foo: foo.1; @: +foo: foo.2 +foo: foo.3 + +# Subtest #2 +bar: bar.2 +bar: bar.1; @: +bar: bar.3 + +# Subtest #3 +baz: baz.1 +baz: baz.2 +baz: ; @: +!, +'', +'foo.1 +foo.2 +foo.3 +bar.1 +bar.2 +bar.3 +baz.1 +baz.2 +'); + +# TEST #4: eval in a context where there is no reading_file +run_make_test(q! +.SECONDEXPANSION: +all : $$(eval $$(info test)) +!, + '', "test\n#MAKE#: Nothing to be done for 'all'.\n"); + +# TEST #5: (NEGATIVE) catch eval in a prereq list trying to create new +# target/prereq relationships. + +run_make_test(q! +.SECONDEXPANSION: +proj1.exe : proj1.o $$(eval $$(test)) +define test +proj1.o : proj1.c +proj1.c: proj1.h +endef +!, + '', "#MAKE#: *** prerequisites cannot be defined in recipes. Stop.\n", 512); + + +# Automatic $$+ variable expansion issue. Savannah bug #25780 +run_make_test(q! +all : foo foo +.SECONDEXPANSION: +all : $$+ ; @echo '$+' +foo : ; +!, + '', "foo foo foo foo\n"); + + +# Automatic $$+ variable expansion issue. Savannah bug #25780 +run_make_test(q! +all : bar bar +bar : ; +q%x : ; +.SECONDEXPANSION: +a%l: q1x $$+ q2x ; @echo '$+' +!, + '', "q1x bar bar q2x bar bar\n"); + + +# 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"); + +# SV 54549 : Ensure we don't free used variable_sets +run_make_test(q! +foo: -lcat + +# Removing second expansion prevents segfault +.SECONDEXPANSION: +foo: $$@.o ; + +# Having an empty command here prevents segfault unless, +# the environment is empty. `env -i make foo` +# MFLAGS=-w or MAKEFLAGS=-w `env MFLAGS=-w make foo` +# libcat.a target calls an extra command, `@true \n @touch $@` +# odd. +%.o: ; @true + +# Having an empty command prevents segfault. +-l%: lib%.a ; @true + +# Not creating libcat.a here prevents segfault, +libcat.a: ; @touch $@ +!, + '', q!#MAKEFILE#:16: Recipe was specified for file '-lcat' at #MAKEFILE#:16, +#MAKEFILE#:16: but '-lcat' is now considered the same file as 'libcat.a'. +#MAKEFILE#:16: Recipe for '-lcat' will be ignored in favor of the one for 'libcat.a'.!); +unlink('libcat.a'); + +# SV 28456 : Don't reset $$< for default recipes +run_make_test(q! +.SECONDEXPANSION: + +.PHONY: biz baz +biz: baz ; +biz: $$(info $$<) +!, + '', "baz\n#MAKE#: Nothing to be done for 'biz'.\n"); + + +# sv 60659. Second expansion of automatic variables inside a function in the +# prerequisite list. +# $$@ expands to the target in the 1st and following rules. +# $$<,$$^,$$+,$$|,$$?,$$*,$$% expand to the empty string in the prerequisite +# list of the 1st rule. +# $$<,$$^,$$+,$$|,$$?,$$*,$$% in the prerequisite list of the 2nd (and +# following) rule expand to the values from the 1st rule. + + +# subtest 1. Explicit rules. 1st rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +2.x: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 2. Explicit rules. 2nd rule. +run_make_test(q! +.SECONDEXPANSION: +all: 15.x 1.x +15.x: 5.z 6.z 5.z | 7.z 7.z 8.z +1.x: 1.z 2.z 2.z | 3.z 4.z +15.x 1.x: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=15.x,<=5.z,^=5.z 6.z,+=5.z 6.z 5.z,|=7.z 8.z,?=,*=,%= +@=1.x,<=1.z,^=1.z 2.z,+=1.z 2.z 2.z,|=3.z 4.z,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 3. Grouped targets in explicit rules. 1st rule. +run_make_test(q! +.SECONDEXPANSION: +all: 15.x +15.x 1.x&: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=15.x,<=,^=,+=,|=,?=,*=,%= +@=1.x,<=,^=,+=,|=,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 4. Grouped targets in explicit rules. 2nd rule. +run_make_test(q! +.SECONDEXPANSION: +all: 15.x 1.x +15.x: 5.z 6.z 5.z | 7.z 7.z 8.z +1.x: 1.z 2.z 2.z | 3.z 4.z +15.x 1.x&: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=15.x,<=5.z,^=5.z 6.z,+=5.z 6.z 5.z,|=7.z 8.z,?=,*=,%= +@=1.x,<=1.z,^=1.z 2.z,+=1.z 2.z 2.z,|=3.z 4.z,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# Double colon rules. +# Because each double colon rule is independent of the other double colon rules +# for the same target, each automatic variable in the prerequisite list, other +# than $$@, second expands to the empty string in any rule, 1st, 2nd or later. + +# subtest 5. 1st double colon rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +2.x:: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 6. 2nd double colon rule. +run_make_test(q! +.SECONDEXPANSION: +all: 15.x 1.x +15.x:: 5.z 6.z 5.z | 7.z 7.z 8.z ; +1.x:: 1.z 2.z 2.z | 3.z 4.z ; +15.x 1.x:: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*,%=$$%) ; +%.z: ; +!, '', +"@=15.x,<=,^=,+=,|=,?=,*=,%= +@=1.x,<=,^=,+=,|=,?=,*=,%= +#MAKE#: Nothing to be done for 'all'.\n"); + + +# sv 62324. +# Integrity self check. +run_make_test(q! +.SECONDEXPANSION: +all: bye.x +bye.x: $$(firstword bye.1; +!, '', "#MAKEFILE#:4: *** unterminated call to function 'firstword': missing ')'. Stop.", 512); + +unlink('hello.tsk', 'test.o', 'bye.tsk', 'hello.o', 'hello.h', 'hello.q', 'bye.c', 'bye.o'); + +# sv 62706. +# Test that makes avoids second expanding prerequisites of the targets which +# are not built. +# Here, hello.tsk is built and its prerequisites are second expanded. +# bye.tsk is not built and its prerequisites are not second expanded. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk: hello.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk: bye.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Multipe rules per target. +run_make_test(q! +.SECONDEXPANSION: + +all: hello.tsk +dep1:=hello.o +dep2:=hello.h +hello.tsk: $$(dep1) +hello.tsk: $$(dep2); $(info $@ from $^) +hello.o:; $(info $@) +hello.h:; $(info $@) +!, 'hello.tsk', +"hello.h +hello.o +hello.tsk from hello.h hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Multiple targets per rule. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk bye.tsk: hello.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk: bye.o $$(info second expansion of $$@ prereqs) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Grouped targets. +run_make_test(q! +.SECONDEXPANSION: +world.tsk: world.o $$(info 1 second expansion of $$@ prereqs) +hello.tsk world.tsk &: hello.o $$(info 2 second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk: bye.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +world.o: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"2 second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +2 second expansion of world.tsk prereqs +1 second expansion of world.tsk prereqs +second expansion of world.o prereqs +world.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Order only. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:| hello.o $$(info second expansion of $$@ prereqs); $(info $@ from $|) +bye.tsk:| bye.o $$(info second expansion of $$@ prereqs); $(info $@ from $|) +hello.o:| $$(info second expansion of $$@ prereqs); $(info $@) +bye.o:| $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Double colon. 1 rule per target. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:: hello.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk:: bye.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +hello.o:: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o:: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Double colon. 2 rules per targets. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:: hello.o $$(info 1 second expansion of $$@ prereqs); $(info 1 $@ from $<) +hello.tsk:: hello.o $$(info 2 second expansion of $$@ prereqs); $(info 2 $@ from $<) +bye.tsk:: bye.o $$(info 1 second expansion of $$@ prereqs); $(info 1 $@ from $<) +bye.tsk:: bye.o $$(info 2 second expansion of $$@ prereqs); $(info 2 $@ from $<) +hello.o:: $$(info 1 second expansion of $$@ prereqs); $(info 1 $@) +hello.o:: $$(info 2 second expansion of $$@ prereqs); $(info 2 $@) +bye.o:: $$(info 1 second expansion of $$@ prereqs); $(info 1 $@) +bye.o:: $$(info 2 second expansion of $$@ prereqs); $(info 2 $@) +!, 'hello.tsk', +"1 second expansion of hello.tsk prereqs +1 second expansion of hello.o prereqs +1 hello.o +2 second expansion of hello.o prereqs +2 hello.o +1 hello.tsk from hello.o +2 second expansion of hello.tsk prereqs +2 hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Test that the prerequisites of 'hello.tsk' are second expanded once. +run_make_test(q! +.SECONDEXPANSION: +all: hello.tsk hello.q +hello.tsk: hello.o $$(info second expansion of $$@ prereqs); $(info $@ from $^) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +hello.q: hello.tsk $$(info second expansion of $$@ prereqs); $(info $@ from $^) +!, '', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +second expansion of hello.q prereqs +hello.q from hello.tsk +#MAKE#: Nothing to be done for 'all'.\n"); + +# sv 62706. +# Merge vpath file and local file. +# Test that both sets of prerequisites from 'hello.c' rule and from +# 'src/hello.c' rule are second expanded. +run_make_test(q! +.SECONDEXPANSION: +vpath hello.c src +all: hello.c; $(info $@ from $^) +hello.c: $$(info second expansion of hello.c prereqs); $(info 1 $@) +src/hello.c: $$(info second expansion of src/hello.c prereqs); $(info 2 $@) +!, '', +"#MAKEFILE#:5: Recipe was specified for file 'hello.c' at #MAKEFILE#:5, +#MAKEFILE#:5: but 'hello.c' is now considered the same file as 'src/hello.c'. +#MAKEFILE#:5: Recipe for 'hello.c' will be ignored in favor of the one for 'src/hello.c'. +second expansion of src/hello.c prereqs +second expansion of hello.c prereqs +2 src/hello.c +all from src/hello.c +#MAKE#: 'all' is up to date.\n"); + +# sv 62706. +# .DEFAULT. +run_make_test(q! +.SECONDEXPANSION: +bye:=bye.c +all: hello.o +.DEFAULT: $$(info second expansion of prereqs of default recipe @ = $$@) ; $(info default recipe $@) +!, '', +"default recipe hello.o +#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.1'); + +# sv 62706. +# No side effects from second expansion of unrelated rules. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:; exit 1 +unrelated: $$(shell touch hello.1); +!, '', +"exit 1 +#MAKE#: *** [#MAKEFILE#:3: hello.tsk] Error 1\n", 512); + +# sv 62706. +# Second expansion of intermediate prerequisites. +# The rule to build hello.x is explicit. +# .SECONDARY marks hello.x as intermediate. +# Test that $$(deps) is secondary expanded. +run_make_test(q! +deps:=hello.h +.SECONDEXPANSION: +.SECONDARY: hello.x +all: hello.x +hello.x: $$(deps); $(info $@) +hello.h:; $(info $@) +!, '', "hello.h\nhello.x\n#MAKE#: Nothing to be done for 'all'.\n"); + + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/se_implicit b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_implicit new file mode 100644 index 0000000000..c9d7ca9f4d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_implicit @@ -0,0 +1,506 @@ +# -*-perl-*- +$description = "Test second expansion in implicit rules."; + +$details = ""; + +use Cwd; + +$dir = cwd; +$dir =~ s,.*/([^/]+)$,../$1,; + + +# Test #1: automatic variables. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +foo.a: bar baz + +foo.a: biz | buz + +foo.%: 1.$$@ \ + 2.$$< \ + $$(addprefix 3.,$$^) \ + $$(addprefix 4.,$$+) \ + 5.$$| \ + 6.$$* ; @: + +1.foo.a \ +2.bar \ +3.bar \ +3.baz \ +3.biz \ +4.bar \ +4.baz \ +4.biz \ +5.buz \ +6.a: ; @echo '$@' + +!, +'', +'1.foo.a +2.bar +3.bar +3.baz +3.biz +4.bar +4.baz +4.biz +5.buz +6.a +bar +baz +biz +buz +'); + + +# Test #2: target/pattern -specific variables. +# +run_make_test(q! +.SECONDEXPANSION: +foo.x: + +foo.%: $$(%_a) $$(%_b) bar ; @: + +foo.x: x_a := bar + +%.x: x_b := baz + +bar baz: ; @echo '$@' +!, + '', "bar\nbaz\n"); + + +# Test #3: order of prerequisites. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +all: foo bar baz + + +# Subtest #1 +# +%oo: %oo.1; @: + +foo: foo.2 + +foo: foo.3 + +foo.1: ; @echo '$@' + + +# Subtest #2 +# +bar: bar.2 + +%ar: %ar.1; @: + +bar: bar.3 + +bar.1: ; @echo '$@' + + +# Subtest #3 +# +baz: baz.1 + +baz: baz.2 + +%az: ; @: +!, + '', +'foo.1 +foo.2 +foo.3 +bar.1 +bar.2 +bar.3 +baz.1 +baz.2 +'); + + +# Test #4: stem splitting logic. +# +run_make_test(q! +.SECONDEXPANSION: +$(dir)/tmp/bar.o: + +$(dir)/tmp/foo/bar.c: ; @echo '$@' +$(dir)/tmp/bar/bar.c: ; @echo '$@' +foo.h: ; @echo '$@' + +%.o: $$(addsuffix /%.c,foo bar) foo.h ; @echo '$@: {$<} $^' +!, + "dir=$dir", "$dir/tmp/foo/bar.c +$dir/tmp/bar/bar.c +foo.h +$dir/tmp/bar.o: {$dir/tmp/foo/bar.c} $dir/tmp/foo/bar.c $dir/tmp/bar/bar.c foo.h +"); + + +# Test #5: stem splitting logic and order-only prerequisites. +# +run_make_test(q! +.SECONDEXPANSION: +$(dir)/tmp/foo.o: $(dir)/tmp/foo.c +$(dir)/tmp/foo.c: ; @echo '$@' +bar.h: ; @echo '$@' + +%.o: %.c|bar.h ; @echo '$@: {$<} {$|} $^' + +!, + "dir=$dir", "$dir/tmp/foo.c +bar.h +$dir/tmp/foo.o: {$dir/tmp/foo.c} {bar.h} $dir/tmp/foo.c +"); + + +# Test #6: lack of implicit prerequisites. +# +run_make_test(q! +.SECONDEXPANSION: +foo.o: foo.c +foo.c: ; @echo '$@' + +%.o: ; @echo '$@: {$<} $^' +!, + '', "foo.c\nfoo.o: {foo.c} foo.c\n"); + + +# Test #7: Test stem from the middle of the name. +# +run_make_test(q! +.SECONDEXPANSION: +foobarbaz: + +foo%baz: % $$*.1 ; @echo '$*' + +bar bar.1: ; @echo '$@' +!, + '', "bar\nbar.1\nbar\n"); + + +# Test #8: Make sure stem triple-expansion does not happen. +# +run_make_test(q! +.SECONDEXPANSION: +foo$$bar: + +f%r: % $$*.1 ; @echo '$*' + +oo$$ba oo$$ba.1: ; @echo '$@' +!, + '', 'oo$ba +oo$ba.1 +oo$ba +'); + +# Test #9: Check the value of $^ +run_make_test(q! +.SECONDEXPANSION: + +%.so: | $$(extra) ; @echo $^ + +foo.so: extra := foo.o +foo.so: +foo.o: +!, + '', "\n"); + +# 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"); + +# SV 28456 : Don't reset $$< for default recipes +run_make_test(q! +.SECONDEXPANSION: + +.PHONY: foo bar +foo: bar +foo: $$(info $$<) +%oo: ; +!, + '', "bar\n#MAKE#: Nothing to be done for 'foo'.\n"); + +# SV 54161: Expand $$* properly when it contains a path + +run_make_test(q! +.SECONDEXPANSION: +%x: $$(info $$*); @echo '$*' +!, + 'q/ux', "q/u\nq/u\n"); + + + +# sv 60188. +# Test that a file explicitly mentioned by the user and made by an implicit +# rule is not considered intermediate. + +touch('hello.z'); + +# subtest 1. +# hello.x is derived from the stem and thus is an intermediate file. +run_make_test(q! +.SECONDEXPANSION: +dep:=.x +all: hello.z +%.z: %$$(dep) ; @echo $@ +%.x: ; +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 2. +# test.x is explicitly mentioned and thus is not an intermediate file. +run_make_test(q! +.SECONDEXPANSION: +dep:=test.x +all: hello.z +%.z: %.x $$(dep) ; @echo $@ +%.x: ; +!, '', "hello.z\n"); + +# subtest 3. +# make is building hello.z and does not second expand the prerequisites of rule +# 'unrelated: $$(dep)'. '$$(dep)' stays not expanded and 'hello.x' is never +# entered to the database. Make considers 'hello.x' intermediate while building +# 'hello.z'. Because 'hello.z' is present and 'hello.x' is missing and +# 'hello.x' is intermediate, there is no need to rebuild 'hello.z'. +run_make_test(q! +.SECONDEXPANSION: +dep:=hello.x +all: hello.z +%.z: %.x; @echo $@ +%.x: ; +unrelated: $$(dep) +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + +# subtest 4. +# Just like subtest 3. $$(dep) is not second expanded. 'hello.x' is +# intermediate. +run_make_test(q! +.SECONDEXPANSION: +dep:=hello.x +all: hello.z +%.z: %.x; @echo $@ +%.x: ; +%.q: $$(dep) +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.z'); + + +# sv 60188. +# Test that a file explicitly mentioned by the user and made by an implicit +# rule is not considered intermediate, even when the builtin rules are used. + +touch('hello.x'); +touch('hello.tsk'); + +# subtest 1. +# hello.z is explicitly mentioned and thus is not an intermediate file. +run_make_test(q! +.SECONDEXPANSION: +dep:=hello.z +all: hello.tsk +%.tsk: $$(dep) ; @echo $@ +%.z : %.x ; @echo $@ +!, '', "hello.z\nhello.tsk"); + +# subtest 2. +# hello.z is derived from the stem and thus is an intermediate file. +run_make_test(q! +.SECONDEXPANSION: +dep:=.z +all: hello.tsk +%.tsk: %$$(dep) ; @echo $@ +%.z : %.x ; @echo $@ +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.x'); +unlink('hello.tsk'); + + +# sv 60659. Second expansion of automatic variables inside a function in the +# prerequisite list. +# $$@ expands to the target in the 1st and following rules. +# $$* expands to the stem in the 1st and following rules. +# $$<,$$^,$$+,$$|,$$?,$$% expand to the empty string in the prerequisite list +# of the 1st rule. +# $$<,$$^,$$+,$$|,$$?,$$% in the prerequisite list of the 2nd (and following) +# rule expand to the values from the 1st rule. +# $$% cannot be used in prerequisites, because in pattern rules % is +# substituted for stem. + + +# subtest 1. Pattern rules. 1st rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +%.x: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=2 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 2. Pattern rules. 2nd rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x 1.x +2.x: 5.z 6.z 5.z | 7.z 7.z 8.z +1.x: 1.z 2.z 2.z | 3.z 4.z +%.x: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=2.x,<=5.z,^=5.z 6.z,+=5.z 6.z 5.z,|=7.z 8.z,?=,*=2 +@=1.x,<=1.z,^=1.z 2.z,+=1.z 2.z 2.z,|=3.z 4.z,?=,*=1 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 3. Static pattern rules. 1st rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +2.x: %.x: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=2 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 4. Static pattern rules. 2nd rule. +run_make_test(q! +.SECONDEXPANSION: +all: 15.x 1.x +15.x: 5.z 6.z 5.z | 7.z 7.z 8.z +1.x: 1.z 2.z 2.z | 3.z 4.z +15.x 1.x: %.x: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=15.x,<=5.z,^=5.z 6.z,+=5.z 6.z 5.z,|=7.z 8.z,?=,*=15 +@=1.x,<=1.z,^=1.z 2.z,+=1.z 2.z 2.z,|=3.z 4.z,?=,*=1 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 5. Grouped targets in implicit rules. 1st rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +%.x %.xx&: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=2 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 6. Grouped targets in implicit rules. 2nd rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x 1.xx +2.x: 5.z 6.z 5.z | 7.z 7.z 8.z +1.xx: 1.z 2.z 2.z | 3.z 4.z +%.x %.xx&: 9.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +%.z: ; +!, '', +"@=2.x,<=5.z,^=5.z 6.z,+=5.z 6.z 5.z,|=7.z 8.z,?=,*=2 +@=1.xx,<=1.z,^=1.z 2.z,+=1.z 2.z 2.z,|=3.z 4.z,?=,*=1 +#MAKE#: Nothing to be done for 'all'.\n"); + + +# subtest 7. Double colon rule. +run_make_test(q! +.SECONDEXPANSION: +all: 2.x +%.x:: 5.z 6.z 5.z $$(info @=$$@,<=$$<,^=$$^,+=$$+,|=$$|,?=$$?,*=$$*) ; +5.z 6.z: ; +!, '', +"@=2.x,<=,^=,+=,|=,?=,*=2 +#MAKE#: Nothing to be done for 'all'.\n"); + +# sv 62324. +# Integrity self check. +run_make_test(q! +.SECONDEXPANSION: +all: bye.x +%.x: $$(firstword %.1; +!, '', "#MAKE#: *** unterminated call to function 'firstword': missing ')'. Stop.", 512); + +# sv 62706. +# Test that makes avoids second expanding prerequisites of the rules which are +# not tried during implicit search. +# Here, make tries rules '%.tsk: %.o' and '%.o' and their prerequisites are +# second expanded. +# Rules '%.bin: %.x' and '%.x:' are not used in implicit search for 'hello.tsk' +# and 'hello.o' and their prerequisites are not expanded. +run_make_test(q! +.SECONDEXPANSION: +%.bin: %.x $$(info second expansion of $$@ prereqs); $(info $@ from $<) +%.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +%.x: $$(info second expansion of $$@ prereqs); $(info $@) +%.o: $$(info second expansion of $$@ prereqs); $(info $@) +!, '-R hello.tsk', +"second expansion of hello.o prereqs +second expansion of hello.tsk prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# No side effects from second expansion of unrelated rules. +run_make_test(q! +.SECONDEXPANSION: +all: hello.tsk +%.tsk: %.o; exit 1 +hello.o:; +%.q: $$(shell touch hello.1); +!, '', +"exit 1 +#MAKE#: *** [#MAKEFILE#:4: hello.tsk] Error 1\n", 512); + +# sv 62706. +# Second expansion of intermediate prerequisites. +# The rule to build hello.x is implicit. +# Test that $$(deps) is secondary expanded. +run_make_test(q! +deps:=hello.h +.SECONDEXPANSION: +all: hello.tsk +%.tsk: %.x; $(info $@) +%.x: $$(deps); $(info $@) +hello.h:; $(info $@) +!, '', "hello.h\nhello.x\nhello.tsk\n#MAKE#: Nothing to be done for 'all'.\n"); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/se_statpat b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_statpat new file mode 100644 index 0000000000..935ff3faa8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/se_statpat @@ -0,0 +1,232 @@ +# -*-perl-*- +$description = "Test second expansion in static pattern rules."; + +$details = ""; + +# Test #1: automatic variables. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +foo.a foo.b: foo.%: bar.% baz.% +foo.a foo.b: foo.%: biz.% | buz.% + +foo.a foo.b: foo.%: $$@.1 \ + $$<.2 \ + $$(addsuffix .3,$$^) \ + $$(addsuffix .4,$$+) \ + $$|.5 \ + $$*.6 +!, + '', 'bar.a +baz.a +biz.a +buz.a +foo.a.1 +bar.a.2 +bar.a.3 +baz.a.3 +biz.a.3 +bar.a.4 +baz.a.4 +biz.a.4 +buz.a.5 +a.6 +'); + + +# Test #2: target/pattern -specific variables. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +foo.x foo.y: foo.%: $$(%_a) $$($$*_b) + +foo.x: x_a := bar + +%.x: x_b := baz +!, + '', "bar\nbaz\n"); + + +# Test #3: order of prerequisites. +# +run_make_test(q! +.SECONDEXPANSION: +.DEFAULT: ; @echo '$@' + +all: foo.a bar.a baz.a + +# Subtest #1 +foo.a foo.b: foo.%: foo.%.1; @: +foo.a foo.b: foo.%: foo.%.2 +foo.a foo.b: foo.%: foo.%.3 + + +# Subtest #2 +bar.a bar.b: bar.%: bar.%.2 +bar.a bar.b: bar.%: bar.%.1; @: +bar.a bar.b: bar.%: bar.%.3 + + +# Subtest #3 +baz.a baz.b: baz.%: baz.%.1 +baz.a baz.b: baz.%: baz.%.2 +baz.a baz.b: ; @: +!, + '', 'foo.a.1 +foo.a.2 +foo.a.3 +bar.a.1 +bar.a.2 +bar.a.3 +baz.a.1 +baz.a.2 +'); + + +# Test #4: Make sure stem triple-expansion does not happen. +# +run_make_test(q! +.SECONDEXPANSION: +foo$$bar: f%r: % $$*.1 ; @echo '$*' + +oo$$ba oo$$ba.1: ; @echo '$@' +!, + '', 'oo$ba +oo$ba.1 +oo$ba +'); + +# sv 62324. +# Integrity self check. +run_make_test(q! +.SECONDEXPANSION: +all: bye.x +bye.x: %.x: $$(firstword %.1; +!, '', "#MAKEFILE#:4: *** unterminated call to function 'firstword': missing ')'. Stop.", 512); + +#unlink('hello.tsk', 'bye.tsk', 'hello.o', 'hello.q', 'bye.o'); + +# sv 62706. +# Test that makes avoids second expanding prerequisites of the targets which +# are not built. +# Here, hello.tsk is built and its prerequisites are second expanded. +# bye.tsk is not built and its prerequisites are not second expanded. + +# Static pattern rules. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk: %.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk: %.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Order only prereqs. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk: %.tsk:| %.o $$(info second expansion of $$@ prereqs); $(info $@ from $|) +bye.tsk: %.tsk:| %.o $$(info second expansion of $$@ prereqs); $(info $@ from $|) +hello.o:| $$(info second expansion of $$@ prereqs); $(info $@) +bye.o:| $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Double colon. 1 rule per target. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:: %.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +bye.tsk:: %.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $<) +hello.o:: $$(info second expansion of $$@ prereqs); $(info $@) +bye.o:: $$(info second expansion of $$@ prereqs); $(info $@) +!, 'hello.tsk', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Double colon. 2 rules per target. +run_make_test(q! +.SECONDEXPANSION: +hello.tsk:: %.tsk: %.o $$(info 1 second expansion of $$@ prereqs); $(info 1 $@ from $<) +hello.tsk:: %.tsk: %.o $$(info 2 second expansion of $$@ prereqs); $(info 2 $@ from $<) +bye.tsk:: %.tsk: %.o $$(info 1 second expansion of $$@ prereqs); $(info 1 $@ from $<) +bye.tsk:: %.tsk: %.o $$(info 2 second expansion of $$@ prereqs); $(info 2 $@ from $<) +hello.o:: $$(info 1 second expansion of $$@ prereqs); $(info 1 $@) +hello.o:: $$(info 2 second expansion of $$@ prereqs); $(info 2 $@) +bye.o:: $$(info 1 second expansion of $$@ prereqs); $(info 1 $@) +bye.o:: $$(info 2 second expansion of $$@ prereqs); $(info 2 $@) +!, 'hello.tsk', +"1 second expansion of hello.tsk prereqs +1 second expansion of hello.o prereqs +1 hello.o +2 second expansion of hello.o prereqs +2 hello.o +1 hello.tsk from hello.o +2 second expansion of hello.tsk prereqs +2 hello.tsk from hello.o +#MAKE#: 'hello.tsk' is up to date.\n"); + +# sv 62706. +# Test that the prerequisites of 'hello.tsk' are second expanded once. +run_make_test(q! +.SECONDEXPANSION: +all: hello.tsk hello.q +hello.tsk: %.tsk: %.o $$(info second expansion of $$@ prereqs); $(info $@ from $^) +hello.o: $$(info second expansion of $$@ prereqs); $(info $@) +hello.q: %.q: %.tsk $$(info second expansion of $$@ prereqs); $(info $@ from $^) +!, '', +"second expansion of hello.tsk prereqs +second expansion of hello.o prereqs +hello.o +hello.tsk from hello.o +second expansion of hello.q prereqs +hello.q from hello.tsk +#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.1'); + +# sv 62706. +# No side effects from second expansion of unrelated rules. +run_make_test(q! +.SECONDEXPANSION: +all: hello.tsk +hello.tsk: %.tsk: %.o; exit 1 +hello.o:; +bye.tsk: %.tsk: $$(shell touch hello.1); +!, '', +"exit 1 +#MAKE#: *** [#MAKEFILE#:4: hello.tsk] Error 1\n", 512); + +# sv 62706. +# Second expansion of intermediate prerequisites. +# The rule to build hello.x is static pattern. +# .SECONDARY marks hello.x as intermediate. +# Test that $$(deps) is secondary expanded. +run_make_test(q! +deps:=hello.h +.SECONDEXPANSION: +.SECONDARY: hello.x +all: hello.x +hello.x: %.x: $$(deps); $(info $@) +hello.h:; $(info $@) +!, '', "hello.h\nhello.x\n#MAKE#: Nothing to be done for 'all'.\n"); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/shell_assignment b/local/recipes/dev/gnu-make/source/tests/scripts/features/shell_assignment new file mode 100644 index 0000000000..686e4bd27c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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)>" +', + '', " <#> \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)>" +', + '', "\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', "\nabc\n"); + +unlink(',abc'); + + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/statipattrules b/local/recipes/dev/gnu-make/source/tests/scripts/features/statipattrules new file mode 100644 index 0000000000..e4e118ef64 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/statipattrules @@ -0,0 +1,311 @@ +# -*-perl-*- +$description = "Test handling of static pattern rules."; + +$details = "\ +The makefile created in this test has three targets. The +filter command is used to get those target names ending in +.o and statically creates a compile command with the target +name and the target name with .c. It also does the same thing +for another target filtered with .elc and creates a command +to emacs a .el file"; + +&touch('bar.c', 'lose.c'); + +# TEST #0 +# ------- + +run_make_test(' +files = foo.elc bar.o lose.o + +$(filter %.o,$(files)): %.o: %.c ; @echo CC -c $(CFLAGS) $< -o $@ + +$(filter %.elc,$(files)): %.elc: %.el ; @echo emacs $< +', + '', + 'CC -c bar.c -o bar.o'); + +# TEST #1 +# ------- + +run_make_test(undef, 'lose.o', 'CC -c lose.c -o lose.o'); + + +# TEST #2 +# ------- +&touch("foo.el"); + +run_make_test(undef, 'foo.elc', 'emacs foo.el'); + +# Clean up after the first tests. +unlink('foo.el', 'bar.c', 'lose.c'); + + +# TEST #3 -- PR/1670: don't core dump on invalid static pattern rules +# ------- + +run_make_test(' +.DEFAULT: ; @echo $@ +foo: foo%: % %.x % % % y.% % ; @echo $@ +', + '', ".x\ny.\nfoo"); + + +# TEST #4 -- bug #12180: core dump on a stat pattern rule with an empty +# prerequisite list. +run_make_test(' +foo.x bar.x: %.x : ; @echo $@ + +', + '', 'foo.x'); + + +# TEST #5 -- bug #13881: double colon static pattern rule does not +# substitute %. +run_make_test(' +foo.bar:: %.bar: %.baz +foo.baz: ;@: +', + '', ''); + + +# TEST #6: make sure the second stem does not overwrite the first +# perprerequisite's stem (Savannah bug #16053). +# +run_make_test(' +.RECIPEPREFIX := > + +all.foo.bar: %.foo.bar: %.one + +all.foo.bar: %.bar: %.two + +all.foo.bar: +> @echo $* +> @echo $^ + +.DEFAULT:;@: +', +'', +'all.foo +all.one all.foo.two'); + + +# TEST #7: make sure the second stem does not overwrite the first +# perprerequisite's stem when second expansion is enabled +# (Savannah bug #16053). +# +run_make_test(' +.RECIPEPREFIX := > +.SECONDEXPANSION: + +all.foo.bar: %.foo.bar: %.one $$*-one + +all.foo.bar: %.bar: %.two $$*-two + +all.foo.bar: +> @echo $* +> @echo $^ + +.DEFAULT:;@: +', +'', +'all.foo +all.one all-one all.foo.two all.foo-two'); + +# Test #8: +# sv 60188. +# Static pattern rules are considered explicit rules: no prerequisite of +# a static pattern rule can ever be considered intermediate. + +touch('hello.z'); + +# subtest 1 +run_make_test(q! +hello.z: %.z: %.x ; @echo $@ +%.x: ; +!, '', "hello.z\n"); + +# subtest 2 +run_make_test(q! +hello.z: %.z: %.x test.x ; @echo $@ +%.x: ; +!, '', "hello.z\n"); + +# subtest 3 +# 'hello.x' is mentioned explicitly on an unrelated rule. +run_make_test(q! +hello.z: %.z: %.x ; @echo $@ +%.x: ; +unrelated: hello.x +!, '', "hello.z\n"); + +unlink('hello.z'); + +# sv 17374 Ensure double-colon static pattern rules work + +touch(qw(a.src b.src)); + +run_make_test(q! +all: a.tgt b.tgt +a.tgt b.tgt:: %.tgt : %.src ; cp $< $@ +!, + '', "cp a.src a.tgt\ncp b.src b.tgt\n"); + +unlink(qw(a.src b.src a.tgt b.tgt)); + +my @dir = ('', 'lib/'); # With and without last slash. +my @secondexpansion = ('', '.SECONDEXPANSION:'); + +# The following combinations are generated with and without second expansion. +# 1. +# all: bye.x +# bye.x: %.x: ... +# +# 2. +# all: lib/bye.x +# lib/bye.x: %.x: ... +# +# 3. +# all: lib/bye.x +# lib/bye.x: lib/%.x: ... +# +# The following combination is not generated, because there is no rule to +# build bye.x, no stem substitution takes place, not of interest of this test. +# 4. +# all: bye.x +# bye.x: lib/%.x: ... +# + +for my $se (@secondexpansion) { +for my $d (@dir) { # The directory of the prerequisite of 'all'. +for my $r (@dir) { # The directory of the prerequisite in the rule definition. +(!$d && $r) && next; # Combination 4. +my $dollar = $se ? '$' : ''; + +# The prerequisite should only have directory if the prerequisite of 'all' has +# it and if the prequisite pattern in the rule definition does not have it. +# That is combination 2. +my $pdir = $d && !$r ? $d : ''; + + +# One func, one %. +my $prereqs = "${pdir}bye.1"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(firstword %.1); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# Multiple funcs, each has one %. +$prereqs = "${pdir}bye.1 ${pdir}bye.2"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(firstword %.1) $dollar\$(firstword %.2); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# Multiple funcs, each has multiple %. +$prereqs = "${pdir}bye.1 ${pdir}bye.2 ${pdir}bye.3 ${pdir}bye.4"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(wordlist 1, 99, %.1 %.2) $dollar\$(wordlist 1, 99, %.3 %.4); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# Multiple funcs, each has multiple %, each prerequisite has multiple %. +$prereqs = "${pdir}bye_%_%.1 ${pdir}bye_%_%.2 ${pdir}bye_%_%.3 ${pdir}bye_%_%.4"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(wordlist 1, 99, %_%_%.1 %_%_%.2) $dollar\$(wordlist 1, 99, %_%_%.3 %_%_%.4); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# Nested functions. +$prereqs = "${pdir}bye.1 ${pdir}bye.2 ${pdir}bye.3 ${pdir}bye.4"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(wordlist 1, 99, $dollar\$(wordlist 1, 99, %.1 %.2)) $dollar\$(wordlist 1, 99, $dollar\$(wordlist 1,99, %.3 %.4)); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# Multiple funcs, each has multiple words, each word has multiple %, sole %, +# various corner cases. +# Make should substitude the first % and only the first % in each word with the +# stem. +$prereqs = "${pdir}bye1%2% ${pdir}bye 3${pdir}bye4%5 6${pdir}bye ${pdir}bye7%8 ${pdir}bye9 ${pdir}bye10% 11${pdir}bye12 13"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(wordlist 1, 99, %1%2% % 3%4%5 6%) %7%8 %9 $dollar\$(wordlist 1, 99, %10% 11%12) 13; \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +if ($port_type eq 'UNIX') { +# Test that make does not use some hardcoded array of a finite size on stack. +# Long prerequisite name. This prerequisite name is over 66K long. +my $prefix = 'abcdefgh' x 128 x 33; # 33K long. +my $suffix = 'stuvwxyz' x 128 x 33; # 33K long. +$prereqs = "${prefix}${pdir}bye${suffix}.1 ${prefix}${pdir}bye${suffix}.2"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(wordlist 1, 99, ${prefix}%${suffix}.1 ${prefix}%${suffix}.2); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); +} + + +# Empty stem. +$prereqs = "${pdir}.1"; +run_make_test(" +$se +.PHONY: $prereqs +all: ${d}bye.x +${d}bye.x: $r%bye.x: $dollar\$(firstword %.1); \$(info \$@ from \$^) +", '', "${d}bye.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); + + +# A word expands to an empty prerequisite. +run_make_test(" +$se +all: ${d}bye.x +${d}bye.x: $r%.x: $dollar\$(%); \$(info \$@ from \$^) +", '', "${d}bye.x from \n#MAKE#: Nothing to be done for 'all'.\n"); + +} +} +} + +# Escaped %. +# The following combinations are generated without second expansion. +# 1. +# all: the%weird\\_hello_pattern\\.x +# the\\%weird\\_hello_pattern\\.x: the\\%weird\\_%_pattern\\.x: ... +# +# 2. +# all: lib/the%weird\\_hello_pattern\\.x +# lib/the\\%weird\\_hello_pattern\\.x: lib/the\\%weird\\_%_pattern\\.x: ... +# +# Other combinations or second expansion are not tested, because escaped % is +# not implemented for those. + +for my $d (@dir) { +my $prereqs = "${d}the%weird\\\\_hello_pattern%\\\\.1 ${d}the%weird\\\\_hello_pattern%\\\\.2"; +run_make_test(" +.PHONY: $prereqs +all: ${d}the%weird\\\\_hello_pattern\\\\.x +${d}the\\%weird\\\\_hello_pattern\\\\.x: ${d}the\\%weird\\\\_%_pattern\\\\.x: \$(wordlist 1, 99, ${d}the\\%weird\\\\_%_pattern%\\\\.1 ${d}the\\%weird\\\\_%_pattern%\\\\.2); \$(info \$@ from \$^) +", '', "${d}the%weird\\\\_hello_pattern\\\\.x from $prereqs\n#MAKE#: Nothing to be done for 'all'.\n"); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/suffixrules b/local/recipes/dev/gnu-make/source/tests/scripts/features/suffixrules new file mode 100644 index 0000000000..b8f465267d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/suffixrules @@ -0,0 +1,99 @@ +# -*-perl-*- + +$description = "Test suffix rules."; + +$details = ""; + +# TEST #0: Clear all suffixes + +touch('foo.c'); + +run_make_test(q! +.SUFFIXES: +all: foo.o ; @echo $@ $< +!, + '', "#MAKE#: *** No rule to make target 'foo.o', needed by 'all'. Stop.\n", 512); + +unlink('foo.c'); + +# Test #1: Add a simple suffix rule + +touch('foo.baz'); + +run_make_test(q! +.SUFFIXES: .biz .baz + +.baz.biz: ; @echo make $@ +!, + 'foo.biz', "make foo.biz\n"); + +unlink('foo.baz'); + +# Test #2: Make sure the defaults still work + +touch('foo.c'); + +run_make_test(undef, 'foo.o COMPILE.c=@echo OUTPUT_OPTION=', "foo.c\n"); + +unlink('foo.c'); + +# Test #3: Replacing all suffixes + +touch('foo.baz'); + +run_make_test(q! +.SUFFIXES: +.SUFFIXES: .biz .baz + +.baz.biz: ; @echo make $@ +!, + 'foo.biz', "make foo.biz\n"); + +unlink('foo.baz'); + +# SV 40657: Test #4: "Suffix rules" with deps are normal rules + +my $prewarn = 'warning: ignoring prerequisites on suffix rule definition'; + +touch('foo.bar'); + +run_make_test(q! +.SUFFIXES: +.SUFFIXES: .biz .baz + +$X.POSIX: + +.baz.biz: foo.bar ; @echo make $@ from $< +!, + 'X=1 .baz.biz', "#MAKEFILE#:7: $prewarn\nmake .baz.biz from foo.bar\n"); + +# SV 40657: Test #5: In POSIX mode we don't get a warning + +run_make_test(undef, 'X= .baz.biz', "make .baz.biz from foo.bar\n"); + +unlink('foo.bar'); + +# SV 40657: Test #6: In POSIX mode, no pattern rules should be created + +utouch(-20, 'foo.baz'); + +run_make_test(undef, + 'X= foo.biz', "#MAKE#: *** No rule to make target 'foo.biz'. Stop.\n", 512); + +# SV 40657: Test #7: In Non-POSIX mode, a pattern rule is created + +run_make_test(undef, + 'X=1 foo.biz', "#MAKEFILE#:7: $prewarn\nmake foo.biz from foo.baz\n"); + +# SV 40657: Test #8: ... but any prerequisites are ignored + +utouch(-10, 'foo.biz'); +touch('foo.bar'); + +run_make_test(undef, + 'X=1 foo.biz', "#MAKEFILE#:7: $prewarn\n#MAKE#: 'foo.biz' is up to date.\n"); + +unlink('foo.baz', 'foo.biz', 'foo.bar'); + +# Complete +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/targetvars b/local/recipes/dev/gnu-make/source/tests/scripts/features/targetvars new file mode 100644 index 0000000000..5088251e4d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/targetvars @@ -0,0 +1,439 @@ +# -*-perl-*- +$description = "Test target-specific variable settings."; + +$details = "\ +Create a makefile containing various flavors of target-specific variable +values, override and non-override, and using various variable expansion +rules, semicolon interference, etc."; + +run_make_test(' +export FOO = foo +export BAR = bar +one: override FOO = one +one two: ; @echo $(FOO) $(BAR) +two: BAR = two +.RECIPEPREFIX = > +three: ; BAR=1000 +> @echo $(FOO) $(BAR) +# Some things that shouldn not be target vars +funk : override +funk : override adelic +adelic override : ; echo $@ +# Test per-target recursive variables +four:FOO=x +four:VAR$(FOO)=ok +four: ; @echo "$(FOO) $(VAR$(FOO)) $(VAR) $(VARx)" +five:FOO=x +five six : VAR$(FOO)=good +five six: ;@echo "$(FOO) $(VAR$(FOO)) $(VAR) $(VARx) $(VARfoo)" +# Test per-target variable inheritance +seven: eight +seven eight: ; @echo $@: $(FOO) $(BAR) +seven: BAR = seven +seven: FOO = seven +eight: BAR = eight +# Test the export keyword with per-target variables +nine: ; @echo $(FOO) $(BAR) $$FOO $$BAR +nine: FOO = wallace +nine-a: export BAZ = baz +nine-a: ; @echo $$BAZ +# Test = escaping +EQ = = +ten: one$(EQ)two +ten: one $(EQ) two +ten one$(EQ)two $(EQ):;@echo $@ +.PHONY: one two three four five six seven eight nine ten $(EQ) one$(EQ)two +# Test target-specific vars with pattern/suffix rules +QVAR = qvar +RVAR = = +%.q : ; @echo $(QVAR) $(RVAR) +foo.q : RVAR += rvar +# Target-specific vars with multiple LHS pattern rules +%.r %.s %.t: ; @echo $(QVAR) $(RVAR) $(SVAR) $(TVAR) +foo.r : RVAR += rvar +foo.t : TVAR := $(QVAR) +', + "one two three", "one bar\nfoo two\nBAR=1000\nfoo bar\n"); + +# TEST #2 + +run_make_test(undef, "one two FOO=1 BAR=2", "one 2\n1 2\n"); + +# TEST #3 + +run_make_test(undef, "four", "x ok ok\n"); + +# TEST #4 + +run_make_test(undef, "seven", "eight: seven eight\nseven: seven seven\n"); + +# TEST #5 + +run_make_test(undef, "nine", "wallace bar wallace bar\n"); + +# TEST #5-a + +run_make_test(undef, "nine-a", "baz\n"); + +# TEST #6 + +run_make_test(undef, "ten", "one=two\none bar\n=\nfoo two\nten\n"); + +# TEST #6 + +run_make_test(undef, "foo.q bar.q", "qvar = rvar\nqvar =\n"); + +# TEST #7 + +run_make_test(undef, "foo.t bar.s", "qvar = qvar\nqvar =\n"); + +# TEST #8 +# For PR/1378: Target-specific vars don't inherit correctly + +run_make_test(' +foo: FOO = foo +bar: BAR = bar +foo: bar +bar: baz +baz: ; @echo $(FOO) $(BAR) +', "", "foo bar\n"); + +# TEST #9 +# For PR/1380: Using += assignment in target-specific variables sometimes fails +# Also PR/1831 + +run_make_test(' +.PHONY: all one +all: FOO += baz +all: one; @echo $(FOO) + +FOO = bar + +one: FOO += biz +one: FOO += boz +one: ; @echo $(FOO) +', + '', "bar baz biz boz\nbar baz\n"); + +# Test #10 + +run_make_test(undef, 'one', "bar biz boz\n"); + +# Test #11 +# PR/1709: Test semicolons in target-specific variable values + +run_make_test(' +foo : FOO = ; ok +foo : ; @echo "$(FOO)" +', + '', "; ok\n"); + +# Test #12 +# PR/2020: More hassles with += target-specific vars. I _really_ think +# I nailed it this time :-/. + +run_make_test(' +.PHONY: a + +BLAH := foo +COMMAND = echo $(BLAH) + +a: ; @$(COMMAND) + +a: BLAH := bar +a: COMMAND += snafu $(BLAH) +', + '', "bar snafu bar\n"); + +# Test #13 +# Test double-colon rules with target-specific variable values + +run_make_test(' +W = bad +X = bad +foo: W = ok +foo:: ; @echo $(W) $(X) $(Y) $(Z) +foo:: ; @echo $(W) $(X) $(Y) $(Z) +foo: X = ok + +Y = foo +bar: foo +bar: Y = bar + +Z = nopat +ifdef PATTERN + fo% : Z = pat +endif +', + 'foo', "ok ok foo nopat\nok ok foo nopat\n"); + +# Test #14 +# Test double-colon rules with target-specific variable values and +# inheritance + +run_make_test(undef, 'bar', "ok ok bar nopat\nok ok bar nopat\n"); + +# Test #15 +# Test double-colon rules with pattern-specific variable values + +run_make_test(undef, 'foo PATTERN=yes', "ok ok foo pat\nok ok foo pat\n"); + +# Test #16 +# Test target-specific variables with very long command line +# (> make default buffer length) + +run_make_test(' +base_metals_fmd_reports.sun5 base_metals_fmd_reports CreateRealPositions CreateMarginFunds deals_changed_since : BUILD_OBJ=$(shell if test -f "build_information.generate" ; then echo "$(OBJ_DIR)/build_information.o"; else echo "no build information"; fi ) + +deals_changed_since: ; @echo $(BUILD_OBJ) +', + '', "no build information\n"); + +# TEST #17 + +# Test a merge of set_lists for files, where one list is much longer +# than the other. See Savannah bug #15757. + +mkdir('t1', 0777); +touch('t1/rules.mk'); + +run_make_test(' +VPATH = t1 +include rules.mk +.PHONY: all +all: foo.x +foo.x : rules.mk ; @echo MYVAR=$(MYVAR) FOOVAR=$(FOOVAR) ALLVAR=$(ALLVAR) +all: ALLVAR = xxx +foo.x: FOOVAR = bar +rules.mk : MYVAR = foo +.INTERMEDIATE: foo.x rules.mk +', + '-I t1', 'MYVAR= FOOVAR=bar ALLVAR=xxx'); + +rmfiles('t1/rules.mk'); +rmdir('t1'); + +# TEST #18 + +# Test appending to a simple variable containing a "$": avoid a +# double-expansion. See Savannah bug #15913. + +run_make_test(' +VAR := $$FOO +foo: VAR += BAR +foo: ; @echo '."'".'$(VAR)'."'".' +', + '', '$FOO BAR'); + +# TEST #19: Override with append variables + +run_make_test(' +a: override FOO += f1 +a: FOO += f2 +a: ; @echo "$(FOO)" +', + '', "f1\n"); + +run_make_test(undef, 'FOO=C', "C f1\n"); + +# TEST #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;\ +world' +a: ; @echo $(A) +!, + '', "hello; world\n"); + +# TEST #21: SV-56834 Ensure setting PATH in a target var works properly +my $sname = "foobar$scriptsuffix"; + +mkdir('sd', 0775); +create_file("sd/$sname", "exit 0\n"); +chmod 0755, "sd/$sname"; + +run_make_test(qq! +all: PATH := sd +all: ; $sname >/dev/null +!, + '', "$sname >/dev/null\n"); + +# Don't use the general PATH if not found on the target path + +$ENV{PATH} = "$ENV{PATH}:sd"; + +my ($ernum, $erstr); +if ($port_type eq 'W32') { + $ernum = 1; + $erstr = "'$sname' is not recognized as an internal or external command,\noperable program or batch file."; +} else { + $ernum = 127; + $erstr = "#MAKE#: $sname: $ERR_no_such_file"; +} + +run_make_test(qq! +all: PATH := .. +all: ; $sname +!, + '', "$sname\n$erstr\n#MAKE#: *** [#MAKEFILE#:3: all] Error $ernum", 512); + +unlink("sd/$sname"); +rmdir ('sd'); + +# SV 59230: Conditional (non-)assignment of target-specific variables should +# preserve export settings. + +$ENV{hello} = 'moon'; +run_make_test(q! +all:; @echo hello=$$hello +dummy: hello?=world +!, + '', 'hello=moon'); + +# SV 59230: Assignment of a global variable should not affect export of a +# target specific variable. + +$ENV{hello} = "moon"; +run_make_test(q! +all:; @echo hello=$$hello +hello=sun +dummy: hello?=world +!, + '', 'hello=sun'); + +# Support target-specific unexport + +$ENV{hello} = "moon"; +run_make_test(q! +unexport hello=sun +all: base exp +base exp: ; @echo hello=$$hello +exp: export hello=world +!, + '', "hello=\nhello=world\n"); + +$ENV{hello} = "moon"; +run_make_test(q! +hello=sun +all: base exp +base exp: ; @echo hello=$$hello +exp: unexport hello=world +!, + '', "hello=sun\nhello=\n"); + +run_make_test(q! +all:; @echo hello=$$hello +unexport hello=sun +dummy: hello?=world +!, + '', 'hello='); + +$ENV{hello} = "moon"; +run_make_test(q! +all:; @echo hello=$$hello +hello=sun +dummy: unexport hello=world +!, + '', 'hello=sun'); + +run_make_test(q! +all: mid +mid: base + +ifeq ($(midexport),export) +mid: export hello=mid +else ifeq ($(midexport),unexport) +mid: unexport hello=mid +else +mid: hello=mid +endif + +ifeq ($(baseexport),export) +base: export hello=base +else ifeq ($(baseexport),unexport) +base: unexport hello=base +else +base: hello=base +endif + +all mid base:; @echo $@ make=$(hello) shell=$$hello +!, + '', "base make=base shell=\nmid make=mid shell=\nall make= shell=\n"); + +# Test base settings with env var +$ENV{hello} = "environ"; +run_make_test(undef, + '', "base make=base shell=base\nmid make=mid shell=mid\nall make=environ shell=environ\n"); + +$ENV{hello} = "environ"; +run_make_test(undef, + 'baseexport=export', "base make=base shell=base\nmid make=mid shell=mid\nall make=environ shell=environ\n"); + +$ENV{hello} = "environ"; +run_make_test(undef, + 'baseexport=unexport', "base make=base shell=\nmid make=mid shell=mid\nall make=environ shell=environ\n"); + +# Test mid settings with env var +$ENV{hello} = "environ"; +run_make_test(undef, + 'midexport=export', "base make=base shell=base\nmid make=mid shell=mid\nall make=environ shell=environ\n"); + +$ENV{hello} = "environ"; +run_make_test(undef, + 'midexport=export baseexport=unexport', "base make=base shell=\nmid make=mid shell=mid\nall make=environ shell=environ\n"); + +$ENV{hello} = "environ"; +run_make_test(undef, + 'midexport=unexport', "base make=base shell=\nmid make=mid shell=\nall make=environ shell=environ\n"); + +$ENV{hello} = "environ"; +run_make_test(undef, + 'midexport=unexport baseexport=export', "base make=base shell=base\nmid make=mid shell=\nall make=environ shell=environ\n"); + +# Test base settings without env var +run_make_test(undef, + 'baseexport=export', "base make=base shell=base\nmid make=mid shell=\nall make= shell=\n"); + +run_make_test(undef, + 'baseexport=unexport', "base make=base shell=\nmid make=mid shell=\nall make= shell=\n"); + +# Test mid settings with env var +run_make_test(undef, + 'midexport=export', "base make=base shell=base\nmid make=mid shell=mid\nall make= shell=\n"); + +run_make_test(undef, + 'midexport=export baseexport=unexport', "base make=base shell=\nmid make=mid shell=mid\nall make= shell=\n"); + +run_make_test(undef, + 'midexport=unexport', "base make=base shell=\nmid make=mid shell=\nall make= shell=\n"); + +run_make_test(undef, + 'midexport=unexport baseexport=export', "base make=base shell=base\nmid make=mid shell=\nall make= shell=\n"); + + + +# TEST #19: Test define/endef variables as target-specific vars + +# run_make_test(' +# define b +# @echo global +# endef +# a: define b +# @echo local +# endef + +# a: ; $(b) +# ', +# '', "local\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/temp_stdin b/local/recipes/dev/gnu-make/source/tests/scripts/features/temp_stdin new file mode 100644 index 0000000000..b06df53ee5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/temp_stdin @@ -0,0 +1,118 @@ +# -*-mode: perl-*- + +$description = "Test handling of temporary file created from stdin."; + +# These tests rely on the test_driver checking for leftover temporary content + +create_file('input.mk', "world:=1\n"); +create_file('bye.mk', "moon:=2\n"); + +# sv 62118,62145. +# Test that makes leaves no temp file when make code is piped to stdin and -v, +# -h or an invalid option is specified. +my @opts = ('-v', '-h', '--nosuchopt'); +my @exit_codes = (0, 0, 512); +for my $i (0 .. $#opts) { + close(STDIN); + open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; + run_make_test(q! +all:; $(info hello world) +!, + "$opts[$i] -f-", "/uilt for /", $exit_codes[$i]); +} + +# sv 62118,62145. +# Test that a stdin temp file is removed. +close(STDIN); +open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; +run_make_test(q! +all:; $(info world=$(world)) +!, + '-f-', "world=1\n#MAKE#: 'all' is up to date.\n"); + +# sv 62118,62145. +# Test that a stdin temp file is removed, even when make re-execs. +# Also test that make honors TMPDIR to create the temp file. +# Ensure touching bye.mk causes re-exec. +&utouch(-600, 'bye.mk'); +close(STDIN); +open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; +run_make_test(q! +include bye.mk +all:; $(info hello) +$(MAKE_RESTARTS)bye.mk: force; touch $@ +force: +!, + '-R --debug=b -f-', "/Re-executing.+?--temp-stdin=\Q$temppath\E/"); + +if ($port_type eq 'UNIX') { +# POSIX doesn't require sh to set PPID so test this +my $cmd = create_command(); +add_options($cmd, '-f', '/dev/null', '-E', q!all:;@echo $$PPID!); +my $fout = 'ppidtest.out'; +run_command_with_output($fout, @$cmd); +$_ = read_file_into_string($fout); +chomp($_); +if (/^[0-9]+$/) { +use POSIX (); + +# sv 63157. +# Test that make removes the temporary file which holds make code from stdin, +# even when a signal is received. +# include bye.mk and bye.mk: rule is needed to cause make to keep the temporary +# file for re-exec. Without re-exec make will remove the file before the signal +# arrives. +# sleep is needed to let make write its "... Terminated" message to the log +# file. +&utouch(-600, 'bye.mk'); +close(STDIN); +open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; +run_make_test(q! +include bye.mk +pid:=$(shell echo $$PPID) +all:; +bye.mk: force; @kill -TERM $(pid) && sleep 16 +force: +!, '-f-', '/#MAKE#: \*\*\* \[#MAKEFILE#:5: bye.mk] Terminated/', POSIX::SIGTERM); +} +unlink($fout); + +# sv 62118,62145. +# Test that a stdin temp file is removed, when execvp fails to re-exec make. +# In order to cause execvp to fail, copy the tested make binary to the temp +# directory and take away the 'x' bit. +use File::Spec; +use File::Copy; + +my $tmakedir = File::Spec->catfile($cwdpath, 'tmakedir'); +mkdir($tmakedir, 0770); +my $makecopy = File::Spec->catfile($tmakedir, 'make'); +copy("$mkpath", $makecopy); +# Set file mode bits, because perl copy won't. +chmod 0700, $makecopy; + +my @make_orig = @make_command; +@make_command = ($makecopy); + +# Ensure touching bye.mk causes re-exec. +&utouch(-600, 'bye.mk'); +close(STDIN); +open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; +run_make_test(" +include bye.mk +all:; \$(info hello) +\$(MAKE_RESTARTS)bye.mk: force; touch \$@ && chmod u-x $makecopy +force: +", + "-f-", "touch bye.mk && chmod u-x $makecopy\nmake: $makecopy: $ERR_nonexe_file\n", 32512); + +@make_command = @make_orig; +unlink($makecopy); +rmdir($tmakedir); +} + +close(STDIN); +unlink('input.mk', 'bye.mk'); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/utf8 b/local/recipes/dev/gnu-make/source/tests/scripts/features/utf8 new file mode 100644 index 0000000000..54bc471049 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/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/local/recipes/dev/gnu-make/source/tests/scripts/features/varnesting b/local/recipes/dev/gnu-make/source/tests/scripts/features/varnesting new file mode 100644 index 0000000000..0fbb332d61 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/varnesting @@ -0,0 +1,27 @@ +# -*-perl-*- +$description = "Test recursive variables"; + +$details = ""; + +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/local/recipes/dev/gnu-make/source/tests/scripts/features/vpath b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpath new file mode 100644 index 0000000000..7c034b5eba --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpath @@ -0,0 +1,114 @@ +# -*-perl-*- + +$description = "Test vpath for particular classes of filenames."; + +$details = ""; + +@files_to_touch = ("$workdir${pathsep}main.c","$workdir${pathsep}defs.h", + "$workdir${pathsep}kbd.c","$workdir${pathsep}command.h", + "$workdir${pathsep}commands.c","$workdir${pathsep}display.c", + "$workdir${pathsep}buffer.h","$workdir${pathsep}insert.c", + "$workdir${pathsep}command.c"); + +&touch(@files_to_touch); + +run_make_test(q! +vpath %.c foo +vpath %.c #WORK# +vpath %.h #WORK# +objects = main.o kbd.o commands.o display.o insert.o +edit: $(objects) ; @echo cc -o $@ $^ +main.o : main.c defs.h ; @echo cc -c $(firstword $^) +kbd.o : kbd.c defs.h command.h ; @echo cc -c kbd.c +commands.o : command.c defs.h command.h ; @echo cc -c commands.c +display.o : display.c defs.h buffer.h ; @echo cc -c display.c +insert.o : insert.c defs.h buffer.h ; @echo cc -c insert.c +!, + '', "cc -c $workdir${pathsep}main.c\ncc -c kbd.c\ncc -c commands.c\n" + ."cc -c display.c\ncc -c insert.c\n" + ."cc -o edit main.o kbd.o commands.o display.o insert.o\n"); + +unlink(@files_to_touch); + +# TEST 2: after vpath lookup ensure we don't get incorrect circular dependency +# warnings due to change of struct file ptr. Savannah bug #13529. + +mkdir('vpath-d', 0777); + +run_make_test(q! +vpath %.te vpath-d/ +.SECONDARY: +default: vpath-d/a vpath-d/b +vpath-d/a: fail.te +vpath-d/b : fail.te +vpath-d/fail.te: +!, + '', "#MAKE#: Nothing to be done for 'default'.\n"); + +rmdir('vpath-d'); + +# Test VPATH vs vpath + +run_make_test(q! +VPATH = #WORK#:#PWD# +vpath %.c foo +vpath %.c #WORK# +vpath %.c #PWD# +vpath %.h #WORK# +vpath %.c +vpath +all: ; @echo ALL IS WELL +!, + '', "ALL IS WELL\n"); + +# Test interaction of -lfoo and vpath + +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); + +my $answer = "a1${pathsep}lib1.a a1${pathsep}libc.a " . + "a2${pathsep}lib2.a lib3.a\n"; +if ($port_type eq 'VMS-DCL') { + $answer =~ s/ /,/g; +} + +run_make_test(' +vpath %.h b3 +vpath %.a a1 +vpath %.so b1 +vpath % a2 b2 +vpath % b3 +all: -l1 -lc -l2 -l3; @echo $^ +', + '', $answer); + +unlink(@files_to_touch); +for my $d (@dirs_to_make) { + rmdir($d); +} + +# Check that if we find find files with VPATH, we don't do pattern search + +mkdir("vpa"); + +run_make_test(q! +VPATH = vpa +%.x: ; @echo pattern $@ +vpa/foo.x: ; @echo vpath $@ +!, + 'foo.x', "vpath vpa/foo.x\n"); + +rmdir("vpa"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathgpath b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathgpath new file mode 100644 index 0000000000..5c5996c696 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathgpath @@ -0,0 +1,66 @@ +# -*-perl-*- +$description = "Tests VPATH+/GPATH functionality."; + +$details = ""; + +$VP = "$workdir$pathsep"; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "VPATH = $VP\n"; + +print MAKEFILE <<'EOMAKE'; + +GPATH = $(VPATH) + +.SUFFIXES: .a .b .c .d +.PHONY: general rename notarget intermediate + +%.a: +%.b: +%.c: +%.d: + +%.a : %.b ; cat $^ > $@ +%.b : %.c ; cat $^ > $@ +%.c :: %.d ; cat $^ > $@ + +# General testing info: + +general: foo.b +foo.b: foo.c bar.c + +EOMAKE + +close(MAKEFILE); + +@touchedfiles = (); + +$off = -500; + +sub gtouchfiles { + foreach (@_) { + ($f = $_) =~ s,VP/,$VP,g; + &utouch($off, $f); + $off += 10; + push(@touchedfiles, $f); + } +} + +# Run the general-case test + +>ouchfiles("VP/foo.d", "VP/bar.d", "VP/foo.c", "VP/bar.c", "foo.b", "bar.d"); + +&run_make_with_options($makefile,"general",&get_logfile()); + +push(@touchedfiles, "bar.c"); + +$answer = "$make_name: Nothing to be done for 'general'.\n"; + +&compare_output($answer,&get_logfile(1)); + +unlink(@touchedfiles) unless $keep; + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathplus b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathplus new file mode 100644 index 0000000000..da16983908 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/features/vpathplus @@ -0,0 +1,88 @@ +# -*-perl-*- +$description = "Tests the new VPATH+ functionality added in 3.76."; + +$details = ""; + +$VP = "$workdir$pathsep"; + +@touchedfiles = (); + +$off = -500; + +sub touchfiles { + foreach (@_) { + &utouch($off, $_); + $off += 10; + push(@touchedfiles, $_); + } +} + +&touchfiles("$VP/foo.d", "$VP/bar.d", "$VP/foo.c", "$VP/bar.c", "foo.b", "bar.d"); + +# Run the general-case test + +run_make_test(qq!VPATH = $VP! . q! +.SUFFIXES: .a .b .c .d +.PHONY: general rename notarget intermediate + +%.a: +%.b: +%.c: +%.d: + +%.a : %.b ; cat $^ > $@ +%.b : %.c ; cat $^ > $@ 2>/dev/null || exit 1 +%.c :: %.d ; cat $^ > $@ + +# General testing info: + +general: foo.b +foo.b: foo.c bar.c + +# Rename testing info: + +rename: $(VPATH)/foo.c foo.d + +# Target not made testing info: + +notarget: notarget.b +notarget.c: notarget.d ; -@echo "not creating $@ from $^" + +# Intermediate files: + +intermediate: inter.a +!, + 'general', "cat bar.d > bar.c\ncat ${VP}foo.c bar.c > foo.b 2>/dev/null || exit 1\n"); + +push(@touchedfiles, "bar.c"); + +# Test rules that don't make the target correctly + +&touchfiles("$VP/notarget.c", "notarget.b", "notarget.d"); + +run_make_test(undef, 'notarget', "not creating notarget.c from notarget.d\ncat notarget.c > notarget.b 2>/dev/null || exit 1\n#MAKE#: *** [#MAKEFILE#:11: notarget.b] Error 1\n", 512); + +# Test intermediate file handling (part 1) + +&touchfiles("$VP/inter.d"); + +my $be = pack("L", 1) eq pack("N", 1); +my $intfiles = $be ? "inter.c inter.b" : "inter.b inter.c"; + +run_make_test(undef, 'intermediate', "cat ${VP}inter.d > inter.c\ncat inter.c > inter.b 2>/dev/null || exit 1\ncat inter.b > inter.a\nrm $intfiles\n"); + +push(@touchedfiles, "inter.a", "inter.b"); + +# Test intermediate file handling (part 2) + +&utouch(-20, "inter.a"); +&utouch(-10, "$VP/inter.b"); +&touch("$VP/inter.d"); + +run_make_test(undef, 'intermediate', "cat ${VP}inter.d > inter.c\ncat inter.c > inter.b 2>/dev/null || exit 1\ncat inter.b > inter.a\nrm inter.c\n"); + +push(@touchedfiles, "$VP/inter.b", "$VP/inter.d"); + +unlink @touchedfiles unless $keep; + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/abspath b/local/recipes/dev/gnu-make/source/tests/scripts/functions/abspath new file mode 100644 index 0000000000..59bd3841bc --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/abspath @@ -0,0 +1,84 @@ +# -*-perl-*- +$description = "Test the abspath functions."; + +$details = ""; + +# Someone needs to rewrite this to be portable for Windows +$port_type eq 'W32' and return -1; + +run_make_test(' +ifneq ($(realpath $(abspath .)),$(CURDIR)) + $(warning .: abs="$(abspath .)" real="$(realpath $(abspath .))" curdir="$(CURDIR)") +endif + +ifneq ($(realpath $(abspath ./)),$(CURDIR)) + $(warning ./: abs="$(abspath ./)" real="$(realpath $(abspath ./))" curdir="$(CURDIR)") +endif + +ifneq ($(realpath $(abspath .///)),$(CURDIR)) + $(warning .///: abs="$(abspath .///)" real="$(realpath $(abspath .///))" curdir="$(CURDIR)") +endif + +ifneq ($(abspath /),/) + $(warning /: abspath="$(abspath /)") +endif + +ifneq ($(abspath ///),/) + $(warning ///: abspath="$(abspath ///)") +endif + +ifneq ($(abspath /.),/) + $(warning /.: abspath="$(abspath /.)") +endif + +ifneq ($(abspath ///.),/) + $(warning ///.: abspath="$(abspath ///.)") +endif + +ifneq ($(abspath /./),/) + $(warning /./: abspath="$(abspath /./)") +endif + +ifneq ($(abspath /.///),/) + $(warning /.///: abspath="$(abspath /.///)") +endif + +ifneq ($(abspath /..),/) + $(warning /..: abspath="$(abspath /..)") +endif + +ifneq ($(abspath ///..),/) + $(warning ///..: abspath="$(abspath ///..)") +endif + +ifneq ($(abspath /../),/) + $(warning /../: abspath="$(abspath /../)") +endif + +ifneq ($(abspath /..///),/) + $(warning /..///: abspath="$(abspath /..///)") +endif + + +ifneq ($(abspath /foo/bar/..),/foo) + $(warning /foo/bar/..: abspath="$(abspath /foo/bar/..)") +endif + +ifneq ($(abspath /foo/bar/../../../baz),/baz) + $(warning /foo/bar/../../../baz: abspath="$(abspath /foo/bar/../../../baz)") +endif + +ifneq ($(abspath /foo/bar/../ /..),/foo /) + $(warning /foo/bar/../ /..: abspath="$(abspath /foo/bar/../ /..)") +endif + + +.PHONY: all +all: ; @: +', +'', +''); + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/addprefix b/local/recipes/dev/gnu-make/source/tests/scripts/functions/addprefix new file mode 100644 index 0000000000..1845552f1e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/addprefix @@ -0,0 +1,44 @@ +$description = "The following test creates a makefile to test the addprefix " + ."function."; + +$details = ""; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(addprefix src${pathsep},a.b.z.foo hacks) \n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile +$answer = "src${pathsep}a.b.z.foo src${pathsep}hacks\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/addsuffix b/local/recipes/dev/gnu-make/source/tests/scripts/functions/addsuffix new file mode 100644 index 0000000000..da4fbb71f5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/addsuffix @@ -0,0 +1,36 @@ +# -*-perl-*- +$description = "Test the addsuffix function."; + +$details = ""; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE <1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(basename src${pathsep}a.b.z.foo.c src${pathsep}hacks src.bar${pathsep}a.b.z.foo.c src.bar${pathsep}hacks hacks) \n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile +$answer = "src${pathsep}a.b.z.foo src${pathsep}hacks src.bar${pathsep}a.b.z.foo src.bar${pathsep}hacks hacks\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/call b/local/recipes/dev/gnu-make/source/tests/scripts/functions/call new file mode 100644 index 0000000000..dc1a6233d3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/call @@ -0,0 +1,92 @@ +# -*-perl-*- +$description = "Test the call function.\n"; + +$details = "Try various uses of call and ensure they all give the correct +results.\n"; + +run_make_test(q! +# Simple, just reverse two things +# +reverse = $2 $1 + +# A complex 'map' function, using recursive 'call'. +# +map = $(foreach a,$2,$(call $1,$a)) + +# Test using a builtin; this is silly as it's simpler to do without call +# +my-notdir = $(call notdir,$(1)) + +# Test using non-expanded builtins +# +my-foreach = $(foreach $(1),$(2),$(3)) +my-if = $(if $(1),$(2),$(3)) + +# Test recursive invocations of call with different arguments +# +one = $(1) $(2) $(3) +two = $(call one,$(1),foo,$(2)) + +# Test recursion on the user-defined function. As a special case make +# won't error due to this. +# Implement transitive closure using $(call ...) +# +DEP_foo = bar baz quux +DEP_baz = quux blarp +rest = $(wordlist 2,$(words ${1}),${1}) +tclose = $(if $1,$(firstword $1)\ + $(call tclose,$(sort ${DEP_$(firstword $1)} $(call rest,$1)))) + +all: ; @echo '$(call reverse,bar,foo)'; \ + echo '$(call map,origin,MAKE reverse map)'; \ + echo '$(call my-notdir,a/b c/d e/f)'; \ + echo '$(call my-foreach)'; \ + echo '$(call my-foreach,a,,,)'; \ + echo '$(call my-if,a,b,c)'; \ + echo '$(call two,bar,baz)'; \ + echo '$(call tclose,foo)'; +!, + "", "foo bar\ndefault file file\nb d f\n\n\nb\nbar foo baz\nfoo bar baz blarp quux \n"); + +# These won't work because call expands all its arguments first, before +# passing them on, then marks them as resolved/simple, so they're not +# expanded again by the function. +# +# echo '$(call my-foreach,a,x y z,$$(a)$$(a))'; \ +# echo '$(call my-if,,$$(info don't print this),$$(info do print this))' +# +# $answer = "xx yy zz\ndo print this\n"; + +# TEST eclipsing of arguments when invoking sub-calls + +run_make_test(q! +all = $1 $2 $3 $4 $5 $6 $7 $8 $9 + +level1 = $(call all,$1,$2,$3,$4,$5) +level2 = $(call level1,$1,$2,$3) +level3 = $(call level2,$1,$2,$3,$4,$5) + +all: + @echo $(call all,1,2,3,4,5,6,7,8,9,10,11) + @echo $(call level1,1,2,3,4,5,6,7,8) + @echo $(call level2,1,2,3,4,5,6,7,8) + @echo $(call level3,1,2,3,4,5,6,7,8) +!, + "", "1 2 3 4 5 6 7 8 9\n1 2 3 4 5\n1 2 3\n1 2 3\n"); + +# 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; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/dir b/local/recipes/dev/gnu-make/source/tests/scripts/functions/dir new file mode 100644 index 0000000000..f48fb8c092 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/dir @@ -0,0 +1,44 @@ +$description = "The following test creates a makefile to test the dir " + ."function."; + +$details = ""; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(dir src${pathsep}foo.c hacks) \n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile +$answer = "src${pathsep} .${pathsep}\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/error b/local/recipes/dev/gnu-make/source/tests/scripts/functions/error new file mode 100644 index 0000000000..998afe4814 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/error @@ -0,0 +1,71 @@ +# -*-Perl-*- + +$description = "\ +The following test creates a makefile to test the error function."; + +$details = ""; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE 'err = $(error Error found!) + +ifdef ERROR1 +$(error error is $(ERROR1)) +endif + +ifdef ERROR2 +$(error error is $(ERROR2)) +endif + +ifdef ERROR3 +all: some; @echo $(error error is $(ERROR3)) +endif + +ifdef ERROR4 +all: some; @echo error is $(ERROR4) + @echo $(error error is $(ERROR4)) +endif + +some: ; @echo Some stuff + +testvar: ; @: $(err) +'; + +close(MAKEFILE); + +# Test #1 + +&run_make_with_options($makefile, "ERROR1=yes", &get_logfile, 512); +$answer = "$makefile:4: *** error is yes. Stop.\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #2 + +&run_make_with_options($makefile, "ERROR2=no", &get_logfile, 512); +$answer = "$makefile:8: *** error is no. Stop.\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #3 + +&run_make_with_options($makefile, "ERROR3=maybe", &get_logfile, 512); +$answer = "Some stuff\n$makefile:12: *** error is maybe. Stop.\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #4 + +&run_make_with_options($makefile, "ERROR4=definitely", &get_logfile, 512); +$answer = "Some stuff\n$makefile:17: *** error is definitely. Stop.\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #5 + +&run_make_with_options($makefile, "testvar", &get_logfile, 512); +$answer = "$makefile:22: *** Error found!. Stop.\n"; +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/eval b/local/recipes/dev/gnu-make/source/tests/scripts/functions/eval new file mode 100644 index 0000000000..a3fba87a5d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/eval @@ -0,0 +1,169 @@ +# -*-perl-*- + +$description = "Test the eval function."; + +$details = "This is a test of the eval function in GNU make. +This function will evaluate inline makefile syntax and incorporate the +results into its internal database.\n"; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; +define Y + all:: ; @echo $AA + A = B +endef + +X = $(eval $(value Y)) + +$(eval $(shell echo A = A)) +$(eval $(Y)) +$(eval A = C) +$(eval $(X)) +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile, "", &get_logfile); + +# Create the answer to what should be produced by this Makefile +$answer = "AA\nBA\n"; + +&compare_output($answer,&get_logfile(1)); + +# Test to make sure defining variables when we have extra scope pushed works +# as expected. + +$makefile2 = &get_tmpfile; + +open(MAKEFILE,"> $makefile2"); + +print MAKEFILE <<'EOF'; +VARS = A B + +VARSET = $(1) = $(2) + +$(foreach v,$(VARS),$(eval $(call VARSET,$v,$v))) + +all: ; @echo A = $(A) B = $(B) +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile2, "", &get_logfile); + +# Create the answer to what should be produced by this Makefile +$answer = "A = A B = B\n"; + +&compare_output($answer,&get_logfile(1)); + +# Test to make sure eval'ing inside conditionals works properly + +$makefile3 = &get_tmpfile; + +open(MAKEFILE,"> $makefile3"); + +print MAKEFILE <<'EOF'; +FOO = foo + +all:: ; @echo it + +define Y + all:: ; @echo worked +endef + +ifdef BAR +$(eval $(Y)) +endif + +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile3, "", &get_logfile); +$answer = "it\n"; +&compare_output($answer,&get_logfile(1)); + +&run_make_with_options($makefile3, "BAR=1", &get_logfile); +$answer = "it\nworked\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST very recursive invocation of eval + +$makefile3 = &get_tmpfile; + +open(MAKEFILE,"> $makefile3"); + +print MAKEFILE <<'EOF'; +..9 := 0 1 2 3 4 5 6 7 8 9 +rev=$(eval res:=)$(foreach word,$1,$(eval res:=${word} ${res}))${res} +a:=$(call rev,${..9}) +all: ; @echo '[$(a)]' + +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile3, "", &get_logfile); +$answer = "[ 9 8 7 6 5 4 3 2 1 0 ]\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST eval with no filename context. +# The trick here is that because EVAR is taken from the environment, it must +# be evaluated before every command is invoked. Make sure that works, when +# we have no file context for reading_file (bug # 6195) + +$makefile4 = &get_tmpfile; + +open(MAKEFILE,"> $makefile4"); + +print MAKEFILE <<'EOF'; +EVAR = $(eval FOBAR = 1) +all: ; @echo "OK" + +EOF + +close(MAKEFILE); + +$ENV{EVAR} = '1'; +&run_make_with_options($makefile4, "", &get_logfile); +$answer = "OK\n"; +&compare_output($answer,&get_logfile(1)); + + +# Clean out previous information to allow new run_make_test() interface. +# If we ever convert all the above to run_make_test() we can remove this line. +$makefile = undef; + +# Test handling of backslashes in strings to be evaled. + +run_make_test(' +define FOO +all: ; @echo hello \ +world +endef +$(eval $(FOO)) +', '', 'hello world'); + +run_make_test(' +define FOO +all: ; @echo '."'".'he\llo'."'".' + @echo world +endef +$(eval $(FOO)) +', '', 'he\llo +world'); + + +# We don't allow new target/prerequisite relationships to be defined within a +# command script, because these are evaluated after snap_deps() and that +# causes lots of problems (like core dumps!) +# See Savannah bug # 12124. + +run_make_test('deps: ; $(eval deps: foo)', '', + '#MAKEFILE#:1: *** prerequisites cannot be defined in recipes. Stop.', + 512); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/file b/local/recipes/dev/gnu-make/source/tests/scripts/functions/file new file mode 100644 index 0000000000..50948a04b0 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/file @@ -0,0 +1,222 @@ +# -*-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 > with no content +run_make_test(q! +$(file >4touch) +.PHONY:x +x:;@cat 4touch +!, + '', ''); + +# Test >> with no content +run_make_test(q! +$(file >>4touch) +.PHONY:x +x:;@cat 4touch +!, + '', ''); +unlink('4touch'); + +# Test > to a read-only file +if (defined $ERR_read_only_file) { + touch('file.out'); + chmod(0444, 'file.out'); + + run_make_test(q! +define A +a +b +endef +$(file > file.out,$(A)) +x:;@cat file.out +!, + '', "#MAKEFILE#:6: *** open: file.out: $ERR_read_only_file. 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'); + +# Reading files +run_make_test(q! +$(file >file.out,A = foo) +X1 := $(file >file.out,B = bar) +$(eval $(file +X1 := x$(file +X1 := x$(file +X1 := x$(file +X1 := x$(file )', '', + "#MAKEFILE#:1: *** file: missing filename. Stop.\n", 512); + +run_make_test('$(file >>)', '', + "#MAKEFILE#:1: *** file: missing filename. Stop.\n", 512); + +run_make_test('$(file <)', '', + "#MAKEFILE#:1: *** file: missing filename. Stop.\n", 512); + +# Bad call + +run_make_test('$(file foo)', '', + "#MAKEFILE#:1: *** file: invalid file operation: foo. Stop.\n", 512); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/filter-out b/local/recipes/dev/gnu-make/source/tests/scripts/functions/filter-out new file mode 100644 index 0000000000..dec5343ee5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/filter-out @@ -0,0 +1,58 @@ +# -*-perl-*- + +$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 +.o with a single simple pattern. The second filter-out function +augments the simple pattern with three literal names, which are +also added to the text argument. This tests an internal hash table +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"; + +# 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"); + +# 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)' +!, + '', "foo.elc foo.elc\n"); + +# Force use of hash (see function.c:func_filter_filterout for params) + +my $base = 'foo.1 foo.2 foo.3 foo.4 foo.5 foo.6 foo.7 foo.8 foo.9 foo.10'; + +my $base10 = join(' ', ($base) x 10); +my $out3 = join(' ', ('foo.3') x 10); +my $out456 = join(' ', ('foo.4 foo.5 foo.6') x 10); + +run_make_test("words := $base10" . q! +files1 := $(filter %.3, $(words)) +files2 := $(filter %.4 foo.5 foo.6, $(words)) +all: ; @echo '$(files1) $(files2)' +!, + '', "$out3 $out456\n"); + + +# Escaped patterns +run_make_test(q!all:;@echo '$(filter foo\%bar,foo%bar fooXbar)'!, + '', "foo%bar\n"); + +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/local/recipes/dev/gnu-make/source/tests/scripts/functions/findstring b/local/recipes/dev/gnu-make/source/tests/scripts/functions/findstring new file mode 100644 index 0000000000..48abede61c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/findstring @@ -0,0 +1,47 @@ +$description = "The following test creates a makefile to test the findstring " + ."function."; + +$details = ""; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(findstring port, reporter)\n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile, + "", + &get_logfile, + 0); + +# Create the answer to what should be produced by this Makefile +$answer = "port\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/flavor b/local/recipes/dev/gnu-make/source/tests/scripts/functions/flavor new file mode 100644 index 0000000000..80d6be79f1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/flavor @@ -0,0 +1,44 @@ +# -*-perl-*- +$description = "Test the flavor function."; + +$details = ""; + + +# Test #1: Test general logic. +# +run_make_test(' +s := s +r = r + +$(info u $(flavor u)) +$(info s $(flavor s)) +$(info r $(flavor r)) + +ra += ra +rc ?= rc + +$(info ra $(flavor ra)) +$(info rc $(flavor rc)) + +s += s +r += r + +$(info s $(flavor s)) +$(info r $(flavor r)) + + +.PHONY: all +all:;@: +', +'', +'u undefined +s simple +r recursive +ra recursive +rc recursive +s simple +r recursive'); + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/foreach b/local/recipes/dev/gnu-make/source/tests/scripts/functions/foreach new file mode 100644 index 0000000000..6a06109a58 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/foreach @@ -0,0 +1,93 @@ +# -*-perl-*- +# $Id$ + +$description = "Test the foreach function."; + +$details = "This is a test of the foreach function in gnu make. +This function starts with a space separated list of +names and a variable. Each name in the list is subsituted +into the variable and the given text evaluated. The general +form of the command is $(foreach var,\$list,\$text). Several +types of foreach loops are tested\n"; + + +# TEST 0 + +# Set an environment variable that we can test in the makefile. +$ENV{FOOFOO} = 'foo foo'; + +run_make_test("space = ' '".' +null := +auto_var = udef space CC null FOOFOO MAKE foo CFLAGS WHITE @ < +foo = bletch null @ garf +av = $(foreach var, $(auto_var), $(origin $(var)) ) +override WHITE := BLACK +for_var = $(addsuffix .c,foo $(null) $(foo) $(space) $(av) ) +fe = $(foreach var2, $(for_var),$(subst .c,.o, $(var2) ) ) +all: auto for2 +auto : ; @echo $(av) +for2: ; @echo $(fe)', + '-e WHITE=WHITE CFLAGS=', + "undefined file default file environment default file command line override automatic automatic +foo.o bletch.o null.o @.o garf.o .o .o undefined.o file.o default.o file.o environment.o default.o file.o command.o line.o override.o automatic.o automatic.o"); + +# TEST 1: Test that foreach variables take precedence over global +# variables in a global scope (like inside an eval). Tests bug #11913 + +run_make_test(' +.PHONY: all target +all: target + +x := BAD + +define mktarget +target: x := $(x) +target: ; @echo "$(x)" +endef + +x := GLOBAL + +$(foreach x,FOREACH,$(eval $(value mktarget)))', + '', + 'FOREACH'); + +# Allow variable names with trailing space +run_make_test(q! +$(foreach \ + a \ +, b c d \ +, $(info $a)) +all:;@: +!, + "", "b\nc\nd\n"); + +# Allow empty variable names. We still expand the body. + +run_make_test(' +x = $(foreach ,1 2 3,a) +y := $x + +all: ; @echo $y', + '', "a a a\n"); + +# Check some error conditions. + +run_make_test(' +x = $(foreach ) +y = $x + +all: ; @echo $y', + '', + "#MAKEFILE#:2: *** insufficient number of arguments (1) to function 'foreach'. Stop.", + 512); + +run_make_test(' +x = $(foreach x,y) +y := $x + +all: ; @echo $y', + '', + "#MAKEFILE#:2: *** insufficient number of arguments (2) to function 'foreach'. Stop.", + 512); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/guile b/local/recipes/dev/gnu-make/source/tests/scripts/functions/guile new file mode 100644 index 0000000000..120aaf3bce --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/guile @@ -0,0 +1,116 @@ +# -*-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; + +# Guile and Valgrind don't play together at all. +$valgrind and 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 guile functions in variables -- SV 43378 +run_make_test(q! +res := $(guile #f) \ + $(guile #t) \ + $(guile #\c) \ + $(guile 1234) \ + $(guile 'foo) \ + $(guile "bar") \ + $(guile (cons 'a 'b)) \ + $(guile '(a b (c . d) 1 (2) 3)) +x:;@echo '$(res)' +!, + '', " #t c 1234 foo bar a b a 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/local/recipes/dev/gnu-make/source/tests/scripts/functions/if b/local/recipes/dev/gnu-make/source/tests/scripts/functions/if new file mode 100644 index 0000000000..8604e4f2f8 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/if @@ -0,0 +1,33 @@ +# -*-perl-*- +$description = "Test the if function.\n"; + +$details = "Try various uses of if and ensure they all give the correct +results.\n"; + +open(MAKEFILE, "> $makefile"); + +print MAKEFILE < +all: +> @echo 0_1 $(intcmp $n,$n) +> @echo 0_2 $(intcmp $z,$z) +> @echo 0_3 $(intcmp -$z,$z) +> @echo 0_4 $(intcmp $p,$p) +> @echo 0_5 $(intcmp $n,$z) +> @echo 0_6 $(intcmp $z,$n) +> @echo 1_1 $(intcmp $n,$n,$(shell echo lt)) +> @echo 1_2 $(intcmp $n,$z,$(shell echo lt)) +> @echo 1_3 $(intcmp $z,$n,$(shell echo lt)) +> @echo 2_1 $(intcmp $n,$p,lt,ge) +> @echo 2_2 $(intcmp $z,$z,lt,ge) +> @echo 2_3 $(intcmp $p,$n,lt,ge) +> @echo 3_0 $(intcmp $p,$n,lt,eq,) +> @echo 3_1 $(intcmp $z,$p,lt,eq,gt) +> @echo 3_2 $(intcmp $p,$z,lt,eq,gt) +> @echo 3_3 $(intcmp $p,$p,lt,eq,gt) +> @echo 4_0 $(intcmp $(min),$(max),lt,eq,gt) +> @echo 4_1 $(intcmp $(max),$(min),lt,eq,gt) +> @echo 4_2 $(intcmp $(min),$(min),lt,eq,gt) +> @echo 4_3 $(intcmp $(max),$(max),lt,eq,gt) +> @echo 5_0 $(intcmp -$(huge),$(huge),lt,eq,gt) +> @echo 5_1 $(intcmp $(huge),-$(huge),lt,eq,gt) +> @echo 5_2 $(intcmp -$(huge),-$(huge),lt,eq,gt) +> @echo 5_3 $(intcmp +$(huge),$(huge),lt,eq,gt) +', '', "0_1 -10\n0_2 0\n0_3 0\n0_4 888\n0_5\n0_6\n1_1\n1_2 lt\n1_3\n2_1 lt\n2_2 ge\n2_3 ge\n3_0\n3_1 lt\n3_2 gt\n3_3 eq\n4_0 lt\n4_1 gt\n4_2 eq\n4_3 eq\n5_0 lt\n5_1 gt\n5_2 eq\n5_3 eq\n"); + +# Test error conditions + +run_make_test(' +intcmp-e1: ; @echo $(intcmp 12a,1,foo) +intcmp-e2: ; @echo $(intcmp 0,,foo) +intcmp-e3: ; @echo $(intcmp -1,) +intcmp-e4: ; @echo $(intcmp ,55)', + 'intcmp-e1', + "#MAKEFILE#:2: *** non-numeric first argument to 'intcmp' function: '12a'. Stop.", + 512); + +run_make_test(undef, + 'intcmp-e2', + "#MAKEFILE#:3: *** non-numeric second argument to 'intcmp' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'intcmp-e3', + "#MAKEFILE#:4: *** non-numeric second argument to 'intcmp' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'intcmp-e4', + "#MAKEFILE#:5: *** non-numeric first argument to 'intcmp' function: empty value. Stop.", + 512); + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/join b/local/recipes/dev/gnu-make/source/tests/scripts/functions/join new file mode 100644 index 0000000000..302c30707b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/join @@ -0,0 +1,44 @@ +$description = "The following test creates a makefile to test the join " + ."function."; + +$details = ""; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(join a b c,foo hacks .pl1) \n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile +$answer = "afoo bhacks c.pl1\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/let b/local/recipes/dev/gnu-make/source/tests/scripts/functions/let new file mode 100644 index 0000000000..48aec78fa3 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/let @@ -0,0 +1,111 @@ +# -*-perl-*- +# $Id$ + +$description = "Test the let function."; + +$details = "This is a test of the let function in gnu make. +This function destructures a list of values and binds each +value to a variable name in a list of variable names. +Superfluous variable names are assigned the empty string and +the remaining values are assigned to the last variable name. +The binding holds for the duration of the evaluation of the +given text and no longer. The general form of the command +is $(let \$vars,\$list,\$text). Several types of let +assignments are tested\n"; + +# check for mismatched var and list word counts +run_make_test(q! +a = bad +b = news +x = $(let a b,1 2,$a $b) +y = $(let a,1 2,$a) +z = $(let a b,1,$a $b) +all:;@echo 'a=,$a,' 'b=,$b,' 'x=,$x,' 'y=,$y,' 'z=,$z,' +!, + '', "a=,bad, b=,news, x=,1 2, y=,1 2, z=,1 ,\n"); + +# check for whitespace +run_make_test(q! +a = bad +b = news +x = $(let a b, 1 2 ,+$a+$b+) +y = $(let a, 1 2 ,+$a+) +z = $(let a b, 1 ,+$a+$b+) +all:;@echo 'a=,$a,' 'b=,$b,' 'x=,$x,' 'y=,$y,' 'z=,$z,' +!, + '', "a=,bad, b=,news, x=,+1+2 +, y=,+1 2 +, z=,+1++,\n"); + +# Allow empty variable names and empty value list. +# We still expand the list and body. +run_make_test(' +null = +v = $(let ,$(info blankvar),abc) +x = $(let $(null),$(info side-effect),abc) +y = $(let y,,$ydef) + +all: ; @echo $v/$x/$y', + '', "blankvar\nside-effect\nabc/abc/def\n"); + +# The example macro from the manual. +run_make_test(' +reverse = $(let first rest,$1,$(if $(rest),$(call reverse,$(rest)) )$(first)) + +all: ; @echo $(call reverse, \ + moe miny meeny eeny \ + )', + '', "eeny meeny miny moe\n"); + + +# Set an environment variable that we can test in the makefile. +$ENV{FOOFOO} = 'foo foo'; + +# Verify masking: expansion outside the scope of let is unaffected. +run_make_test(' +auto_var = \ + udef \ + CC \ + FOOFOO \ + MAKE \ + foo \ + CFLAGS \ + WHITE \ + @ \ + < +av = $(foreach var, $(auto_var), $(origin $(var)) ) +foo = bletch null @ garf +override WHITE := BLACK + +define mktarget +target: foo := $(foo) +target: ; @echo $(AR)_$(foo)_ +endef + +all: auto target +auto: ; @echo $(let $(auto_var),,$(av)) $(av) +$(let AR foo,bar foo ,$(eval $(value mktarget)))', + '-e WHITE=WHITE CFLAGS=', + "automatic automatic automatic automatic automatic automatic automatic automatic automatic undefined default environment default file command line override automatic automatic +ar_foo _ +"); + + +# Check some error conditions. +run_make_test(' +x = $(let ) +y = $x + +all: ; @echo $y', + '', + "#MAKEFILE#:2: *** insufficient number of arguments (1) to function 'let'. Stop.", + 512); + +run_make_test(' +x = $(let x,y) +y := $x + +all: ; @echo $y', + '', + "#MAKEFILE#:2: *** insufficient number of arguments (2) to function 'let'. Stop.", + 512); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/notdir b/local/recipes/dev/gnu-make/source/tests/scripts/functions/notdir new file mode 100644 index 0000000000..4ed8f9c703 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/notdir @@ -0,0 +1,44 @@ +$description = "The following test creates a makefile to test the notdir " + ."function."; + +$details = ""; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := \$(notdir ${pathsep}src${pathsep}foo.c hacks) \n" + ."all: \n" + ."\t\@echo \$(string) \n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile +$answer = "foo.c hacks\n"; + +# COMPARE RESULTS + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/origin b/local/recipes/dev/gnu-make/source/tests/scripts/functions/origin new file mode 100644 index 0000000000..9b9fd56a16 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/origin @@ -0,0 +1,49 @@ +# -*-perl-*- + +$description = "Test the origin function."; + +$details = "This is a test of the origin function in gnu make. +This function will report on where a variable was +defined per the following list: + +'undefined' never defined +'default' default definition +'environment' environment var without -e +'environment override' environment var with -e +'file' defined in makefile +'command line' defined on the command line +'override' defined by override in makefile +'automatic' Automatic variable\n"; + +# Set an environment variable +$ENV{MAKETEST} = 1; + +run_make_test(' +foo := bletch garf +auto_var = undefined CC MAKETEST MAKE foo CFLAGS WHITE @ +av = $(foreach var, $(auto_var), $(origin $(var)) ) +override WHITE := BLACK +.RECIPEPREFIX = > +all: auto +> @echo $(origin undefined) +> @echo $(origin CC) +> @echo $(origin MAKETEST) +> @echo $(origin MAKE) +> @echo $(origin foo) +> @echo $(origin CFLAGS) +> @echo $(origin WHITE) +> @echo $(origin @) +auto : +> @echo $(av)', + '-e WHITE=WHITE CFLAGS=', + 'undefined default environment default file command line override automatic +undefined +default +environment +default +file +command line +override +automatic'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/realpath b/local/recipes/dev/gnu-make/source/tests/scripts/functions/realpath new file mode 100644 index 0000000000..fcea515522 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/realpath @@ -0,0 +1,92 @@ +# -*-perl-*- +$description = "Test the realpath functions."; + +$details = ""; + +# Check the local directory's realpath +run_make_test(' +ifneq ($(realpath .),$(CURDIR)) + $(warning $(realpath .) != $(CURDIR)) +endif + +ifneq ($(realpath ./),$(CURDIR)) + $(warning $(realpath ./) != $(CURDIR)) +endif + +ifneq ($(realpath .///),$(CURDIR)) + $(warning $(realpath .///) != $(CURDIR)) +endif + +.PHONY: all +all: ; @: +', + '', ''); + +# Find the realpath to the root of the partition +create_file('root.mk', 'all:;$(info $(realpath /))'); +my $root = `$make_path -sf root.mk`; +unlink('root.mk'); +chomp $root; + +my $tst = ' +ifneq ($(realpath /.),#ROOT#) + $(warning $(realpath /.) != #ROOT#) +endif + +ifneq ($(realpath /./),#ROOT#) + $(warning $(realpath /./) != #ROOT#) +endif + +ifneq ($(realpath /.///),#ROOT#) + $(warning $(realpath /.///) != #ROOT#) +endif + +ifneq ($(realpath /..),#ROOT#) + $(warning $(realpath /..) != #ROOT#) +endif + +ifneq ($(realpath /../),#ROOT#) + $(warning $(realpath /../) != #ROOT#) +endif + +ifneq ($(realpath /..///),#ROOT#) + $(warning $(realpath /..///) != #ROOT#) +endif + +ifneq ($(realpath . /..),$(CURDIR) #ROOT#) + $(warning $(realpath . /..) != $(CURDIR) #ROOT#) +endif + +.PHONY: all +all: ; @: +'; +$tst =~ s/#ROOT#/$root/g; +run_make_test($tst, '', ''); + +# On Windows platforms "//" means something special. So, don't do these tests +# there. + +if ($port_type ne 'W32') { + $tst = ' +ifneq ($(realpath ///),#ROOT#) + $(warning $(realpath ///) != #ROOT#) +endif + +ifneq ($(realpath ///.),#ROOT#) + $(warning $(realpath ///.) != #ROOT#) +endif + +ifneq ($(realpath ///..),#ROOT#) + $(warning $(realpath ///..) != #ROOT#) +endif + +.PHONY: all +all: ; @:'; + $tst =~ s/#ROOT#/$root/g; + + run_make_test($tst, '', ''); +} + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/shell b/local/recipes/dev/gnu-make/source/tests/scripts/functions/shell new file mode 100644 index 0000000000..d89a0c831d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/shell @@ -0,0 +1,214 @@ +# -*-perl-*- + +$description = 'Test the $(shell ...) function.'; + +$details = ''; + +# Test standard shell +run_make_test('.PHONY: all +OUT := $(shell echo hi) +all: ; @echo $(OUT) + ','','hi'); + +# Test shells inside rules. +run_make_test('.PHONY: all +all: ; @echo $(shell echo hi) + ','','hi'); + +# Verify .SHELLSTATUS +run_make_test('.PHONY: all +PRE := $(.SHELLSTATUS) +$(shell exit 0) +OK := $(.SHELLSTATUS) +$(shell exit 1) +BAD := $(.SHELLSTATUS) +all: ; @echo PRE=$(PRE) OK=$(OK) BAD=$(BAD) + ','','PRE= OK=0 BAD=1'); + +# Test unescaped comment characters in shells. Savannah bug #20513 +run_make_test(q! +FOO := $(shell echo '#') +foo: ; echo '$(FOO)' +!, + '', "echo '#'\n#\n"); + +# Test that exported variables are passed to $(shell ...) +$ENV{FOO} = 'baz'; +run_make_test(q! +OUT = $(shell echo $$FOO) +foo: ; @echo '$(OUT)' +!, + '', 'baz'); + +$ENV{FOO} = 'baz'; +run_make_test(q! +FOO = bar +OUT = $(shell echo $$FOO) +foo: ; @echo '$(OUT)' +!, + '', 'bar'); + +run_make_test(q! +export FOO = bar +OUT = $(shell echo $$FOO) +foo: ; @echo '$(OUT)' +!, + '', 'bar'); + +# Test shells inside exported environment variables, simply expanded. +run_make_test(' +export HI := $(shell echo hi) +.PHONY: all +all: ; @echo $$HI +', + '','hi'); + +# Test shells inside exported environment variables. See SV 10593 +run_make_test(' +export HI = $(shell echo hi) +.PHONY: all +all: ; @echo $$HI +', + '',"hi"); + +$ENV{HI} = 'foo'; +run_make_test(' +HI = $(shell echo hi) +.PHONY: all +all: ; @echo $$HI +', + '',"hi"); + +$ENV{HI} = 'foo'; +run_make_test(' +HI = $(shell echo hi) +bad := $(HI) +.PHONY: all +all: ; @echo $$HI $(bad) +', + '',"hi hi"); + +# SV 63016: Exported variable that contains a variable containing $(shell...) + +run_make_test(' +HI = $(shell echo hi) +export bad = $(HI) +.PHONY: all +all:; : $(HI) +', + '',": hi"); + +$ENV{HI} = 'outer'; +run_make_test(' +export HI = $(shell echo $$HI) +.PHONY: all +all:; @echo $$HI +', + '',"outer"); + +$ENV{HI} = 'outer'; +run_make_test(' +export HI = $(shell echo $$HI) +.PHONY: all +all:; : $(HI) +', + '',": outer"); + +if ($port_type ne 'W32') { + # Test shell errors in recipes including offset + # This needs to be ported to Windows, or else Windows error messages + # need to converted to look like more normal make errors. + run_make_test(' +.RECIPEPREFIX = > +all: +>@echo hi +>$(shell ./basdfdfsed there) +>@echo $(.SHELLSTATUS) +', + '', "#MAKE#: ./basdfdfsed: $ERR_no_such_file\nhi\n127\n"); + + run_make_test(' +$(shell ./basdfdfsed where) +all: ; @echo $(.SHELLSTATUS) +', + '', "#MAKE#: ./basdfdfsed: $ERR_no_such_file\n127\n"); + + # Test SHELLSTATUS for kill. + # This test could be ported to Windows, using taskkill ... ? + + # Figure out the exit code for SIGINT + my $pid = fork(); + if (! $pid) { + exec('kill -2 $$') or die "exec: Cannot execute sleep\n"; + } + waitpid($pid, 0); + # .SHELLSTATUS for a signal gives 128 + the signal number + my $ret = $?; + if ($ret > 255) { + # Solaris 10 perl 5.8.4 puts signal number + 128 into the high 8 bits. + $ret >>= 8; + } + $ret |= 128; + + run_make_test('.PHONY: all +$(shell kill -2 $$$$) +STAT := $(.SHELLSTATUS) +all: ; @echo STAT=$(STAT) + ','',"STAT=$ret\n"); + + # Test that not-found errors can be redirected + if ($ERR_command_not_found) { + $_ = $ERR_command_not_found; + s/#CMDNAME#/bad-command/g; + run_make_test(q! +out := $(shell bad-command 2>&1) +all: ; @echo '$(.SHELLSTATUS): $(out)' +!, + '', "127: $_\n"); + } + + # If we're using pipes for jobserver, then we will close them and not + # allow them to be available to sub-makes invoked via $(shell ...) + if (exists $FEATURES{'jobserver'}) { + run_make_test(q! +ifeq ($(ELT),) +default:; @$(MAKE) -f #MAKEFILE# ELT=1 +else ifeq ($(ELT),1) +OUTPUT := $(shell $(MAKE) -f #MAKEFILE# ELT=2) +$(info $(OUTPUT)) +default:;: $(ELT) +else +default:;: $(ELT) +endif +!, + '--no-print-directory -j2 --jobserver-style=pipe', "#MAKE#[2]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.\n: 2\n: 1"); + } + + # This crashes if we use vfork and don't reset environ properly + run_make_test(q! +export PATH = $(shell echo "tests:$$PATH") +foo = $(shell echo yes) + +all:;echo $(foo) +!, + '', "echo yes\nyes\n"); +} + +# If we're not using pipes for jobserver, then they are available in sub-makes +# invoked by $(shell ...) +if ($port_type eq 'W32' || exists $FEATURES{'jobserver-fifo'}) { + run_make_test(q! +ifeq ($(ELT),) +default:; @$(MAKE) -f #MAKEFILE# ELT=1 +else ifeq ($(ELT),1) +OUTPUT := $(shell $(MAKE) -f #MAKEFILE# ELT=2) +$(info $(OUTPUT)) +default:;: $(ELT) +else +default:;: $(ELT) +endif +!, + '--no-print-directory -j2', ": 2\n: 1"); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/sort b/local/recipes/dev/gnu-make/source/tests/scripts/functions/sort new file mode 100644 index 0000000000..e6e1343d7c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/sort @@ -0,0 +1,51 @@ +# -*-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", + '', "6\n"); + +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/strip b/local/recipes/dev/gnu-make/source/tests/scripts/functions/strip new file mode 100644 index 0000000000..8222433f31 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/strip @@ -0,0 +1,57 @@ +# -*-perl-*- +$description = "The following test creates a makefile to verify +the ability of make to strip white space from lists of object.\n"; + + +$details = "The make file is built with a list of objects that contain white space +These are then run through the strip command to remove it. This is then +verified by echoing the result.\n"; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE <<'EOMAKE'; +TEST1 := "Is this TERMINAL fun? What makes you believe is this terminal fun? JAPAN is a WONDERFUL planet -- I wonder if we will ever reach their level of COMPARATIVE SHOPPING..." +E := +TEST2 := $E try this and this $E + +define TEST3 + +and these test out + + +some +blank lines + + + +endef + +.PHONY: all +all: + @echo '$(strip $(TEST1) )' + @echo '$(strip $(TEST2) )' + @echo '$(strip $(TEST3) )' + +space: ; @echo '$(strip ) $(strip )' + +EOMAKE + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile); +$answer = "\"Is this TERMINAL fun? What makes you believe is this terminal fun? JAPAN is a WONDERFUL planet -- I wonder if we will ever reach their level of COMPARATIVE SHOPPING...\" +try this and this +and these test out some blank lines +"; +&compare_output($answer,&get_logfile(1)); + + +&run_make_with_options($makefile,"space",&get_logfile); +$answer = " \n"; +&compare_output($answer,&get_logfile(1)); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/substitution b/local/recipes/dev/gnu-make/source/tests/scripts/functions/substitution new file mode 100644 index 0000000000..0d2f6a2590 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/substitution @@ -0,0 +1,38 @@ +# -*-perl-*- + +$description = "Test the subst and patsubst functions"; + +$details = ""; + +# Generic patsubst test: test both the function and variable form. + +run_make_test(' +foo := a.o b.o c.o +bar := $(foo:.o=.c) +bar2:= $(foo:%.o=%.c) +bar3:= $(patsubst %.c,%.o,x.c.c bar.c) +all:;@echo $(bar); echo $(bar2); echo $(bar3)', +'', +'a.c b.c c.c +a.c b.c c.c +x.c.o bar.o'); + +# Patsubst without '%'--shouldn't match because the whole word has to match +# in patsubst. Based on a bug report by Markus Mauhart + +run_make_test('all:;@echo $(patsubst Foo,Repl,FooFoo)', '', 'FooFoo'); + +# Variable subst where a pattern matches multiple times in a single word. +# Based on a bug report by Markus Mauhart + +run_make_test(' +A := fooBARfooBARfoo +all:;@echo $(A:fooBARfoo=REPL)', '', 'fooBARREPL'); + +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/suffix b/local/recipes/dev/gnu-make/source/tests/scripts/functions/suffix new file mode 100644 index 0000000000..0c4f919ea1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/suffix @@ -0,0 +1,57 @@ +$description = "The following test creates a makefile to test the suffix\n" + ."function. \n"; + +$details = "The suffix function will return the string following the last _._\n" + ."the list provided. It will provide all of the unique suffixes found\n" + ."in the list. The long strings are sorted to remove duplicates.\n"; + +# IF YOU NEED >1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET +# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF +# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. +# EXAMPLE: $makefile2 = &get_tmpfile; + + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "string := word.pl general_test2.pl1 FORCE.pl word.pl3 generic_test.perl /tmp.c/bar foo.baz/bar.c MAKEFILES_variable.c\n" + ."string2 := \$(string) \$(string) \$(string) \$(string) \$(string) \$(string) \$(string)\n" + ."string3 := \$(string2) \$(string2) \$(string2) \$(string2) \$(string2) \$(string2) \$(string2)\n" + ."string4 := \$(string3) \$(string3) \$(string3) \$(string3) \$(string3) \$(string3) \$(string3)\n" + ."all: \n" + ."\t\@echo \$(suffix \$(string)) \n" + ."\t\@echo \$(sort \$(suffix \$(string4))) \n" + ."\t\@echo \$(suffix \$(string) a.out) \n" + ."\t\@echo \$(sort \$(suffix \$(string3))) \n"; + + + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +&run_make_with_options($makefile,"",&get_logfile,0); + +# Create the answer to what should be produced by this Makefile + +# COMPARE RESULTS +$answer = ".pl .pl1 .pl .pl3 .perl .c .c\n" + .".c .perl .pl .pl1 .pl3\n" + .".pl .pl1 .pl .pl3 .perl .c .c .out\n" + .".c .perl .pl .pl1 .pl3\n"; + +# In this call to compare output, you should use the call &get_logfile(1) +# to send the name of the last logfile created. You may also use +# the special call &get_logfile(1) which returns the same as &get_logfile(1). + +&compare_output($answer,&get_logfile(1)); + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/value b/local/recipes/dev/gnu-make/source/tests/scripts/functions/value new file mode 100644 index 0000000000..8e1a6f04b7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/value @@ -0,0 +1,30 @@ +# -*-perl-*- + +$description = "Test the value function."; + +$details = "This is a test of the value function in GNU make. +This function will evaluate to the value of the named variable with no +further expansion performed on it.\n"; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; +export FOO = foo + +recurse = FOO = $FOO +static := FOO = $(value FOO) + +all: ; @echo $(recurse) $(value recurse) $(static) $(value static) +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile, "", &get_logfile); + +# Create the answer to what should be produced by this Makefile +$answer = "FOO = OO FOO = foo FOO = foo FOO = foo\n"; + + +&compare_output($answer,&get_logfile(1)); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/warning b/local/recipes/dev/gnu-make/source/tests/scripts/functions/warning new file mode 100644 index 0000000000..16eb83bb45 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/warning @@ -0,0 +1,83 @@ +# -*-Perl-*- + +$description = "\ +The following test creates a makefile to test the warning function."; + +$details = ""; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; +ifdef WARNING1 +$(warning warning is $(WARNING1)) +endif + +ifdef WARNING2 +$(warning warning is $(WARNING2)) +endif + +ifdef WARNING3 +all: some; @echo hi $(warning warning is $(WARNING3)) +endif + +ifdef WARNING4 +all: some; @echo hi + @echo there $(warning warning is $(WARNING4)) +endif + +some: ; @echo Some stuff + +EOF + +close(MAKEFILE); + +# Test #1 + +&run_make_with_options($makefile, "WARNING1=yes", &get_logfile, 0); +$answer = "$makefile:2: warning is yes\nSome stuff\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #2 + +&run_make_with_options($makefile, "WARNING2=no", &get_logfile, 0); +$answer = "$makefile:6: warning is no\nSome stuff\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #3 + +&run_make_with_options($makefile, "WARNING3=maybe", &get_logfile, 0); +$answer = "Some stuff\n$makefile:10: warning is maybe\nhi\n"; +&compare_output($answer,&get_logfile(1)); + +# Test #4 + +&run_make_with_options($makefile, "WARNING4=definitely", &get_logfile, 0); +$answer = "Some stuff\n$makefile:15: warning is definitely\nhi\nthere\n"; +&compare_output($answer,&get_logfile(1)); + +# Test linenumber offset + +run_make_test(q! +all: one two + $(warning in $@ line 3) + @true + $(warning in $@ line 5) + +one two: + $(warning in $@ line 8) + @true + $(warning in $@ line 10) +!, + '', "#MAKEFILE#:8: in one line 8 +#MAKEFILE#:10: in one line 10 +#MAKEFILE#:8: in two line 8 +#MAKEFILE#:10: in two line 10 +#MAKEFILE#:3: in all line 3 +#MAKEFILE#:5: in all line 5\n"); + +# This tells the test driver that the perl test script executed properly. +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/wildcard b/local/recipes/dev/gnu-make/source/tests/scripts/functions/wildcard new file mode 100644 index 0000000000..f01f574a97 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/wildcard @@ -0,0 +1,163 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to test wildcard +expansions and the ability to put a command on the same +line as the target name separated by a semi-colon."; + +$details = "\ +This test creates 4 files by the names of 1.example, +two.example and 3.example. We execute three tests. The first +executes the print1 target which tests the '*' wildcard by +echoing all filenames by the name of '*.example'. The second +test echo's all files which match '?.example' and +[a-z0-9].example. Lastly we clean up all of the files using +the '*' wildcard as in the first test"; + +touch("example.1"); +touch("example.two"); +touch("example.3"); +touch("example.for"); +touch("example._"); + +# TEST #1 +# ------- + +run_make_test(qq/ +.PHONY: print1 print2 clean +print1: ;\@echo \$(wildcard example.*) +print2: +\t\@echo \$(wildcard example.?) +\t\@echo \$(wildcard example.[a-z0-9]) +\t\@echo \$(wildcard example.[!A-Za-z_\\!]) +clean: +\t$CMD_rmfile \$(wildcard example.*) +/, + 'print1', "example.1 example.3 example._ example.for example.two\n"); + +# TEST #2 +# ------- + +run_make_test(undef, 'print2', "example.1 example.3 example._\n" + ."example.1 example.3\n" + ."example.1 example.3\n"); + +# TEST #3 +# ------- + +$answer = "$CMD_rmfile example.1 example.3 example._ example.for example.two"; +if ($vos) +{ + $answer .= " \n"; +} +else +{ + $answer .= "\n"; +} + +run_make_test(undef, 'clean', $answer); + +# TEST #4: Verify that failed wildcards don't return the pattern + +run_make_test(q! +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"); + +# TEST #7: verify that when the input pattern has a trailing slash wildcard +# returns only directories. +# +# Currently this doesn't work with our embedded GLOB so disable it. +# ------- + +if (get_config('USE_SYSTEM_GLOB') eq 'yes') { + touch("hellof"); + mkdir("hellod", 0770); + mkdir("hellod/worldd", 0770); + touch("hellod/worldf"); + mkdir("hellod/worldd/kend1", 0770); + mkdir("hellod/worldd/kend2", 0770); + touch("hellod/worldd/kenf1"); + touch("hellod/worldd/kenf2"); + + run_make_test(qq! +print3: +\t\@echo \$(wildcard hello*) +\t\@echo \$(wildcard hello*/) +\t\@echo \$(wildcard hellod/world*) +\t\@echo \$(wildcard hellod/world*/) +\t\@echo \$(wildcard hello* hellod/world*) +\t\@echo \$(wildcard hello*/ hellod/world*/) +\t\@echo \$(wildcard hellod/*) +\t\@echo \$(wildcard hellod/*/) +\t\@echo \$(wildcard */world*) +\t\@echo \$(wildcard */worldd/) +\t\@echo \$(wildcard hellod/*/ken*/) +\t\@echo \$(wildcard hellod/*/ken?[12]) +\t\@echo \$(wildcard hellod/*/ken?[12]/) +!, '', + "hellod hellof\n" + ."hellod/\n" + ."hellod/worldd hellod/worldf\n" + ."hellod/worldd/\n" + ."hellod hellof hellod/worldd hellod/worldf\n" + ."hellod/ hellod/worldd/\n" + ."hellod/worldd hellod/worldf\n" + ."hellod/worldd/\n" + ."hellod/worldd hellod/worldf\n" + ."hellod/worldd/\n" + ."hellod/worldd/kend1/ hellod/worldd/kend2/\n" + ."hellod/worldd/kend1 hellod/worldd/kend2 " + ."hellod/worldd/kenf1 hellod/worldd/kenf2\n" + ."hellod/worldd/kend1/ hellod/worldd/kend2/\n"); + + unlink('hellof', 'hellod/worldf', 'hellod/worldd/kenf1', + 'hellod/worldd/kenf2'); + foreach $d ('hellod/worldd/kend1', 'hellod/worldd/kend2', 'hellod/worldd', + 'hellod') { + rmdir($d); + } +} + +if ($port_type ne 'W32') { + # Check wildcard on the root directory + run_make_test('print4: ; @echo $(wildcard /)', '', "/\n"); +} + +if ($port_type ne 'W32' && eval { symlink("",""); 1 }) { + + # TEST #6: check for wildcards matching directories + # See SV 53465 + + my $dir = '__rdir'; + my $lnk = '__ldir'; + mkdir($dir, 0777); + symlink($dir, $lnk); + + run_make_test(qq!all: ; \@echo \$(wildcard $lnk*/.)!, '', "$lnk/."); + + unlink($lnk); + rmdir($dir); + + # Test for dangling symlinks + # This doesn't work with the built-in glob... needs to be updated! + + if (get_config('USE_SYSTEM_GLOB') eq 'yes') { + symlink($dir, $lnk); + + run_make_test(qq!all: ; \@echo \$(wildcard $lnk)!, '', "$lnk"); + + unlink($lnk); + } +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/functions/word b/local/recipes/dev/gnu-make/source/tests/scripts/functions/word new file mode 100644 index 0000000000..217e693698 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/functions/word @@ -0,0 +1,175 @@ +# -*-perl-*- +$description = "\ +Test the word, words, wordlist, firstword, and lastword functions.\n"; + +$details = "\ +Produce a variable with a large number of words in it, +determine the number of words, and then read each one back.\n"; + +run_make_test(' +string := word.pl general_test2.pl FORCE.pl word.pl generic_test.perl MAKEFILES_variable.pl +string2 := $(string) $(string) $(string) $(string) $(string) $(string) $(string) +string3 := $(string2) $(string2) $(string2) $(string2) $(string2) $(string2) $(string2) +string4 := $(string3) $(string3) $(string3) $(string3) $(string3) $(string3) $(string3) +.RECIPEPREFIX = > +all: +> @echo $(words $(string)) +> @echo $(words $(string4)) +> @echo $(word 1, $(string)) +> @echo $(word 100, $(string)) +> @echo $(word 1 , $(string)) +> @echo $(word 1000, $(string3)) +> @echo $(word 9223372036854775807, $(string2)) +> @echo $(wordlist 3, 4, $(string)) +> @echo $(wordlist 4, 3, $(string)) +> @echo $(wordlist 1 , 6 , $(string)) +> @echo $(wordlist 5,7, $(string)) +> @echo $(wordlist 100, 110, $(string)) +> @echo $(wordlist 7, 10, $(string2)) +> @echo $(wordlist 9223372036854775807, 0, $(string2)) +', '', "6\n" + ."2058\n" + ."word.pl\n" + ."\n" + ."word.pl\n" + ."\n" + ."\n" + ."FORCE.pl word.pl\n" + ."\n" + ."word.pl general_test2.pl FORCE.pl word.pl generic_test.perl MAKEFILES_variable.pl\n" + ."generic_test.perl MAKEFILES_variable.pl\n" + ."\n" + ."word.pl general_test2.pl FORCE.pl word.pl\n" + ."\n" +); + +# Test error conditions + +run_make_test('FOO = foo bar biz baz + +word-e1: ; @echo $(word ,$(FOO)) +word-e2: ; @echo $(word abc ,$(FOO)) +word-e3: ; @echo $(word 1a,$(FOO)) +word-e4: ; @echo $(word 9999999999999999999,$(FOO)) + +wordlist-e1: ; @echo $(wordlist ,,$(FOO)) +wordlist-e2: ; @echo $(wordlist abc ,,$(FOO)) +wordlist-e3: ; @echo $(wordlist 1, 12a ,$(FOO))', + 'word-e1', + "#MAKEFILE#:3: *** invalid first argument to 'word' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'word-e2', + "#MAKEFILE#:4: *** invalid first argument to 'word' function: 'abc '. Stop.", + 512); + +run_make_test(undef, + 'word-e3', + "#MAKEFILE#:5: *** invalid first argument to 'word' function: '1a'. Stop.", + 512); + +run_make_test(undef, + 'word-e4', + "#MAKEFILE#:6: *** invalid first argument to 'word' function: '9999999999999999999' out of range. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e1', + "#MAKEFILE#:8: *** invalid first argument to 'wordlist' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e2', + "#MAKEFILE#:9: *** invalid first argument to 'wordlist' function: 'abc '. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e3', + "#MAKEFILE#:10: *** invalid second argument to 'wordlist' function: ' 12a '. Stop.", + 512); + +# Test error conditions again, but this time in a variable reference + +run_make_test('FOO = foo bar biz baz + +W = $(word $x,$(FOO)) +WL = $(wordlist $s,$e,$(FOO)) + +word-e: ; @echo $(W) +wordlist-e: ; @echo $(WL)', + 'word-e x=', + "#MAKEFILE#:3: *** invalid first argument to 'word' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'word-e x=abc', + "#MAKEFILE#:3: *** invalid first argument to 'word' function: 'abc'. Stop.", + 512); + +run_make_test(undef, + 'word-e x=0', + "#MAKEFILE#:3: *** first argument to 'word' function must be greater than 0. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s= e=', + "#MAKEFILE#:4: *** invalid first argument to 'wordlist' function: empty value. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s=abc e=', + "#MAKEFILE#:4: *** invalid first argument to 'wordlist' function: 'abc'. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s=4 e=12a', + "#MAKEFILE#:4: *** invalid second argument to 'wordlist' function: '12a'. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s=0 e=12', + "#MAKEFILE#:4: *** invalid first argument to 'wordlist' function: '0'. Stop.", + 512); + +run_make_test(undef, + 'wordlist-e s=1 e=-1', + "#MAKEFILE#:4: *** invalid second argument to 'wordlist' function: '-1'. Stop.", + 512); + + +# TEST #8 -- test $(firstword ) +# +run_make_test(' +void := +list := $(void) foo bar baz # + +a := $(word 1,$(list)) +b := $(firstword $(list)) + +.PHONY: all + +all: ; @test "$a" = "$b" && echo $a +', +'', +'foo'); + + +# TEST #9 -- test $(lastword ) +# +run_make_test(' +void := +list := $(void) foo bar baz # + +a := $(word $(words $(list)),$(list)) +b := $(lastword $(list)) + +.PHONY: all + +all: ; @test "$a" = "$b" && echo $a +', +'', +'baz'); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/misc/bs-nl b/local/recipes/dev/gnu-make/source/tests/scripts/misc/bs-nl new file mode 100644 index 0000000000..e8ba046732 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/bs-nl @@ -0,0 +1,230 @@ +# -*-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'); + +# Single quotes don't behave the same in Windows +if ($port_type ne 'W32') { + 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'); + +# Single quotes don't behave the same in Windows +if ($port_type ne 'W32') { + 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: +var = he \ +llo +var:;@echo '|$(var)|'!, + '', "|he llo|"); + +# POSIX: One space per bs-nl +run_make_test(q! +.POSIX: +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)); + +# Test different types of whitespace, and bsnl inside functions + +sub xlate +{ + $_ = $_[0]; + s/\\r/\r/g; + s/\\t/\t/g; + s/\\f/\f/g; + s/\\n/\n/g; + return $_; +} + +run_make_test(xlate(q! +$(foreach\r a \t , b\t c \r ,$(info $a \r ) ) +all:;@: +!), + '', "b \r \nc \r \n"); + +run_make_test(xlate(q! +all:;@:$(foreach\r a \t , b\t c \r ,$(info $a \r ) ) +!), + '', "b \r \nc \r \n"); + +run_make_test(xlate(q! +$(foreach \ +\r a \t\ + , b\t \ + c \r ,$(info \ + $a \r ) \ + ) +all:;@: +!), + '', "b \r \nc \r \n"); + +run_make_test(xlate(q! +all:;@:$(foreach \ +\r a \t\ + , b\t \ + c \r ,$(info \ + $a \r ) \ + ) +!), + '', "b \r \nc \r \n"); + +run_make_test(xlate(q! +define FOO +$(foreach +\r a \t + , b\t + c \r ,$(info + $a \r ) + ) +endef +$(FOO) +all:;@: +!), + '', "b \r \nc \r \n"); + +run_make_test(xlate(q! +define FOO +$(foreach +\r a \t + , b\t + c \r ,$(info + $a \r ) + ) +endef +all:;@:$(FOO) +!), + '', "b \r \nc \r \n"); + +# Test variables in recipes that expand to multiple lines + +run_make_test(q! +define var + +echo foo + + +echo bar +endef +all:;$(var) +!, + '', "echo foo\nfoo\necho bar\nbar\n"); + +run_make_test(q! +define var + +echo foo + +@ + +echo bar +endef +all:;$(var) +!, + '', "echo foo\nfoo\necho bar\nbar\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/misc/close_stdout b/local/recipes/dev/gnu-make/source/tests/scripts/misc/close_stdout new file mode 100644 index 0000000000..c8c839e7f2 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/close_stdout @@ -0,0 +1,9 @@ +# -*-perl-*- + +$description = "Make sure make exits with an error if stdout is full."; + +-e '/dev/full' or return -1; + +run_make_test("\n", '-v > /dev/full', '/^#MAKE#: write error/', 256); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/misc/fopen-fail b/local/recipes/dev/gnu-make/source/tests/scripts/misc/fopen-fail new file mode 100644 index 0000000000..18e0b7d07f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/fopen-fail @@ -0,0 +1,22 @@ +# -*-perl-*- + +$description = "Make sure make exits with an error if fopen fails."; + +# For some reason on Cygwin, make exits with no error message after +# it recurses for a while. +$^O =~ /cygwin/ and return -1; + +# 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. + +# Use a longer-than-normal timeout: some systems have more FDs available? +# We also set ulimit -n 512 in check-regression in Makefile.am, which see. +# See Savannah bug #42390. +run_make_test(q! +include $(lastword $(MAKEFILE_LIST)) +!, + '', undef, 512, 300); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/misc/general1 b/local/recipes/dev/gnu-make/source/tests/scripts/misc/general1 new file mode 100644 index 0000000000..352fc6adac --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/general1 @@ -0,0 +1,51 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to test the +simple functionality of make. It mimics the +rebuilding of a product with dependencies. +It also tests the simple definition of VPATH."; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE < $makefile"); + +# The contents of the Makefile ... + +print MAKEFILE < $makefile2"); +print MAKEFILE "all:;\@echo FOO = \$(FOO)\nFOO = foo"; +close(MAKEFILE); + +&run_make_with_options($makefile2,"",&get_logfile); +$answer = "FOO = foo\n"; +&compare_output($answer,&get_logfile(1)); + +# TEST 3 + +# Check semicolons in variable references + +run_make_test(' +$(if true,$(info true; true)) +all: ; @: +', + '', 'true; true'); + +# TEST 4 + +# Check that backslashes in command scripts are handled according to POSIX. +# Checks Savannah bug # 1332. + +# Test the fastpath / no quotes +run_make_test(' +all: + @echo foo\ +bar + @echo foo\ + bar + @echo foo\ + bar + @echo foo\ + bar + @echo foo \ +bar + @echo foo \ + bar + @echo foo \ + bar + @echo foo \ + bar +', + '', 'foobar +foobar +foo bar +foo bar +foo bar +foo bar +foo bar +foo bar'); + +# Test the fastpath / single quotes +# Single quotes don't behave the same in Windows +if ($port_type ne 'W32') { + run_make_test(q! +all: + @echo 'foo\ +bar' + @echo 'foo\ + bar' + @echo 'foo\ + bar' + @echo 'foo\ + bar' + @echo 'foo \ +bar' + @echo 'foo \ + bar' + @echo 'foo \ + bar' + @echo 'foo \ + bar' +!, + '', 'foo\ +bar +foo\ +bar +foo\ + bar +foo\ + bar +foo \ +bar +foo \ +bar +foo \ + bar +foo \ + bar'); +} + +# Test the fastpath / double quotes +run_make_test(' +all: + @echo "foo\ +bar" + @echo "foo\ + bar" + @echo "foo\ + bar" + @echo "foo\ + bar" + @echo "foo \ +bar" + @echo "foo \ + bar" + @echo "foo \ + bar" + @echo "foo \ + bar" +', + '', 'foobar +foobar +foo bar +foo bar +foo bar +foo bar +foo bar +foo bar'); + +# Test the slow path / no quotes +run_make_test(' +all: + @echo hi; echo foo\ +bar + @echo hi; echo foo\ + bar + @echo hi; echo foo\ + bar + @echo hi; echo foo\ + bar + @echo hi; echo foo \ +bar + @echo hi; echo foo \ + bar + @echo hi; echo foo \ + bar + @echo hi; echo foo \ + bar +', + '', 'hi +foobar +hi +foobar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar'); + +# Test the slow path / no quotes. This time we put the slow path +# determination _after_ the backslash-newline handling. +run_make_test(' +all: + @echo foo\ +bar; echo hi + @echo foo\ + bar; echo hi + @echo foo\ + bar; echo hi + @echo foo\ + bar; echo hi + @echo foo \ +bar; echo hi + @echo foo \ + bar; echo hi + @echo foo \ + bar; echo hi + @echo foo \ + bar; echo hi +', + '', 'foobar +hi +foobar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi'); + +# Test the slow path / single quotes +run_make_test(q! +all: + @echo hi; echo 'foo\ +bar' + @echo hi; echo 'foo\ + bar' + @echo hi; echo 'foo\ + bar' + @echo hi; echo 'foo\ + bar' + @echo hi; echo 'foo \ +bar' + @echo hi; echo 'foo \ + bar' + @echo hi; echo 'foo \ + bar' + @echo hi; echo 'foo \ + bar' +!, + '', 'hi +foo\ +bar +hi +foo\ +bar +hi +foo\ + bar +hi +foo\ + bar +hi +foo \ +bar +hi +foo \ +bar +hi +foo \ + bar +hi +foo \ + bar'); + +# Test the slow path / double quotes +run_make_test(' +all: + @echo hi; echo "foo\ +bar" + @echo hi; echo "foo\ + bar" + @echo hi; echo "foo\ + bar" + @echo hi; echo "foo\ + bar" + @echo hi; echo "foo \ +bar" + @echo hi; echo "foo \ + bar" + @echo hi; echo "foo \ + bar" + @echo hi; echo "foo \ + bar" +', + '', 'hi +foobar +hi +foobar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar +hi +foo bar'); + +run_make_test('x:;@-exit 1', '', "#MAKE#: [#MAKEFILE#:1: x] Error 1 (ignored)\n"); + +# Slow path with odd setups + +if ($port_type ne 'W32') { + run_make_test(q! + slow: SHELL := echo + slow: .SHELLFLAGS := hoho + slow:; @foo bar + !, + '', "hoho foo bar\n"); + + run_make_test(q! + slow: SHELL := echo hi + slow: .SHELLFLAGS := ho ho + slow:; @foo bar + !, + '', "hi ho ho foo bar\n"); + + run_make_test(q! + slow: SHELL := echo hi + slow: .SHELLFLAGS := 'ho;ho' + slow:; @foo bar + !, + '', "hi ho;ho foo bar\n"); +} + +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/misc/general4 b/local/recipes/dev/gnu-make/source/tests/scripts/misc/general4 new file mode 100644 index 0000000000..cfd69a8987 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/general4 @@ -0,0 +1,146 @@ +# -*-perl-*- + +$description = "\ +This tests random features of make's algorithms, often somewhat obscure, +which have either broken at some point in the past or seem likely to +break."; + +run_make_test(' +# Make sure that subdirectories built as prerequisites are actually handled +# properly. + +all: dir/subdir/file.a + +dir/subdir: ; @echo mkdir -p dir/subdir + +dir/subdir/file.b: dir/subdir ; @echo touch dir/subdir/file.b + +dir/subdir/%.a: dir/subdir/%.b ; @echo cp $< $@', + '', "mkdir -p dir/subdir\ntouch dir/subdir/file.b\ncp dir/subdir/file.b dir/subdir/file.a\n"); + +# Test implicit rules + +&touch('foo.c'); +run_make_test('foo: foo.o', + 'CC="@echo cc" OUTPUT_OPTION=', + 'cc -c foo.c +cc foo.o -o foo'); +unlink('foo.c'); + + +# Test implicit rules with '$' in the name (see se_implicit) + +run_make_test(q! +%.foo : baz$$bar ; @echo 'done $<' +%.foo : bar$$baz ; @echo 'done $<' +test.foo: +baz$$bar bar$$baz: ; @echo '$@' +!, + '', + "baz\$bar\ndone baz\$bar"); + + +# Test implicit rules with '$' in the name (see se_implicit) +# Use the '$' in the pattern. + +run_make_test(q! +%.foo : %$$bar ; @echo 'done $<' +test.foo: +test$$bar: ; @echo '$@' +!, + '', + "test\$bar\ndone test\$bar"); + +# Make sure that subdirectories built as prerequisites are actually handled +# properly... this time with '$' + +run_make_test(q! + +all: dir/subdir/file.$$a + +dir/subdir: ; @echo mkdir -p '$@' + +dir/subdir/file.$$b: dir/subdir ; @echo touch '$@' + +dir/subdir/%.$$a: dir/subdir/%.$$b ; @echo 'cp $< $@' +!, + '', "mkdir -p dir/subdir\ntouch dir/subdir/file.\$b\ncp dir/subdir/file.\$b dir/subdir/file.\$a\n"); + +# Test odd whitespace at the beginning of a line + +run_make_test(" +all: + \f + + \\ + \f \\ + \013 \\ +all: ; \@echo hi +", + '', "hi\n"); + +# SV-56834 Ensure setting PATH in the makefile works properly +my $sname = "foobar$scriptsuffix"; + +mkdir('sd', 0775); +create_file("sd/$sname", "exit 0\n"); +chmod 0755, "sd/$sname"; + +run_make_test(qq! +PATH := sd +all: ; $sname >/dev/null +!, + '', "$sname >/dev/null\n"); + +# Don't use the general PATH if not found on the target path + +$ENV{PATH} = "$ENV{PATH}:sd"; + +my ($ernum, $erstr); + +if ($port_type eq 'W32') { + $ernum = 2; + $erstr = "process_begin: CreateProcess(NULL, $sname, ...) failed.\nmake (e=2): The system cannot find the file specified."; +} else { + $ernum = 127; + $erstr = "#MAKE#: $sname: $ERR_no_such_file"; +} + +run_make_test(qq! +PATH := .. +all: ; $sname +!, + '', "$sname\n$erstr\n#MAKE#: *** [#MAKEFILE#:3: all] Error $ernum", 512); + +unlink("sd/$sname"); +rmdir('sd'); + +# Ensure that local programs are not found if "." is not on the PATH + +create_file($sname, ''); +chmod 0755, $sname; + +if ($port_type eq 'W32') { + $ernum = -1; + $erstr = ""; +} else { + $ernum = 127; + $erstr = "#MAKE#: $sname: $ERR_no_such_file\n"; +} + +run_make_test(qq! +PATH := .. +all: ; $sname +!, + '', "$sname\n$erstr#MAKE#: *** [#MAKEFILE#:3: all] Error $ernum", 512); + +unlink($sname); + +# SV 57674: ensure we use a system default PATH if one is not set +delete $ENV{PATH}; +run_make_test(q! +a: ; @echo hi +!, + '', "hi\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/misc/utf8 b/local/recipes/dev/gnu-make/source/tests/scripts/misc/utf8 new file mode 100644 index 0000000000..2adcd071d6 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/misc/utf8 @@ -0,0 +1,14 @@ +# -*-perl-*- +$description = "Test utf8 handling."; + +$details = ""; + +# Variable names containing UTF8 characters +run_make_test(" +\xe2\x96\xaa := hello +\$(info \$(\xe2\x96\xaa)) +all: +", + '', "hello\n#MAKE#: Nothing to be done for 'all'."); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-B b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-B new file mode 100644 index 0000000000..4c4c4cfb6c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-B @@ -0,0 +1,87 @@ +# -*-perl-*- + +$description = "Test make -B (always remake) option.\n"; + +$details = "\ +Construct a simple makefile that builds a target. +Invoke make once, so it builds everything. Invoke it again and verify +that nothing is built. Then invoke it with -B and verify that everything +is built again."; + +&touch('bar.x'); + +run_make_test(' +.SUFFIXES: + +.PHONY: all +all: foo + +foo: bar.x + @echo cp $< $@ + @echo "" > $@ +', + '', 'cp bar.x foo'); + +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, '-B', 'cp bar.x foo'); + +# Clean up + +rmfiles('bar.x', 'foo'); + +# Test -B with the re-exec feature: we don't want to re-exec forever +# Savannah bug # 7566 + +run_make_test(' +all: ; @: +$(info MAKE_RESTARTS=$(MAKE_RESTARTS)) +include foo.x +foo.x: ; @touch $@ +', + '-B', 'MAKE_RESTARTS= +MAKE_RESTARTS=1'); + +rmfiles('foo.x'); + +# Test -B with the re-exec feature: we DO want -B in the "normal" part of the +# makefile. + +&touch('blah.x'); + +run_make_test(' +all: blah.x ; @echo $@ +$(info MAKE_RESTARTS=$(MAKE_RESTARTS)) +include foo.x +foo.x: ; @touch $@ +blah.x: ; @echo $@ +', + '-B', 'MAKE_RESTARTS= +MAKE_RESTARTS=1 +blah.x +all'); + +rmfiles('foo.x', 'blah.x'); + +# Test that $? is set properly with -B; all prerequisites will be newer! + +utouch(-10, 'x.b'); +touch('x.a'); + +run_make_test(q! +x.a: x.b ; @echo $? +!, + '-B', "x.b\n"); + +unlink(qw(x.a x.b)); + +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-C b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-C new file mode 100644 index 0000000000..7daf69f24c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-C @@ -0,0 +1,66 @@ +# -*-perl-*- + +$description = "Test the -C option to GNU make."; + +$details = "\ +This test is similar to the clean test except that this test creates the file +to delete in the work directory instead of the current directory. Make is +called from another directory using the -C workdir option so that it can both +find the makefile and the file to delete in the work directory."; + +$example = $workdir . $pathsep . "EXAMPLE"; + +open(MAKEFILE,"> $makefile"); +print MAKEFILE qq! +all: ; \@echo This makefile did not clean the dir ... good +clean: ; $CMD_rmfile EXAMPLE\$(ext) +!; +close(MAKEFILE); + +# TEST #1 +# ------- +touch($example); + +run_make_with_options("${testname}.mk", "-C $workdir clean", &get_logfile); + +use Cwd; + +chdir $workdir; +$wpath = cwd(); +chdir $cwdpath; + +if (-f $example) { + $test_passed = 0; +} + +# Create the answer to what should be produced by this Makefile +$answer = "$make_name: Entering directory '$wpath'\n" + . "$CMD_rmfile EXAMPLE\n" + . "$make_name: Leaving directory '$wpath'\n"; + +compare_output($answer,&get_logfile(1)); + + +# TEST #2 +# ------- +# Do it again with trailing "/"; this should work the same + +$example .= "slash"; + +touch($example); + +run_make_with_options("${testname}.mk", "-C $workdir/ clean ext=slash", &get_logfile); + +if (-f $example) { + $test_passed = 0; +} + +# Create the answer to what should be produced by this Makefile +$answer = "$make_name: Entering directory '$wpath'\n" + . "$CMD_rmfile EXAMPLEslash\n" + . "$make_name: Leaving directory '$wpath'\n"; + +&compare_output($answer,&get_logfile(1)); + +unlink($example); +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-I b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-I new file mode 100644 index 0000000000..64ee7c5816 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-I @@ -0,0 +1,116 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to test the -I option."; + +$details = "\ +This test tests the -I option by including a filename in +another directory and giving make that directory name +under -I in the command line. Without this option, the make +would fail to find the included file. It also checks to make +sure that the -I option gets passed to recursive makes."; + +use File::Spec; + +# Create a directory and put a makefile in it. +# We can't put it in the current directory since that's automatically searched +# anyway. +my $subdir = 'idir'; +mkdir($subdir, 0777); + +my $included = 'ifile.mk'; +my $ipath = File::Spec->catfile($subdir, $included); +create_file($ipath, " +ANOTHER: +\t\@echo This is another included makefile +recurse: +\t\@\$(MAKE) ANOTHER -f \$(main_makefile)\n"); + +my $nosuch = "#MAKEFILE#:5: $included: $ERR_no_such_file +#MAKE#: *** No rule to make target '$included'. Stop.\n"; + + +# Verify that we get an error if we don't have -I +run_make_test(qq! +main_makefile := \$(firstword \$(MAKEFILE_LIST)) +all: +\t\@echo There should be no errors for this makefile +include $included +!, + '', $nosuch, 512); + +# Check basic -I works +run_make_test(undef, "-I $subdir all", + "There should be no errors for this makefile\n"); + +# Check that the included target works +run_make_test(undef, "-I $subdir ANOTHER", + "This is another included makefile\n"); + +# Check that -I is passed down through MAKEFLAGS +run_make_test(undef, "-I $subdir recurse", + "#MAKE#[1]: Entering directory '#PWD#' +This is another included makefile +#MAKE#[1]: Leaving directory '#PWD#'\n"); + +# Verify that we get an error if we add -I- to delete previous includes +run_make_test(undef, "-I $subdir -I- all", $nosuch, 512); + +# Make another directory with the same name and make sure the right one is +# chosen if -I- stops the path. + +mkdir('idir2', 0777); +my $ipath2 = File::Spec->catfile('idir2', $included); +create_file($ipath2, "This is a bad makefile!!\n"); + +run_make_test(undef, "-I idir2 -I $subdir ANOTHER", + "$included:1: *** missing separator. Stop.\n", 512); + +run_make_test(undef, "-I idir2 -I - -I $subdir ANOTHER", + "This is another included makefile\n"); + +# Check that -I- is passed down through MAKEFLAGS +run_make_test(undef, "-I idir2 -I - -I $subdir recurse", + "#MAKE#[1]: Entering directory '#PWD#' +This is another included makefile +#MAKE#[1]: Leaving directory '#PWD#'\n"); + +unlink($ipath2); +rmdir('idir2'); + +# The only way to check if -I- voids included directories is to see if a file +# exists in one and try to include it. We very likely can't add our own files +# to the default directories since they're probably write-protected. This +# won't work if none of the default directories contain any files :-/ + +create_file('defaultdirs.mk', "\$(info \$(.INCLUDE_DIRS))\nall:;\@:\n"); +my $cmd = subst_make_string("#MAKEPATH# -f defaultdirs.mk"); +my @dirs = `$cmd`; +my $dirs = $dirs[0]; +chomp $dirs; +unlink('defaultdirs.mk'); + +my $fn = undef; +foreach my $dn (split ' ', $dirs) { + # On Windows the default is "." which is bogus! + if ($dn ne '.') { + my @files = glob(File::Spec->catfile($dn, "*")); + if (@files) { + (undef, undef, $fn) = File::Spec->splitpath($files[0]); + last; + } + } +} + +if ($fn) { + run_make_test(" +all:; +include $fn +", + '-I-', "#MAKEFILE#:3: $fn: $ERR_no_such_file +#MAKE#: *** No rule to make target '$fn'. Stop.\n", 512); +} + +unlink($ipath); +rmdir($subdir); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-W b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-W new file mode 100644 index 0000000000..857b1cce09 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-W @@ -0,0 +1,91 @@ +# -*-perl-*- + +$description = "Test make -W (what if) option.\n"; + +# Basic build + +run_make_test(' +a.x: b.x +a.x b.x: ; echo >> $@ +', + '', "echo >> b.x\necho >> a.x"); + +# Run it again: nothing should happen + +run_make_test(undef, '', "#MAKE#: 'a.x' is up to date."); + +# Now run it with -W b.x: should rebuild a.x + +run_make_test(undef, '-W b.x', 'echo >> a.x'); + +# Put the timestamp for a.x into the future; it should still be remade. + +utouch(1000, 'a.x'); +run_make_test(undef, '', "#MAKE#: 'a.x' is up to date."); +run_make_test(undef, '-W b.x', 'echo >> a.x'); + +# Clean up + +rmfiles('a.x', 'b.x'); + +# Test -W with the re-exec feature: we don't want to re-exec forever +# Savannah bug # 7566 + +# First set it up with a normal build + +run_make_test(' +all: baz.x ; @: +include foo.x +foo.x: bar.x + @echo "\$$(info restarts=\$$(MAKE_RESTARTS))" > $@ + @echo "touch $@" +bar.x: ; echo >> $@ +baz.x: bar.x ; @echo "touch $@" +', + '', 'echo >> bar.x +touch foo.x +restarts=1 +touch baz.x'); + +# Now run with -W bar.x + +# Tweak foo.x's timestamp so the update will change it. +&utouch(1000, 'foo.x'); + +run_make_test(undef, '-W bar.x', "restarts=\ntouch foo.x\nrestarts=1\ntouch baz.x"); + +rmfiles('foo.x', 'bar.x'); + +# Test -W on vpath-found files: it should take effect. +# Savannah bug # 15341 + +mkdir('x-dir', 0777); +utouch(-20, 'x-dir/x'); +touch('y'); + +run_make_test(' +y: x ; @echo cp $< $@ +', + '-W x-dir/x VPATH=x-dir', + 'cp x-dir/x y'); + +# Make sure ./ stripping doesn't interfere with the match. + +run_make_test(' +y: x ; @echo cp $< $@ +', + '-W ./x-dir/x VPATH=x-dir', + 'cp x-dir/x y'); + +run_make_test(undef, + '-W x-dir/x VPATH=./x-dir', + 'cp ./x-dir/x y'); + +unlink(qw(y x-dir/x)); +rmdir('x-dir'); + +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-d b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-d new file mode 100644 index 0000000000..ec2e39ac93 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-d @@ -0,0 +1,9 @@ +# -*-perl-*- + +$description = "Test make -d option.\n"; + +# sv 60777. +# Test that debug output is printed when both -d and --trace are specified. +run_make_test('all: ; :', '-d --trace', "/GNU Make/"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-e b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-e new file mode 100644 index 0000000000..944c39dfd5 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-e @@ -0,0 +1,15 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to ..."; + +$details = ""; + +$ENV{GOOGLE} = 'boggle'; + +run_make_test(q! +GOOGLE = bazzle +all:; @echo "$(GOOGLE)" +!, + '-e', "boggle\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-f b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-f new file mode 100644 index 0000000000..ab225cefe7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-f @@ -0,0 +1,162 @@ +# -*-perl-*- +$description = "The following test tests that if you specify greater \n" + ."than one '-f makefilename' on the command line, \n" + ."that make concatenates them. This test creates three \n" + ."makefiles and specifies all of them with the -f option \n" + ."on the command line. To make sure they were concatenated, \n" + ."we then call make with the rules from the concatenated \n" + ."makefiles one at a time. Finally, it calls all three \n" + ."rules in one call to make and checks that the output\n" + ."is in the correct order."; + +$makefile2 = &get_tmpfile; +$makefile3 = &get_tmpfile; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE "all: \n"; +print MAKEFILE "\t\@echo This is the output from the original makefile\n"; + +# END of Contents of MAKEFILE + +close(MAKEFILE); + +# Create a second makefile +open(MAKEFILE,"> $makefile2"); +print MAKEFILE "TWO: \n"; +print MAKEFILE "\t\@echo This is the output from makefile 2\n"; +close(MAKEFILE); + +# Create a third makefile +open(MAKEFILE,"> $makefile3"); +print MAKEFILE "THREE: \n"; +print MAKEFILE "\t\@echo This is the output from makefile 3\n"; +close(MAKEFILE); + + +# Create the answer to what should be produced by this Makefile +$answer = "This is the output from the original makefile\n"; + +# Run make to catch the default rule +&run_make_with_options($makefile,"-f $makefile2 -f $makefile3",&get_logfile,0); + +&compare_output($answer,&get_logfile(1)); + + +# Run Make again with the rule from the second makefile: TWO +$answer = "This is the output from makefile 2\n"; + +&run_make_with_options($makefile,"-f $makefile2 -f $makefile3 TWO",&get_logfile,0); + +&compare_output($answer,&get_logfile(1)); + + +# Run Make again with the rule from the third makefile: THREE + +$answer = "This is the output from makefile 3\n"; +&run_make_with_options($makefile, + "-f $makefile2 -f $makefile3 THREE", + &get_logfile, + 0); +&compare_output($answer,&get_logfile(1)); + + +# Run Make again with ALL three rules in the order 2 1 3 to make sure +# that all rules are executed in the proper order + +$answer = "This is the output from makefile 2\n"; +$answer .= "This is the output from the original makefile\n"; +$answer .= "This is the output from makefile 3\n"; +&run_make_with_options($makefile, + "-f $makefile2 -f $makefile3 TWO all THREE", + &get_logfile, + 0); +&compare_output($answer,&get_logfile(1)); + + +# sv 62118. +# Validate all sorts of -f etc. options + +my $hello = 'hello.mk'; +my $bye = 'bye.mk'; +my $byesrc = 'bye.mk.src'; + +create_file($hello, 'all:; $(info hello, world) +'); + +create_file($bye, 'def:; $(info bye, world) +bye.mk: bye.mk.src; touch $@ +bye.mk.src:; touch $@ +'); + +# These invocations use the empty filename string so that the test framework +# doesn't add any -f options on its own. + +# Incorrect order of options. -R follows -f. +# Invocation of make is equivalent to +# echo 'all:; $(info hello, world)' | make -f bye.mk -fR - all +# There is bye.mk, but there is no 'R'. +# make runs the recipes from bye.mk and prints the error about missing 'R'. + +# Ensure the newly created bye.src.mk is newer than bye.mk. +&utouch(-600, $bye); +run_make_test('', "-f$bye -fR - all", "#MAKE#: R: No such file or directory +touch bye.mk.src +touch bye.mk +#MAKE#: *** No rule to make target 'R'. Stop. +", 512); + +my @opts; +my $answer; + +# Test double -f-. +@opts = ('-f- -f-', '-f - -f -', '-f- -f -', '-f - -f-', + '-f- --file=-', '-f- --file -', '-f - --file=-', '-f - --file -', + '-f- --makefile=-', '-f- --makefile -', + '-f - --makefile=-', '-f - --makefile -', + '--file=- --makefile=-', '--file=- --makefile -', + '--file - --makefile=-', '--file - --makefile -'); + +for my $opt (@opts) { + # We shouldn't need this; if the options are wrong then make shouldn't try + # to read from stdin. + close(STDIN); + open(STDIN, "<", $hello) || die "$0: cannot open $hello for reading: $!"; + run_make_test('', "-f$bye $opt", "#MAKE#: *** Makefile from standard input specified twice. Stop.\n", 512); +} + +# -f is not followed by filename. +@opts = ('-f', '--file', '--makefile'); +$answer = "/requires an argument/"; +for my $opt (@opts) { + run_make_test('', $opt, $answer, 512); +} + +# Test that make correctly parses all possible syntaxes to pipe make code to +# the standard input. + +$answer = "touch bye.mk.src +touch bye.mk +hello, world +#MAKE#: 'all' is up to date.\n"; + +@opts = ('-f- all', '-f - all', '-Rf- all', '-Rf - all', + '--file=- all', '--file - all', + '--makefile=- all', '--makefile - all'); +for my $opt (@opts) { + unlink($byesrc); + close(STDIN); + open(STDIN, "<", $hello) || die "$0: cannot open $hello for reading: $!"; + # Ensure the newly created bye.src.mk is newer than bye.mk. + &utouch(-600, $bye); + + run_make_test('', "-f$bye $opt", $answer); +} + +close(STDIN); +unlink($hello, $bye, $byesrc); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-k b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-k new file mode 100644 index 0000000000..4bd68f032d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-k @@ -0,0 +1,115 @@ +# -*-perl-*- + +$description = "Test the make -k (don't stop on error) option.\n"; + +$details = "\ +The makefile created in this test is a simulation of building +a small product. However, the trick to this one is that one +of the dependencies of the main target does not exist. +Without the -k option, make would fail immediately and not +build any part of the target. What we are looking for here, +is that make builds the rest of the dependencies even though +it knows that at the end it will fail to rebuild the main target."; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE < $makefile2"); +print MAKEFILE <<'EOF'; +.SUFFIXES: + +all: exe1 exe2; @echo making $@ + +exe1 exe2: lib; @echo cp $^ $@ + +lib: foo.o; @echo cp $^ $@ + +foo.o: ; exit 1 +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile2, "-k", &get_logfile, $error_code); + +$answer = "exit 1 +$make_name: *** [$makefile2:9: foo.o] Error 1 +$make_name: Target 'all' not remade because of errors.\n"; + +&compare_output($answer, &get_logfile(1)); + +# TEST -- make sure we keep the error code if we can't create an included +# makefile. + +if (defined $ERR_no_such_file) { + run_make_test('all: ; @echo hi +include ifile +ifile: no-such-file; exit 1 +', + '-k', + "#MAKEFILE#:2: ifile: $ERR_no_such_file +#MAKE#: *** No rule to make target 'no-such-file', needed by 'ifile'. +#MAKEFILE#:2: Failed to remake makefile 'ifile'.\n", + 512); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-l b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-l new file mode 100644 index 0000000000..d1e604947f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-l @@ -0,0 +1,51 @@ +# -*-perl-*- +# Date: Tue, 11 Aug 1992 09:34:26 -0400 +# From: pds@lemming.webo.dg.com (Paul D. Smith) + +$description = "Test load balancing (-l) option."; + +$details = "\ +This test creates a makefile where all depends on three rules +which contain the same body. Each rule checks for the existence +of a temporary file; if it exists an error is generated. If it +doesn't exist then it is created, the rule sleeps, then deletes +the temp file again. Thus if any of the rules are run in +parallel the test will fail. When make is called in this test, +it is given the -l option with a value of 0.0001. This ensures +that the load will be above this number and make will therefore +decide that it cannot run more than one job even though -j 4 was +also specified on the command line."; + +# On Windows a very different algorithm is used. +$port_type eq 'W32' and return -1; + +open(MAKEFILE,"> $makefile"); +printf MAKEFILE q, +define test +if [ ! -f test-file ]; then \ + echo >> test-file; sleep 2; %s test-file; \ +else \ + echo $@ FAILED; \ +fi +endef + +all : ONE TWO THREE +ONE : ; @$(test) +TWO : ; @$(test) +THREE : ; @$(test) +,, $CMD_rmfile; +close(MAKEFILE); + +$mkoptions = "-l 0.0001"; +$mkoptions .= " -j 4" if ($parallel_jobs); + +# We have to wait longer than the default (5s). +&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 8); + +$slurp = &read_file_into_string(&get_logfile(1)); +if ($slurp =~ /cannot enforce load limit/) { + return -1; +} +&compare_output("", &get_logfile(1)); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-n b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-n new file mode 100644 index 0000000000..ca3b43d67c --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-n @@ -0,0 +1,100 @@ +# -*-perl-*- +$description = "Test the -n option.\n"; + +$details = "Try various uses of -n and ensure they all give the correct results.\n"; + +touch('orig'); + +run_make_test(q! +final: intermediate ; echo >> $@ +intermediate: orig ; echo >> $@ +!, + '', "echo >> intermediate\necho >> final\n"); + +# TEST 1 + +run_make_test(undef, '-Worig -n', "echo >> intermediate\necho >> final\n"); + +rmfiles(qw(orig intermediate final)); + +# We consider the actual updated timestamp of targets with all +# 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; + +open(MAKEFILE, "> $makefile2"); + +print MAKEFILE <<'EOF'; +.SUFFIXES: +BAR = # nothing +FOO = +$(BAR) +a: b; echo > $@ +b: c; $(FOO) +EOF + +close(MAKEFILE); + +&utouch(-20, 'b'); +&utouch(-10, 'a'); +&touch('c'); + +# TEST 2 + +&run_make_with_options($makefile2, "", &get_logfile); +$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"; +&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 = subst_make_string("#MAKEPATH# -f \"$submake\" bar\ntouch inc\necho n --no-print-directory\n"); +&compare_output($answer, &get_logfile(1)); + +unlink('inc'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-q b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-q new file mode 100644 index 0000000000..e67b55d444 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-q @@ -0,0 +1,86 @@ +# -*-perl-*- +$description = "Test the -q option.\n"; + +$details = "Try various uses of -q and ensure they all give the correct results.\n"; + +# TEST 0 + +run_make_test(qq! +one: +two: ; +three: ; : +four: ; \$(.XY) +five: ; \\ + \$(.XY) +six: ; \\ + \$(.XY) +\t\$(.XY) +seven: ; \\ + \$(.XY) +\t: foo +\t\$(.XY) +!, + '-q one', ''); + +# TEST 1 + +run_make_test(undef, '-q two', ''); + +# TEST 2 + +run_make_test(undef, '-q three', '', 256); + +# TEST 3 + +run_make_test(undef, '-q four', ''); + +# TEST 4 + +run_make_test(undef, '-q five', ''); + +# TEST 5 + +run_make_test(undef, '-q six', ''); + +# TEST 6 + +run_make_test(undef, '-q seven', '', 256); + +# TEST 7 : Savannah bug # 7144 + +run_make_test(' +one:: ; @echo one +one:: ; @echo two +', + '-q', '', 256); + +# TEST 7 : Savannah bug # 42249 +# Make sure we exit with 1 even for prerequisite updates +run_make_test(' +build-stamp: ; echo $@ +build-arch: build-stamp +build-x: build-arch +build-y: build-x +', + '-q build-y', '', 256); + +# TEST 8 +# Make sure we exit with 2 on error even with -q +run_make_test(' +build-stamp: ; echo $@ +build-arch: build-stamp-2 +build-x: build-arch +build-y: build-x +', + '-q build-y', "#MAKE#: *** No rule to make target 'build-stamp-2', needed by 'build-arch'. Stop.\n", 512); + +# TEST 9 : Savannah bug # 47151 +# Make sure we exit with 1 when invoking a recursive make +run_make_test(' +foo: bar ; echo foo +bar: ; @$(MAKE) -f #MAKEFILE# baz +baz: ; echo baz +', + '-q foo', '', 256); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-r b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-r new file mode 100644 index 0000000000..7157f71576 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-r @@ -0,0 +1,44 @@ +# -*-perl-*- + +$description = "Test removing default rules and variables"; + +$details = "DETAILS"; + +touch('xxx.c'); + +# Simple check +run_make_test("\n", '-r COMPILE.c=echo xxx.o', + "#MAKE#: *** No rule to make target 'xxx.o'. Stop.", 512); + +# Make sure we can set it from within the makefile too +run_make_test(q! +COMPILE.c = echo +MAKEFLAGS += -r +!, + 'xxx.o', + "#MAKE#: *** No rule to make target 'xxx.o'. Stop.", 512); + +unlink('xxx.c'); + +# Simple check for -R +run_make_test(q! +all:;$(info CC='$(CC)') +!, + '-sR', "CC=''"); + +# Make sure we can set -R from within the makefile too +run_make_test(q! +MAKEFLAGS += -R +all:;$(info CC='$(CC)') +!, + '-s', "CC=''"); + +# sv 62356. +# Setting -R in MAKEFLAGS sets -r. +run_make_test(q! +MAKEFLAGS := -R +.PHONY: hello.c +all: hello.o +!, '', "#MAKE#: *** No rule to make target 'hello.o', needed by 'all'. Stop.", 512); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-s b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-s new file mode 100644 index 0000000000..76bffe63fd --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-s @@ -0,0 +1,26 @@ +# -*-perl-*- + +$description = "Test the -s (silent) and --no-silent options.\n"; + +run_make_test(q! +all: one two +one: ; @echo MAKEFLAGS=$$MAKEFLAGS +two: ; echo two +!, + '', "MAKEFLAGS=\necho two\ntwo"); + +run_make_test(undef, '-s', "MAKEFLAGS=s\ntwo"); +run_make_test(undef, '--silent', "MAKEFLAGS=s\ntwo"); +run_make_test(undef, '--quiet', "MAKEFLAGS=s\ntwo"); + +run_make_test(undef, '--no-silent', "MAKEFLAGS=\necho two\ntwo"); + +run_make_test(undef, '-s --no-silent', "MAKEFLAGS=\necho two\ntwo"); +run_make_test(undef, '--silent --no-silent', "MAKEFLAGS=\necho two\ntwo"); +run_make_test(undef, '--quiet --no-silent', "MAKEFLAGS=\necho two\ntwo"); + +run_make_test(undef, '--no-silent -s', "MAKEFLAGS=s\ntwo"); +run_make_test(undef, '--no-silent --silent', "MAKEFLAGS=s\ntwo"); +run_make_test(undef, '--no-silent --quiet', "MAKEFLAGS=s\ntwo"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-t b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-t new file mode 100644 index 0000000000..ec27d7afbf --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/dash-t @@ -0,0 +1,58 @@ +# -*-perl-*- + +$description = "Test the -t option.\n"; + +$details = "Look out for regressions of prior bugs related to -t.\n"; +# That means, nobody has even tried to make the tests below comprehensive + +# TEST 0 +# bug reported by Henning Makholm on 2001-11-03: +# make 3.79.1 touches only interm-[ab] but reports final-[a] as +# 'up to date' without touching them. +# The 'obvious' fix didn't work for double-colon rules, so pay special +# attention to them. + +open(MAKEFILE, "> $makefile"); +print MAKEFILE <<'EOMAKE'; +final-a: interm-a ; echo >> $@ +final-b: interm-b ; echo >> $@ +interm-a:: orig1-a ; echo >> $@ +interm-a:: orig2-a ; echo >> $@ +interm-b:: orig1-b ; echo >> $@ +interm-b:: orig2-b ; echo >> $@ +EOMAKE +close(MAKEFILE); + +&utouch(-30, 'orig1-a','orig2-b'); +&utouch(-20, 'interm-a','interm-b'); +&utouch(-10, 'final-a','final-b'); +&touch('orig2-a','orig1-b'); + +&run_make_with_options($makefile, "-t final-a final-b", &get_logfile); +$answer = "touch interm-a\ntouch final-a\ntouch interm-b\ntouch final-b\n"; +&compare_output($answer, &get_logfile(1)); + +unlink('orig1-a', 'orig2-a', 'interm-a', 'final-a'); +unlink('orig1-b', 'orig2-b', 'interm-b', 'final-b'); + +# TEST 1 +# -t should not touch files with no commands. + +$makefile2 = &get_tmpfile; + +open(MAKEFILE, "> $makefile2"); +print MAKEFILE <<'EOMAKE'; + +PHOOEY: xxx +xxx: ; @: + +EOMAKE +close(MAKEFILE); + +&run_make_with_options($makefile2, "-t", &get_logfile); +$answer = "touch xxx\n"; +&compare_output($answer, &get_logfile(1)); + +unlink('xxx'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/eval b/local/recipes/dev/gnu-make/source/tests/scripts/options/eval new file mode 100644 index 0000000000..54a3a4f012 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/eval @@ -0,0 +1,44 @@ +# -*-perl-*- + +$description = "Test the --eval option."; + +$details = "Verify that --eval options take effect, +and are passed to sub-makes."; + +# Verify that --eval is evaluated first +run_make_test(q! +$(info infile) +BAR = bar +all: ; @echo all +recurse: ; @$(MAKE) -f #MAKEFILE# && echo recurse!, + ['--eval=$(info eval)', 'FOO=$(BAR)'], "eval\ninfile\nall"); + +# Make sure that --eval is handled correctly during recursion +run_make_test(undef, ['--no-print-directory', '--eval=$(info eval)', 'recurse'], + "eval\ninfile\neval\ninfile\nall\nrecurse"); + +# Make sure that --eval is not passed in MAKEFLAGS +run_make_test(q! +all: ; @echo "MAKEFLAGS=$$MAKEFLAGS" +!, + ['--eval=$(info eval)'], + "eval\n".'MAKEFLAGS= --eval=$$(info\ eval)'); + +# 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'); + +# Check -E +run_make_test(q! +BAR = bar +all: ; @echo all +recurse: ; @$(MAKE) -f #MAKEFILE# && echo recurse!, + ['-E', '$(info eval)', 'FOO=$(BAR)'], "eval\nall"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/general b/local/recipes/dev/gnu-make/source/tests/scripts/options/general new file mode 100644 index 0000000000..702fb55bc9 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/general @@ -0,0 +1,30 @@ +# -*-perl-*- +$description = "Test generic option processing.\n"; + +# TEST 0 + +if (!$parallel_jobs) { + $answer = "#MAKE#: Parallel jobs (-j) are not supported on this platform.\n#MAKE#: Resetting to single job (-j1) mode.\n1foo\n"; +} +else { + $answer = "1foo\n"; +} + +run_make_test(q! +foo 1foo: ; @echo $@ +!, + "-j 1foo", $answer); + +# TEST 1 + +# This test prints the usage string; I don't really know a good way to +# test it. I guess I could invoke make with a known-bad option to see +# what the usage looks like, then compare it to what I get here... :( + +# On UNIX I can invoke it with 2>/dev/null, then just check the error code. + +if ($port_type ne 'W32') { + run_make_test(undef, "-j1foo 2>/dev/null", '', 512); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/print-directory b/local/recipes/dev/gnu-make/source/tests/scripts/options/print-directory new file mode 100644 index 0000000000..7ba9a2e749 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/print-directory @@ -0,0 +1,70 @@ +# -*-perl-*- + +$description = "Test the -w option to GNU make."; + +my $enter = "#MAKE#: Entering directory '#PWD#'"; +my $leave = "#MAKE#: Leaving directory '#PWD#'"; + +# Simple test without -w +run_make_test(q! +all: ; @echo hi +!, + "", "hi\n"); + +my $ans = "$enter\nhi\n$leave\n"; + +# Simple test with -w +run_make_test(undef, "-w", $ans); + +# Simple test with overriding -w +run_make_test(undef, "-w --no-print-directory", "hi\n"); + +# Simple test with overriding --no-print-directory +run_make_test(undef, "--no-print-directory --print-directory", $ans); + +# Test makefile rebuild to ensure no enter/leave +run_make_test(q! +include foo +all: ;@: +foo: ; touch foo +!, + "", "touch foo\n"); +unlink('foo'); + +$ans = "$enter\ntouch foo\n$leave\n"; + +# Test makefile rebuild with -w +run_make_test(undef, "-w", $ans); +unlink('foo'); + +# Test makefile rebuild with -w overridden +run_make_test(undef, "-w --no-print-directory", "touch foo\n"); +unlink('foo'); + +# Test makefile rebuild with --no-print-directory overridden +run_make_test(undef, "--no-print-directory --print-directory", $ans); +unlink('foo'); + +my $enter1 = "#MAKE#[1]: Entering directory '#PWD#'"; +my $leave1 = "#MAKE#[1]: Leaving directory '#PWD#'"; + +$ans = "$enter1\nhi\n$leave1\n"; + +# Test makefile recursion with default enter/leave +run_make_test(q! +all: ;@$(MAKE) -f #MAKEFILE# recurse +recurse: ; @echo hi +!, + "", $ans); + +# Disable enter/leave +run_make_test(undef, "--no-print-directory", "hi\n"); + +# Re-enable enter/leave +$ans = "$enter\n$ans$leave\n"; +run_make_test(undef, "--no-print-directory -w", $ans); + +# Override enter/leave +run_make_test(undef, "-w --no-print-directory", "hi\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/shuffle b/local/recipes/dev/gnu-make/source/tests/scripts/options/shuffle new file mode 100644 index 0000000000..5661683c0a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/shuffle @@ -0,0 +1,128 @@ +# -*-perl-*- + +$description = "Test the --shuffle option."; + +$details = "Verify that --shuffle has expected effect on target order and argument order."; + +# +# Test --shuffle=random +# + +# TEST 1: Fixed seed should yield the same order from run to run. + +$makefile = &get_tmpfile; + +open(MAKEFILE, "> $makefile"); +print MAKEFILE <<'EOF'; +# More target prerequisites lower collision chance in TEST 2 +all: a_ b_ c_ d_ e_ f_ g_ i_ j_ k_ l_ +%: ; echo $@ +EOF +close(MAKEFILE); + +$log1 = &get_logfile; +$log2 = &get_logfile; +&run_make_with_options($makefile, "--shuffle=12345", $log1); +&run_make_with_options($makefile, "--shuffle=12345", $log2); + +&compare_output(&read_file_into_string($log1), $log2); + +# TEST 2: Sequential runs should produce different orders. + +$log3 = &get_logfile; +$log4 = &get_logfile; +&run_make_with_options($makefile, "--shuffle", $log3); +&run_make_with_options($makefile, "--shuffle", $log4); + +++$tests_run; +if (&read_file_into_string($log3) ne &read_file_into_string($log4)) { + print "ok\n" if $debug; + ++$tests_passed; +} + +# +# Test --shuffle=reverse +# + +run_make_test(' +%: ; @echo $@ +all: a b c +', + '--shuffle=reverse', "c\nb\na\nall"); + +run_make_test(' +%: ; @echo $@ +all: a b c +', + '--shuffle=none', "a\nb\nc\nall"); + +run_make_test(' +%: ; @echo $@ +all: a b c +', + '--shuffle=identity', "a\nb\nc\nall"); + +# Make sure prerequisites get reverse order and commands don't get affected. +run_make_test(' +all: foo.o ; @echo $@ +%.o : %.c ; @echo cc -c -o $@ $< +foo.o : foo.c foo.h bar.h baz.h +%.h: ; @echo $@ +%.c: ; @echo $@ +', + '--shuffle=reverse', + "baz.h\nbar.h\nfoo.h\nfoo.c\ncc -c -o foo.o foo.c\nall"); + +# Make sure pattern prerequisites get reverse order and commands don't get +# affected. +run_make_test(' +all: foo_ ; @echo $@ +foo%: arg%1 arg%2 arg%3 arg%4 ; @echo bld $@ $< $(word 3,$^) $(word 2,$^) $(word 4,$^) + +arg%: ; @echo $@ +', + '--shuffle=reverse', + "arg_4\narg_3\narg_2\narg_1\nbld foo_ arg_1 arg_3 arg_2 arg_4\nall"); + +# Check if make can survive circular dependency. +run_make_test(' +all: a_ b_ ; @echo $@ +%_: ; @echo $@ + +a_: b_ +b_: a_ +', + '--shuffle=reverse', "#MAKE#: Circular a_ <- b_ dependency dropped.\na_\nb_\nall"); + +# Check if order-only dependencies get reordered. +run_make_test(' +all: a_ ; @echo $@ +%_: ; @echo $@ +a_: b_ c_ | d_ e_ +', + '--shuffle=reverse', "e_\nd_\nc_\nb_\na_\nall"); + +# Check if goals are reordered. +run_make_test(' +%_: ; @echo $@ +', + '--shuffle=reverse a_ b_ c_', "c_\nb_\na_"); + +# .NOTPARALLEL should prevent reordering from happening. +run_make_test(' +%_: ; @echo $@ +# disable shuffling +.NOTPARALLEL: +', + '--shuffle=reverse a_ b_ c_', "a_\nb_\nc_"); + +# Check if SECONDEXPANSION targets also get reshuffled. +run_make_test(' +.SECONDEXPANSION: +all: $$(var) +%_: ; @echo $@ +var = a_ b_ c_ +', + '--shuffle=reverse', "c_\nb_\na_"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/symlinks b/local/recipes/dev/gnu-make/source/tests/scripts/options/symlinks new file mode 100644 index 0000000000..83dc84fb92 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/symlinks @@ -0,0 +1,62 @@ +# -*-perl-*- + +$description = "Test the -L option."; + +$details = "Verify that symlink handling with and without -L works properly."; + +# Only run these tests if the system sypports symlinks + +exists $FEATURES{'check-symlink'} or return -1; + +use File::Spec; + +# Set up a symlink sym -> dep +# We'll make both dep and targ older than sym +&utouch(-10, 'dep'); +&utouch(-5, 'targ'); + +$dirnm = (File::Spec->splitdir($cwddir))[-1]; +symlink(File::Spec->catfile(File::Spec->updir(), $dirnm, 'dep'), 'sym'); + +# 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."); +run_make_test(undef, '-L', "make targ from sym"); + +# Now update dep; in all cases targ should be out of date. +&touch('dep'); +run_make_test(undef, '', "make targ from sym"); +run_make_test(undef, '-L', "make targ from sym"); + +# 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."); + +# Add in a new link between sym and dep. Be sure it's newer than targ. +sleep(1); +rename('dep', 'dep1'); +symlink('dep1', 'dep'); + +# 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, '-L', "make targ from sym"); + +rmfiles('targ', 'dep', 'sym', 'dep1'); + +# Check handling when symlinks point to non-existent files. Without -L we +# should get an error: with -L we should use the timestamp of the symlink. + +symlink("../$dirnm/dep", 'sym'); +run_make_test('targ: sym ; @echo make $@ from $<', '', + "#MAKE#: *** No rule to make target 'sym', needed by 'targ'. Stop.", 512); + +run_make_test('targ: sym ; @echo make $@ from $<', '-L', + 'make targ from sym'); + + +rmfiles('targ', 'sym'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/options/warn-undefined-variables b/local/recipes/dev/gnu-make/source/tests/scripts/options/warn-undefined-variables new file mode 100644 index 0000000000..ce15507d1e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/options/warn-undefined-variables @@ -0,0 +1,25 @@ +# -*-perl-*- + +$description = "Test the --warn-undefined-variables option."; + +$details = "Verify that warnings are printed for referencing undefined variables."; + +# Without --warn-undefined-variables, nothing should happen +run_make_test(' +EMPTY = +EREF = $(EMPTY) +UREF = $(UNDEFINED) + +SEREF := $(EREF) +SUREF := $(UREF) + +all: ; @echo ref $(EREF) $(UREF)', + '', 'ref'); + +# With --warn-undefined-variables, it should warn me +run_make_test(undef, '--warn-undefined-variables', + "#MAKEFILE#:7: warning: undefined variable 'UNDEFINED' +#MAKEFILE#:9: warning: undefined variable 'UNDEFINED' +ref"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/DEFAULT b/local/recipes/dev/gnu-make/source/tests/scripts/targets/DEFAULT new file mode 100644 index 0000000000..955c5608a1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/DEFAULT @@ -0,0 +1,35 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to override part\n" + ."of one Makefile with Another Makefile with the .DEFAULT\n" + ."rule."; + +$details = "This tests the use of the .DEFAULT special target to say that \n" + ."to remake any target that cannot be made fram the information\n" + ."in the containing makefile, make should look in another makefile\n" + ."This test gives this makefile the target bar which is not \n" + ."defined here but passes the target bar on to another makefile\n" + ."which does have the target bar defined.\n"; + +create_file('defsub.mk', q! +bar: ; @echo Executing rule BAR +!); + +run_make_test(q! +foo:; @echo Executing rule FOO + +.DEFAULT: ; @$(MAKE) -f defsub.mk $@ +!, + 'bar',"#MAKE#[1]: Entering directory '#PWD#'\n" + . "Executing rule BAR\n" + . "#MAKE#[1]: Leaving directory '#PWD#'\n"); + +unlink('defsub.mk'); + +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/DELETE_ON_ERROR b/local/recipes/dev/gnu-make/source/tests/scripts/targets/DELETE_ON_ERROR new file mode 100644 index 0000000000..f0d9f9b4d6 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/DELETE_ON_ERROR @@ -0,0 +1,22 @@ +#! -*-perl-*- + +$description = "Test the behaviour of the .DELETE_ON_ERROR target."; + +$details = ""; + +run_make_test(' +.DELETE_ON_ERROR: +all: ; exit 1 > $@ +', + '', "exit 1 > all\n#MAKE#: *** [#MAKEFILE#:3: all] Error 1\n#MAKE#: *** Deleting file 'all'", 512); + +run_make_test(' +.DELETE_ON_ERROR: +all: foo.x ; +%.x : %.q ; echo > $@ +%.q : ; exit 1 > $@ +', + '', "exit 1 > foo.q\n#MAKE#: *** [#MAKEFILE#:5: foo.q] Error 1\n#MAKE#: *** Deleting file 'foo.q'", 512); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/FORCE b/local/recipes/dev/gnu-make/source/tests/scripts/targets/FORCE new file mode 100644 index 0000000000..297bb38b40 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/FORCE @@ -0,0 +1,19 @@ +# -*-perl-*- + +$description = "The following tests rules without Commands or Dependencies."; + +# Create a file named "clean". This is the same name as the target clean +# and tricks the target into thinking that it is up to date. (Unless you +# use the .PHONY target. +touch('clean'); + +run_make_test(qq! +.IGNORE : +clean: FORCE ; $CMD_rmfile clean +FORCE: +!, + '', "$CMD_rmfile clean"); + +rmfiles('clean'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/INTERMEDIATE b/local/recipes/dev/gnu-make/source/tests/scripts/targets/INTERMEDIATE new file mode 100644 index 0000000000..e942e8c334 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/INTERMEDIATE @@ -0,0 +1,108 @@ +# -*-perl-*- + +$description = "Test the behaviour of the .INTERMEDIATE target."; + +$details = "\ +Test the behavior of the .INTERMEDIATE special target. +Create a makefile where a file would not normally be considered +intermediate, then specify it as .INTERMEDIATE. Build and ensure it's +deleted properly. Rebuild to ensure that it's not created if it doesn't +exist but doesn't need to be built. Change the original and ensure +that the intermediate file and the ultimate target are both rebuilt, and +that the intermediate file is again deleted. + +Try this with implicit rules and explicit rules: both should work.\n"; + +# TEST #0 + +&utouch(-20, 'foo.f', 'bar.f'); + +run_make_test(q! +.INTERMEDIATE: foo.e bar.e + +# Implicit rule test +%.d : %.e ; cp $< $@ +%.e : %.f ; cp $< $@ + +foo.d: foo.e + +# Explicit rule test +foo.c: foo.e bar.e; cat $^ > $@ +!, + 'foo.d', "cp foo.f foo.e\ncp foo.e foo.d\nrm foo.e\n"); + +# TEST #1 + +run_make_test(undef, 'foo.d', "#MAKE#: 'foo.d' is up to date.\n"); + +# TEST #2 + +&utouch(-10, 'foo.d'); +&touch('foo.f'); + +run_make_test(undef, 'foo.d', "cp foo.f foo.e\ncp foo.e foo.d\nrm foo.e\n"); + +# TEST #3 + +run_make_test(undef, 'foo.c', "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm foo.e bar.e\n"); + +# TEST #4 + +run_make_test(undef, 'foo.c', "#MAKE#: 'foo.c' is up to date.\n"); + +# TEST #5 + +&utouch(-10, 'foo.c'); +&touch('foo.f'); + +run_make_test(undef, 'foo.c', "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm foo.e bar.e\n"); + +# TEST #6 -- added for PR/1669: don't remove files mentioned on the cmd line. + +run_make_test(undef, 'foo.e', "cp foo.f foo.e\n"); + +unlink('foo.f', 'foo.e', 'foo.d', 'foo.c', 'bar.f', 'bar.e', 'bar.d', 'bar.c'); + +# TEST #7 -- added for PR/1423 + +run_make_test(q! +all: foo +foo.a: ; touch $@ +%: %.a ; touch $@ +.INTERMEDIATE: foo.a +!, + '-R', "touch foo.a\ntouch foo\nrm foo.a\n"); + +unlink('foo'); + +# sv 60188. +# A file made by an implicit rule, but explicitly mentioned by the user, is +# still considered intermediate if it's a prereq to .INTERMEDIATE. + +touch('hello.z'); +unlink('test.x'); + +run_make_test(q! +all: hello.z +%.z: test.x; touch $@ +%.x: ; +.INTERMEDIATE: test.x +!, '', "#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.z'); + +# A target explicitly listed as a prerequisite of a pattern rule, is still +# considered mentioned and "ought to exist". + +run_make_test(q! +1.all: 1.q ; touch $@ +%.q: 1.r ; touch $@ +%.r: ; touch $@ +.INTERMEDIATE: 1.r +!, + '', "touch 1.r\ntouch 1.q\ntouch 1.all\nrm 1.r\n"); + +unlink('1.all', '1.q', '1.r'); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/NOTINTERMEDIATE b/local/recipes/dev/gnu-make/source/tests/scripts/targets/NOTINTERMEDIATE new file mode 100644 index 0000000000..e4690b1280 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/NOTINTERMEDIATE @@ -0,0 +1,119 @@ +# -*-perl-*- + +$description = "Test the behaviour of the .NOTINTERMEDIATE target."; + +$details = "\ +Test the behavior of the .NOTINTERMEDIATE special target.\n"; + +touch('hello.z'); +unlink('hello.x'); + + +# Test 1. A file which matches a .NOTINTERMEDIATE pattern is not intermediate. +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: %.q %.x +!, '', "touch hello.z\n"); + +# Test 2. .NOTINTERMEDIATE: %.q pattern has no effect on hello.x. +touch('hello.z'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: %.q +!, '', "#MAKE#: 'hello.z' is up to date.\n"); + +# Test 3. A file which is a prereq of .NOTINTERMEDIATE is not intermediate. +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: %.q hello.x +!, '', "touch hello.z\n"); + +# Test 4. .NOTINTERMEDIATE without prerequisites makes everything +# notintermediate. +unlink('hello.z'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: +!, '', "touch hello.z\n"); + +# Test 5. Same file cannot be intermediate and notintermediate. +run_make_test(q! +.INTERMEDIATE: hello.x +.NOTINTERMEDIATE: hello.x +!, '', "#MAKE#: *** hello.x cannot be both .NOTINTERMEDIATE and .INTERMEDIATE. Stop.\n", 512); + +# Test 6. Same file cannot be secondary and notintermediate. +run_make_test(q! +.SECONDARY: hello.x +.NOTINTERMEDIATE: hello.x +!, '', "#MAKE#: *** hello.x cannot be both .NOTINTERMEDIATE and .SECONDARY. Stop.\n", 512); + +# Test 7. All .SECONDARY and all .NOTINTERMEDIATE are mutually exclusive. +run_make_test(q! +.SECONDARY: +.NOTINTERMEDIATE: +!, '', "#MAKE#: *** .NOTINTERMEDIATE and .SECONDARY are mutually exclusive. Stop.\n", 512); + +# Test 8. .INTERMEDIATE file takes priority over a .NOTINTERMEDIATE pattern. +unlink('hello.x'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.INTERMEDIATE: hello.x +.NOTINTERMEDIATE: %.q %.x +!, '', "#MAKE#: 'hello.z' is up to date.\n"); + +# Test 9. Everything is notintermediate, except hello.x. +unlink('hello.x'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.INTERMEDIATE: hello.x +.NOTINTERMEDIATE: +!, '', "#MAKE#: 'hello.z' is up to date.\n"); + +# Test 10. Everything is notintermediate, except hello.x. +unlink('hello.x'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.SECONDARY: hello.x +.NOTINTERMEDIATE: +!, '', "#MAKE#: 'hello.z' is up to date.\n"); + +# Test 11. Everything is secondary, except %.q, hello.x. +unlink('hello.x'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: %.q hello.x +.SECONDARY: +!, '', "touch hello.z\n"); + +# Test 12. Everything is secondary, except %.q %.x. +unlink('hello.x'); +run_make_test(q! +hello.z: +%.z: %.x; touch $@ +%.x: ; +.NOTINTERMEDIATE: %.q %.x +.SECONDARY: +!, '', "touch hello.z\n"); + + + +unlink('hello.z'); +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/ONESHELL b/local/recipes/dev/gnu-make/source/tests/scripts/targets/ONESHELL new file mode 100644 index 0000000000..f9da14b318 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/ONESHELL @@ -0,0 +1,143 @@ +# -*-perl-*- + +$description = "Test the behaviour of the .ONESHELL target."; + +$details = ""; + +my $multi_ok = 0; + +if ($port_type ne 'W32') { + # Some shells (*shakes fist at Solaris*) cannot handle multiple flags in + # separate arguments. + my $t = `$sh_name -e -c true 2>/dev/null`; + $multi_ok = $? == 0; +} + +# Simple + +run_make_test(q! +.ONESHELL: +all: + a=$$$$ + [ 0"$$a" -eq "$$$$" ] || echo fail +!, + '', 'a=$$ +[ 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! +.ONESHELL: +all: + a=$$$$ + @-+ [ 0"$$a" -eq "$$$$" ] || echo fail +!, + '', 'a=$$ +[ 0"$a" -eq "$$" ] || echo fail +'); + +# This time with outer prefix chars + +run_make_test(q! +.ONESHELL: +all: + @a=$$$$ + [ 0"$$a" -eq "$$$$" ] || echo fail +!, + '', ''); + + +# This time with outer and inner prefix chars + +run_make_test(q! +.ONESHELL: +all: + @a=$$$$ + -@ +[ 0"$$a" -eq "$$$$" ] || echo fail +!, + '', ''); + + +# Now try using a different interpreter +# This doesn't work on Windows right now +if ($port_type ne 'W32') { + run_make_test(q! +.RECIPEPREFIX = > +.ONESHELL: +SHELL = #PERL# +.SHELLFLAGS = -e +all: +> @$$a=5 +> +7; +> @y=qw(a b c); +>print "a = $$a, y = (@y)\n"; +!, + '', "a = 12, y = (a b c)\n"); + + # Simple .SHELLFLAGS, no quotes. + # sv 61805. + run_make_test(q! +.ONESHELL: +SHELL = #PERL# +.SHELLFLAGS = -e +all:; @print "it works\n" +!, '', 'it works'); + + # Pass a quoted string with spaces to oneshell. + # sv 61805. + run_make_test(q! +.ONESHELL: +SHELL = #PERL# +.SHELLFLAGS = -w -E 'use warnings FATAL => "all";' -E +all:; @print "it works\n" +!, '', 'it works'); + + # Empty .SHELLFLAGS. + # sv 61805. + run_make_test(q! +.ONESHELL: +SHELL = #PERL# +.SHELLFLAGS = +all:; @print "it works" +!, '', "Can't open perl script \"print \"it works\"\": $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: all] Error 2", 512); + + # No .SHELLFLAGS. + # sv 61805. + run_make_test(q! +.ONESHELL: +SHELL = #PERL# +all:; @print "it works" +!, '', "Can't open perl script \"print \"it works\"\": $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:4: all] Error 2", 512); + + # Pass a quoted string with spaces to oneshell. + # sv 61805. + run_make_test(q! +.ONESHELL: +SHELL = #PERL# +.SHELLFLAGS = -w -E 'use warnings FATAL => "all";' -E 'my $$foo = "bar";' -E +all:; @print "it works: $$foo\n" +!, '', 'it works: bar'); +} + +# This tells the test driver that the perl test script executed properly. +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/PHONY b/local/recipes/dev/gnu-make/source/tests/scripts/targets/PHONY new file mode 100644 index 0000000000..d49e3f8389 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/PHONY @@ -0,0 +1,42 @@ +# -*-perl-*- + +$description = "The following tests the use of a PHONY target. It makes\n" + ."sure that the rules under a target get executed even if\n" + ."a filename of the same name of the target exists in the\n" + ."directory.\n"; + +$details = "This makefile in this test declares the target clean to be a \n" + ."PHONY target. We then create a file named \"clean\" in the \n" + ."directory. Although this file exists, the rule under the target\n" + ."clean should still execute because of it's phony status."; + +$example = "EXAMPLE_FILE"; + +touch($example); + +# Create a file named "clean". This is the same name as the target clean +# and tricks the target into thinking that it is up to date. (Unless you +# use the .PHONY target. +touch('clean'); + +open(MAKEFILE, "> $makefile"); +print MAKEFILE qq! +.PHONY : clean +all: ; \@echo This makefile did not clean the dir ... good +clean: ; $CMD_rmfile $example clean +!; +close(MAKEFILE); + +$answer = "$CMD_rmfile $example clean\n"; +&run_make_with_options($makefile,"clean",&get_logfile); + +if (-f $example) { + $test_passed = 0; +} + +&compare_output($answer,&get_logfile(1)); + +# Just in case +unlink($example, 'clean'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/POSIX b/local/recipes/dev/gnu-make/source/tests/scripts/targets/POSIX new file mode 100644 index 0000000000..c40b8dbe48 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/POSIX @@ -0,0 +1,57 @@ +# -*-perl-*- + +$description = "Test the behaviour of the .POSIX target."; + +$details = ""; + + +# Ensure turning on .POSIX enables the -e flag for the shell +# We can't assume the exit value of "false" because on different systems it's +# different. + +my $script = 'false; true'; +my $flags = '-ec'; +my $out = `$sh_name $flags '$script' 2>&1`; +my $err = $? >> 8; +run_make_test(qq! +.POSIX: +all: ; \@$script +!, + '', "#MAKE#: *** [#MAKEFILE#:3: all] Error $err\n", 512); + +# User settings must override .POSIX +# In the standard .POSIX must be the first thing in the makefile +# but we relax that rule in GNU make. +$flags = '-xc'; +$out = `$sh_name $flags '$script' 2>&1`; +run_make_test(qq! +.SHELLFLAGS = $flags +.POSIX: +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 => '-O1', + FC => 'fort77', FFLAGS => '-O1', + 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 +%ENV = (%ENV, 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/local/recipes/dev/gnu-make/source/tests/scripts/targets/SECONDARY b/local/recipes/dev/gnu-make/source/tests/scripts/targets/SECONDARY new file mode 100644 index 0000000000..963c240597 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/SECONDARY @@ -0,0 +1,189 @@ +#! -*-perl-*- + +$description = "Test the behaviour of the .SECONDARY target."; + +$details = "\ +Test the behavior of the .SECONDARY special target. +Create a makefile where a file would not normally be considered +intermediate, then specify it as .SECONDARY. Build and note that it's +not automatically deleted. Delete the file. Rebuild to ensure that +it's not created if it doesn't exist but doesn't need to be built. +Change the original and ensure that the secondary file and the ultimate +target are both rebuilt, and that the secondary file is not deleted. + +Try this with implicit rules and explicit rules: both should work.\n"; + +open(MAKEFILE,"> $makefile"); + +print MAKEFILE <<'EOF'; + +.SECONDARY: foo.e + +# Implicit rule test +%.d : %.e ; cp $< $@ +%.e : %.f ; cp $< $@ + +foo.d: foo.e + +# Explicit rule test +foo.c: foo.e ; cp $< $@ +EOF + +close(MAKEFILE); + +# TEST #1 + +&utouch(-20, 'foo.f'); + +&run_make_with_options($makefile,'foo.d',&get_logfile); +$answer = "cp foo.f foo.e\ncp foo.e foo.d\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST #2 + +unlink('foo.e'); + +&run_make_with_options($makefile,'foo.d',&get_logfile); +$answer = "$make_name: 'foo.d' is up to date.\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST #3 + +&utouch(-10, 'foo.d'); +&touch('foo.f'); + +&run_make_with_options($makefile,'foo.d',&get_logfile); +$answer = "cp foo.f foo.e\ncp foo.e foo.d\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST #4 + +&run_make_with_options($makefile,'foo.c',&get_logfile); +$answer = "cp foo.e foo.c\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST #5 + +unlink('foo.e'); + +&run_make_with_options($makefile,'foo.c',&get_logfile); +$answer = "$make_name: 'foo.c' is up to date.\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST #6 + +&utouch(-10, 'foo.c'); +&touch('foo.f'); + +&run_make_with_options($makefile,'foo.c',&get_logfile); +$answer = "cp foo.f foo.e\ncp foo.e foo.c\n"; +&compare_output($answer, &get_logfile(1)); + +unlink('foo.f', 'foo.e', 'foo.d', 'foo.c'); + +# TEST #7 -- test the "global" .SECONDARY, with no targets. + +$makefile2 = &get_tmpfile; + +open(MAKEFILE, "> $makefile2"); + +print MAKEFILE <<'EOF'; +.SECONDARY: + +final: intermediate +intermediate: source + +final intermediate source: ; echo $< > $@ +EOF + +close(MAKEFILE); + +&utouch(-10, 'source'); +touch('final'); + +&run_make_with_options($makefile2, '', &get_logfile); +$answer = "$make_name: 'final' is up to date.\n"; +&compare_output($answer, &get_logfile(1)); + +unlink('source', 'final', 'intermediate'); + + +# TEST #8 -- test the "global" .SECONDARY, with .PHONY. + +touch('version2'); +run_make_test(' +.PHONY: version +.SECONDARY: +version2: version ; @echo GOOD +all: version2', + 'all', 'GOOD'); + +unlink('version2'); + +# TEST #9 -- Savannah bug #15919 +# The original fix for this bug caused a new bug, shown here. + +touch(qw(1.a 2.a)); + +run_make_test(' +%.c : %.b ; cp $< $@ +%.b : %.a ; cp $< $@ +all : 1.c 2.c +2.a: 1.c', '-rR -j', +'cp 1.a 1.b +cp 1.b 1.c +cp 2.a 2.b +cp 2.b 2.c +rm 2.b 1.b'); + +unlink(qw(1.a 2.a 1.c 2.c)); + +# TEST #10 -- Savannah bug #15919 +touch('test.0'); +run_make_test(' +.SECONDARY : test.1 test.2 test.3 + +test : test.4 + +%.4 : %.int %.3 ; touch $@ + +%.int : %.3 %.2 ; touch $@ + +%.3 : | %.2 ; touch $@ + +%.2 : %.1 ; touch $@ + +%.1 : %.0 ; touch $@', '-rR -j 2', +'touch test.1 +touch test.2 +touch test.3 +touch test.int +touch test.4 +rm test.int'); + +# After a touch of test.0 it should give the same output, except we don't need +# to rebuild test.3 (order-only) +sleep(1); +touch('test.0'); +run_make_test(undef, '-rR -j 2', +'touch test.1 +touch test.2 +touch test.int +touch test.4 +rm test.int'); + +# With both test.0 and test.3 updated it should still build everything except +# test.3 +sleep(1); +touch('test.0', 'test.3'); +run_make_test(undef, '-rR -j 2', +'touch test.1 +touch test.2 +touch test.int +touch test.4 +rm test.int'); + +unlink(qw(test.0 test.1 test.2 test.3 test.4)); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/SILENT b/local/recipes/dev/gnu-make/source/tests/scripts/targets/SILENT new file mode 100644 index 0000000000..df396a4c56 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/SILENT @@ -0,0 +1,33 @@ +# -*-perl-*- + +$description = "Test the special target .SILENT."; + +run_make_test(q! +.PHONY: M a b +M: a b +.SILENT : b +a b: ; echo $@ +!, + '', "echo a\na\nb"); + +run_make_test(q! +.PHONY: M a b +M: a b +.SILENT: +a b: ; echo $@ +!, + '', "a\nb"); + +# SV 54740 : don't inherit .SILENT settings in sub-makes +run_make_test(q! +.PHONY: M r a b +r: a b ; @$(MAKE) -f #MAKEFILE# M V=x +a b: ; echo $@ + +V = +$V.SILENT: +M: a b +!, + '--no-print-directory', "a\nb\necho a\na\necho b\nb"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/WAIT b/local/recipes/dev/gnu-make/source/tests/scripts/targets/WAIT new file mode 100644 index 0000000000..b981023f8f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/WAIT @@ -0,0 +1,193 @@ +# -*-perl-*- + +$description = "Test the behaviour of the .WAIT target."; + +$details = ""; + +# Ensure .WAIT doesn't appear in any automatic variables + +run_make_test(q! +all: .WAIT pre1 .WAIT pre2 | .WAIT pre3 ; @echo '<=$< ^=$^ ?=$? +=$+ |=$|' +pre1 pre2 pre3:; + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '', '<=pre1 ^=pre1 pre2 ?=pre1 pre2 +=pre1 pre2 |=pre3'); + +run_make_test(q! +.SECONDEXPANSION: +all: $$(pre) ; @echo '<=$< ^=$^ ?=$? +=$+ |=$|' +pre1 pre2 pre3:; + +pre = .WAIT pre1 .WAIT pre2 | .WAIT pre3 +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '', '<=pre1 ^=pre1 pre2 ?=pre1 pre2 +=pre1 pre2 |=pre3'); + +run_make_test(q! +all: pre +p% : .WAIT p%1 .WAIT p%2 | .WAIT p%3; @echo '<=$< ^=$^ ?=$? +=$+ |=$|' +pre1 pre2 pre3: ; + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '', "<=pre1 ^=pre1 pre2 ?=pre1 pre2 +=pre1 pre2 |=pre3\n"); + +# Unfortunately I don't think we can get away from using sleep here; at least +# I can't think of any way to make sure .WAIT works without it. Even with it, +# it's not reliable (in that even if .WAIT is not working we MIGHT succeed the +# test--it shouldn't ever be the case that we fail the test unexpectedly). +# That makes this test suite slow to run :-/. + +run_make_test(q! +all : pre1 .WAIT pre2 +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out $@ + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\nend-pre1\npre2\n"); + +# Ensure .WAIT doesn't add extra a dependency between its targets + +run_make_test(undef, '-j10 pre2', "pre2\n"); + +# Ensure .WAIT doesn't wait between all targets + +run_make_test(q! +all : pre1 .WAIT pre2 pre3 +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out start-$@ file TWO wait THREE out end-$@ +pre3: ; @#HELPER# -q wait TWO out $@ file THREE + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\nend-pre1\nstart-pre2\npre3\nend-pre2\n"); + +unlink(qw(TWO THREE)); + +# Ensure .WAIT waits for ALL targets on the left before ANY targets on the right + +run_make_test(q! +all : pre1 pre2 .WAIT post1 post2 +pre1: ; @#HELPER# -q out start-$@ file PRE1 wait PRE2 sleep 1 out end-$@ +pre2: ; @#HELPER# -q wait PRE1 out $@ file PRE2 + +post1: ; @#HELPER# -q wait POST2 out $@ file POST1 +post2: ; @#HELPER# -q file POST2 wait POST1 out $@ + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\npre2\nend-pre1\npost1\npost2\n"); + +unlink(qw(PRE1 PRE2 POST1 POST2)); + +# See if .WAIT takes effect between different lists of prereqs +# In the current implementation, .WAIT waits only between two prerequisites +# in a given target. These same two targets might be run in a different +# order if they appear as prerequisites of another target. This is the way +# other implementations of .WAIT work. I personally think it's gross and +# makes .WAIT just a toy when it comes to ordering, but it's much simpler +# to implement than creating an actual edge in the DAG to represent .WAIT +# and since that's what users expect, we'll do the same for now. + +run_make_test(q! +all : one two +one: pre1 .WAIT pre2 +two: pre2 pre1 +pre1: ; @#HELPER# -q out start-$@ file PRE1 wait PRE2 out end-$@ +pre2: ; @#HELPER# -q wait PRE1 out $@ file PRE2 + + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\npre2\nend-pre1\n"); +unlink(qw(PRE1 PRE2)); + +# Check that .WAIT works with pattern rules + +run_make_test(q! +all: pre +p% : p%1 .WAIT p%2; +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out $@ + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\nend-pre1\npre2\n"); + +# Check that .WAIT works with secondarily expanded rules + +run_make_test(q! +.SECONDEXPANSION: +all: $$(pre) +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out $@ +pre3: ; @#HELPER# -q out $@ + +pre = .WAIT pre1 .WAIT pre2 | .WAIT pre3 + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10', "start-pre1\nend-pre1\npre2\npre3\n"); + +# Verify NOTPARALLEL works + +run_make_test(q! +all : pre1 pre2 +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out $@ + +.NOTPARALLEL: +!, + '-j10', "start-pre1\nend-pre1\npre2\n"); + +run_make_test(q! +all : p1 .WAIT np1 + +p1: pre1 pre2 +pre1: ; @#HELPER# -q out start-$@ file PRE1 wait PRE2 out end-$@ +pre2: ; @#HELPER# -q wait PRE1 out $@ file PRE2 + + +np1: npre1 npre2 +npre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +npre2: ; @#HELPER# -q out $@ + +.NOTPARALLEL: np1 +!, + '-j10', "start-pre1\npre2\nend-pre1\nstart-npre1\nend-npre1\nnpre2\n"); +unlink(qw(PRE1 PRE2)); + +# Ensure we don't shuffle if .WAIT is set + +run_make_test(q! +all : pre1 .WAIT pre2 +pre1: ; @#HELPER# -q out start-$@ sleep 1 out end-$@ +pre2: ; @#HELPER# -q out $@ + +# This is just here so we don't fail with older versions of make +.WAIT: +!, + '-j10 --shuffle=reverse', "start-pre1\nend-pre1\npre2\n"); + +# Warn about invalid .WAIT definitions + +run_make_test(q! +.WAIT: foo +.WAIT: ; echo oops +all:;@: +!, + '', "#MAKEFILE#:2: .WAIT should not have prerequisites\n#MAKEFILE#:3: .WAIT should not have commands\n"); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/targets/clean b/local/recipes/dev/gnu-make/source/tests/scripts/targets/clean new file mode 100644 index 0000000000..e67458e90f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/targets/clean @@ -0,0 +1,31 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to delete a \n" + ."file in the directory. It tests to see if make will \n" + ."NOT execute the command unless the rule is given in \n" + ."the make command line."; + +$example = "EXAMPLE_FILE"; + +open(MAKEFILE,"> $makefile"); +print MAKEFILE qq! +all: ; \@echo This makefile did not clean the dir... good +clean: ; $CMD_rmfile $example +!; +close(MAKEFILE); + +touch($example); +run_make_with_options($makefile,"",&get_logfile,0); + +$answer = "This makefile did not clean the dir... good\n"; +compare_output($answer,&get_logfile(1)) || error("abort"); + + +$answer = "$CMD_rmfile $example\n"; +run_make_with_options($makefile,"clean",&get_logfile,0); +if (-f $example) { + $test_passed = 0; +} +compare_output($answer,&get_logfile(1)) || error("abort"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/test_template b/local/recipes/dev/gnu-make/source/tests/scripts/test_template new file mode 100644 index 0000000000..3fd3f95376 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/test_template @@ -0,0 +1,29 @@ +# -*-perl-*- + +$description = ""; +$details = ""; + +# Run a make test. See the documentation of run_make_test() in +# run_make_tests.pl, but briefly the first argument is a string with the +# contents of a makefile to be tested, the second is a string containing the +# arguments to be passed to the make invocation, the third is a string +# containing the expected output. The fourth is the expected exit code for +# make. If not specified, it's assumed that the make program should succeed +# (exit with 0). + +run_make_test('Your test makefile goes here', + 'Arguments to pass to make go here', + 'Expected output from the invocation goes here'); + +# There are various special tokens, options, etc. See the full documentation +# in run_make_tests.pl. + + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/CURDIR b/local/recipes/dev/gnu-make/source/tests/scripts/variables/CURDIR new file mode 100644 index 0000000000..1be54f1a0a --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/CURDIR @@ -0,0 +1,16 @@ +# -*-perl-*- + +$description = "This tests the CURDIR variable."; + +$details = "Echo CURDIR both with and without -C. Also ensure overrides work."; + + +# TEST #1 +# ------- + +run_make_test(q! +all: ; @echo $(CURDIR) +!, + '', "#PWD#\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/DEFAULT_GOAL b/local/recipes/dev/gnu-make/source/tests/scripts/variables/DEFAULT_GOAL new file mode 100644 index 0000000000..8188ce71ca --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/DEFAULT_GOAL @@ -0,0 +1,87 @@ +# -*-perl-*- +$description = "Test the .DEFAULT_GOAL special variable."; + +$details = ""; + + +# Test #1: basic logic. +# +run_make_test(' +# Basics. +# +foo: ; @: + +ifneq ($(.DEFAULT_GOAL),foo) +$(error ) +endif + +# Reset to empty. +# +.DEFAULT_GOAL := + +bar: ; @: + +ifneq ($(.DEFAULT_GOAL),bar) +$(error ) +endif + +# Change to a different goal. +# + +.DEFAULT_GOAL := baz + +baz: ; @echo $@ +', +'', +'baz'); + + +# Test #2: unknown goal. +# +run_make_test(' +.DEFAULT_GOAL = foo +', +'', +"#MAKE#: *** No rule to make target 'foo'. Stop.", +512); + + +# Test #3: more than one goal. +# +run_make_test(' +.DEFAULT_GOAL := foo bar +', +'', +'#MAKE#: *** .DEFAULT_GOAL contains more than one target. Stop.', +512); + + +# Test #4: Savannah bug #12226. +# +run_make_test(' +define rule +foo: ; @echo $$@ +endef + +define make-rule +$(eval $(rule)) +endef + +$(call make-rule) + +', +'', +'foo'); + +# TEST #5: .DEFAULT_GOAL containing just whitespace (Savannah bug #25697) + +run_make_test(' +N = +.DEFAULT_GOAL = $N $N # Just whitespace + +foo: ; @echo "boo" +', + '', "#MAKE#: *** No targets. Stop.\n", 512); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/EXTRA_PREREQS b/local/recipes/dev/gnu-make/source/tests/scripts/variables/EXTRA_PREREQS new file mode 100644 index 0000000000..57ad597e0b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/EXTRA_PREREQS @@ -0,0 +1,151 @@ +# -*-perl-*- + +$description = "Test the .EXTRA_PREREQS special variable."; +$details = ""; + +# Simple global .EXTRA_PREREQS and automatic variable settings +run_make_test(' +.EXTRA_PREREQS = tick tack +.PHONY: all +all: ; @echo ${.EXTRA_PREREQS}/$@/$ $@ +!, + "", "x.mk\nMAKEFLAGS = -Itst/bad\nGNUMAKEFLAGS =\nrecurse\nMAKEFLAGS = -Itst/bad\nGNUMAKEFLAGS =\n#MAKE#[1]: Entering directory '#PWD#'\nall\nMAKEFLAGS = -Itst/bad\nGNUMAKEFLAGS =\n#MAKE#[1]: Leaving directory '#PWD#'\n"); + +unlink('x.mk'); + +# Ensure that we don't add GNUMAKEFLAGS to the environment if it's not there +run_make_test(q! +all: ; @env | grep GNUMAKEFLAGS; true +!, + '', ''); + +$ENV{GNUMAKEFLAGS} = '-Itst/bad'; +run_make_test(q! +all: ; @env | grep GNUMAKEFLAGS; true +!, + '', 'GNUMAKEFLAGS='); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/INCLUDE_DIRS b/local/recipes/dev/gnu-make/source/tests/scripts/variables/INCLUDE_DIRS new file mode 100644 index 0000000000..6881292486 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/INCLUDE_DIRS @@ -0,0 +1,94 @@ +# -*-perl-*- +$description = "Test the .INCLUDE_DIRS special variable."; + +$details = ""; + +use Cwd; + +$dir = cwd; +$dir =~ s,.*/([^/]+)$,../$1,; + +if (-d '/usr/include') { + # Test #1: The content of .INCLUDE_DIRS depends on the platform for which + # make was built. What we know for sure is that it shouldn't be + # empty. + # + run_make_test(' +ifeq ($(.INCLUDE_DIRS),) +$(warning .INCLUDE_DIRS is empty) +endif + +.PHONY: all +all:;@: +', + '', ''); +} + +# Test #2: Make sure -I paths end up in .INCLUDE_DIRS. +# +run_make_test(' +ifeq ($(dir),) +$(warning dir is empty) +endif + +ifeq ($(filter $(dir),$(.INCLUDE_DIRS)),) +$(warning .INCLUDE_DIRS does not contain $(dir): $(.INCLUDE_DIRS)) +endif + +.PHONY: all +all:;@: +', + "-I$dir dir=$dir", ''); + +# Find the default .INCLUDE_DIRS +create_file('defaultdirs.mk', "\$(info \$(.INCLUDE_DIRS))\nall:;\@:\n"); +my $cmd = subst_make_string("#MAKEPATH# -f defaultdirs.mk"); +my @dirs = `$cmd`; +my $dirs = $dirs[0]; +chomp $dirs; +unlink('defaultdirs.mk'); + +run_make_test(" +ifneq (\$(.INCLUDE_DIRS),$dirs) +\$(warning Mismatched \$(.INCLUDE_DIRS) != $dirs) +endif +all:;\@: +", + '', ''); + +# Verify that -I- disables content from .INCLUDE_DIRS + +run_make_test(q/ +ifneq ($(.INCLUDE_DIRS),) +$(warning Mismatched $(.INCLUDE_DIRS) != ) +endif +all:;@: +/, + '-I-', ''); + +# Prefix -I dirs to the front +mkdir('somedir', 0777); + +my $xdirs = $dirs ? " $dirs" : ''; +run_make_test(" +ifneq (\$(.INCLUDE_DIRS),somedir$xdirs) +\$(warning Mismatched '\$(.INCLUDE_DIRS)' != 'somedir$xdirs') +endif +all:;\@: +", + '-I somedir', ''); + +# Verify .INCLUDE_DIRS contains files after -I- + +run_make_test(q/ +ifneq ($(.INCLUDE_DIRS),somedir) +$(warning Mismatched $(.INCLUDE_DIRS) != somedir) +endif +all:;@: +/, + '-I - -I somedir', ''); + +rmdir('somedir'); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/LIBPATTERNS b/local/recipes/dev/gnu-make/source/tests/scripts/variables/LIBPATTERNS new file mode 100644 index 0000000000..918295443d --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/LIBPATTERNS @@ -0,0 +1,38 @@ +# -*-perl-*- + +$description = "Test .LIBPATTERNS special variable."; + +$details = ""; + +# TEST 0: basics + +touch('mtest_foo.a'); + +run_make_test(' +.LIBPATTERNS = mtest_%.a +all: -lfoo ; @echo "build $@ from $<" +', + '', "build all from mtest_foo.a\n"); + +# TEST 1: Handle elements that are not patterns. + +run_make_test(' +.LIBPATTERNS = mtest_foo.a mtest_%.a +all: -lfoo ; @echo "build $@ from $<" +', + '', "#MAKE#: .LIBPATTERNS element 'mtest_foo.a' is not a pattern +build all from mtest_foo.a\n"); + +# TEST 2: target-specific override + +# Uncomment this when we add support, see Savannah bug #25703 +# run_make_test(' +# .LIBPATTERNS = mbad_%.a +# all: .LIBPATTERNS += mtest_%.a +# all: -lfoo ; @echo "build $@ from $<" +# ', +# '', "build all from mtest_foo.a\n"); + +unlink('mtest_foo.a'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKE b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKE new file mode 100644 index 0000000000..dc621606ed --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKE @@ -0,0 +1,24 @@ +# -*-perl-*- + +$description = "Test proper behavior of the MAKE variable"; + +$details = "DETAILS"; + +run_make_test(q! +TMP := $(MAKE) +MAKE := $(subst X=$(X),,$(MAKE)) +all: + @echo $(TMP) + $(MAKE) -f #MAKEFILE# foo + +foo: + @echo $(MAKE) +!, + '', + "#MAKEPATH#\n#MAKEPATH# -f #MAKEFILE# foo\n" + . "#MAKE#[1]: Entering directory '#PWD#'\n" + . "#MAKEPATH#\n#MAKE#[1]: Leaving directory '#PWD#'\n"); + +rmfiles("foo"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKECMDGOALS b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKECMDGOALS new file mode 100644 index 0000000000..879283b056 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKECMDGOALS @@ -0,0 +1,52 @@ +# -*-perl-*- + +$description = "Test the MAKECMDGOALS variable."; + +$details = "\ +We construct a makefile with various targets, all of which print out +\$(MAKECMDGOALS), then call it different ways."; + +open(MAKEFILE,"> $makefile"); +print MAKEFILE "\ +.DEFAULT all: + \@echo \$(MAKECMDGOALS) +"; +close(MAKEFILE); + +# TEST #1 + +&run_make_with_options($makefile, + "", + &get_logfile, + 0); +$answer = "\n"; +&compare_output($answer,&get_logfile(1)); + +# TEST #2 + +&run_make_with_options($makefile, + "all", + &get_logfile, + 0); +$answer = "all\n"; +&compare_output($answer,&get_logfile(1)); + + +# TEST #3 + +&run_make_with_options($makefile, + "foo bar baz yaz", + &get_logfile, + 0); +$answer = "foo bar baz yaz\nfoo bar baz yaz\nfoo bar baz yaz\nfoo bar baz yaz\n"; +&compare_output($answer,&get_logfile(1)); + + +# This tells the test driver that the perl test script executed properly. +1; + + + + + + diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKEFILES b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKEFILES new file mode 100644 index 0000000000..564d996025 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKEFILES @@ -0,0 +1,47 @@ +# -*-perl-*- + +$description = "Test the MAKEFILES variable."; + +$makefile2 = &get_tmpfile; +$makefile3 = &get_tmpfile; + +open(MAKEFILE,"> $makefile2"); +print MAKEFILE < $makefile3"); +print MAKEFILE < +all: +> @echo '$@: MAKEFLAGS=$(MAKEFLAGS)' +> @MSG=Works $(MAKE) -e -f #MAKEFILE# jump +jump: +> @echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)' +> @$(MAKE) -f #MAKEFILE# print +print: +> @echo '$@ $(MSG): MAKEFLAGS=$(MAKEFLAGS)' +.PHONY: all jump print +!, + '--no-print-directory', + 'all: MAKEFLAGS= --no-print-directory +jump Works: MAKEFLAGS=e --no-print-directory +print Works: MAKEFLAGS=e --no-print-directory'); + +# Ensure MAKEFLAGS updates are handled immediately rather than later + +mkdir('foo', 0777); +mkdir('bar', 0777); + +run_make_test(q! +$(info MAKEFLAGS=$(MAKEFLAGS)) +$(info INCLUDE_DIRS=$(.INCLUDE_DIRS)) +MAKEFLAGS += -Ibar +$(info MAKEFLAGS=$(MAKEFLAGS)) +$(info INCLUDE_DIRS=$(.INCLUDE_DIRS)) +.PHONY: all +all: ; @echo 'MAKEFLAGS=$(MAKEFLAGS)' "\$$MAKEFLAGS=$$MAKEFLAGS" +!, + '-I- -Ifoo', 'MAKEFLAGS= -I- -Ifoo +INCLUDE_DIRS=foo +MAKEFLAGS= -I- -Ifoo -Ibar +INCLUDE_DIRS=foo bar +MAKEFLAGS= -I- -Ifoo -Ibar $MAKEFLAGS= -I- -Ifoo -Ibar'); + +rmdir('foo'); +rmdir('bar'); + +# Test that command line switches are all present in MAKEFLAGS. +# sv 62514. +my @opts; + +# Simple flags. +@opts = ('i', 'k', 'n', 'q', 'r', 's', 'w', 'd'); +exists $FEATURES{'check-symlink'} and push @opts, 'L'; + +for my $opt (@opts) { + run_make_test(q! +MAKEFLAGS:=B +all:; $(info makeflags='$(MAKEFLAGS)') +!, "-$opt", "/makeflags='B$opt'/"); +} + +# Switches which carry arguments. +@opts = (' -I/tmp', ' -Onone', ' --debug=b', ' -l2.5'); +for my $opt (@opts) { + run_make_test(q! +MAKEFLAGS:=B +all:; $(info makeflags='$(MAKEFLAGS)') +!, "$opt", "/makeflags='B$opt'/"); +} + +# Long options which take no arguments. +# sv 62514. +@opts = (' --no-print-directory', ' --warn-undefined-variables', ' --trace'); +for my $opt (@opts) { +run_make_test(q! +MAKEFLAGS:=B +all:; $(info makeflags='$(MAKEFLAGS)') +!, "$opt", "/makeflags='B$opt'/"); +} + +# Test that make filters out duplicates. +# Each option is specified in the makefile, env and on the command line. +@opts = (' -I/tmp', ' -Onone', ' --debug=b', ' -l2.5'); +$ENV{'MAKEFLAGS'} = $opt; +for my $opt (@opts) { + run_make_test(" +MAKEFLAGS:=B $opt +all:; \$(info makeflags='\$(MAKEFLAGS)') +", "$opt", "/makeflags='B$opt'/"); +} + +# Test that make filters out duplicates. +# Each option is specified in the makefile, env and on the command line. +# decode_switches reallocates when the number of parameters in sl->list exceeds 5. +# This test exercises the realloc branch. +$ENV{'MAKEFLAGS'} = '-I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6 -I2 -I2'; +run_make_test(q! +MAKEFLAGS:=B -I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6 -I2 -I2 +all:; $(info makeflags='$(MAKEFLAGS)') +!, +'-I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6', +"/makeflags='B -I1 -I2 -I3 -I4 -I5 -I6 -l2.5 -Onone --debug=b'/"); + +# A mix of multiple flags from env, the makefile and command line. +# Skip -L since it's not available everywhere +$ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables --trace'; +run_make_test(q! +MAKEFLAGS:=iknqrswd -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 +all:; $(info makeflags='$(MAKEFLAGS)') +!, +'-Onone -l2.5 -l2.5 -Onone -I/tmp -iknqrswd -i -n -s -k -I/tmp', +"/makeflags='Bdiknqrsw -I/tmp -l2.5 -Onone --trace --warn-undefined-variables'/"); + +# Verify MAKEFLAGS are all available to shell functions +$ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables'; +run_make_test(q! +MAKEFLAGS := iknqrsw -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 --no-print-directory +XX := $(shell echo "$$MAKEFLAGS") +all:; $(info makeflags='$(XX)') +!, + '-Onone -l2.5 -l2.5 -Onone -I/tmp -iknqrs -i -n -s -k -I/tmp', + "makeflags='iknqrsw -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 --no-print-directory'"); + +# Verify that command line arguments are included in MAKEFLAGS +run_make_test(q! +all: ; @echo $(MAKEFLAGS) +!, + '-e FOO=bar -r -R', 'erR -- FOO=bar'); + +# Long arguments mean everything is prefixed with "-" +run_make_test(q! +all: ; @echo /$(MAKEFLAGS)/ +!, + '--no-print-directory -e -r -R --trace FOO=bar', + "#MAKEFILE#:2: update target 'all' due to: target does not exist +echo /erR --trace --no-print-directory -- FOO=bar/ +/erR --trace --no-print-directory -- FOO=bar/"); + + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKELEVEL b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKELEVEL new file mode 100644 index 0000000000..96a4e74071 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MAKELEVEL @@ -0,0 +1,33 @@ +# -*-perl-*- + +$description = "The following test creates a makefile to test +makelevels in Make. It prints \$(MAKELEVEL) and then +prints the environment variable MAKELEVEL"; + +open(MAKEFILE,"> $makefile"); + +# The Contents of the MAKEFILE ... + +print MAKEFILE < $@ +bar.x: ; @touch $@ +', + '', 'MAKE_RESTARTS= +MAKE_RESTARTS=1 +MAKE_RESTARTS=2'); + +rmfiles('foo.x', 'bar.x'); + +# Test multiple restarts and make sure the variable is cleaned up + +run_make_test(' +.RECIPEPREFIX = > +recurse: +> @echo recurse MAKE_RESTARTS=$$MAKE_RESTARTS +> @$(MAKE) -f #MAKEFILE# all +all: ; @echo all MAKE_RESTARTS=$$MAKE_RESTARTS +$(info MAKE_RESTARTS=$(MAKE_RESTARTS)) +include foo.x +foo.x: ; @echo "include bar.x" > $@ +bar.x: ; @touch $@ +', + '', "MAKE_RESTARTS= +MAKE_RESTARTS=1 +MAKE_RESTARTS=2 +recurse MAKE_RESTARTS= +#MAKE#[1]: Entering directory '#PWD#' +MAKE_RESTARTS= +all MAKE_RESTARTS= +#MAKE#[1]: Leaving directory '#PWD#'"); + +rmfiles('foo.x', 'bar.x'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/MFILE_LIST b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MFILE_LIST new file mode 100644 index 0000000000..b75eea7e8f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/MFILE_LIST @@ -0,0 +1,40 @@ +# -*-perl-*- + +$description = "Test the MAKEFILE_LIST variable."; + +create_file('incl2', "m2 := \$(MAKEFILE_LIST)\n"); + +run_make_test(qq! +m1 := \$(MAKEFILE_LIST) +include incl2 +m3 := \$(MAKEFILE_LIST) + +all: +\t\@echo \$(m1) +\t\@echo \$(m2) +\t\@echo \$(m3) +!, + '', "#MAKEFILE#\n#MAKEFILE# incl2\n#MAKEFILE# incl2\n"); + +unlink('incl2'); + +# SV 50823 -- makefiles containing '$' chars + +create_file('foo$bar', "m2 := \$(MAKEFILE_LIST)\n"); + +run_make_test(qq! +m1 := \$(MAKEFILE_LIST) +include foo\$\$bar +m3 := \$(MAKEFILE_LIST) + +all: +\t\@echo '\$(m1)' +\t\@echo '\$(m2)' +\t\@echo '\$(m3)' +\t\@echo '\$(value MAKEFILE_LIST)' +!, + '', "#MAKEFILE#\n#MAKEFILE# foo\$bar\n#MAKEFILE# foo\$bar\n#MAKEFILE# foo\$bar\n"); + +unlink('foo$bar'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/SHELL b/local/recipes/dev/gnu-make/source/tests/scripts/variables/SHELL new file mode 100644 index 0000000000..78d887c592 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/SHELL @@ -0,0 +1,110 @@ +# -*-perl-*- + +$description = "Test proper handling of SHELL."; + +# If we don't have a POSIX shell available, never mind +$is_posix_sh or return -1; + +# On Windows, shell names might not match +if ($port_type eq 'W32') { + return -1; +} + +$mshell = $sh_name; + +# According to POSIX, the value of SHELL in the environment has no impact on +# the value in the makefile. + +$ENV{SHELL} = '/dev/null'; +run_make_test('all:;@echo "$(SHELL)"', '', $mshell); + +# According to POSIX, any value of SHELL set in the makefile should not be +# exported to the subshell. A more portable option might be to set SHELL to +# be $^X (perl) in the makefile, and set .SHELLFLAGS to -e. + +$ENV{SHELL} = $mshell; + +my $altshell = "/./$mshell"; +my $altshell2 = "/././$mshell"; + +if ($mshell =~ m,^([a-zA-Z]:)([\\/])(.*),) { + $altshell = "$1$2.$2$3"; + $altshell2 = "$1$2.$2.$2$3"; +} + +run_make_test("SHELL := $altshell\n".' +all:;@echo "$(SHELL) $$SHELL" +', '', "$altshell $mshell"); + +# As a GNU make extension, if make's SHELL variable is explicitly exported, +# then we really _DO_ export it. + +$ENV{SHELL} = $mshell; + +run_make_test("export SHELL := $altshell\n".' +all:;@echo "$(SHELL) $$SHELL" +', '', "$altshell $altshell"); + + +# Test out setting of SHELL, both exported and not, as a target-specific +# variable. + +$ENV{SHELL} = $mshell; + +run_make_test("all: SHELL := $altshell\n".' +all:;@echo "$(SHELL) $$SHELL" +', '', "$altshell $mshell"); + +$ENV{SHELL} = $mshell; + +run_make_test(" +SHELL := $altshell2 +one: two +two: export SHELL := $altshell\n".' +one two:;@echo "$@: $(SHELL) $$SHELL" +', '', "two: $altshell $altshell\none: $altshell2 $mshell\n"); + +# Test .SHELLFLAGS + +# We don't know the output here: on Solaris for example, every line printed +# by the shell in -x mode has a trailing space (!!) +my $script = 'true; true'; +my $flags = '-xc'; +my $out = `$sh_name $flags '$script' 2>&1`; + +run_make_test(qq! +.SHELLFLAGS = $flags +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 = `$sh_name -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'; +$flags = '-xec'; +$out = `$sh_name $flags '$script' 2>&1`; +my $err = $? >> 8; + +run_make_test(qq! +.SHELLFLAGS = $flags +all: ; \@$script +!, + '', "$out#MAKE#: *** [#MAKEFILE#:3: all] Error $err\n", 512); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/automatic b/local/recipes/dev/gnu-make/source/tests/scripts/variables/automatic new file mode 100644 index 0000000000..771bbda8f7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/automatic @@ -0,0 +1,146 @@ +# -*-perl-*- + +$description = "Test automatic variable setting."; + +$details = ""; + +use Cwd; + +$dir = cwd; +$dir =~ s,.*/([^/]+)$,../$1,; + +open(MAKEFILE, "> $makefile"); +print MAKEFILE "dir = $dir\n"; +print MAKEFILE <<'EOF'; +.SUFFIXES: +.SUFFIXES: .x .y .z +$(dir)/foo.x : baz.z $(dir)/bar.y baz.z + @echo '$$@ = $@, $$(@D) = $(@D), $$(@F) = $(@F)' + @echo '$$* = $*, $$(*D) = $(*D), $$(*F) = $(*F)' + @echo '$$< = $<, $$( $makefile2"); +print MAKEFILE "dir = $dir\n"; +print MAKEFILE <<'EOF'; +.SECONDEXPANSION: +.SUFFIXES: +.DEFAULT: ; @echo '$@' + +$(dir)/foo $(dir)/bar: $@.x $$@.x $$$@.x $$$$@.x $$(@D).x $$(@F).x + +$(dir)/x.z $(dir)/y.z: $(dir)/%.z : $@.% $$@.% $$$@.% $$$$@.% $$(@D).% $$(@F).% + +$(dir)/biz: $$(@).x $${@}.x $${@D}.x $${@F}.x +EOF + +close(MAKEFILE); + +&run_make_with_options($makefile2, "$dir/foo $dir/bar", &get_logfile); +$answer = ".x\n$dir/foo.x\nx\n\$@.x\n$dir.x\nfoo.x\n$dir/bar.x\nbar.x\n"; +&compare_output($answer, &get_logfile(1)); + +&run_make_with_options($makefile2, "$dir/x.z $dir/y.z", &get_logfile); +$answer = ".x\n$dir/x.z.x\nx\n\$@.x\n$dir.x\nx.z.x\n.y\n$dir/y.z.y\ny\n\$@.y\n$dir.y\ny.z.y\n"; +&compare_output($answer, &get_logfile(1)); + +&run_make_with_options($makefile2, "$dir/biz", &get_logfile); +$answer = "$dir/biz.x\n$dir.x\nbiz.x\n"; +&compare_output($answer, &get_logfile(1)); + +# TEST #2 -- test for Savannah bug #12320. +# +run_make_test(' +.SUFFIXES: .b .src + +mbr.b: mbr.src + @echo $* + +mbr.src: ; @:', + '', + 'mbr'); + +# Same as above with second expansion. +# +run_make_test(' +.SECONDEXPANSION: +.SUFFIXES: .b .src + +p:=mbr.src +mbr.b: $$p + @echo $* + +mbr.src: ; @:', + '', + 'mbr'); + +# Test that $* is set to empty string for unknown suffixes. + +run_make_test(' +mbr.b: mbr.src + @echo star=$* + +mbr.src: ; @:', + '', + "star=\n"); + +# TEST #3 -- test for Savannah bug #8154 +# Make sure that nonexistent prerequisites are listed in $?, since they are +# considered reasons for the target to be rebuilt. +# +# See also Savannah bugs #16002 and #16051. + +touch('foo'); + +run_make_test(' +foo: bar ; @echo "\$$? = $?" +bar: ;', + '', + '$? = bar'); + +unlink('foo'); + +# TEST #4: ensure prereq ordering is correct when the command target has none +# See Savannah bug #21198 + +run_make_test(' +all : A B +all : ; @echo $@ -- $^ -- $< +all : C D +all : E F +A B C D E F G H : ; @: +', + '', "all -- A B C D E F -- A\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/define b/local/recipes/dev/gnu-make/source/tests/scripts/variables/define new file mode 100644 index 0000000000..eecbd8f3e4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/define @@ -0,0 +1,305 @@ +# -*-perl-*- + +$description = "Test define/endef variable assignments."; + +$details = ""; + +# TEST 0: old-style basic define/endef + +run_make_test(' +define multi +@echo hi +echo there +endef + +all: ; $(multi) +', + '', "hi\necho there\nthere\n"); + +# TEST 1: Various new-style define/endef + +run_make_test(' +FOO = foo + +define multi = +echo hi +@echo $(FOO) +endef # this is the end + +define simple := +@echo $(FOO) +endef + +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\nfoo\na\nb\nfirst\n"); + +# TEST 1a: Various new-style define/endef, with no spaces + +run_make_test(q! +FOO = foo + +define multi= +echo hi +@echo $(FOO) +endef # this is the end + +define simple:= +@echo $(FOO) +endef + +define posix::= +@echo $(FOO) +endef + +define posixbsd:::= +@echo '$(FOO)$$bar' +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) + $(posixbsd) + $(append) + $(cond) +!, + '', "echo hi\nhi\nthere\nfoo\nfoo\nfoo\$bar\na\nb\nfirst\n"); + +# TEST 2: define in true section of conditional (containing conditional) + +run_make_test(' +FOO = foo +NAME = def +def = +ifdef BOGUS + define $(subst e,e,$(NAME)) = + ifeq (1,1) + FOO = bar + endif + endef +endif + +$(eval $(def)) +all: ; @echo $(FOO) +', + 'BOGUS=1', "bar\n"); + +# TEST 3: define in false section of conditional (containing conditional) + +run_make_test(undef, '', "foo\n"); + +# TEST 4: nested define (supported?) + +run_make_test(' +define outer + define inner + A = B + endef +endef + +$(eval $(outer)) + +outer: ; @echo $(inner) +', + '', "A = B\n"); + +# TEST 5: NEGATIVE: Missing variable name + +run_make_test(' +NAME = +define $(NAME) = +ouch +endef +all: ; @echo ouch +', + '', "#MAKEFILE#:3: *** empty variable name. Stop.\n", 512); + +# TEST 6: NEGATIVE: extra text after define + +run_make_test(' +NAME = +define NAME = $(NAME) +ouch +endef +all: ; @echo ok +', + '', "#MAKEFILE#:3: extraneous text after 'define' directive\nok\n"); + +# TEST 7: NEGATIVE: extra text after endef + +run_make_test(' +NAME = +define NAME = +ouch +endef $(NAME) +all: ; @echo ok +', + '', "#MAKEFILE#:5: extraneous text after 'endef' directive\nok\n"); + +# TEST 8: NEGATIVE: missing endef + +run_make_test(' +NAME = +all: ; @echo ok +define NAME = +ouch +endef$(NAME) +', + '', "#MAKEFILE#:4: *** missing 'endef', unterminated 'define'. Stop.\n", 512); + +# ------------------------- +# Make sure that prefix characters apply properly to define/endef values. +# +# There's a bit of oddness here if you try to use a variable to hold the +# prefix character for a define. Even though something like this: +# +# define foo +# echo bar +# endef +# +# all: ; $(V)$(foo) +# +# (where V=@) can be seen by the user to be obviously different than this: +# +# define foo +# $(V)echo bar +# endef +# +# all: ; $(foo) +# +# and the user thinks it should behave the same as when the "@" is literal +# instead of in a variable, that can't happen because by the time make +# expands the variables for the command line and sees it begins with a "@" it +# can't know anymore whether the prefix character came before the variable +# reference or was included in the first line of the variable reference. + +# TEST #5 +# ------- + +run_make_test(' +define FOO +$(V1)echo hello +$(V2)echo world +endef +all: ; @$(FOO) +', '', 'hello +world'); + +# TEST #6 +# ------- + +run_make_test(undef, 'V1=@ V2=@', 'hello +world'); + +# TEST #7 +# ------- + +run_make_test(' +define FOO +$(V1)echo hello +$(V2)echo world +endef +all: ; $(FOO) +', 'V1=@', 'hello +echo world +world'); + +# TEST #8 +# ------- + +run_make_test(undef, 'V2=@', 'echo hello +hello +world'); + +# TEST #9 +# ------- + +run_make_test(undef, 'V1=@ V2=@', 'hello +world'); + +# TEST #10 +# ------- +# Test the basics; a "@" internally to the variable applies to only one line. +# A "@" before the variable applies to the entire variable. + +run_make_test(' +define FOO +@echo hello +echo world +endef +define BAR +echo hello +echo world +endef + +all: foo bar +foo: ; $(FOO) +bar: ; @$(BAR) +', '', 'hello +echo world +world +hello +world +'); + +# Ensure that define can be a target when not appearing in a variable +# definition context. See SV 59870 + +run_make_test(q! +define = define + +$(define) : ;@echo $@ + +%:define + +all: define foo + +%.x : define + +foo:; +!, + '', "define\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/flavors b/local/recipes/dev/gnu-make/source/tests/scripts/variables/flavors new file mode 100644 index 0000000000..627672f82b --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/flavors @@ -0,0 +1,200 @@ +# -*-perl-*- + +$description = "Test various flavors of make variable setting."; + +$details = ""; + +# TEST 0: Recursive + +run_make_test(' +ugh = Goodbye +foo = $(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +', + '', "Hello\n"); + +# TEST 1: Simple + +run_make_test(' +bar = Goodbye +foo := $(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +', + '', "Goodbye\n"); + +# TEST 2: Append to recursive + +run_make_test(' +foo = Hello +ugh = Goodbye +foo += $(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +', + '', "Hello Hello\n"); + +# TEST 3: Append to simple + +run_make_test(' +foo := Hello +ugh = Goodbye +bar = ${ugh} +foo += $(bar) +ugh = Hello +all: ; @echo $(foo) +', + '', "Hello Goodbye\n"); + +# TEST 4: Conditional pre-set + +run_make_test(' +foo = Hello +ugh = Goodbye +bar = ${ugh} +foo ?= $(bar) +ugh = Hello +all: ; @echo $(foo) +', + '', "Hello\n"); + +# TEST 5: Conditional unset + +run_make_test(' +ugh = Goodbye +bar = ${ugh} +foo ?= $(bar) +ugh = Hello +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"); + +# TEST 8: Append to empty +run_make_test(q! +recur = +recur += foo +simple := +simple += bar +recur_empty = foo +recur_empty += +simple_empty := bar +simple_empty += +empty_recur = +empty_recur += +empty_simple := +empty_simple += + +all: ; @: $(info recur=/$(recur)/ simple=/$(simple)/ recure=/$(recur_empty)/ simplee=/$(simple_empty)/ erecur=/$(empty_recur)/ esimple=/$(empty_simple)/) +!, + '', "recur=/foo/ simple=/bar/ recure=/foo/ simplee=/bar/ erecur=// esimple=//\n"); + +# TEST 9: Line continuation +run_make_test(q! +recur = $\ + one$\ + two$\ + three +simple := $\ + four$\ + five$\ + six + +all: d$\ + e$\ + p; @: + +.PHONY: dep +dep: ; @: $(info recur=/$(recur)/ simple=/$(simple)/) +!, + '', "recur=/onetwothree/ simple=/fourfivesix/\n"); + +# TEST 9: Line continuation +run_make_test(q! +.POSIX: +recur = $\ + one$\ + two$\ + three +simple := $\ + four$\ + five$\ + six + +all: d$\ + e$\ + p; @: + +.PHONY: dep +dep: ; @: $(info recur=/$(recur)/ simple=/$(simple)/) +!, + '', "recur=/onetwothree/ simple=/fourfivesix/\n"); + +# Test POSIX :::= +# This creates a recursive variable, but it expands the RHS first. Any +# variable escapes ('$$') are preserved so that this recursive variable can be +# expanded again without changing its contents. +run_make_test(' +bar = Goodbye +foo :::= $(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +', + '', "Goodbye"); + +# POSIX :::= no spaces +run_make_test(q! +bar = Goodbye +foo:::=$(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo $(foo) +!, + '', "Goodbye"); + +# Variable escapes ('$$') are preserved. +run_make_test(q! +bar = Good$$bye +foo :::= $(bar) $$what +bar = ${ugh} +ugh = Hello +all: ; @echo '$(foo)' +!, + '', 'Good$bye $what'); + +# Append works as expected +run_make_test(q! +bar = Good$$bye +foo :::= $(bar) +foo += $$what $(bar) +bar = ${ugh} +ugh = Hello +all: ; @echo '$(foo)' +!, + '', 'Good$bye $what Hello'); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/negative b/local/recipes/dev/gnu-make/source/tests/scripts/variables/negative new file mode 100644 index 0000000000..5cb600a827 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/negative @@ -0,0 +1,60 @@ +# -*-perl-*- + +$description = "Run some negative tests (things that should fail)."; + +# TEST #0 +# Check that non-terminated variable references are detected (and +# reported using the best filename/lineno info +run_make_test(' +foo = bar +x = $(foo +y = $x + +all: ; @echo $y +', + '', '#MAKEFILE#:3: *** unterminated variable reference. Stop.', + 512); + +# TEST #1 +# Bogus variable value passed on the command line. +run_make_test(undef, + ['x=$(other'], + '#MAKEFILE#:4: *** unterminated variable reference. Stop.', + 512); + +# TEST #2 +# Again, but this time while reading the makefile. +run_make_test(' +foo = bar +x = $(foo +y = $x + +z := $y + +all: ; @echo $y +', + '', '#MAKEFILE#:3: *** unterminated variable reference. Stop.', + 512); + +# TEST #3 +# Bogus variable value passed on the command line. +run_make_test(undef, + ['x=$(other'], + '#MAKEFILE#:4: *** unterminated variable reference. Stop.', + 512); + +# Whitespace not allowed in variable names +run_make_test('x y =', '', + '#MAKEFILE#:1: *** missing separator. Stop.', 512); + +run_make_test('x y=', '', + '#MAKEFILE#:1: *** missing separator. Stop.', 512); + +# In theory an empty variable should be ignored, but during parsing it's a +# real token and so this fails. I'm not 100% sure if this is right or not. + +run_make_test('x $X=', '', + '#MAKEFILE#:1: *** missing separator. Stop.', 512); + + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/private b/local/recipes/dev/gnu-make/source/tests/scripts/variables/private new file mode 100644 index 0000000000..8967ffb55f --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/private @@ -0,0 +1,122 @@ +# -*-perl-*- + +$description = "Test 'private' variables."; + +$details = ""; + +# 1: Simple verification that private variables are not inherited +&run_make_test(' +a: +F = g +a: F = a +b: private F = b + +a b c: ; @echo $@: F=$(F) +a: b +b: c +', + '', "c: F=a\nb: F=b\na: F=a\n"); + +# 2: Again, but this time we start with "b" so "a"'s variable is not in scope +&run_make_test(undef, 'b', "c: F=g\nb: F=b\n"); + +# 3: Verification with pattern-specific variables +&run_make_test(' +t.a: + +F1 = g +F2 = g +%.a: private F1 = a +%.a: F2 = a + +t.a t.b: ; @echo $@: F1=$(F1) / F2=$(F2) +t.a: t.b +', + '', "t.b: F1=g / F2=a\nt.a: F1=a / F2=a\n"); + +# 4: Test private global variables +&run_make_test(' +a: +private F = g +G := $(F) +a: +b: F = b + +a b: ; @echo $@: F=$(F) / G=$(G) +a: b +', + '', "b: F=b / G=g\na: F= / G=g\n"); + +# 5: Multiple conditions on the same variable. Test export. +delete $ENV{'_X'}; +&run_make_test(' +_X = x +a: export override private _X = a +a: ; @echo _X=$(_X) / _X=$$_X +', + '', "_X=a / _X=a"); + +# 6: Test override. +&run_make_test(undef, '_X=c', "_X=a / _X=a\n"); + +# 7: Ensure keywords still work as targets +&run_make_test(' +a: export override private foo bar +foo bar export override private: ; @echo $@ +', + '', "export\noverride\nprivate\nfoo\nbar\n"); + +# 8: Ensure keywords still work as variables +&run_make_test(' +private = g +a: private = a +a: b +a b: ; @echo $@=$(private) +', + '', "b=a\na=a\n"); + +# 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/local/recipes/dev/gnu-make/source/tests/scripts/variables/special b/local/recipes/dev/gnu-make/source/tests/scripts/variables/special new file mode 100644 index 0000000000..68f3128cf7 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/special @@ -0,0 +1,149 @@ +# -*-perl-*- + +$description = "Test special GNU make variables."; + +$details = ""; + +&run_make_test(' + +X1 := $(sort $(filter FOO BAR,$(.VARIABLES))) + +FOO := foo + +X2 := $(sort $(filter FOO BAR,$(.VARIABLES))) + +BAR := bar + +all: ; @echo X1 = $(X1); echo X2 = $(X2); echo LAST = $(sort $(filter FOO BAR,$(.VARIABLES))) +', + '', "X1 =\nX2 = FOO\nLAST = BAR FOO\n"); + +# SV 45728: Test that undefining a variable is reflected properly + +&run_make_test(' +FOO := foo +BAR := bar +$(info one: $(sort $(filter FOO BAR BAZ,$(.VARIABLES)))) +undefine BAR +BAZ := baz +$(info two: $(sort $(filter FOO BAR BAZ,$(.VARIABLES)))) +all:;@: +', + '', "one: BAR FOO\ntwo: BAZ FOO\n"); + +# $makefile2 = &get_tmpfile; +# open(MAKEFILE, "> $makefile2"); + +# print MAKEFILE <<'EOF'; + +# X1 := $(sort $(.TARGETS)) + +# all: foo +# @echo X1 = $(X1) +# @echo X2 = $(X2) +# @echo LAST = $(sort $(.TARGETS)) + +# X2 := $(sort $(.TARGETS)) + +# foo: + +# EOF + +# close(MAKEFILE); + +# # TEST #2 +# # ------- + +# &run_make_with_options($makefile2, "", &get_logfile); +# $answer = "X1 =\nX2 = all\nLAST = all foo\n"; +# &compare_output($answer, &get_logfile(1)); + +# Test the .RECIPEPREFIX variable +&run_make_test(' +define foo +: foo-one\ +foo-two +: foo-three + : foo-four +endef + +orig: ; : orig-one + : orig-two \ +orig-three \ + orig-four \ + orig-five \\\\ + : orig-six + $(foo) + +.RECIPEPREFIX = > +test: ; : test-one +>: test-two \ +test-three \ +>test-four \ +> test-five \\\\ +>: test-six +>$(foo) + +.RECIPEPREFIX = +reset: ; : reset-one + : reset-two \ +reset-three \ + reset-four \ + reset-five \\\\ + : reset-six + $(foo) +', + 'orig test reset', + ': orig-one +: orig-two \ +orig-three \ +orig-four \ + orig-five \\\\ +: orig-six +: foo-one foo-two +: foo-three +: foo-four +: test-one +: test-two \ +test-three \ +test-four \ + test-five \\\\ +: test-six +: foo-one foo-two +: foo-three +: foo-four +: reset-one +: reset-two \ +reset-three \ +reset-four \ + reset-five \\\\ +: reset-six +: foo-one foo-two +: foo-three +: foo-four'); + +# Test that the "did you mean TAB" message is printed properly + +run_make_test(q! +$x. +!, + '', '#MAKEFILE#:2: *** missing separator. Stop.', 512); + +run_make_test(q! +foo: + bar +!, + '', '#MAKEFILE#:3: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.', 512); + +run_make_test(q! +.RECIPEPREFIX = : +foo: + bar +!, + '', '#MAKEFILE#:4: *** missing separator. Stop.', 512); + +1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/variables/undefine b/local/recipes/dev/gnu-make/source/tests/scripts/variables/undefine new file mode 100644 index 0000000000..1732351bda --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/variables/undefine @@ -0,0 +1,91 @@ +# -*-perl-*- + +$description = "Test variable undefine."; + +$details = ""; + +# TEST 0: basic undefine functionality + +run_make_test(' +a = a +b := b +define c +c +endef + +$(info $(flavor a) $(flavor b) $(flavor c)) + +n := b + +undefine a +undefine $n +undefine c + +$(info $(flavor a) $(flavor b) $(flavor c)) + + +all: ;@: +', +'', "recursive simple recursive\nundefined undefined undefined"); + + +# TEST 1: override + +run_make_test(' +undefine a +override undefine b + +$(info $(flavor a) $(flavor b)) + + +all: ;@: +', +'a=a b=b', "recursive undefined"); + +1; + +# TEST 2: undefine in eval (make sure we undefine from the global var set) + +run_make_test(' +define undef +$(eval undefine $$1) +endef + +a := a +$(call undef,a) +$(info $(flavor a)) + + +all: ;@: +', +'', "undefined"); + + +# TEST 3: Missing variable name + +run_make_test(' +a = +undefine $a +all: ;@echo ouch +', +'', "#MAKEFILE#:3: *** empty variable name. Stop.\n", 512); + +# Ensure that define can be a target when not appearing in a variable +# definition context. See SV 59870 + +run_make_test(q! +undefine = undefine + +$(undefine) : ;@echo $@ + +%:undefine + +all: undefine foo + +%.x : undefine + +foo:; +!, + '', "undefine\n"); + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/scripts/vms/library b/local/recipes/dev/gnu-make/source/tests/scripts/vms/library new file mode 100644 index 0000000000..8375dfa628 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/scripts/vms/library @@ -0,0 +1,73 @@ +# -*-mode: perl-*- + +$description = "Test GNU make's VMS Library management features."; + +$details = "\ +This only works on VMS systems."; + +return -1 if $osname ne 'VMS'; + +# Help library +$mk_string = "help : help.hlb(file1.hlp)\n\n" . +"file1.hlp :\n" . +"\t\@pipe open/write xxx file1.hlp ; write xxx \"1 help\" ; close xxx\n"; + +my $answer = "library /replace help.hlb file1.hlp"; + +run_make_test($mk_string, + '', $answer); + +unlink('help.hlb'); +unlink('file1.hlp'); + +#Text library +$mk_string = "text : text.tlb(file1.txt)\n\n" . +"file1.txt :\n" . +"\t\@pipe open/write xxx file1.txt ; write xxx \"text file\" ; close xxx\n"; + +$answer = "library /replace text.tlb file1.txt"; + +run_make_test($mk_string, + '', $answer); + +unlink('text.tlb'); +unlink('file1.txt'); + + +#Macro library +$mk_string = "macro : macro.mlb(file1.mar)\n\n" . +"file1.mar :\n" . +"\tpipe open/write xxx file1.mar ; " . +"write xxx \".macro a b\" ; write xxx \".endm\" ; close xxx\n"; + +$answer = "library /replace macro.mlb file1.mar"; + +run_make_test($mk_string, + '', $answer); + +unlink('macro.mlb'); +unlink('file1.mar'); + +$mk_string = +"all:imagelib.olb(file2.exe)\n" . +"file2.exe : file2.obj file2.opt\n" . +"\t\@link /share=\$\@ \$\*,\$\*/opt\n\n" . +"file2.opt :\n" . +"\t\@pipe open/write xxx file2.opt ; " . +"write xxx \"CASE_SENSITIVE=YES\" ; close xxx\n" . +"file2.c :\n" . +"\t\@pipe open/write xxx file2.c ; write xxx \"file2(){}\" ; close xxx\n"; + +$answer = "library /replace imagelib.olb file2.exe"; + +run_make_test($mk_string, + '', $answer); + +unlink('imagelib.olb'); +unlink('file2.c'); +unlink('file2.obj'); +unlink('file2.exe'); +unlink('file2.opt'); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/local/recipes/dev/gnu-make/source/tests/test_driver.pl b/local/recipes/dev/gnu-make/source/tests/test_driver.pl new file mode 100644 index 0000000000..b64fffb64e --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/test_driver.pl @@ -0,0 +1,1546 @@ +#!/usr/bin/perl +# -*-perl-*- +# +# Modification history: +# Written 91-12-02 through 92-01-01 by Stephen McGee. +# Modified 92-02-11 through 92-02-22 by Chris Arthur to further generalize. +# +# Copyright (C) 1991-2022 Free Software 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 . + + +# Test driver routines used by a number of test suites, including +# those for SCS, make, roll_dir, and scan_deps (?). +# +# this routine controls the whole mess; each test suite sets up a few +# variables and then calls &toplevel, which does all the real work. + +# $Id$ + +use Config; +use Cwd; +use File::Spec; +use File::Temp; + +# The number of test categories we've run +$categories_run = 0; +# The number of test categroies that have passed +$categories_passed = 0; +# The total number of individual tests that have been run +$total_tests_run = 0; +# The total number of individual tests that have passed +$total_tests_passed = 0; +# The number of tests in this category that have been run +$tests_run = 0; +# The number of tests in this category that have passed +$tests_passed = 0; + +$port_type = undef; +$osname = undef; +$vos = undef; +$pathsep = undef; + +# Yeesh. This whole test environment is such a hack! +$test_passed = 1; + +# Timeout in seconds. If the test takes longer than this we'll fail it. +# This is to prevent hung tests. +$test_timeout = 60; + +$diff_name = undef; + +# Path to Perl +$perl_name = $^X; +if ($^O ne 'VMS') { + $perl_name .= $Config{_exe} unless $perl_name =~ m/$Config{_exe}$/i; +} + +sub which { + my $cmd = $_[0]; + + # Poor man's File::Which + my ($v,$d,$f) = File::Spec->splitpath($cmd); + if ($d) { + # The command has a pathname so don't look for it in PATH. + # Use forward-slashes even on Windows, else it fails in recipes. + (-f $cmd and -x _) or return undef; + $cmd =~ tr,\\,/,; + return $cmd; + } + + my @ext; + if ($port_type eq 'UNIX' || $port_type eq 'VMS-DCL') { + @ext = (''); + } else { + @ext = index($f, '.') == -1 ? () : (''); + push @ext, split /;/, $ENV{PATHEXT}; + } + + foreach my $dir (File::Spec->path()) { + foreach my $e (@ext) { + my $p = File::Spec->catfile($dir, "$cmd$e"); + (-f $p and -x _) or next; + # Use forward-slashes even on Windows, else it fails in recipes. + $p =~ tr,\\,/,; + return $p; + } + } + return undef; +} + +# %makeENV is the cleaned-out environment. Tests must not modify it. +my %makeENV = (); + +sub vms_get_process_logicals { + # Sorry for the long note here, but to keep this test running on + # VMS, it is needed to be understood. + # + # Perl on VMS by default maps the %ENV array to the system wide logical + # name table. + # + # This is a very large dynamically changing table. + # On Linux, this would be the equivalent of a table that contained + # every mount point, temporary pipe, and symbolic link on every + # file system. You normally do not have permission to clear or replace it, + # and if you did, the results would be catastrophic. + # + # On VMS, added/changed %ENV items show up in the process logical + # name table. So to track changes, a copy of it needs to be captured. + + my $raw_output = `show log/process/access_mode=supervisor`; + my @raw_output_lines = split('\n',$raw_output); + my %log_hash; + foreach my $line (@raw_output_lines) { + if ($line =~ /^\s+"([A-Za-z\$_]+)"\s+=\s+"(.+)"$/) { + $log_hash{$1} = $2; + } + } + return \%log_hash +} + +# %origENV is the caller's original environment +if ($^O ne 'VMS') { + %origENV = %ENV; +} else { + my $proc_env = vms_get_process_logicals; + %origENV = %{$proc_env}; +} + +sub resetENV +{ + # We used to say "%ENV = ();" but this doesn't work in Perl 5.000 + # through Perl 5.004. It was fixed in Perl 5.004_01, but we don't + # want to require that here, so just delete each one individually. + + if ($^O ne 'VMS') { + foreach $v (keys %ENV) { + delete $ENV{$v}; + } + + %ENV = %makeENV; + } else { + my $proc_env = vms_get_process_logicals(); + my %delta = %{$proc_env}; + foreach my $v (keys %delta) { + if (exists $origENV{$v}) { + if ($origENV{$v} ne $delta{$v}) { + $ENV{$v} = $origENV{$v}; + } + } else { + delete $ENV{$v}; + } + } + } +} + +# Returns a string-ified version of cmd which is a value provided to exec() +# so it can either be a ref of a list or a string. +sub cmd2str +{ + my $cmd = $_[0]; + if (!ref($cmd)) { + return $cmd; + } + + my @c; + foreach (@$cmd) { + if (/[][#;"*?&|<>(){}\$`^~!]/) { + s/\'/\'\\'\'/g; + push @c, "'$_'"; + } else { + push @c, $_; + } + } + return join(' ', @c); +} + +sub toplevel +{ + %origENV = %ENV unless $^O eq 'VMS'; + + # Pull in benign variables from the user's environment + + foreach (# POSIX-specific things + 'TZ', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH', + 'LD_LIBRARY_PATH', + # *SAN things + 'ASAN_OPTIONS', 'UBSAN_OPTIONS', 'LSAN_OPTIONS', + # Purify things + 'PURIFYOPTIONS', + # Windows-specific things + 'Path', 'SystemRoot', 'TEMP', 'TMP', 'USERPROFILE', 'PATHEXT', + # DJGPP-specific things + 'DJDIR', 'DJGPP', 'SHELL', 'COMSPEC', 'HOSTNAME', 'LFN', + 'FNCASE', '387', 'EMU387', 'GROUP' + ) { + $makeENV{$_} = $ENV{$_} if $ENV{$_}; + } + + # Make sure our compares are not foiled by locale differences + + $makeENV{LC_ALL} = 'C'; + $makeENV{LANG} = 'C'; + $makeENV{LANGUAGE} = 'C'; + + $| = 1; # unbuffered output + + $debug = 0; # debug flag + $profile = 0; # profiling flag + $verbose = 0; # verbose mode flag + $detail = 0; # detailed verbosity + $keep = 0; # keep temp files around + $workdir = "work"; # The directory where the test will start running + $tempdir = "_tmp"; # A temporary directory + $scriptdir = "scripts"; # The directory where we find the test scripts + $tmpfilesuffix = "t"; # the suffix used on tmpfiles + $default_output_stack_level = 0; # used by attach_default_output, etc. + $default_input_stack_level = 0; # used by attach_default_input, etc. + $cwd = "."; # don't we wish we knew + $cwdslash = ""; # $cwd . $pathsep, but "" rather than "./" + + &get_osname; # sets $osname, $vos, $pathsep, and $short_filenames + + $perl_name = which($perl_name); + + # See if we have a diff + $diff_name = which('diff'); + if (!$diff_name) { + print "No diff found; differences will not be shown\n"; + } + + &set_defaults; # suite-defined + + &parse_command_line (@ARGV); + + print "OS name = '$osname'\n" if $debug; + + $temppath = File::Spec->rel2abs($tempdir); + + if (-d $temppath) { + print "Clearing $temppath...\n"; + &remove_directory_tree("$temppath/") + or &error ("Couldn't wipe out $temppath: $!\n"); + } else { + mkdir ($temppath, 0777) or error ("Cannot mkdir $temppath: $!\n"); + } + + # This is used by POSIX systems + $makeENV{TMPDIR} = $temppath; + + # These are used on Windows + $makeENV{TMP} = $temppath; + $makeENV{TEMP} = $temppath; + + # Replace the environment with the new one + resetENV(); + + $workpath = "$cwdslash$workdir"; + $scriptpath = "$cwdslash$scriptdir"; + + &set_more_defaults; # suite-defined + + &print_banner; + + if ($osname eq 'VMS' && $cwdslash eq "") { + # Porting this script to VMS revealed a small bug in opendir() not + # handling search lists correctly when the directory only exists in + # one of the logical_devices. Need to find the first directory in + # the search list, as that is where things will be written to. + my @dirs = split('/', $cwdpath); + + my $logical_device = $ENV{$dirs[1]}; + if ($logical_device =~ /([A-Za-z0-9_]+):(:?.+:)+/) { + # A search list was found. Grab the first logical device + # and use it instead of the search list. + $dirs[1]=$1; + my $lcl_pwd = join('/', @dirs); + $workpath = $lcl_pwd . '/' . $workdir + } + } + + if (-d $workpath) { + print "Clearing $workpath...\n"; + &remove_directory_tree("$workpath/") + or &error ("Couldn't wipe out $workpath: $!\n"); + } else { + mkdir ($workpath, 0777) or &error ("Cannot mkdir $workpath: $!\n"); + } + + if (!-d $scriptpath) { + &error ("Failed to find $scriptpath containing perl test scripts.\n"); + } + + if (@TESTS) { + print "Making work dirs...\n"; + foreach $test (@TESTS) { + if ($test =~ /^([^\/]+)\//) { + $dir = $1; + push (@rmdirs, $dir); + -d "$workpath/$dir" + or mkdir ("$workpath/$dir", 0777) + or &error ("Couldn't mkdir $workpath/$dir: $!\n"); + } + } + } else { + print "Finding tests...\n"; + opendir (SCRIPTDIR, $scriptpath) + or &error ("Couldn't opendir $scriptpath: $!\n"); + @dirs = grep (!/^(\..*|CVS|RCS)$/, readdir (SCRIPTDIR) ); + closedir (SCRIPTDIR); + foreach my $dir (@dirs) { + next if ($dir =~ /^(\..*|CVS|RCS)$/ || ! -d "$scriptpath/$dir"); + push (@rmdirs, $dir); + # VMS can have overlaid file systems, so directories may repeat. + next if -d "$workpath/$dir"; + mkdir ("$workpath/$dir", 0777) + or &error ("Couldn't mkdir $workpath/$dir: $!\n"); + opendir (SCRIPTDIR, "$scriptpath/$dir") + or &error ("Couldn't opendir $scriptpath/$dir: $!\n"); + @files = grep (!/^(\..*|CVS|RCS|.*~)$/, readdir (SCRIPTDIR) ); + closedir (SCRIPTDIR); + foreach my $test (@files) { + -d $test and next; + push (@TESTS, "$dir/$test"); + } + } + } + + if (@TESTS == 0) { + &error ("\nNo tests in $scriptpath, and none were specified.\n"); + } + + print "\n"; + + run_all_tests(); + + foreach my $dir (@rmdirs) { + rmdir ("$workpath/$dir"); + } + + rmdir ($temppath); + + $| = 1; + + $categories_failed = $categories_run - $categories_passed; + $total_tests_failed = $total_tests_run - $total_tests_passed; + + if ($total_tests_failed) { + print "\n$total_tests_failed Test"; + 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"; + return 0; + } + + print "\n$total_tests_passed Test"; + print "s" unless $total_tests_passed == 1; + print " in $categories_passed Categor"; + print ($categories_passed == 1 ? "y" : "ies"); + print " Complete ... No Failures :-)\n\n"; + return 1; +} + +sub get_osname +{ + # Set up an initial value. In perl5 we can do it the easy way. + $osname = defined($^O) ? $^O : ''; + $vos = 0; + $pathsep = "/"; + + # find the type of the port. We do this up front to have a single + # point of change if it needs to be tweaked. + # + # This is probably not specific enough. + # + if ($osname =~ /MSWin32/i || $osname =~ /Windows/i + || $osname =~ /MINGW32/i || $osname =~ /CYGWIN_NT/i) { + $port_type = 'W32'; + } + # Bleah, the osname is so variable on DOS. This kind of bites. + # Well, as far as I can tell if we check for some text at the + # beginning of the line with either no spaces or a single space, then + # a D, then either "OS", "os", or "ev" and a space. That should + # match and be pretty specific. + elsif ($osname =~ /^([^ ]*|[^ ]* [^ ]*)D(OS|os|ev) /) { + $port_type = 'DOS'; + } + # Check for OS/2 + elsif ($osname =~ m%OS/2%) { + $port_type = 'OS/2'; + } + + # VMS has a GNV Unix mode or a DCL mode. + # The SHELL environment variable should not be defined in VMS-DCL mode. + elsif ($osname eq 'VMS' && !defined $ENV{"SHELL"}) { + $port_type = 'VMS-DCL'; + } + # Everything else, right now, is UNIX. Note that we should integrate + # the VOS support into this as well and get rid of $vos; we'll do + # that next time. + else { + $port_type = 'UNIX'; + } + + if ($osname eq 'VMS') { + return; + } + + # Find a path to Perl + + # See if the filesystem supports long file names with multiple + # dots. DOS doesn't. + $short_filenames = 0; + (open (TOUCHFD, "> fancy.file.name") and close (TOUCHFD)) + or $short_filenames = 1; + unlink ("fancy.file.name") or $short_filenames = 1; + + if (! $short_filenames) { + # Thanks go to meyering@cs.utexas.edu (Jim Meyering) for suggesting a + # better way of doing this. (We used to test for existence of a /mnt + # dir, but that apparently fails on an SGI Indigo (whatever that is).) + # Because perl on VOS translates /'s to >'s, we need to test for + # VOSness rather than testing for Unixness (ie, try > instead of /). + + mkdir (".ostest", 0777) or &error ("Couldn't create .ostest: $!\n", 1); + open (TOUCHFD, "> .ostest>ick") and close (TOUCHFD); + chdir (".ostest") or &error ("Couldn't chdir to .ostest: $!\n", 1); + } + + if (! $short_filenames && -f "ick") { + $osname = "vos"; + $vos = 1; + $pathsep = ">"; + + } elsif ($osname eq '') { + # the following is regrettably gnarly, but it seems to be the only way + # to not get ugly error messages if uname can't be found. + # Hmmm, BSD/OS 2.0's uname -a is excessively verbose. Let's try it + # with switches first. + eval "chop (\$osname = `sh -c 'uname -nmsr 2>&1'`)"; + if ($osname =~ /not found/i) { + $osname = "(something posixy with no uname)"; + + } elsif ($@ ne "" || $?) { + eval "chop (\$osname = `sh -c 'uname -a 2>&1'`)"; + if ($@ ne "" || $?) { + $osname = "(something posixy)"; + } + } + } + + if (! $short_filenames) { + chdir ("..") or &error ("Couldn't chdir to ..: $!\n", 1); + unlink (".ostest>ick"); + rmdir (".ostest") or &error ("Couldn't rmdir .ostest: $!\n", 1); + } +} + +sub parse_command_line +{ + @argv = @_; + + # use @ARGV if no args were passed in + + if (@argv == 0) { + @argv = @ARGV; + } + + # look at each option; if we don't recognize it, maybe the suite-specific + # command line parsing code will... + + while (@argv) { + $option = shift @argv; + if ($option =~ /^-usage$/i) { + &print_usage; + exit 0; + } + if ($option =~ /^-(h|help)$/i) { + &print_help; + exit 0; + } + + if ($option =~ /^-debug$/i) { + print "\nDEBUG ON\n"; + $debug = 1; + + } elsif ($option =~ /^-profile$/i) { + $profile = 1; + + } elsif ($option =~ /^-verbose$/i) { + $verbose = 1; + + } elsif ($option =~ /^-detail$/i) { + $detail = 1; + $verbose = 1; + + } elsif ($option =~ /^-keep$/i) { + $keep = 1; + + } elsif (&valid_option($option)) { + # The suite-defined subroutine takes care of the option + + } elsif ($option =~ /^-/) { + print "Invalid option: $option\n"; + &print_usage; + exit 0; + + } else { # must be the name of a test + $option =~ s/\.pl$//; + push(@TESTS,$option); + } + } +} + +sub max +{ + my $num = shift @_; + my $newnum; + + while (@_) { + $newnum = shift @_; + if ($newnum > $num) { + $num = $newnum; + } + } + + return $num; +} + +sub print_centered +{ + my ($width, $string) = @_; + + if (length ($string)) { + my $pad = " " x ( ($width - length ($string) + 1) / 2); + print "$pad$string"; + } +} + +sub print_banner +{ + # $testee is suite-defined + my $info = "Running tests for $testee on $osname"; + my $len = &max (length($info), length($testee_version), 77) + 2; + my $line = ("-" x $len) . "\n"; + + &print_centered ($len, $line); + &print_centered ($len, $info."\n"); + &print_centered ($len, $testee_version); + &print_centered ($len, $line); + print "\n"; +} + +sub run_all_tests +{ + # Make sure we always run the tests from the current directory + unshift(@INC, cwd()); + + $categories_run = 0; + + # Make a copy of STDIN so we can reset it + open(INCOPY, "<&STDIN"); + + # 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 = '.'; + } + + $lasttest = ''; + # $testname is published + foreach $testname (sort @TESTS) { + # Skip duplicates on VMS caused by logical name search lists. + next if $testname eq $lasttest; + + $lasttest = $testname; + $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"; + $extext = '_' if $^O eq 'VMS'; + $log_filename = "$testpath.$logext"; + $diff_filename = "$testpath.$diffext"; + $base_filename = "$testpath.$baseext"; + $run_filename = "$testpath.$runext"; + $tmp_filename = "$testpath.$tmpfilesuffix"; + + -f $perl_testname or die "Invalid test: $testname\n\n"; + + setup_for_test(); + + $output = "........................................................ "; + + substr($output, 0, length($testname)) = "$testname "; + + print $output; + + $tests_run = 0; + $tests_passed = 0; + + # Run the test! + $code = do $perl_testname; + + # Reset STDIN from the copy in case it was changed + open(STDIN, "<&INCOPY"); + + ++$categories_run; + $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)"; + + } elsif ($code == -1) { + # Skipped... not supported + $status = "N/A"; + --$categories_run; + + } 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)"; + + } elsif ($tests_run == 0) { + # Nothing was done!! + $status = "FAILED (no tests found!)"; + + } elsif ($tests_run > $tests_passed) { + # Lose! + $status = "FAILED ($tests_passed/$tests_run passed)"; + + } 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 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 ($verbose) { + if ($detail) { + print "\nWHAT IS BEING TESTED\n"; + print "--------------------"; + } + print "\n\n$description\n\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"; + } + + close(INCOPY); +} + +# If the keep flag is not set, this subroutine deletes all filenames that +# are sent to it. + +sub rmfiles +{ + my (@files) = @_; + + if (!$keep) { + return (unlink @files); + } + + return 1; +} + +sub print_standard_usage +{ + my ($plname, @moreusage) = @_; + + print "usage:\t$plname [testname] [-verbose] [-detail] [-keep]\n"; + print "\t\t\t[-profile] [-usage] [-help] [-debug]\n"; + foreach (@moreusage) { + print "\t\t\t$_\n"; + } +} + +sub print_standard_help +{ + my (@morehelp) = @_; + my $t = " "; + + my $line = "Test Driver For $testee"; + print "$line\n"; + $line = "=" x length ($line); + print "$line\n"; + + print_usage(); + + print "\ntestname\n" + . "${t}You may, if you wish, run only ONE test if you know the name\n" + . "${t}of that test and specify this name anywhere on the command\n" + . "${t}line. Otherwise ALL existing tests in the scripts directory\n" + . "${t}will be run.\n" + . "-verbose\n" + . "${t}If this option is given, a description of every test is\n" + . "${t}displayed before the test is run. (Not all tests may have\n" + . "${t}descriptions at this time)\n" + . "-detail\n" + . "${t}If this option is given, a detailed description of every\n" + . "${t}test is displayed before the test is run. (Not all tests\n" + . "${t}have descriptions at this time)\n" + . "-profile\n" + . "${t}If this option is given, then the profile file\n" + . "${t}is added to other profiles every time $testee is run.\n" + . "${t}This option only works on VOS at this time.\n" + . "-keep\n" + . "${t}You may give this option if you DO NOT want ANY\n" + . "${t}of the files generated by the tests to be deleted. \n" + . "${t}Without this option, all files generated by the test will\n" + . "${t}be deleted IF THE TEST PASSES.\n" + . "-debug\n" + . "${t}Use this option if you would like to see all of the system\n" + . "${t}calls issued and their return status while running the tests\n" + . "${t}This can be helpful if you're having a problem adding a test\n" + . "${t}to the suite, or if the test fails!\n"; + + foreach $line (@morehelp) { + my $tline = $line; + if (substr ($tline, 0, 1) eq "\t") { + substr ($tline, 0, 1) = $t; + } + print "$tline\n"; + } +} + +####################################################################### +########### Generic Test Driver Subroutines ########### +####################################################################### + +sub get_caller +{ + my $depth = defined ($_[0]) ? $_[0] : 1; + my ($pkg, $filename, $linenum) = caller ($depth + 1); + return "$filename: $linenum"; +} + +sub error +{ + my $message = $_[0]; + my $caller = &get_caller (1); + + if (defined ($_[1])) { + $caller = &get_caller ($_[1] + 1) . " -> $caller"; + } + + die "$caller: $message"; +} + +my %old_tempfiles = (); + +sub compare_output +{ + my ($answer, $logfile) = @_; + my ($slurp, $answer_matched, $extra) = ('', 0, 0); + + ++$tests_run; + + my @tf = (); + foreach my $file (glob(File::Spec->catfile($temppath, "*"))) { + if (!exists $old_tempfiles{$file}) { + push @tf, $file; + $old_tempfiles{$file} = 1; + } + } + if (@tf) { + open (LOGFILE, '>>', $logfile) or die "Cannot open log file $logfile: $!\n"; + print LOGFILE "Leftover temporary files: @tf\n"; + close (LOGFILE); + $extra = 1; + } + + if (! defined $answer) { + print "Ignoring output ........ " if $debug; + $answer_matched = 1; + } else { + print "Comparing output ........ " if $debug; + + $slurp = &read_file_into_string ($logfile); + + # 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 + my ($answer_mod, $slurp_mod) = ($answer, $slurp); + + $answer_mod =~ tr,\\,/,; + $answer_mod =~ s,\r\n,\n,gs; + + $slurp_mod =~ tr,\\,/,; + $slurp_mod =~ s,\r\n,\n,gs; + + $answer_matched = ($slurp_mod eq $answer_mod); + + if (!$answer_matched && $^O eq 'VMS') { + + # VMS has extra blank lines in output sometimes. + # Ticket #41760 + if (!$answer_matched) { + $slurp_mod =~ s/\n\n+/\n/gm; + $slurp_mod =~ s/\A\n+//g; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS adding a "Waiting for unfinished jobs..." + # Remove it for now to see what else is going on. + if (!$answer_matched) { + $slurp_mod =~ s/^.+\*\*\* Waiting for unfinished jobs.+$//m; + $slurp_mod =~ s/\n\n/\n/gm; + $slurp_mod =~ s/^\n+//gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS wants target device to exist or generates an error, + # Some test tagets look like VMS devices and trip this. + if (!$answer_matched) { + $slurp_mod =~ s/^.+\: no such device or address.*$//gim; + $slurp_mod =~ s/\n\n/\n/gm; + $slurp_mod =~ s/^\n+//gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS error message has a different case + if (!$answer_matched) { + $slurp_mod =~ s/no such file /No such file /gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS is putting comas instead of spaces in output + if (!$answer_matched) { + $slurp_mod =~ s/,/ /gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS Is sometimes adding extra leading spaces to output? + if (!$answer_matched) { + my $slurp_mod = $slurp_mod; + $slurp_mod =~ s/^ +//gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS port not handling POSIX encoded child status + # Translate error case it for now. + if (!$answer_matched) { + $slurp_mod =~ s/0x1035a00a/1/gim; + $answer_matched = 1 if $slurp_mod =~ /\Q$answer_mod\E/i; + + } + if (!$answer_matched) { + $slurp_mod =~ s/0x1035a012/2/gim; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # Tests are using a UNIX null command, temp hack + # until this can be handled by the VMS port. + # ticket # 41761 + if (!$answer_matched) { + $slurp_mod =~ s/^.+DCL-W-NOCOMD.*$//gim; + $slurp_mod =~ s/\n\n+/\n/gm; + $slurp_mod =~ s/^\n+//gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + # Tests are using exit 0; + # this generates a warning that should stop the make, but does not + if (!$answer_matched) { + $slurp_mod =~ s/^.+NONAME-W-NOMSG.*$//gim; + $slurp_mod =~ s/\n\n+/\n/gm; + $slurp_mod =~ s/^\n+//gm; + $answer_matched = ($slurp_mod eq $answer_mod); + } + + # VMS is sometimes adding single quotes to output? + if (!$answer_matched) { + my $noq_slurp_mod = $slurp_mod; + $noq_slurp_mod =~ s/\'//gm; + $answer_matched = ($noq_slurp_mod eq $answer_mod); + + # And missing an extra space in output + if (!$answer_matched) { + $noq_answer_mod = $answer_mod; + $noq_answer_mod =~ s/\h\h+/ /gm; + $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); + } + + # VMS adding ; to end of some lines. + if (!$answer_matched) { + $noq_slurp_mod =~ s/;\n/\n/gm; + $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); + } + + # VMS adding trailing space to end of some quoted lines. + if (!$answer_matched) { + $noq_slurp_mod =~ s/\h+\n/\n/gm; + $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); + } + + # And VMS missing leading blank line + if (!$answer_matched) { + $noq_answer_mod =~ s/\A\n//g; + $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); + } + + # Unix double quotes showing up as single quotes on VMS. + if (!$answer_matched) { + $noq_answer_mod =~ s/\"//g; + $answer_matched = ($noq_slurp_mod eq $noq_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 ($keep || ! $answer_matched) { + &create_file(&get_basefile, $answer); + &create_file(&get_runfile, $command_string); + } + + if ($answer_matched && $test_passed && !$extra) { + print "ok\n" if $debug; + ++$tests_passed; + return 1; + } + + if (! $answer_matched) { + print "DIFFERENT OUTPUT\n" if $debug; + + print "\nCreating Difference File ...\n" if $debug; + + # Create the difference file + my $base = get_basefile(); + if ($diff_name) { + my $command = "$diff_name -c $base $logfile"; + &run_command_with_output(get_difffile(), $command); + } else { + create_file(get_difffile(), "Log file $logfile differs from base file $base\n"); + } + } + + return 0; +} + +sub read_file_into_string +{ + my ($filename) = @_; + my $oldslash = $/; + undef $/; + + open (RFISFILE, '<', $filename) or return ""; + my $slurp = ; + close (RFISFILE); + + $/ = $oldslash; + + return $slurp; +} + +my @OUTSTACK = (); +my @ERRSTACK = (); + +sub attach_default_output +{ + my ($filename) = @_; + + if ($vos) + { + my $code = system "++attach_default_output_hack $filename"; + $code == -2 or &error ("ado death\n", 1); + return 1; + } + + my $dup = undef; + open($dup, '>&', STDOUT) or error("ado: $! duping STDOUT\n", 1); + push @OUTSTACK, $dup; + + $dup = undef; + open($dup, '>&', STDERR) or error("ado: $! duping STDERR\n", 1); + push @ERRSTACK, $dup; + + 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 +# the "stack." + +sub detach_default_output +{ + if ($vos) + { + my $code = system "++detach_default_output_hack"; + $code == -2 or &error ("ddoh death\n", 1); + return 1; + } + + @OUTSTACK or error("default output stack has flown under!\n", 1); + + close(STDOUT); + close(STDERR) unless $^O eq 'VMS'; + + + open (STDOUT, '>&', pop @OUTSTACK) or error("ddo: $! duping STDOUT\n", 1); + open (STDERR, '>&', pop @ERRSTACK) or error("ddo: $! duping STDERR\n", 1); +} + +sub _run_with_timeout +{ + my $code; + if ($^O eq 'VMS') { + #local $SIG{ALRM} = sub { + # my $e = $ERRSTACK[0]; + # print $e "\nTest timed out after $test_timeout seconds\n"; + # die "timeout\n"; + #}; + #alarm $test_timeout; + system(@_); + #alarm 0; + my $severity = ${^CHILD_ERROR_NATIVE} & 7; + $code = 0; + if (($severity & 1) == 0) { + $code = 512; + } + + # Get the vms status. + my $vms_code = ${^CHILD_ERROR_NATIVE}; + + # Remove the print status bit + $vms_code &= ~0x10000000; + + # Posix code translation. + if (($vms_code & 0xFFFFF000) == 0x35a000) { + $code = (($vms_code & 0xFFF) >> 3) * 256; + } + + } elsif ($port_type eq 'W32') { + my $pid = system(1, @_); + $pid > 0 or die "Cannot execute $_[0]\n"; + local $SIG{ALRM} = sub { + my $e = $ERRSTACK[0]; + print $e "\nTest timed out after $test_timeout seconds\n"; + kill -9, $pid; + die "timeout\n"; + }; + alarm $test_timeout; + my $r = waitpid($pid, 0); + alarm 0; + $r == -1 and die "No such pid: $pid\n"; + # This shouldn't happen since we wait forever or timeout via SIGALRM + $r == 0 and die "No process exited.\n"; + $code = $?; + + } else { + my $pid = fork(); + if (! $pid) { + exec(@_) or die "exec: Cannot execute $_[0]: $!\n"; + } + local $SIG{ALRM} = sub { + my $e = $ERRSTACK[0]; + print $e "\nTest timed out after $test_timeout seconds\n"; + # Resend the alarm to our process group to kill the children. + $SIG{ALRM} = 'IGNORE'; + kill -14, $$; + die "timeout\n"; + }; + alarm $test_timeout; + my $r = waitpid($pid, 0); + alarm 0; + $r == -1 and die "No such pid: $pid\n"; + # This shouldn't happen since we wait forever or timeout via SIGALRM + $r == 0 and die "No process exited.\n"; + $code = $?; + } + + return $code; +} + +# This runs a command without any debugging info. +sub _run_command +{ + my $orig = $SIG{ALRM}; + my $code = eval { _run_with_timeout(@_); }; + $SIG{ALRM} = $orig; + + # Reset then environment so that it's clean for the next test. + resetENV(); + + if ($@) { + # The eval failed. If it wasn't SIGALRM then die. + $@ eq "timeout\n" or die "Command failed: $@"; + $code = 14; + } + + return $code; +} + +# run one command (passed as a list of arg 0 - n), returning 0 on success +# and nonzero on failure. + +sub run_command +{ + print "\nrun_command: @_\n" if $debug; + my $code = _run_command(@_); + print "run_command returned $code.\n" if $debug; + print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $^O eq 'VMS'; + return $code; +} + +# run one command (passed as a list of arg 0 - n, with arg 0 being the +# second arg to this routine), returning 0 on success and non-zero on failure. +# The first arg to this routine is a filename to connect to the stdout +# & stderr of the child process. + +sub run_command_with_output +{ + my $filename = shift; + + print "\nrun_command_with_output($filename,$runname): @_\n" if $debug; + &attach_default_output ($filename); + my $code = eval { _run_command(@_) }; + my $err = $@; + &detach_default_output; + + $err and die $err; + + print "run_command_with_output returned $code.\n" if $debug; + print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $^O eq 'VMS'; + return $code; +} + +# performs the equivalent of an "rm -rf" on the first argument. Like +# rm, if the path ends in /, leaves the (now empty) directory; otherwise +# deletes it, too. + +sub remove_directory_tree +{ + my ($targetdir) = @_; + my ($nuketop) = 1; + + my $ch = substr ($targetdir, length ($targetdir) - 1); + if ($ch eq "/" || $ch eq $pathsep) { + $targetdir = substr ($targetdir, 0, length ($targetdir) - 1); + $nuketop = 0; + } + + -e $targetdir or return 1; + + &remove_directory_tree_inner ("RDT00", $targetdir) or return 0; + if ($nuketop && !rmdir ($targetdir)) { + print "Cannot remove $targetdir: $!\n"; + return 0; + } + + return 1; +} + +sub remove_directory_tree_inner +{ + my ($dirhandle, $targetdir) = @_; + + opendir ($dirhandle, $targetdir) or return 0; + my $subdirhandle = $dirhandle; + $subdirhandle++; + while (my $object = readdir ($dirhandle)) { + $object =~ /^(\.\.?|CVS|RCS)$/ and next; + $object = "$targetdir$pathsep$object"; + + lstat ($object); + if (-d _ && &remove_directory_tree_inner ($subdirhandle, $object)) { + if (!rmdir($object)) { + print "Cannot remove $object: $!\n"; + return 0; + } + } else { + if ($^O ne 'VMS') { + if (!unlink $object) { + print "Cannot unlink $object: $!\n"; + return 0; + } + } else { + # VMS can have multiple versions of a file. + 1 while unlink $object; + } + } + } + closedir ($dirhandle); + return 1; +} + +# We used to use this behavior for this function: +# +#sub touch +#{ +# my (@filenames) = @_; +# my $now = time; +# +# foreach my $file (@filenames) { +# utime ($now, $now, $file) +# or (open (TOUCHFD, ">> $file") and close (TOUCHFD)) +# or &error ("Couldn't touch $file: $!\n", 1); +# } +# return 1; +#} +# +# But this behaves badly on networked filesystems where the time is +# skewed, because it sets the time of the file based on the _local_ +# host. Normally when you modify a file, it's the _remote_ host that +# determines the modtime, based on _its_ clock. So, instead, now we open +# the file and write something into it to force the remote host to set +# the modtime correctly according to its clock. +# + +sub touch +{ + foreach my $file (@_) { + (open(T, '>>', $file) and print(T "\n") and close(T)) + or &error("Couldn't touch $file: $!\n", 1); + } + + return @_; +} + +# Touch with a time offset. To DTRT, call touch() then use stat() to get the +# access/mod time for each file and apply the offset. + +sub utouch +{ + my $off = shift; + + &touch(@_); + + foreach my $f (@_) { + my @s = stat($f); + utime($s[8]+$off, $s[9]+$off, $f); + } + + return @_; +} + +# open a file, write some stuff to it, and close it. + +sub create_file +{ + my ($filename, @lines) = @_; + + open (CF, "> $filename") or &error ("Couldn't open $filename: $!\n", 1); + foreach $line (@lines) { + print CF $line; + } + close (CF); +} + +# create a directory tree described by an associative array, wherein each +# key is a relative pathname (using slashes) and its associated value is +# one of: +# DIR indicates a directory +# FILE:contents indicates a file, which should contain contents +\n +# LINK:target indicates a symlink, pointing to $basedir/target +# The first argument is the dir under which the structure will be created +# (the dir will be made and/or cleaned if necessary); the second argument +# is the associative array. + +sub create_dir_tree +{ + my ($basedir, %dirtree) = @_; + + &remove_directory_tree ("$basedir"); + mkdir ($basedir, 0777) or &error ("Couldn't mkdir $basedir: $!\n", 1); + + foreach my $path (sort keys (%dirtree)) { + if ($dirtree {$path} =~ /^DIR$/) { + mkdir ("$basedir/$path", 0777) + or &error ("Couldn't mkdir $basedir/$path: $!\n", 1); + + } elsif ($dirtree {$path} =~ /^FILE:(.*)$/) { + &create_file ("$basedir/$path", $1 . "\n"); + + } elsif ($dirtree {$path} =~ /^LINK:(.*)$/) { + symlink ("$basedir/$1", "$basedir/$path") + or &error ("Couldn't symlink $basedir/$path -> $basedir/$1: $!\n", 1); + + } else { + &error ("Bogus dirtree type: \"$dirtree{$path}\"\n", 1); + } + } + if ($just_setup_tree) { + die "Tree is setup...\n"; + } +} + +# compare a directory tree with an associative array in the format used +# by create_dir_tree, above. +# The first argument is the dir under which the structure should be found; +# the second argument is the associative array. + +sub compare_dir_tree +{ + my ($basedir, %dirtree) = @_; + my $bogus = 0; + + opendir (DIR, $basedir) or &error ("Couldn't open $basedir: $!\n", 1); + my @allfiles = grep (!/^(\.\.?|CVS|RCS)$/, readdir (DIR) ); + closedir (DIR); + if ($debug) { + print "dirtree: (%dirtree)\n$basedir: (@allfiles)\n"; + } + + foreach my $path (sort keys (%dirtree)) + { + if ($debug) { + print "Checking $path ($dirtree{$path}).\n"; + } + + my $found = 0; + foreach my $i (0 .. $#allfiles) { + if ($allfiles[$i] eq $path) { + splice (@allfiles, $i, 1); # delete it + if ($debug) { + print " Zapped $path; files now (@allfiles).\n"; + } + lstat ("$basedir/$path"); + $found = 1; + last; + } + } + + if (!$found) { + print "compare_dir_tree: $path does not exist.\n"; + $bogus = 1; + next; + } + + if ($dirtree {$path} =~ /^DIR$/) { + if (-d _ && opendir (DIR, "$basedir/$path") ) { + my @files = readdir (DIR); + closedir (DIR); + @files = grep (!/^(\.\.?|CVS|RCS)$/ && ($_ = "$path/$_"), @files); + push (@allfiles, @files); + if ($debug) + { + print " Read in $path; new files (@files).\n"; + } + + } else { + print "compare_dir_tree: $path is not a dir.\n"; + $bogus = 1; + } + + } elsif ($dirtree {$path} =~ /^FILE:(.*)$/) { + if (-l _ || !-f _) { + print "compare_dir_tree: $path is not a file.\n"; + $bogus = 1; + next; + } + + if ($1 ne "*") { + my $contents = &read_file_into_string ("$basedir/$path"); + if ($contents ne "$1\n") { + print "compare_dir_tree: $path contains wrong stuff." + . " Is:\n$contentsShould be:\n$1\n"; + $bogus = 1; + } + } + + } elsif ($dirtree {$path} =~ /^LINK:(.*)$/) { + my $target = $1; + if (!-l _) { + print "compare_dir_tree: $path is not a link.\n"; + $bogus = 1; + next; + } + + my $contents = readlink ("$basedir/$path"); + $contents =~ tr/>/\//; + my $fulltarget = "$basedir/$target"; + $fulltarget =~ tr/>/\//; + if (!($contents =~ /$fulltarget$/)) { + if ($debug) { + $target = $fulltarget; + } + print "compare_dir_tree: $path should be link to $target, " + . "not $contents.\n"; + $bogus = 1; + } + + } else { + &error ("Bogus dirtree type: \"$dirtree{$path}\"\n", 1); + } + } + + if ($debug) { + print "leftovers: (@allfiles).\n"; + } + + foreach my $file (@allfiles) { + print "compare_dir_tree: $file should not exist.\n"; + $bogus = 1; + } + + return !$bogus; +} + +# this subroutine generates the numeric suffix used to keep tmp filenames, +# log filenames, etc., unique. If the number passed in is 1, then a null +# string is returned; otherwise, we return ".n", where n + 1 is the number +# we were given. + +sub num_suffix +{ + my ($num) = @_; + if (--$num > 0) { + return "$extext$num"; + } + + return ""; +} + +# This subroutine returns a log filename with a number appended to +# the end corresponding to how many logfiles have been created in the +# current running test. An optional parameter may be passed (0 or 1). +# If a 1 is passed, then it does NOT increment the logfile counter +# and returns the name of the latest logfile. If either no parameter +# is passed at all or a 0 is passed, then the logfile counter is +# incremented and the new name is returned. + +sub get_logfile +{ + my ($no_increment) = @_; + + $num_of_logfiles += !$no_increment; + + return ($log_filename . &num_suffix ($num_of_logfiles)); +} + +# This subroutine returns a base (answer) filename with a number +# appended to the end corresponding to how many logfiles (and thus +# base files) have been created in the current running test. +# NO PARAMETERS ARE PASSED TO THIS SUBROUTINE. + +sub get_basefile +{ + return ($base_filename . &num_suffix ($num_of_logfiles)); +} + +# This subroutine returns a difference filename with a number appended +# to the end corresponding to how many logfiles (and thus diff files) +# have been created in the current running test. + +sub get_difffile +{ + return ($diff_filename . &num_suffix ($num_of_logfiles)); +} + +# This subroutine returns a command filename with a number appended +# to the end corresponding to how many logfiles (and thus command files) +# have been created in the current running test. + +sub get_runfile +{ + return ($run_filename . &num_suffix ($num_of_logfiles)); +} + +# just like logfile, only a generic tmp filename for use by the test. +# they are automatically cleaned up unless -keep was used, or the test fails. +# Pass an argument of 1 to return the same filename as the previous call. + +sub get_tmpfile +{ + my ($no_increment) = @_; + + $num_of_tmpfiles += !$no_increment; + + return ($tmp_filename . &num_suffix ($num_of_tmpfiles)); +} + +1; diff --git a/local/recipes/dev/gnu-make/source/tests/thelp.pl b/local/recipes/dev/gnu-make/source/tests/thelp.pl new file mode 100755 index 0000000000..993339cbf1 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/tests/thelp.pl @@ -0,0 +1,118 @@ +#!/usr/bin/env perl +# -*-perl-*- +# +# This script helps us write tests in a portable way, without relying on a lot +# of shell features. Since we already have Perl to run the tests, use that. +# +# The arguments represent a set of steps that will be run one at a time. +# Each step consists of an operator and argument. +# +# It supports the following operators: +# out : echo to stdout with a newline +# raw : echo to stdout without adding anything +# file : echo to stdout AND create the file +# dir : echo to stdout AND create the directory +# rm : echo to stdout AND delete the file/directory +# wait : wait for a file named to exist +# tmout : Change the timeout for waiting. Default is 4 seconds. +# sleep : Sleep for seconds then echo +# fail : echo to stdout then exit with error code err +# +# If given -q only the "out" command generates output. + +# Force flush +$| = 1; + +my $quiet = 0; +my $timeout = 10; + +sub op { + my ($op, $nm) = @_; + + defined $nm or die "Missing value for $op\n"; + + if ($op eq 'out') { + print "$nm\n"; + return 1; + } + if ($op eq 'raw') { + print "$nm"; + return 1; + } + + # Show the output before creating the file + if ($op eq 'file') { + print "file $nm\n" unless $quiet; + open(my $fh, '>', $nm) or die "$nm: open: $!\n"; + close(my $fh); + return 1; + } + + # Show the output before creating the directory + if ($op eq 'dir') { + print "dir $nm\n" unless $quiet; + mkdir($nm) or die "$nm: mkdir: $!\n"; + return 1; + } + + # Show the output after removing the file + if ($op eq 'rm') { + if (-f $nm) { + unlink($nm) or die "$nm: unlink: $!\n"; + } elsif (-d $nm) { + rmdir($nm) or die "$nm: rmdir: $!\n"; + } else { + die "$nm: not file or directory: $!\n"; + } + print "rm $nm\n" unless $quiet; + return 1; + } + + if ($op eq 'tmout') { + $timeout = $nm; + print "tmout $nm\n" unless $quiet; + return 1; + } + + # Show the output after the file exists + if ($op eq 'wait') { + my $start = time(); + my $end = $start + $timeout; + while (time() <= $end) { + if (-f $nm) { + print "wait $nm\n" unless $quiet; + return 1; + } + select(undef, undef, undef, 0.1); + } + die "wait $nm: timeout after ".(time()-$start-1)." seconds\n"; + } + + # Show the output after sleeping + if ($op eq 'sleep') { + sleep($nm); + print "sleep $nm\n" unless $quiet; + return 1; + } + + if ($op eq 'fail') { + print "fail $nm\n"; + exit($nm); + } + + die("Invalid command: $op $nm\n"); +} + +if (@ARGV && $ARGV[0] eq '-q') { + $quiet = 1; + shift; +} + +while (@ARGV) { + if (op($ARGV[0], $ARGV[1])) { + shift; + shift; + } +} + +exit(0); diff --git a/local/recipes/dev/gnu-make/source/vms_export_symbol_test.com b/local/recipes/dev/gnu-make/source/vms_export_symbol_test.com new file mode 100644 index 0000000000..4345f44af4 --- /dev/null +++ b/local/recipes/dev/gnu-make/source/vms_export_symbol_test.com @@ -0,0 +1,37 @@ +$! VMS_EXPORT_SYMBOL_TEST.COM +$! +$! Verify the VMS_EXPORT_SYMBOL.C module +$! +$! 22-May-2014 J. Malmberg +$! +$!========================================================================= +$! +$ cc/names=(as_is)/define=(DEBUG=1,_POSIX_EXIT=1) vms_export_symbol.c +$! +$ link vms_export_symbol +$! +$ delete vms_export_symbol.obj;* +$! +$! Need a foreign command to test. +$ vms_export_symbol := $sys$disk:[]vms_export_symbol.exe +$ save_export_symbol = vms_export_symbol +$! +$ vms_export_symbol +$ if $severity .ne. 1 +$ then +$ write sys$output "Test program failed!"; +$ endif +$! +$ if vms_export_symbol .nes. save_export_symbol +$ then +$ write sys$output "Test failed to restore foreign command!" +$ endif +$ if f$type(test_export_symbol) .nes. "" +$ then +$ write sys$output "Test failed to clear exported symbol!" +$ endif +$ if f$type(test_putenv_symbol) .nes. "" +$ then +$ write sys$output "Test failed to clear putenv exported symbol!" +$ endif +$! diff --git a/local/recipes/libs/freetype2/recipe.toml b/local/recipes/libs/freetype2/recipe.toml index 7fb16e80e7..05df93cd5d 100644 --- a/local/recipes/libs/freetype2/recipe.toml +++ b/local/recipes/libs/freetype2/recipe.toml @@ -3,8 +3,13 @@ name = "freetype2" version = "2.14.3" [source] -tar = "https://sourceforge.net/projects/freetype/files/freetype2/2.14.3/freetype-2.14.3.tar.xz/download" -blake3 = "0c791e2ea02be6e3cddd6e69ee84d66d869190e5275d8a34e282517769f1192e" +# Vendored local fork (full-fork model): builds from the committed source/ +# tree (offline, reproducible). source/ = pristine upstream + the patches below +# BAKED IN. .patch files kept tracked so a version bump can re-apply them via +# sync-recipe-source.sh. +# upstream: https://sourceforge.net/projects/freetype/files/freetype2/2.14.3/freetype-2.14.3.tar.xz/download +# blake3: 0c791e2ea02be6e3cddd6e69ee84d66d869190e5275d8a34e282517769f1192e +path = "source" [build] template = "custom" diff --git a/local/recipes/libs/freetype2/source/.clang-format b/local/recipes/libs/freetype2/source/.clang-format new file mode 100644 index 0000000000..fbd04c11cb --- /dev/null +++ b/local/recipes/libs/freetype2/source/.clang-format @@ -0,0 +1,16 @@ +BasedOnStyle: Chromium +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: true +AlignConsecutiveDeclarations: true +AlignConsecutiveMacros: true +AlignEscapedNewlines: true +# AlignOperands: Align +AlignTrailingComments: true +AlwaysBreakAfterReturnType: AllDefinitions +BreakBeforeBraces: Allman +ColumnLimit: 80 +DerivePointerAlignment: false +IndentCaseLabels: false +PointerAlignment: Left +SpaceBeforeParens: ControlStatements +SpacesInParentheses: true diff --git a/local/recipes/libs/freetype2/source/.redbear-src-version b/local/recipes/libs/freetype2/source/.redbear-src-version new file mode 100644 index 0000000000..d3a4c58190 --- /dev/null +++ b/local/recipes/libs/freetype2/source/.redbear-src-version @@ -0,0 +1 @@ +download diff --git a/local/recipes/libs/freetype2/source/CMakeLists.txt b/local/recipes/libs/freetype2/source/CMakeLists.txt new file mode 100644 index 0000000000..333d3d7732 --- /dev/null +++ b/local/recipes/libs/freetype2/source/CMakeLists.txt @@ -0,0 +1,722 @@ +# CMakeLists.txt +# +# Copyright (C) 2013-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# Written originally by John Cary +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. +# +# +# The following will (1) create a build directory, and (2) change into +# it and call cmake to configure the build with default parameters as +# a static library. See +# +# https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html +# +# for information about debug or release builds, for example +# +# cmake -B build -D CMAKE_BUILD_TYPE=Release +# +# +# For a dynamic library, use +# +# cmake -B build -D BUILD_SHARED_LIBS=true -D CMAKE_BUILD_TYPE=Release +# +# For a framework on OS X, use +# +# cmake -E chdir build cmake -G Xcode -D BUILD_FRAMEWORK:BOOL=true .. +# +# For an iOS static library, use +# +# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=OS .. +# +# or +# +# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR .. +# +# or +# +# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR64 .. +# +# +# Finally, build the project with +# +# cmake --build build +# +# Install it with +# +# (sudo) cmake --build build --target install +# +# A binary distribution can be made with +# +# cmake --build build --config Release --target package +# +# Please refer to the cmake manual for further options, in particular, +# how to modify compilation and linking parameters. +# +# Some notes. +# +# - Say `cmake -LAH` to see all configuration options. +# +# - `cmake' creates configuration files in +# +# /include/freetype/config +# +# which should be further modified if necessary. +# +# - You can use `cmake' directly on a freshly cloned FreeType git +# repository. +# +# - `CMakeLists.txt' is provided as-is since it is normally not used +# by the developer team. +# +# - Set the `FT_REQUIRE_ZLIB', `FT_REQUIRE_BZIP2', `FT_REQUIRE_PNG', +# `FT_REQUIRE_HARFBUZZ', and `FT_REQUIRE_BROTLI' CMake variables to +# `ON' or `TRUE' to force using a dependency. Leave a variable +# undefined (which is the default) to use the dependency only if it +# is available. Example: +# +# cmake -B build -D FT_REQUIRE_ZLIB=TRUE \ +# -D FT_REQUIRE_BZIP2=TRUE \ +# -D FT_REQUIRE_PNG=TRUE \ +# -D FT_REQUIRE_HARFBUZZ=TRUE \ +# -D FT_REQUIRE_BROTLI=TRUE [...] +# +# - Set the `FT_DYNAMIC_HARFBUZZ' CMake variable to `ON' or `TRUE' to +# load the HarfBuzz library dynamically at runtime, if possible. +# Example: +# +# cmake -B build -D FT_DYNAMIC_HARFBUZZ=TRUE [...] +# +# - Set `FT_DISABLE_XXX=TRUE' to disable a dependency completely +# (where `XXX' is a CMake package name like `BZip2'). Example for +# disabling all dependencies: +# +# cmake -B build -D FT_DISABLE_ZLIB=TRUE \ +# -D FT_DISABLE_BZIP2=TRUE \ +# -D FT_DISABLE_PNG=TRUE \ +# -D FT_DISABLE_HARFBUZZ=TRUE \ +# -D FT_DISABLE_BROTLI=TRUE [...] +# +# - NOTE: If a package is set as DISABLED, it cannot be set as +# REQUIRED without unsetting the DISABLED value first. For example, +# if `FT_DISABLE_HARFBUZZ=TRUE' has been set (Cache is present), you +# need to call `FT_DISABLE_HARFBUZZ=FALSE' before calling +# `FT_REQUIRE_HARFBUZZ=TRUE'. +# +# - Installation of FreeType can be controlled with the CMake +# variables `SKIP_INSTALL_HEADERS', `SKIP_INSTALL_LIBRARIES', and +# `SKIP_INSTALL_ALL' (this is compatible with the same CMake +# variables in zlib's CMake support). + + +# CMake 3.12 provides for IMPORTED targets for common libraries like +# zlib, libpng, and bzip2. +cmake_minimum_required(VERSION 3.12...3.31.0) + +include(CheckIncludeFile) +include(CMakeDependentOption) + +# CMAKE_TOOLCHAIN_FILE must be set before `project' is called, which +# configures the base build environment and references the toolchain +# file. +if (APPLE) + if (DEFINED IOS_PLATFORM) + if (NOT "${IOS_PLATFORM}" STREQUAL "OS" + AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR" + AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR64") + message(FATAL_ERROR + "IOS_PLATFORM must be set to either OS, SIMULATOR, or SIMULATOR64") + endif () + if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") + message(AUTHOR_WARNING + "You should use Xcode generator with IOS_PLATFORM enabled" + " to get Universal builds.") + endif () + if (BUILD_SHARED_LIBS) + message(FATAL_ERROR + "BUILD_SHARED_LIBS can not be on with IOS_PLATFORM enabled") + endif () + if (BUILD_FRAMEWORK) + message(FATAL_ERROR + "BUILD_FRAMEWORK can not be on with IOS_PLATFORM enabled") + endif () + + # iOS only uses static libraries. + set(BUILD_SHARED_LIBS OFF) + + set(CMAKE_TOOLCHAIN_FILE + ${CMAKE_SOURCE_DIR}/builds/cmake/iOS.cmake) + endif () +else () + if (DEFINED IOS_PLATFORM) + message(FATAL_ERROR "IOS_PLATFORM is not supported on this platform") + endif () +endif () + + +project(freetype C) + +set(VERSION_MAJOR "2") +set(VERSION_MINOR "14") +set(VERSION_PATCH "3") + +# Generate LIBRARY_VERSION and LIBRARY_SOVERSION. +set(LIBTOOL_REGEX "version_info='([0-9]+):([0-9]+):([0-9]+)'") +file(STRINGS "${PROJECT_SOURCE_DIR}/builds/unix/configure.raw" + VERSION_INFO + REGEX ${LIBTOOL_REGEX}) +string(REGEX REPLACE + ${LIBTOOL_REGEX} "\\1" + LIBTOOL_CURRENT "${VERSION_INFO}") +string(REGEX REPLACE + ${LIBTOOL_REGEX} "\\2" + LIBTOOL_REVISION "${VERSION_INFO}") +string(REGEX REPLACE + ${LIBTOOL_REGEX} "\\3" + LIBTOOL_AGE "${VERSION_INFO}") + +# This is what libtool does internally on Unix platforms. +math(EXPR LIBRARY_SOVERSION "${LIBTOOL_CURRENT} - ${LIBTOOL_AGE}") +set(LIBRARY_VERSION "${LIBRARY_SOVERSION}.${LIBTOOL_AGE}.${LIBTOOL_REVISION}") + +# External dependency library detection is automatic. See the notes +# at the top of this file, for how to force or disable dependencies +# completely. +option(FT_DISABLE_ZLIB + "Disable use of system zlib and use internal zlib library instead." OFF) +cmake_dependent_option(FT_REQUIRE_ZLIB + "Require system zlib instead of internal zlib library." OFF + "NOT FT_DISABLE_ZLIB" OFF) + +option(FT_DISABLE_BZIP2 + "Disable support of bzip2 compressed fonts." OFF) +cmake_dependent_option(FT_REQUIRE_BZIP2 + "Require support of bzip2 compressed fonts." OFF + "NOT FT_DISABLE_BZIP2" OFF) + +option(FT_DISABLE_PNG + "Disable support of PNG compressed OpenType embedded bitmaps." OFF) +cmake_dependent_option(FT_REQUIRE_PNG + "Require support of PNG compressed OpenType embedded bitmaps." OFF + "NOT FT_DISABLE_PNG" OFF) + +option(FT_DISABLE_HARFBUZZ + "Disable HarfBuzz (used for improving auto-hinting of OpenType fonts)." OFF) +cmake_dependent_option(FT_DYNAMIC_HARFBUZZ + "Load HarfBuzz library dynamically at runtime, if possible." ON + "NOT FT_DISABLE_HARFBUZZ" OFF) +cmake_dependent_option(FT_REQUIRE_HARFBUZZ + "Require HarfBuzz for improving auto-hinting of OpenType fonts." OFF + "NOT FT_DISABLE_HARFBUZZ" OFF) + +option(FT_DISABLE_BROTLI + "Disable support of compressed WOFF2 fonts." OFF) +cmake_dependent_option(FT_REQUIRE_BROTLI + "Require support of compressed WOFF2 fonts." OFF + "NOT FT_DISABLE_BROTLI" OFF) + +option(FT_ENABLE_ERROR_STRINGS + "Enable support for meaningful error descriptions." OFF) + +# Disallow in-source builds. +if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") + message(FATAL_ERROR + "In-source builds are not permitted! Make a separate folder for" + " building, e.g.,\n" + " cmake -E make_directory build\n" + " cmake -E chdir build cmake ..\n" + "Before that, remove the files created by this failed run with\n" + " cmake -E remove CMakeCache.txt\n" + " cmake -E remove_directory CMakeFiles") +endif () + + +# Add local cmake modules. +list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/builds/cmake) + + +if (BUILD_FRAMEWORK) + if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") + message(FATAL_ERROR + "You should use Xcode generator with BUILD_FRAMEWORK enabled") + endif () + set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)") + set(BUILD_SHARED_LIBS ON) +endif () + + +# Find dependencies. +include(FindPkgConfig) +include(CMakePushCheckState) +include(CheckSymbolExists) + +if (NOT FT_DISABLE_HARFBUZZ) + set(HARFBUZZ_MIN_VERSION "2.0.0") + + if (FT_DYNAMIC_HARFBUZZ) + if (WIN32) # Windows uses its own LoadLibrary(). + set(FT_DYNAMIC_HARFBUZZ_ENABLED TRUE) + else() + cmake_push_check_state(RESET) + check_symbol_exists(dlopen "dlfcn.h" HAVE_DLOPEN_IN_LIBC) + if (NOT HAVE_DLOPEN_IN_LIBC) + set(CMAKE_REQUIRED_LIBRARIES dl) + check_symbol_exists(dlopen "dlfcn.h" HAVE_DLOPEN_IN_LIBDL) + endif() + cmake_pop_check_state() + + if (HAVE_DLOPEN_IN_LIBC OR HAVE_DLOPEN_IN_LIBDL) + set(FT_DYNAMIC_HARFBUZZ_ENABLED TRUE) + if (HAVE_DLOPEN_IN_LIBDL) + set(FT_NEED_LIBDL TRUE) + endif() + endif() + endif() + endif() + + if (FT_DYNAMIC_HARFBUZZ_ENABLED) + message(STATUS "Enabled dynamic loading of HarfBuzz library at runtime.") + elseif (FT_REQUIRE_HARFBUZZ) + find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION} REQUIRED) + else () + find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION}) + endif () +endif () + +if (NOT FT_DISABLE_PNG) + if (FT_REQUIRE_PNG) + find_package(PNG REQUIRED) + else () + find_package(PNG) + endif () + # FreePNG calls FindZLIB so unset ZLIB_FOUND to respect FT_DISABLE_ZLIB. + unset(ZLIB_FOUND) +endif () + +if (NOT FT_DISABLE_ZLIB) + if (FT_REQUIRE_ZLIB) + find_package(ZLIB REQUIRED) + else () + find_package(ZLIB) + endif () +endif () + +if (NOT FT_DISABLE_BZIP2) + # Genuine BZip2 does not provide bzip2.pc, but some platforms have + # it. For better dependency in freetype2.pc, bzip2.pc is searched + # regardless of the availability of libbz2. If bzip2.pc is found, + # Requires.private is used instead of Libs.private. + if (FT_REQUIRE_BZIP2) + find_package(BZip2 REQUIRED) + else () + find_package(BZip2) + endif () + pkg_check_modules(PC_BZIP2 bzip2) +endif () + +if (NOT FT_DISABLE_BROTLI) + if (FT_REQUIRE_BROTLI) + find_package(BrotliDec REQUIRED) + else () + find_package(BrotliDec) + endif () +endif () + +# Create the configuration file. +if (UNIX AND NOT WIN32) + check_include_file("unistd.h" HAVE_UNISTD_H) + check_include_file("fcntl.h" HAVE_FCNTL_H) + + file(READ "${PROJECT_SOURCE_DIR}/builds/unix/ftconfig.h.in" + FTCONFIG_H) + if (HAVE_UNISTD_H) + string(REGEX REPLACE + "#undef +(HAVE_UNISTD_H)" "#define \\1 1" + FTCONFIG_H "${FTCONFIG_H}") + endif () + if (HAVE_FCNTL_H) + string(REGEX REPLACE + "#undef +(HAVE_FCNTL_H)" "#define \\1 1" + FTCONFIG_H "${FTCONFIG_H}") + endif () +else () + file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h" + FTCONFIG_H) +endif () + +set(FTCONFIG_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h") +if (EXISTS "${FTCONFIG_H_NAME}") + file(READ "${FTCONFIG_H_NAME}" ORIGINAL_FTCONFIG_H) +else () + set(ORIGINAL_FTCONFIG_H "") +endif () +if (NOT (ORIGINAL_FTCONFIG_H STREQUAL FTCONFIG_H)) + file(WRITE "${FTCONFIG_H_NAME}" "${FTCONFIG_H}") +endif () + + +# Create the options file. +file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftoption.h" + FTOPTION_H) +if (ZLIB_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_SYSTEM_ZLIB) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () +if (BZIP2_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_BZIP2) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () +if (PNG_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_PNG) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () +if (HARFBUZZ_FOUND OR FT_DYNAMIC_HARFBUZZ_ENABLED) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") + if (FT_DYNAMIC_HARFBUZZ_ENABLED) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") + endif () +endif () +if (BROTLIDEC_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_BROTLI) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () + +if (FT_ENABLE_ERROR_STRINGS) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_ERROR_STRINGS) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () + +set(FTOPTION_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h") +if (EXISTS "${FTOPTION_H_NAME}") + file(READ "${FTOPTION_H_NAME}" ORIGINAL_FTOPTION_H) +else () + set(ORIGINAL_FTOPTION_H "") +endif () +if (NOT (ORIGINAL_FTOPTION_H STREQUAL FTOPTION_H)) + file(WRITE "${FTOPTION_H_NAME}" "${FTOPTION_H}") +endif () + + +file(GLOB PUBLIC_HEADERS "include/ft2build.h" "include/freetype/*.h") +file(GLOB PUBLIC_CONFIG_HEADERS "include/freetype/config/*.h") +file(GLOB PRIVATE_HEADERS "include/freetype/internal/*.h") + + +set(BASE_SRCS + src/autofit/autofit.c + src/base/ftbase.c + src/base/ftbbox.c + src/base/ftbdf.c + src/base/ftbitmap.c + src/base/ftcid.c + src/base/ftfstype.c + src/base/ftgasp.c + src/base/ftglyph.c + src/base/ftgxval.c + src/base/ftinit.c + src/base/ftmm.c + src/base/ftotval.c + src/base/ftpatent.c + src/base/ftpfr.c + src/base/ftstroke.c + src/base/ftsynth.c + src/base/fttype1.c + src/base/ftwinfnt.c + src/bdf/bdf.c + src/bzip2/ftbzip2.c + src/cache/ftcache.c + src/cff/cff.c + src/cid/type1cid.c + src/gzip/ftgzip.c + src/lzw/ftlzw.c + src/pcf/pcf.c + src/pfr/pfr.c + src/psaux/psaux.c + src/pshinter/pshinter.c + src/psnames/psnames.c + src/raster/raster.c + src/sdf/sdf.c + src/sfnt/sfnt.c + src/smooth/smooth.c + src/svg/svg.c + src/truetype/truetype.c + src/type1/type1.c + src/type42/type42.c + src/winfonts/winfnt.c +) + +if (WIN32) + list(APPEND BASE_SRCS "builds/windows/ftsystem.c") +elseif (UNIX) + list(APPEND BASE_SRCS "builds/unix/ftsystem.c") +else () + list(APPEND BASE_SRCS "src/base/ftsystem.c") +endif () + +if (WIN32) + enable_language(RC) + list(APPEND BASE_SRCS builds/windows/ftdebug.c + src/base/ftver.rc) +elseif (WINCE) + list(APPEND BASE_SRCS builds/wince/ftdebug.c) +else () + list(APPEND BASE_SRCS src/base/ftdebug.c) +endif () + +if (BUILD_FRAMEWORK) + list(APPEND BASE_SRCS builds/mac/freetype-Info.plist) +endif () + + +if (NOT DISABLE_FORCE_DEBUG_POSTFIX) + set(CMAKE_DEBUG_POSTFIX d) +endif () + + +add_library(freetype + ${PUBLIC_HEADERS} + ${PUBLIC_CONFIG_HEADERS} + ${PRIVATE_HEADERS} + ${BASE_SRCS} +) + +target_compile_definitions( + freetype PRIVATE FT2_BUILD_LIBRARY) + +if (WIN32) + target_compile_definitions( + freetype PRIVATE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_WARNINGS) + if (BUILD_SHARED_LIBS) + target_compile_definitions( + freetype PRIVATE DLL_EXPORT) + endif () +else () + # Windows handles exports with DLL_EXPORT defined above. + set_target_properties(freetype PROPERTIES + C_VISIBILITY_PRESET hidden) +endif () + +if (BUILD_SHARED_LIBS) + set_target_properties(freetype PROPERTIES + VERSION ${LIBRARY_VERSION} + SOVERSION ${LIBRARY_SOVERSION}) +endif () + +# Pick up ftconfig.h and ftoption.h generated above, first. +target_include_directories( + freetype + PUBLIC + $ + $ + $ + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}/include + ${CMAKE_CURRENT_SOURCE_DIR}/include + + # Make available for builds/unix/ftsystem.c. + ${CMAKE_CURRENT_BINARY_DIR}/include/freetype/config +) + + +if (BUILD_FRAMEWORK) + set_property(SOURCE ${PUBLIC_CONFIG_HEADERS} + PROPERTY MACOSX_PACKAGE_LOCATION Headers/config + ) + set_target_properties(freetype PROPERTIES + FRAMEWORK TRUE + MACOSX_FRAMEWORK_INFO_PLIST + ${CMAKE_CURRENT_SOURCE_DIR}/builds/mac/freetype-Info.plist + PUBLIC_HEADER "${PUBLIC_HEADERS}" + XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" + ) +endif () + +# 'freetype-interface' is an interface library, to be accessed with +# `EXPORT_NAME Freetype::Freetype`. This is the target name provided +# by CMake's `FindFreetype.cmake`, so we provide it for compatibility. +add_library(freetype-interface INTERFACE) +set_target_properties(freetype-interface PROPERTIES + EXPORT_NAME Freetype::Freetype + INTERFACE_LINK_LIBRARIES freetype) + +set(PKGCONFIG_REQUIRES "") +set(PKGCONFIG_REQUIRES_PRIVATE "") +set(PKGCONFIG_LIBS "-L\${libdir} -lfreetype") +set(PKGCONFIG_LIBS_PRIVATE "") + +if (ZLIB_FOUND) + target_link_libraries(freetype PRIVATE ZLIB::ZLIB) + list(APPEND PKGCONFIG_REQUIRES_PRIVATE "zlib") +endif () +if (BZIP2_FOUND) + target_link_libraries(freetype PRIVATE BZip2::BZip2) + if (PC_BZIP2_FOUND) + list(APPEND PKGCONFIG_REQUIRES_PRIVATE "bzip2") + else () + list(APPEND PKGCONFIG_LIBS_PRIVATE "-lbz2") + endif () +endif () +if (PNG_FOUND) + target_link_libraries(freetype PRIVATE PNG::PNG) + list(APPEND PKGCONFIG_REQUIRES_PRIVATE "libpng") +endif () +if (FT_DYNAMIC_HARFBUZZ_ENABLED AND FT_NEED_LIBDL) + target_link_libraries(freetype PRIVATE dl) + list(APPEND PKGCONFIG_LIBS_PRIVATE " -ldl") +endif () +if (HarfBuzz_FOUND AND (NOT FT_DYNAMIC_HARFBUZZ_ENABLED)) + target_link_libraries(freetype PRIVATE HarfBuzz::HarfBuzz) + list(APPEND PKGCONFIG_REQUIRES_PRIVATE "harfbuzz >= ${HARFBUZZ_MIN_VERSION}") +endif () +if (BROTLIDEC_FOUND) + target_link_libraries(freetype PRIVATE ${BROTLIDEC_LIBRARIES}) + target_compile_definitions(freetype PRIVATE ${BROTLIDEC_DEFINITIONS}) + target_include_directories(freetype PRIVATE ${BROTLIDEC_INCLUDE_DIRS}) + list(APPEND PKGCONFIG_REQUIRES_PRIVATE "libbrotlidec") +endif () + + +# Installation. +include(GNUInstallDirs) + +if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) + install( + # Note the trailing slash in the argument to `DIRECTORY'! + DIRECTORY ${PROJECT_SOURCE_DIR}/include/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2 + COMPONENT headers + PATTERN "internal" EXCLUDE + PATTERN "ftconfig.h" EXCLUDE + PATTERN "ftoption.h" EXCLUDE) + install( + FILES ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h + ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2/freetype/config + COMPONENT headers) +endif () + +if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) + # Generate the pkg-config file + file(READ "${PROJECT_SOURCE_DIR}/builds/unix/freetype2.in" FREETYPE2_PC_IN) + + string(REPLACE ";" ", " + PKGCONFIG_REQUIRES_PRIVATE "${PKGCONFIG_REQUIRES_PRIVATE}") + + string(REPLACE "%prefix%" ${CMAKE_INSTALL_PREFIX} + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%exec_prefix%" "\${prefix}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%libdir%" "\${prefix}/${CMAKE_INSTALL_LIBDIR}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%includedir%" "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%ft_version%" "${LIBTOOL_CURRENT}.${LIBTOOL_REVISION}.${LIBTOOL_AGE}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + + if (BUILD_SHARED_LIBS) + string(REPLACE "%PKGCONFIG_REQUIRES%" "${PKGCONFIG_REQUIRES}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_REQUIRES_PRIVATE%" "${PKGCONFIG_REQUIRES_PRIVATE}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_LIBS%" "${PKGCONFIG_LIBS}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_LIBS_PRIVATE%" "${PKGCONFIG_LIBS_PRIVATE}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + else () + string(REPLACE "%PKGCONFIG_REQUIRES%" "${PKGCONFIG_REQUIRES} ${PKGCONFIG_REQUIRES_PRIVATE}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_REQUIRES_PRIVATE%" "" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_LIBS%" "${PKGCONFIG_LIBS} ${PKGCONFIG_LIBS_PRIVATE}" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + string(REPLACE "%PKGCONFIG_LIBS_PRIVATE%" "" + FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) + endif () + + set(FREETYPE2_PC_IN_NAME "${PROJECT_BINARY_DIR}/freetype2.pc") + if (EXISTS "${FREETYPE2_PC_IN_NAME}") + file(READ "${FREETYPE2_PC_IN_NAME}" ORIGINAL_FREETYPE2_PC_IN) + else () + set(ORIGINAL_FREETYPE2_PC_IN "") + endif () + if (NOT (ORIGINAL_FREETYPE2_PC_IN STREQUAL FREETYPE2_PC_IN)) + file(WRITE "${FREETYPE2_PC_IN_NAME}" ${FREETYPE2_PC_IN}) + endif () + + install( + FILES ${PROJECT_BINARY_DIR}/freetype2.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + COMPONENT pkgconfig) + + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + ${PROJECT_BINARY_DIR}/freetype-config-version.cmake + VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} + COMPATIBILITY SameMajorVersion) + + install( + TARGETS freetype freetype-interface + EXPORT freetype-targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + FRAMEWORK DESTINATION Library/Frameworks + COMPONENT libraries) + install( + EXPORT freetype-targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype + FILE freetype-config.cmake + COMPONENT headers) + install( + FILES ${PROJECT_BINARY_DIR}/freetype-config-version.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype + COMPONENT headers) +endif () + + +# Packaging. +set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME}) +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The FreeType font rendering library.") +set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT") + +set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}) +set(CPACK_PACKAGE_VERSION + "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + +if (WIN32) + set(CPACK_GENERATOR ZIP) +else () + set(CPACK_GENERATOR TGZ) +endif () + +set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries") +set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C/C++ Headers") +set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION + "Library used to build programs which use FreeType") +set(CPACK_COMPONENT_HEADERS_DESCRIPTION + "C/C++ header files for use with FreeType") +set(CPACK_COMPONENT_HEADERS_DEPENDS libraries) +set(CPACK_COMPONENT_LIBRARIES_GROUP "Development") +set(CPACK_COMPONENT_HEADERS_GROUP "Development") + +include(CPack) + +# EOF diff --git a/local/recipes/libs/freetype2/source/ChangeLog b/local/recipes/libs/freetype2/source/ChangeLog new file mode 100644 index 0000000000..cc07278144 --- /dev/null +++ b/local/recipes/libs/freetype2/source/ChangeLog @@ -0,0 +1,11795 @@ +2026-03-22 Werner Lemberg + + * Version 2.14.3 released. + ========================== + + Tag sources with `VER-2-14-3'. + + * docs/VERSION.TXT: Add entry for version 2.14.3. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.14.2/2.14.3/, s/2142/2143/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. + + * builds/unix/configure.raw (version_info): Set to 26:6:20. + * CMakeLists.txt (VERSION_PATCH): Set to 3. + +2026-03-22 Werner Lemberg + + * subprojects/harfbuzz.wrap: Updated. + +2026-03-22 David Pokora + + [psaux] Avoid stack overflow. + + * src/psaux/t1.decode.c (t1_decoder_parse_charstrings) [op_pop]: Check stack + size. + + Fixes issue #1406. + +2026-03-22 Werner Lemberg + + * src/psaux/t1decide.c (t1_decoder_parse_charstrings): Fix bounds check. + + During charstring processing, the `decoder->len_buildchar` field can be + corrupted. Avoid this by caching this value in a local variable at function + entry. + + Based on a patch submitted by David Pokora . + + Fixes issue #1405. + +2026-03-20 Werner Lemberg + + ttnameid.h: Minor documentation improvement. + +2026-03-20 Werner Lemberg + + * src/sdf/ftsdf.c (sdf_generate_bounding_box): Fix thinko. + + Bug introduced in commit bda1d87f694dd. + + We would need an `FT_NEW_ARRAY_MULT` array... + + Reported as + + https://issues.oss-fuzz.com/issues/494362618 + +2026-03-19 Alexei Podtelezhnikov + + [sfnt/COLRv0] Revise sanity checks. + + This re-implements 6d62076a and potentially fixes #1404. + + * src/sfnt/ttcolr.c (tt_face_get_colr_layer): Rely on validated total num_layers. + +2026-03-19 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix allocation. + + Fixes #1403, proposed by Chris Anderson. + +2026-03-18 Werner Lemberg + + * src/sdf/ftsdf.c (sdf_generate_bounding_box): Fix allocation. + + Reported in + + https://mail.gnu.org/archive/html/freetype-devel/2026-02/msg00005.html + +2026-03-11 Werner Lemberg + + Update all copyright notices. + +2026-03-10 Alexei Podtelezhnikov + + .gitlab-ci.yml: Upgrade Windows pipelines. + +2026-03-10 Alexei Podtelezhnikov + + [base] Reintroduce overall rendering limits. + + * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Limit absolute + outline coordinnates to prevent integer issues downstream. + +2026-03-10 Alexei Podtelezhnikov + + * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fix memory leak. + + This leak was introduced in 85c8efe0afa5ad by overlooking the + direct `ft_bitmap_glyph_init` call (now gone). Fixes #1399, + also reported earlier: + https://issues.oss-fuzz.com/issues/482909897. + +2026-03-10 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Conic_To, Cubic_To): Avoid UB. + + Fixes #1396. + +2026-03-10 Alexei Podtelezhnikov + + [stroker] Actually validate outlines. + + Fixes #1400. + + * src/base/ftstroke.c (FT_Glyph_Stroke): Check for `GetCount` error. + (ft_stroke_border_get_counts): Actually return expected error. + (FT_Glyph_Stroke): Minor. + +2026-03-09 Miguel Sousa <@miguelsousa> + + * src/sfnt/ttobjs.c (tt_size_init_bytecode): Be more generous. + + Fixes issue #1137. + +2026-03-09 Werner Lemberg + + * src/sfnt/ttgpos.c (tt_face_load_gpos): Correctly release `gpos`. + + This is a follow-up to issue #1398. + +2026-03-09 Dominik Röttsches + + [sfnt] Use array count in sanitization of `BaseGlyphPaintRecord` list. + + * src/sfnt/ttcolr.c (tt_face_load_colr): Compute correct length + of `BaseGlyphPaintRecord` array size. + + Fixes issue #1397. + +2026-03-09 Werner Lemberg + + * src/sfnt/ttgpos.c (tt_face_validate_pair_pos2): Correct limit check. + + Fixes issue #1398. + +2026-03-09 Werner Lemberg + + * src/truetype/ttgload.c (load_truetype_glyph): Limit recursion. + + Fixes issue #1395. + +2026-03-08 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Set_High_Precision): Limit size. + + This should avoid integer overflows: + https://issues.oss-fuzz.com/issues/490433932 + https://issues.oss-fuzz.com/issues/490464129 + +2026-03-06 Werner Lemberg + + [cid] Add boundary check in incremental interface. + + * src/cid/cidgload.c (cid_load_glyph) [FT_CONFIG_OPTION_INCREMENTAL]: + Validate `fd_select`. + + Fixes issue #1394. + +2026-03-06 Werner Lemberg + + * src/sfnt/ttgpos.c (tt_face_get_pair_pos1_kerning): Typo. + + This could lead to make FreeType miss some kerning pairs. + + Fixes issue #1393. + +2026-03-06 Werner Lemberg + + * src/sfnt/ttgpos.c (tt_face_get_class): Fix range check. + + Fixes issue #1392. + +2026-03-06 Alexei Podtelezhnikov + + [base] Adjust rendering limits. + + * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Check width and + height directly. Fixes #1390. + +2026-03-03 Debbie Goldsmith + + [truetype] Reject fonts without 'glyf' and 'loca' table. + + * src/truetype/ttobjs.c (tt_face_init): Add check. + +2026-03-03 Werner Lemberg + + Minor whitespace. + +2026-03-03 Werner Lemberg + + CMakeLists.txt: Formatting. + +2026-03-02 Werner Lemberg + + * subprojects/*: Fix meson wrap files. + +2026-03-01 Werner Lemberg + + * Version 2.14.2 released. + ========================== + + Tag sources with `VER-2-14-2'. + + * docs/VERSION.TXT: Add entry for version 2.14.2. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.14.1/2.14.2/, s/2141/2142/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. + + * builds/unix/configure.raw (version_info): Set to 26:5:20. + * CMakeLists.txt (VERSION_PATCH): Set to 2. + +2026-03-01 Werner Lemberg + + * subprojects/*.wrap: Updated. + +2026-03-01 Werner Lemberg + + Very minor doc fixes. + +2026-02-23 Alexei Podtelezhnikov + + [truetype] Clean up TT_Load_Context. + + * src/truetype/ttinterp.c (TT_Load_Context): Remove return type. + * src/truetype/ttinterp.h (TT_Load_Context): Update signature. + * src/truetype/ttobjs.c (tt_size_run_{fpgm,prep}): Update callers. + * src/truetype/ttgload.c (tt_loader_init): Ditto. + +2026-02-21 Alexei Podtelezhnikov + + [truetype] Use FT_QALLOC_MULT. + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Here. + This call provides builtin overflow protection. See #1382. + +2026-02-21 Alexei Podtelezhnikov + + * src/base/ftbitmap.c (FT_Bitmap_Blend): Use FT_ALLOC_MULT. + + This call is fortified with builtin overflow checks. + +2026-02-21 Alexei Podtelezhnikov + + [sdf] Substitute allocation macros. + + * src/sdf/ftsdf.c (sdf_generate_bounding_box, + sdf_generate_with_overlaps): Use more robust macros. + +2026-02-21 Alexei Podtelezhnikov + + [base] Clean up bitmap allocations. + + * src/base/src/base/ftobjs.c (ft_glyphslot_alloc_bitmap): Use preset + dimensions and call FT_MEM_ALLOC_MULT. + * include/freetype/internal/ftobjs.h (ft_glyphslot_alloc_bitmap): + Updated signature... + * src/*: ... and all callers. + +2026-02-20 Alexei Podtelezhnikov + + * src/sfnt/ttcolr.c (tt_face_colr_blend_layer): Use FT_ALLOC_MULT. + + Fixes #1389. The overflow is detected in ft_mem_qrealloc. + +2026-02-08 Alexei Podtelezhnikov + + * src/base/ftglyph.c (ft_bitmap_glyph_init): Always copy in full. + + Other glyph formats never perform lazy copy. Fixes #1385. + +2026-02-07 Alexei Podtelezhnikov + + * include/freetype/config/mac-support.h: Check for FT_MACINTOSH. + + Fixes warnings reported in !414. + +2026-02-04 Alexei Podtelezhnikov + + [pshinter] Merge extrema and inflex analyses. + + Any point on the horizontal or vertical segment, which can either + be either extreme or inflection point is now marked. This makes + separate inflection algorithm unnecessary. This simplifies the + algorithm without noticeable rendering differences. + + * src/pshinter/pshalgo.c (psh_glyph_compute_extrema): Rewrite + to detect both extrema and inflection points. Determine the + their direction instantly. + +2026-02-04 Alexei Podtelezhnikov + + * src/sfnt/ttgpos.c (tt_face_validate_*): Fix check signedness. + + This is an alternative to !398 without signed -1. + +2026-01-28 Alexei Podtelezhnikov + + * src/sfnt/sfwoff2.c (reconstruct_glyf): Revise variables. + + This should fix #1379 while resonstructing the code intent. + +2026-01-26 Alexei Podtelezhnikov + + [base, smooth] Implement direct LCD filtering. + + Applying an LCD filter to spans rather than the entire image improves + the performance of ClearType-like rendering by about 40% at 32 ppem + and much more at larger sizes. Small rounding differences are expected. + + * src/smooth/ftsmooth.c (ft_smooth_raster_lcd, ft_smooth_lcd_spans, + ft_smooth_raster_lcdv, ft_smooth_lcdv_spans, TOrigin): Implement it. + * include/freetype/internal/ftobjs.h (FT_LibraryRec): lcd_filter_func gone. + * src/base/ftlcdfil.c (ft_lcd_filter_fir): Removed. + (ft_lcd_padding): Use padding sufficient for any 5-tap filter. + (FT_Library_SetLcdFilterWeights, FT_Library_SetLcdFilter): Updated. + * docs/CHANGES: Updated. + +2026-01-25 Alexei Podtelezhnikov + + [base, smooth] Remove LCD filter from face properties. + + This removes the internal face property that sets the filtering weights. + The global filtering algorithms and weights are now optimized to work + well under all conditions. + + * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Do it. + * include/freetype/freetype.h (FT_Face_Properties): Revised docs. + * include/freetype/ftparams.h (FT_PARAM_TAG_LCD_FILTER_WEIGHTS): Ditto. + * src/base/ftlcdfil.c (ft_lcd_padding): Updated. + * src/base/ftobjs.c (ft_open_face_internal, FT_Face_Properties): Ditto. + * src/smooth/ftsmooth.c (ft_smooth_render): Ditto. + * docs/CHANGES: Updated. + +2026-01-25 Alexei Podtelezhnikov + + [base] Remove legacy LCD filter. + + * src/base/ftlcdfil.c (_ft_lcd_filter_legacy): Removed. + (FT_Library_SetLcdFilter): Updated. + * include/freetype/ftlcdfil.h (FT_LcdFilter): Updated. + * doc/CHANGES: Updated. + +2026-01-22 Alexei Podtelezhnikov + + * src/svg/ftsvg.c: Use FT_ALLOC_MULT. + + Fixes #1378. + +2026-01-19 Harish Raja Selvan + + * .gitlab-ci.yml: Add MSBuild for ARM64. + +2026-01-18 Alexei Podtelezhnikov + + [base, smooth] Fortify direct rendering. + + This is a better fix for #1384, which is rather about signed overflow. + + * include/freetype/ftimage.h (FT_Span): Use unsigned position. + * src/smooth/ftgrays.c (gray_sweep_direct): Sync with FT_Span. + * src/smooth/ftsmooth.c (ft_smooth_render): Remove redundant shift. + * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Readjust limits. + +2026-01-16 Alexei Podtelezhnikov + + [base] Maintain overall rendering limits. + + Reject rendering of outlines that stretch beyond 32767 pixels from + the origin, which is further restricted to 10922 horizontal pixels + for LCD rendering with ClearType-like algorithms. 16-bit FT_Span is + one of the reasons to have this limit imposed, fixes #1384. + + * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Impose global + rendering limits. + +2026-01-13 Harry Sintonen + + * src/autofit/ft-hb-ft.c (ft_hb_ft_reference_table): Use `ft_sfree`. + +2026-01-10 Alexei Podtelezhnikov + + [base] Set ppem-based rendering limits. + + Many rendering timeouts occur when the outline stretches far beyond + the Em size. Limiting the bounding box to 10 Em should reject such + requests. It is still to possible scribble excessively within the set + limits. At least, the memory usage will be curtained. + + * src/base/ftobjs.c (ft_glyphslot_free_bitmap): Revise limits based + on ppem when available. + +2026-01-07 Werner Lemberg + + [autofit] Prevent signed integer overflow. + + Reported as + + https://issues.oss-fuzz.com/issues/473887994 + https://issues.oss-fuzz.com/issues/473912282 + + * src/autofit/afatin.c (af_latin_align_top_tilde, + af_latin_align_bottom_tilde), src/autofit/afloader.c + (af_loader_load_glyph): Use `FT_PIX_ROUND_LONG`, `FT_PIX_CEIL_LONG`, and + `SUB_LONG`. + +2026-01-06 Werner Lemberg + + [truetype] Prevent signed integer overflow. + + Reported as + + https://issues.oss-fuzz.com/issues/473582311 + + * src/truetype/ttinterp.c (Ins_MDRP): Use `ADD_LONG` and `SUB_LONG`. + +2026-01-06 Werner Lemberg + + [autofit] Prevent signed integer overflow. + + Reported as + + https://issues.oss-fuzz.com/issues/473582304 + + * src/autofit/afloader.c (af_loader_load_glyph): Use `ADD_LONG`. + +2026-01-05 Ben Wagner + + Fix leak of exec->FDefs in tt_size_init_bytecode + +2026-01-04 Werner Lemberg + + [autofit] Prevent signed integer overflow. + + Reported as + + https://issues.oss-fuzz.com/issues/471525116 + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde, + af_latin_stretch_bottom_tilde): Use `MUL_LONG`. + +2026-01-04 Celeste Liu + + [base] Fix support for format 13 charmaps. + + According to the OpenType specification of the 'cmap' table, the pair (0,6) + for platform and encoding IDs is used for format 13 charmap tables. Commit + ba6f3e18 (from 2017-01-17) introduced the `TT_APPLE_ID_FULL_UNICODE` macro + (i.e., encoding_id == 6, added to OpenType 1.8); however, the corresponding + cmap selection code wasn't updated. + + Unicode's Last Resort font (https://github.com/unicode-org/last-resort-font) + can be used to test a format 13 charmap. + + Fixes issue #1383. + + * src/base/ftobjc.s (find_unicode_charmap): Support + `TT_APPLE_ID_FULL_UNICODE`. + +2026-01-03 Werner Lemberg + + [ttgxvar] Check for overflow in array size computation. + + Problem reported and analyzed by povcfe . + + Fixes issue #1382. + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Do it. + +2025-12-11 Ben Wagner + + Fix leak of exec in tt_size_init_bytecode + + * src/truetype/ttobjs.c (tt_size_init_bytecode): Call `TT_Done_Context` + on `exec` if it has not yet been assigned to `size->context`. + + Bug: https://issues.oss-fuzz.com/issues/467782706 + +2025-12-05 Alexei Podtelezhnikov + + * src/pcf/pcfdrivr.c (PCF_Face_Init): Handle charmap errors. + + This is a quick fix for #1377, more clean-ups to follow. + +2025-12-04 Werner Lemberg + + * src/sfnt/ttbdf.c (tt_face_load_bdf_props): Fix size test. + + This prevents a potential overflow on 32bit systems. + + Problem reported by Zhao Zijie . + +2025-12-04 Werner Lemberg + + Improve documentation of the 'BDF ' table as used in X11 `.otb` files. + + Also do some minor code formatting. + +2025-12-02 Werner Lemberg + + * src/otvalid/otvcommn.c (otv_FeatureList_validate): Fix array size check. + + Reported by Marc Schönefeld. + +2025-12-02 Werner Lemberg + + [otvalid] Minor formatting and comment fixes. + +2025-11-30 Alexei Podtelezhnikov + + [pshinter] Slightly simplify BlueShift application. + + * src/pshinter/pshglob.c (psh_blues_scale_zones): Just divide. + +2025-11-30 Alexei Podtelezhnikov + + [pshinter] Slightly simplify BlueScale application. + + * src/pshinter/pshglob.c (psh_globals_new): Update condition and + properly rescale BlueScale. + (psh_blues_scale_zones): Use it directly. + +2025-11-30 Alexei Podtelezhnikov + + [pshinter] Fix up degenerate contours. + + * src/pshinter/pshalgo.c (psh_glyph_compute_extrema): Use correct + goto label and shortcut degenerate contours. + +2025-11-29 Alexei Podtelezhnikov + + * src/base/ftutil.c (FT_List_Finalize): Delay reading 'data'. + + Fixes #1376. + +2025-11-29 Werner Lemberg + + * src/autofit/afgsub.c (af_parse_gsub): Always init `gsub_lookup_count`. + + Problem reported by Marc Schönefeld. + +2025-11-28 Werner Lemberg + + [autofit] Fix handling of invalid GSUB lookup indices. + + Problem reported by Marc Schönefeld. + + HarfBuzz validates everything while processing OpenType tables in fonts. + However, the data returned by `hb_ot_layout_collect_lookups` is not + validated. This commit adds proper checks. + + * src/autofit/afglobal.h (AF_FaceGlobals): New field `gsub_lookup_count`. + * src/autofit/afgsub.c (af_parse_gsub): Set it. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Test result of + `hb_set_next`. + +2025-11-28 Werner Lemberg + + [sfnt] Fix GPOS handling. + + Problem reported by Marc Schönefeld. + + * src/sfnt/ttgpos.c (tt_face_validate_lookup_table, tt_face_load_gpos): Fix + counting of fitting subtables by correctly rejecting invalid data. + +2025-11-28 Alexei Podtelezhnikov + + * builds/toplevel.mk (dist): Replace `for` with `find ... -exec`. + +2025-11-27 Suzuki, Toshiya (鈴木俊哉) + + * builds/toplevel.mk (dist): `-wholename` -> `-name`. + + POSIX does not request `find` to support '-wholename'. + `find ... -wholename '*/.git' -prune -o ...` can be + rewritten as `find ... -name '*/.git' -prune -o ...` + for POSIX find. Fixes issue #1370. + +2025-11-27 suzuki toshiya + + * .gitlab-ci.yml: update macos image to Tahoe:2025-09-30. + + Fixes issue #1394. + +2025-11-17 Alexei Podtelezhnikov + + * builds/toplevel.mk (dist): Improve compatibility with BSD tar. + +2025-11-05 Alexei Podtelezhnikov + + [cff] Handle underline position and thickness as integers. + + This is done for consistency with Type 1 fonts. + + * include/freetype/internal/cfftypes.h (CFF_FontRecDic): Change + the variable types. + * include/cff/cfftoken.h (CFF_FontRecDic): Change the parsing macros. + * src/cff/cffobjs.c (cff_face_init), src/cff/cffload.c (cff_subfont_load), + src/cff/cffdrivr.c (cff_ps_get_font_info): Update users. + +2025-11-05 suzuki toshiya + + * src/tools/apinames.c (names_add): Remove unrequired cast of + `nm->hash` to int, which has been unrequired since eba2781a. + + Fixes issue #1361. + +2025-11-05 Suzuki, Toshiya (鈴木俊哉) + + * src/autofit/afgsub.c: Evaluate FT_CONFIG_OPTION_USE_HARFBUZZ + after and others. + + Fixes issue #1360. + +2025-11-05 Alexei Podtelezhnikov + + Minor. + +2025-11-05 Alexei Podtelezhnikov + + [cff,cid,type1,type42] Fix up `PS_FontInfo`. + + The italic angle is commonly specified in fractional degrees in + Type 1 fonts and its derivatives. This change clarifies and fixes + these values. Note that CFF fonts has always reported them as such, + but truncated the underline position and thickness. Fixes #1367. + + * include/freetype/t1tables.h (PS_FontInfoRec): + Use FT_Fixed for italic_angle. + * src/cid/cidtoken.h, src/type1/t1tokens.h, src/type42/t42parse.c: + Modify the italic_angle token. + * src/cff/cffdrivr.c (cff_ps_get_font_info): Fix the underline + position and thickness. + + * docs/CHANGES: Note this change. + +2025-10-26 Alexei Podtelezhnikov + + * src/base/ftadvanc.c (ft_face_scale_advances_): Adjust scaling. + + This is safe because advances are short originally. + +2025-10-26 Alexei Podtelezhnikov + + [base] Refactor obtaining advances. + + * src/base/ftadvanc.c (ft_load_advances): New separate function to + handle slow advances. + (FT_Get_Advance, FT_Get_Advances): Updated. + +2025-10-17 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (tt_loader_init): Reset compatibility. + + This may fix #1262, credits to Honnesh Ramachandra. + https://lists.nongnu.org/archive/html/freetype-devel/2025-10/msg00004.html + +2025-09-28 Werner Lemberg + + [autofit] Prevent signed integer overflow. + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde, + af_latin_stretch_bottom_tilde, af_latin_align_top_tilde, + af_latin_align_bottom_tilde, + af_glyph_hints_apply_vertical_separation_adjustments): Use `ADD_LONG` and + `SUB_LONG` for values that involve `FT_LONG_MAX` and `FT_LONG_MIN`. + + Fixes issue #1363. + +2025-09-24 Werner Lemberg + + * src/bdf/bdfdriver.c (BDF_Glyph_Load): Use `bdf->bdffont->bpp` directly. + + Fixes issue #1362. + +2025-09-18 Alan Coopersmith + + * tests/README.md: Fix a script name. + +2025-09-14 Werner Lemberg + + [build] Don't use non-POSIX escapes in sed regexp. + + * builds/unix/configure.raw (ftoption_set, ftoption_unset): Avoid `\>`. + + Fixes issue #1358. + +2025-09-14 Werner Lemberg + + Typo. + +2025-09-12 Alexei Podtelezhnikov + + * include/freetype/internal/ftobjs.h (ft_default_raster): Relic removed. + +2025-09-11 Werner Lemberg + + * Version 2.14.1 released. + ========================== + + Tag sources with `VER-2-14-1'. + + * docs/VERSION.TXT: Add entry for version 2.14.1. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.14.0/2.14.1/, s/2140/2141/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 26:4:20. + * CMakeLists.txt (VERSION_PATCH): Set to 1. + +2025-09-10 Behdad Esfahbod + + [base] Fix return values of two Font Variation functions. + + * src/base/ftmm.c (FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): Do it. + + Fixes issue #1355. + +2025-09-10 Werner Lemberg + + * src/autofit/afgsub.c (af_map_lookup): Fix handling of lookup type 7. + + Fixes issue #1356. + +2025-09-08 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_Run_Context): Fix IUP tracking bits. + + Correctly fixes #1353 and #1349. + +2025-09-08 Alexei Podtelezhnikov + + Typo! + +2025-09-08 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_Run_Context): Reset IUP tracking bits. + + Fixes #1353. + +2025-09-08 Behdad Esfahbod + + [autofit] Fix HarfBuzz calling. + + * src/autofit/afadjust.c (af_reverse_character_map_new) + [FT_CONFIG_OPTION_USE_HARFBUZZ]: Use `ft_hb_enabled`. + + Fixes issue #1354. + +2025-09-08 Werner Lemberg + + * docs/release: Use `sshpass` for SourceForge.net password. + +2025-09-08 Werner Lemberg + + * docs/release: Fix `scp` usage with OpenSSH version >= 9.0. + + Starting with this version, OpenSSH uses `scp` with the SFTP protocol as the + default. However, SFTP is disabled on savannah.gnu.org since January 2025. + +2025-09-06 Werner Lemberg + + * Version 2.14.0 released. + ========================== + + Tag sources with `VER-2-14-0'. + + * docs/VERSION.TXT: Add entry for version 2.14.0. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.13.3/2.14.0/, s/2133/2140/. + + * include/freetype/freetype.h (FREETYPE_MINOR): Set to 14. + (FREETYPE_PATCH): Set to 0. + + * builds/unix/configure.raw (version_info): Set to 26:3:20. + * CMakeLists.txt (VERSION_MINOR): Set to 14. + (VERSION_PATCH): Set to 0. + +2025-09-06 Werner Lemberg + + * builds/toplevel.mk (do-dist): Download shallow clone of `config.git`. + + No need for any other commit than the current one. + +2025-09-06 Werner Lemberg + + Update all copyright notices. + +2025-09-05 Werner Lemberg + + src/sfnt/ttload.c (tt_face_load_any): Correctly handle font containers. + + Reported as + + https://issues.oss-fuzz.com/issues/424613326 + +2025-09-05 Jouk Jansen + + Clean up OpenVMS support. + + This avoids cluttering the source code with VMS-specific changes. + + * include/freetype/internal/ftcalc.h [__VMS], src/base/ftcalc.c + [vms_auto64_source]: Remove. + + * builds/vms/patch_ftcalc.sed: New file. + + * vms_make.com: Change macro definitions while this script is running; we + use `GNU sed` to inject the necessary preprocessor code on the fly. + +2025-09-01 Alexei Podtelezhnikov + + * src/psaux/psauxmod.h (psaux_driver_class): Removed declaration. + +2025-08-29 Alexei Podtelezhnikov + + [base] Use const FT_Module_Class. + + This is intended to warn against modifying any fields in the class, + at compile-time and avoid crashes at run-time. + + * include/freetype/internal/ftobjs.h (FT_ModuleRec): Do it. + * src/base/ftobjs.c (Destroy_Module, FT_Add_Module): Updated. + +2025-08-27 Alexei Podtelezhnikov + + * src/base/ftobjs.c (FT_Load_Glyph): Reduces scope of 'ttface'. + +2025-08-25 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c: Fix some builds. + +2025-08-23 Werner Lemberg + + * subprojects/*.wrap: Updated. + +2025-08-23 Werner Lemberg + + Updating `CHANGES` file; minor fixes elsewhere (mostly formatting). + +2025-08-20 Alexei Podtelezhnikov + + [truetype] Fix compilation without bytecode. + + Fixes #1351 and various warnings about unused variables. + + * src/truetype/ttinterp.c: Put the entire body under #ifdef. + * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Relocate + some declarations. + * src/truetype/ttinterp.h: Remove some #ifdef conditions. + * src/truetype/ttobjs.c (tt_size_done): Modified. + +2025-08-14 Alexei Podtelezhnikov + + [truetype] Small fix in the incremental interface (again). + + Fixes #1299, last [-Wdangling-pointer=] warning. + + * src/truetype/ttgload.c (load_truetype_glyph): Restore original stream + on exit unconditionally. + +2025-08-14 Alexei Podtelezhnikov + + [truetype] Small fix in the incremental interface. + + Fixes #1299, last [-Wdangling-pointer=] warning. + + * src/truetype/ttgload.c (load_truetype_glyph): Restore original stream + on exit. + +2025-08-14 Alexei Podtelezhnikov + + * src/autofit/afgsub.c: Fix a warning. + + Fixes [-Wunused-function] warning without HarfBuzz. + +2025-08-11 Alexei Podtelezhnikov + + * */ftoption.h: Update C99 wording. + +2025-08-11 Alexei Podtelezhnikov + + * */ftoption.h: Note C99 compliance. + +2025-08-08 Behdad Esfahbod + + [ttgxvar] Fix caching of scalars when there are intermediate tuples. + + For example, with `GoogleSansFlex-Regular.ttf` at ROND=100, the 'Q' glyph + was misrendering. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Reset `tupleScalars` + earlier. + +2025-08-05 Jouk Jansen + + Improvements to OpenVMS support. + + * include/freetype/internal/ftcalc.h [__VMS]: Undefine `FT_MulFix`. + + * src/base/ftcalc.c [vms_auto64_source]: Define `FT_MulFix`. + + * vms_make.com: Also create 32bit version of the FreeType library. + +2025-08-04 Alexei Podtelezhnikov + + * docs/CHANGES: Mention 'ftmulti' improvements. + +2025-08-02 Alexei Podtelezhnikov + + [type1/MM] Correctly reset the default instance. + + Call T1_Set_MM_WeightVector, which actually sets default weights, + instead of TT_Set_MM_Blend, which just centers the axes. + + * src/type1/t1load.c (T1_Reset_MM_Blend): Do it. + +2025-08-01 Alexei Podtelezhnikov + + [truetype/v40] Fix ROUND_XY_TO_GRID handling. + + Fixes #1346. + + * src/truetype/ttgload.c (TT_Process_Composite_Component): Round + the x-position unless in backward_compatibility mode. + +2025-07-30 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (Ins_MDRP,MIRP): Small tweak. + +2025-07-30 Alexei Podtelezhnikov + + [truetype] Tweak size management. + + * include/freetype/internal/services/svmetric.h (FT_Size_Reset_Func): + Update typedef, do not return error. + * src/truetype/ttobjs.c (tt_size_reset_height): Move the PPem error + handling from here... + (tt_size_reset): ... to here to improve readability. + src/truetype/ttobjs.h (tt_size_reset_height): Update prototype. + +2025-07-30 Alexei Podtelezhnikov + + [truetype] Relocate color compensation (cont'd). + + * src/truetype/ttinterp.c (Inc_MDAR,MIAP,MDRP,MIRP): Fix forgotten + rounding. + +2025-07-29 Alexei Podtelezhnikov + + [truetype] Fix EVEN and ODD instructions. + + It is possible to have a fractional part after rounding when rounding + to half-grid or super-rounding. The specs call to ignore the fractional + part in that case. + + ^ src/truetype/ttinterp.c (Ins_EVEN, Ins_ODD): Fix mask. + +2025-07-28 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c: Fix comments. + +2025-07-28 Alexei Podtelezhnikov + + * src/truetype/ttinterp.h (TT_Round_Func): Fix argument. + + Fixes #1347: function type mismatch. + +2025-07-27 Alexei Podtelezhnikov + + [truetype] Clean up size validation. + + Rely on non-zero ppem to validate the size object. + + * src/truetype/ttobjs.h (TT_Size_Merics): Remove the `valid` flag. + * src/truetype/ttobjs.c (tt_size_init,done,reset,reset_height): Updated. + * src/truetype/ttgload.c (TT_Load_Glyph): Check for non-zero ppem. + +2025-07-27 Alexei Podtelezhnikov + + [truetype] Relocate color compensation. + + The rounding color compensation, which is not used by FreeType, belongs + to GS. This is a more logical place for it, next to round_state. + + * src/truetype/ttobjs.h (TT_GraphicsState): Move compensations here... + (TT_Size_Metrics): ... from here. + * src/truetype/ttobjs.c (tt_size_init_bytecode): Updated. + * src/truetype/ttinterp.c (tt_default_graphics_state): Updated. + (Ins_ROUND,NROUND,EVEN,ODD): Updated. + (Round_*): Updated. + +2025-07-26 Alexei Podtelezhnikov + + [smooth] Remove usage of setjmp and longjmp. + + To support WASM targets with slow or unsupported setjmp and longjmp, + we eliminate these calls in favor of an error propagation model. + When gray_set_cell is out of cells, it raises an exception which is + later handled in gray_convert_glyph_inner. + This is a less invasive alternative to !385. + + * src/smooth/ftgrays.c (gray_set_cell): Raise the overflow exception + and redirect all work to `cell_null`. + (gray_move,line,conic,cubic_to): Return the exception. + (gray_convert_glyph, gray_convert_glyph_inner): Handle the exception. + +2025-07-05 Werner Lemberg + + [sfnt] Rewrite GPOS kerning support. (2/2) + + The previous code had a fundamental flaw: it didn't validate the necessary + parts of the 'GPOS' table before accessing it, causing crashes with + malformed data (since `TT_CONFIG_OPTION_GPOS_KERNING` is off by default, + standard fuzzers don't catch these problems). Additionally, it did a lot of + parsing while accessing kerning data, making it rather slow. + + The new implementation fixes this. After validation, offsets to the 'GPOS' + lookup subtables used in the 'kern' feature that correspond to 'simple' + kerning (i.e., similar to 'kern' table kerning) are stored in `TT_Face`; + this greatly simplifies and accelerates access to the kerning data. + + Testing with font `SF-Pro.ttf` version '1.00', the validation time for the + 'GPOS' table increases the start-up time of `FT_New_Face` by less than 1%, + while calls to `FT_Get_Kerning` become about 3.5 times faster. + + * include/freetype/internal (gpos_kerning_available): Replace with... + (gpos_lookups_kerning, num_gpos_lookups_kerning): ... these new fields. + Update callers. + + * src/ttgpos.c [TT_CONFIG_OPTION_GPOS_KERNING]: A new implementation. + +2025-07-05 Werner Lemberg + + [sfnt] Rewrite GPOS kerning support. (1/2) + + This commit removes the previous implementation. + +2025-07-05 Werner Lemberg + + [cff] Support GPOS kerning. + + * src/cff/cffdrivr.c (cff_get_kerning) [TT_CONFIG_OPTION_GPOS_KERNING]: Add + code similar to the one in `tt_get_kerning`. + +2025-07-05 Werner Lemberg + + * src/sfnt/ttkern.h (TT_FACE_HAS_KERNING): Remove macro. + + Given that we also support (limited) 'GPOS' table kerning if + `TT_CONFIG_OPTION_GPOS_KERNING` is defined, the name of this macro is + misleading since it only is true for 'kern' table kerning. + + * src/sfnt/sfobjs.c (sfn_load_face): Replace `TT_FACE_HAS_KERNING` with + plain code. + +2025-07-05 Werner Lemberg + + [autofit] Remove `globals->gsub_length`. + + We completely validate the accessed data from the 'GSUB' table, making this + field unnecessary. + + * src/autofit/afglobal.h (AF_FaceGlobalsRec): Remove `gsub_length` field. + + * src/autofit/afglobal.c (af_face_globals_new), src/autofit/afgsub.c + (af_parse_gsub): Updated. + +2025-07-01 Werner Lemberg + + * src/truetype/ttobjs.c (tt_size_init_bytecode): Correct previous fix. + + `FT_NEW_ARRAY` expects a signed value, not an unsigned one. + +2025-07-01 Werner Lemberg + + * src/autofit/afgsub.c: Include `tttables.h` and `afgsub.h`. + + This fixes 'make multi' compilation with clang. + + Reported as + + https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/381#note_2984610 + +2025-07-01 Werner Lemberg + + Various minor fixes. + + As reported by clang 19. + + * src/autofit/afadjust.c (adjustment_database): Make it static. + + * src/base/ftdbgmem.c (FT_MEM_SIZE_MIN): Remove unused macro. + + * src/psaux/psobjs.c (skip_procedure), src/truetype/ttinterp.c (Ins_IF, + Ins_ELSE, Ins_FDEF, Ins_IDEF): Add `default` clause. + +2025-07-01 Werner Lemberg + + More signedness fixes. + + As reported by clang 19. + + * src/autofit/afadjust.c (add_substitute): Make first argument unsigned. + Update all callers. + Other minor signedness fixes. + (af_reverse_character_map_new): Minor signedness fixes. + + * src/autofit/afgsub.c (af_hash_insert): Minor signedness fixes. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Make third + argument unsigned. + Update all callers. + Other minor signedness fixes. + (af_latin_hints_apply): Minor signedness fixes. + + * src/bdf/bdflib.c (bdf_parse_bitmap_): Minor signedness fix. + + * src/truetype/ttobjs.c (tt_size_init_bytecode): Minor signedness fix. + +2025-07-01 Werner Lemberg + + */*: Fix trivial signedness issues with format strings in trace messages. + + As reported with clang 19's `-Wformat` option. + +2025-07-01 Werner Lemberg + + Fix `make multi`. + + Reported as + + https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/381#note_2984253 + + * src/base/fthash.c: Include `ftobjs.h`. + * src/autofit/afgsub.c: Include `afglobal.h`. + +2025-06-30 Alexei Podtelezhnikov + + * MSBuild.sln: Minor. + +2025-06-29 Werner Lemberg + + [doc] Revise font variation API. + +2025-06-29 Werner Lemberg + + [doc] Use 'Adobe MM', 'TrueType GX', and 'OpenType Font Variations'. + +2025-06-26 Werner Lemberg + + Set minimum HarfBuzz version back to 2.0.0. + + Due to the new GSUB parsing we no longer need + `hb_ot_layout_lookup_get_glyph_alternates`. + + This partially reverts commit 5d2fd7608a9. + + * CMakeLists.txt (HARFBUZZ_MIN_VERSION), meson.build (harfbuzz_dep), + builds/unix/configure.raw (harfbuzz_pkg): Set version to 2.0.0. + + * src/autofit/ft-hb-decls.h: Remove entry for + `hb_ot_layout_lookup_get_glyph_alternates`. + +2025-06-26 Werner Lemberg + + [autofit] Speed up computation of `af_reverse_character_map_new`. (4/4) + + With this commit, the start-up time for creating the reverse character map + gets reduced from more than 300% to about 25% (as tested with `arial.ttf` + version 7.00). + + * src/autofit/afadjust.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include + `afgsub.h`. + (add_substitute): New auxiliary function to recursively add elements to + the reverse cmap. + (af_reverse_character_map_new): New code that replaces the old code + removed in the previous commit. + +2025-06-26 Werner Lemberg + + [autofit] Speed up computation of `af_reverse_character_map_new`. (3/4) + + Rip out some HarfBuzz code of `af_reverse_character_map_new`. The new code + comes immediately in a follow-up commit, making it easier to follow the + changes. + + * src/autofit/afadjust.c (af_get_glyph_alternates_helper, + af_get_glyph_alternates): Remove. + (af_reverse_character_map_new): Remove code to create the `*map` hash. + +2025-06-26 Werner Lemberg + + [autofit] Speed up computation of `af_reverse_character_map_new`. (2/4) + + Create an array of GSUB lookup indices for `SingleSubst` and + `AlternateSubst` lookup types to exit early if we have different types. + + Also improve tracing. + + * src/autofit/afglobal.h (AF_FaceGlobals) [FT_CONFIG_OPTION_USE_HARFBUZZ]: + New fields `gsub_length`, `gsub`, and `gsub_lookups_single_alternate`. + + * src/autofit/afglobal.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include + `afgsub.h`. + (af_face_globals_new) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call + `af_parse_gsub` to fill `gsub_lookups_single_alternate`. + (af_face_globals_free): Updated. + + * src/autofit/afadjust.c (af_get_glyph_alternates_helper): Exit early if we + possible. + (af_reverse_character_map_new): Trace GSUB lookup indices to be checked. + +2025-06-26 Werner Lemberg + + [autofit] Speed up computation of `af_reverse_character_map_new`. (1/4) + + Using HarfBuzz's API functions to construct the reverse map is too slow; we + have to call `hb_ot_layout_lookup_get_glyph_alternates` far too often + because it can only handle a single glyph at a time. For this reason we are + going to parse the GSUB table by ourselves. + + The new non-local functions are `af_parse_gsub` and `af_map_lookup`. + + * src/autofit/afgsub.c, src/autofit/afgsub.h: New files for parsing, + validating, and mapping the `SingleSubst` and `AlternateSubst` subtable + types of a GSUB table. + + * src/autofit/autofit.c, src/autofit/rules.mk (AUTOF_DRV_SRC): Updated. + +2025-06-26 Werner Lemberg + + [base] Add no-overwrite hash insert functions. + + * src/base/fthash.c (ft_hash_num_insert_no_overwrite, + ft_hash_str_insert_no_overwrite): New functions. + * include/freetype/internal/fthash.h: Updated. + +2025-06-26 Werner Lemberg + + [base] Add iterators for `FT_Hash`. + + * src/base/fthash.c (ft_hash_num_iterator, ft_hash_str_iterator): New + functions. + * include/freetype/internal/fthash.h: Updated. + +2025-06-24 Werner Lemberg + + [truetype] Add comment to explain heuristic limit for twilight points. + +2025-06-23 Alexei Podtelezhnikov + + [truetype] Restore non-persistent CVT and storage. + + According to specifications, CVT and storage area may or may not be + persistent after modifications by a glyf program. FreeType had always + reset them, which was broken by the last commit. + + * src/truetype/ttinterp.c (TT_Load_Context): Set CVT and storage here. + * src/truetype.ttobjs.c (tt_size_run_prep): Prioritize TT_Load_Context. + (tt_size_init_bytecode): Allocate but not set CVT and storage area. + +2025-06-22 Alexei Podtelezhnikov + + [truetype] Deduplicate 'codeRangeTable'. + + * src/truetype/ttinterp.c (TT_Load_Context, TT_Save_Context): Do not + copy 'codeRangeTable'. + * src/truetype/ttobjs.h (TT_Size): Remove 'codeRangeTable'. + (TT_CodeRange_Tag, TT_CodeRange, TT_DefArray): Moved to... + * src/truetype/ttinterp.h: ... this header.1 + +2025-06-22 Alexei Podtelezhnikov + + [truetype] Simplify bytecode allocations. + + To avoid repeated synchronization, some TT_Size allocations are moved + TT_ExecContext for good. The memory blocks are also consolidated. + + * src/truetype/ttinterp.c (TT_{Load,Save,Done}_Context): Remove + synchronization and stack management. + * src/truetype/ttobjs.c (tt_size_{init,done}_bytecode): Manage allocations + and assign them to the execution context. + (tt_size_run_prep): Updated. + +2025-06-22 Alexei Podtelezhnikov + + [truetype] Rework handling of rendering mode in bytecode. + + This replaces a large number of confusing boolean constructs that + describe the target rendering mode in the execution context with + the straight mode variable. It might fix some hidden bugs when + FT_LOAD_TARGET_XXX were used as flags, which they are not. + + The condition that triggers the CV program re-execution is simplified. + These events due the rendering mode change are rather rare and unexpected + and, therefore, should not be over-analyzed. In v40, all mode changes + now trigger the CV program. In v35, only switches to/from mono do. + + * src/truetype/ttinterp.h (TT_ExecContext): Replace 'grayscale', + 'grayscale_cleartype', 'subpixel_hinting_lean', and 'vertical_lcd_lean' + with the rendering 'mode'. + * src/truetype/ttinterp.c (Ins_GETINFO): Updated. + * src/truetype/ttgload.c (tt_loader_init): Replace 'prep' re-execution + trigger and update 'backward_compatibility' condition. + (tt_loader_set_pp): Updated. + +2025-06-21 Alexei Podtelezhnikov + + * src/truetype/{ttinterp.c,ttobjs.c}: Minor. + +2025-06-21 Alexei Podtelezhnikov + + [truetype] Clean up bytecode execution triggers. + + This avoids executing the CV program twice and cleans up the use of + 'fpgm' and 'prep' triggers + + * src/truetype/ttgload.c (tt_loader_init): Call 'tt_size_init_bytecode' + and 'tt_size_run_prep' explicitly and avoid the call repetition. + * src/truetype/ttobjs.c (tt_size_ready_bytecode): Removed as unused. + (tt_size_init, tt_size_init_bytecode, tt_size_done_bytecode): Remove some + 'fpgm' and 'prep' triggers and update. + (tt_size_run_fpgm, tt_size_run_prep): Do not set the pedantic flag here. + * src/truetype/ttobjs.h: Update signatures. + +2025-06-21 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (tt_loader_init, load_sbit_image): Clean up. + +2025-06-21 Alexei Podtelezhnikov + + [truetype] Simplify twilight zone management. + + * include/freetype/internal/tttypes.h (TT_GlyphZone): Remove 'memory'. + * src/truetype/ttobjs.c (tt_glyphzone_done): Use 'memory' as argument. + (tt_glyphzone_new, tt_glyphzone_done): Allocate/free as a single block. + (tt_size_init_bytecode, tt_size_done_bytecode): Updated. + * src/truetype/ttobjs.h (tt_glyphzone_done): Updated signature. + +2025-06-19 Behdad Esfahbod + + [autofit] Really fix handling of `RTLD_DEFAULT`. + + This commit actually implements what commit 43ec023e1a7 describes. + + * src/autofit/ft-hb.c (FT_RTLD_FLAGS): New macro for `dlopen`; it uses + `RTLD_GLOBAL` only if `RTLD_DEFAULT` is available. + +2025-06-15 Alexei Podtelezhnikov + + [truetype] Revise twilight zone initiation. + + This assures that twilight zone is reset before each CV program + execution, including after the rendering mode switch. Fixes #1344. + + * src/truetype/ttobjs.c (tt_size_ready_bytecode): Relocate the GS + the twilight zone initiation from here... + (tt_size_run_prep): ... to this function, sho that it is always + done prior to the CV program execution. + * src/truetype/ttobjs.c (TT_Run_Context): Set twilight zone here... + (TT_Load_Context): ... rather than here, as it used to be. + +2025-06-13 Alexei Podtelezhnikov + + * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove check. + + The highest (sign) attribute bit is reserved and should be zero. + It is harmless to omit this check however. Fixes #1342. + +2025-06-12 Werner Lemberg + + [autofit] Ignore virtual glyph indices from GSUB lookups. + + Reported as + + https://issues.chromium.org/issues/420401651 + + * src/autofit/afadjust.c (af_reverse_character_map_new): Implement it. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Clean up TT_GlyphZone. + + * include/freetype/internal/tttypes.h (TT_GlyphZone): Delete fields. + * src/truetype/ttobjs.c (tt_glyphzone_new, tt_glyphzone_done, + tt_size_init_bytecode): Updated. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Use FT_ARRAY_ZERO. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Updated. + * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids, + tt_size_ready_bytecode): Updated. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Rearrange bytecode run. + + This is a minor change with large code rearrangements. + + * src/truetype/ttinterp.c (TT_RunIns): Just loop through instructions + and move all setup to... + (TT_Run_Context): ... here; relocated. + (Compute_Round): Replaced by simple assignment, removed. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Relocate the interpreter pointer. + + This reduces dereferencing when calling the interpreter. + + * include/freetype/internal/tttypes.h (TT_Face): Move it from here... + * src/truetype/ttinterp.h (TT_ExecContext): ... to here. + * src/truetype/ttobjs.c (tt_size_init_bytecode): Move its initialization + * src/truetype/ttinterp.c (TT_New_Context): ... to here. + (TT_Run_Context): Updated. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Clean up the loader initiation. + + * include/freetype/internal/tttypes.h (TT_LoaderRec): Remove unused field. + * src/truetype/ttgload.c (tt_loader_init): Refactor. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Modify bytecode initiation. + + This reduces the number of function calls and data copying events. + + * src/truetype/ttinterp.c (TT_Goto_CodeRange): Merge into... + (TT_Set_CodeRange): ... this function. + (TT_Load_Context): Do not set up any zones, copy GS, or prepare the + execution... + (TT_Run_Context): ... do this here instead.. + * src/truetype/ttinterp.c (TT_Set_CodeRange): Update signature. + * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Call + TT_Run_Context. + * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated. + +2025-06-11 Alexei Podtelezhnikov + + [truetype] Modify the graphics state management. + + Instead of restoring persistent GS variables, we only save modifications + permitted by the CVT program. This reduces the context manipulations. + + * src/truetype/ttobjs.h (TT_GraphicsState): Reorder fields. + * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): + Do not alter the context. + + * src/truetype/ttgload.c (TT_Hint_Glyph): Do not reset GS. + (tt_loader_init): Fix potential issue in 'instruct_control' handling. + * src/truetype/ttinterp.c (TT_Run_Context): Fully reset GS. + (TT_Load_Conext): Rearrange and remove the 'size' check, already + performed in FT_Load_Glyph. + (TT_Save_Context): Save only modifiable GS parts. + (tt_default_graphics_state): Updated. + * src/truetype/ttinterp.h (TT_Run_Context): Update signature. + +2025-06-10 Werner Lemberg + + [gxvar] Really fix setting of named-instance to Regular. + + This fixes an ommission in commit cf06661c51. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize `error`. + +2025-06-10 Werner Lemberg + + Two more link fixes. + +2025-06-10 Werner Lemberg + + Update links. + + Found with `linkchecker --check-extern index.html` running locally in the + 'freetype-web' repository. + +2025-06-07 Behdad Esfahbod + + Fix setting of named-instance to Regular + + Fixes https://gitlab.freedesktop.org/freetype/freetype/-/issues/1341 + + And more elaborate avoidance of loading face->blend if all coords + are zero. + +2025-06-04 Alexei Podtelezhnikov + + * src/type42/t42objs.c (T42_Size_Init): Fix uninitialized use. + + Found by Ozkan Sezer. + +2025-06-04 Ozkan Sezer + + [autofit] Fix `-Wunused-but-set-variable` warning in Windows builds. + + With this commit, the following warning gets removed. + + ``` + In file included from src/autofit/autofit.c:21:0: + src/autofit/ft-hb.c: In function 'ft_hb_funcs_init': + src/autofit/ft-hb.c:75:35: warning: + variable 'version_atleast' set but not used [-Wunused-but-set-variable] + ft_hb_version_atleast_func_t version_atleast = NULL; + ^~~~~~~~~~~~~~~ + ``` + + * src/autofit/ft-hb.c (ft_hb_funcs_init): Move `NULL` check of + `version_atleast` out of ifdefs. + +2025-06-04 Ozkan Sezer + + [build] Revise visibility attributes usage in autotools and CMake. + + * CMakeLists.txt: Set `C_VISIBILITY_PRESET` to hidden for non-Windows only. + Windows handles exports with `DLL_EXPORT` defined, and old MinGW + toolchains emit a lot of warnings about visibility attributes not being + supported in this configuration. + + * build/unix/configure.raw: Revise visibility attributes checks by compiling a + better test program with `-Werror` in `CFLAGS` so that warnings correctly + indicate unsupported configurations. + +2025-06-04 Ozkan Sezer + + * CMakeLists.txt: Add support for `FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC`. + + This commit introduces a new CMake option `FT_DYNAMIC_HARFBUZZ`. + +2025-06-03 Ozkan Sezer + + * src/autofit/ft-hb.c: Fix definition of `_GNU_SOURCE`. + + Commit 43ec023e1a730f defined the macro too late. + +2025-06-03 Werner Lemberg + + Replace 'www.freetype.org' with 'freetype.org'. + +2025-06-03 Ozkan Sezer + + * builds/unix/configure.raw: Fix HarfBuzz library detection for MinGW. + + Set `have_harfbuzz*` variables explicitly to dynamic for MinGW, since + Windows uses its own `LoadLibrary` call. + + This fixes a MinGW configuration error: + + ``` + checking for HARFBUZZ... no + checking for dlopen in -lc... no + checking for dlopen in -ldl... no + configure: error: harfbuzz support requested but library not found + ``` + +2025-06-03 Ozkan Sezer + + * builds/unix/configure.raw: Improve check for `dlopen`. + + Look for `dlopen` first in 'libc', then in 'libdl'. + +2025-06-03 Behdad Esfahbod + + * src/autofit/ft-hb.c: Fix usage of `RTLD_DEFAULT`. + + Using `RTLD_DEFAULT` we see whether the process already has HarfBuzz linked + in, and reuse it. If this symbol is not defined it is tempting to use + `RTLD_GLOBAL` instead, which would make the library available to the whole + process. However, without `RTLD_DEFAULT`, we would risk loading a second + HarfBuzz library, and if the linker mixes them up, probably giving symbols + from the new library to other clients, we might get into trouble. For this + reason, we do not pass `RTLD_GLOBAL` to `dlopen`; the default is + `RTLD_LOCAL`, and the rest of the process won't see the loaded HarfBuzz and + hopefully all be happy. + +2025-05-28 Werner Lemberg + + [sfnt] `FT_Load_Sfnt_Table` can now also load a font's table directory. + + Closes issue #1263. + + * src/sfnt/ttload.c (tt_face_load_any): Implement it. + +2025-05-28 Werner Lemberg + + [gzip] Update sources to zlib 1.13.1. + + Fixes issue #1294. + +2025-05-27 Vítor Ramos + + * src/base/ftobjs.c (FT_Load_Glyph): Loosen auto-hinting constraints. + + Fixes issue #1320. + +2025-05-27 Werner Lemberg + + Update `CHANGES` file. + +2025-05-27 Behdad Esfahbod + + [gxvar] Optimize out more bounds checking. + + Big win, ~20% in measured mega-var font, HarfBuzz's `benchmark-font` + 'glyph_h_advances' benchmark. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Implement it in + loops. + +2025-05-27 Behdad Esfahbod + + * src/truetype/ttgload.c (load_truetype_glyph): Use `IS_DEFAULT_INSTANCE`. + +2025-05-27 Behdad Esfahbod + + [gxvar] Set `doblend` to `FALSE` if at default location. + + * src/truetype/ttgxvar.c (tt_set_mm_blend, TT_Get_Var_Design): Do it. + +2025-05-27 Behdad Esfahbod + + [mm/gxvar] Always detect default instance and use optimized codepath. + + Even if it was explicitly set by either design or normalized APIs. + + Also update documentation. + + * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design): Use value -2 + of `error` to indicate that we have a non-default instance. + (TT_Set_Named_Instance): Updated. + + * src/base/ftmm.c (FT_Set_Var_Design_Coordinates, + FT_Set_Var_Blend_Coordinates): Updated. + +2025-05-27 Alexei Podtelezhnikov + + Typo. + +2025-05-27 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_Load_Context): Clean up. + +2025-05-26 Werner Lemberg + + [autofit] Fix integer overflow. + + Reported as + + https://issues.oss-fuzz.com/issues/420401635 + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde, + af_latin_stretch_bottom_tilde): Use `SUB_LONG`. + +2025-05-26 Werner Lemberg + + [gxvar] Speed up handling of deltas in `ItemVariationStore`. (3/3) + + * src/base/ftcalc.c (FT_MulAddFix): Removed, no longer needed. + * include/freetype/internal/ftcalc.h: Updated. + +2025-05-26 Behdad Esfahbod + + [gxvar] Speed up handling of deltas in `ItemVariationStore`. (2/3) + + Do all math in fixed integer and do a single divide at the end. + + Also don't use an array to read deltas; just read them as we go, and skip + (branch-free) when scalar is 0. + + 30% speedup in measured mega-var font, HarfBuzz's `benchmark-font` + 'glyph_h_advances' benchmark. + +2025-05-26 Behdad Esfahbod + + [gxvar] Speed up handling of deltas in `ItemVariationStore`. (1/3) + + * src/truetype/ttgxvar.c (ft_mul_add_delta_scalar, ft_round_and_shift16): + New functions, reusing code from `ftcalc.c`. + +2025-05-26 Behdad Esfahbod + + Lift `FT_Int64` type to global (internal) FreeType use. + + * src/base/ftcalc.c (FT_Int64) [!FT_INT64]: Move declaration to... + * include/freetype/config/integer-types.h: ... this file. + (FT_UInt64) [!FT_INT64]: New structure. + (FT_INT64_ZERO): New macro. + +2025-05-26 Behdad Esfahbod + + [gxvar] Move scalar computation into its own function. + + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Split off affected code + into... + (tt_calculate_scalar): ...this new function. + +2025-05-26 Werner Lemberg + + [autofit] Make the accent database work for more glyphs (again). + + See the added comment for an explanation. + + This partially undoes commit f68733d4a8. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Always loop over all + elements of the adjustment database. + (in_range): Removed, no longer needed. + +2025-05-26 Alexei Podtelezhnikov + + [trueetype] Remove useless assignments. + + * src/truetype/ttobjs.c (tt_size_run_fpgm): Remove assignment that + is ignored and overridden later in 'Compute_Funcs'. + * src/truetype/ttinterp.c (TT_RunIns): Ditto. + (Ins_MIAP): Formatting. + +2025-05-25 Werner Lemberg + + [autofit] Minor code cleanup. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Rename `result_set` + to `glyph_alternates` and move its clearing to... + (af_get_glyph_alternates): ...this function. + (af_get_glyph_alternates_helper): s/result/helper_result/. + +2025-05-25 Werner Lemberg + + [autofit] Speed up construction of reverse character map. (4/4) + + * src/autofit/afadjust.c (af_get_glyph_alternates): Move creation and + deletion of the `helper_result` set to... + (af_reverse_character_map_new): ...this function. + Gain for `arial.ttf` version 7.00: approx. 1%. + +2025-05-25 Werner Lemberg + + [autofit] Speed up construction of reverse character map. (3/4) + + * src/autofit/afadjust.c (af_reverse_character_map_new): Fold two loops into + one. + Gain for `arial.ttf` version 7.00: approx. 1%. + +2025-05-25 Werner Lemberg + + [autofit] Speed up construction of reverse character map. (2/4) + + This commit, together with the previous one, makes the startup of the + auto-hinter much faster. + + Note, though, that the startup time for handling the diacritic database is + still rather large. For example, loading `arial.ttf` version 7.00 followed + by auto-hinting a first Latin glyph is still approx. three times slower + than before the introduction of the database (this is because function + `hb_ot_layout_lookup_get_glyph_alternates` is called very often). + + * src/autofit/afshaper.c (scripts): Rename this array to... + (af_hb_scripts): ...this and export it. + (af_shaper_get_coverage_hb): Updated. + * src/autofit/afshaper.h: Updated. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Pass the current + script to `hb_ot_layout_collect_lookups` to make HarfBuzz check less + lookups while searching for glyph alternates. + +2025-05-25 Werner Lemberg + + [autofit] Speed up construction of reverse character map. (1/4) + + Build reverse cmap for characters of the current script style only. + + * src/autofit/afadjust.c (in_range): New function. + (af_reverse_character_map_new): Pass `AF_StyleMetrics` instead of + `AF_FaceGlobals` so that we can access the current script style. + Use `in_range` to limit tested code points. + * src/autofit/afadjust.h: Updated. + * src/autofit/aflatin.c (af_latin_metrics_init): Updated. + +2025-05-25 Werner Lemberg + + [autofit] Avoid variable shadowing. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Do it. + +2025-05-25 Werner Lemberg + + [autofit] Minor speedup of reverse charmap creation. + + * src/autofit/afglobal.h (AF_HAS_CMAP_ENTRY): New flag. + (AF_STYLE_MASK): Update value. + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): Set + `AF_HAS_CMAP_ENTRY`. + + * src/autofit/afadjust.c (af_reverse_character_map_new): For the creation of + the reverse map, change code to handle glyphs with cmap entries before + glyphs without cmap entries. Doing so avoids some code redundancy and + reduces the number of hash lookups. + +2025-05-25 Werner Lemberg + + [autofit] Whitespace. + +2025-05-25 Werner Lemberg + + [autofit] Use `FT_Offset`. + + * src/autofit/afadjust.c (af_adjustment_database_lookup, + af_reverse_character_map_new): Do it. + +2025-05-25 Werner Lemberg + + [autofit] Simplify return value of `af_adjustment_database_lookup`. + + * src/autofit/adfadjust.h (af_adjustment_database_lookup): Return integer. + (AF_AdjustmentDatabaseEntry): Move structure to... + * src/autofit/afadjust.c: ...this file. + (af_adjustment_database_lookup, af_reverse_character_map_new): Updated. + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Updated. + +2025-05-25 Werner Lemberg + + [autofit] Remove no longer used functions and structures. + + This is the clean-up from the previous commit. + + * src/autofit/afadjust.c (af_reverse_character_map_entry_compare, + af_reverse_character_map_lookup, af_reverse_character_map_expand): + Removed. + * src/autofit/afadjust.h: Updated. + * src/autofit/aftypes.h (AF_ReverseMapEntry, AF_ReverseCharacterMap): + Removed. + +2025-05-25 Werner Lemberg + + [autofit] Use a hash for handling vertical accent adjustments. + + This greatly simplifies the code. + + * src/autofit/afadjust.c (af_reverse_character_map_new): Implement it. + (af_reverse_character_map_done): Updated. + * src/autofit/afadjust.h: Updated. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Updated. + + * src/autofit/aftypes.h: Include `fthash.h`. + (AF_StyleMetrics): Change type of `reverse_charmap` to `FT_Hash`. + +2025-05-25 Werner Lemberg + + * src/autofit/aflatin.c (af_latin_hints_apply): Improve code legibility. + +2025-05-25 Werner Lemberg + + [autofit] Use `FT_LONG_MIN` and `FT_LONG_MAX` for `FT_Pos` variables. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues, + af_compute_vertical_extrema, af_find_highest_contour, + af_find_second_highest_contour, af_find_lowest_contour, + af_find_second_lowest_contour, af_check_contour_horizontal_overlap): + Updated. + +2025-05-25 Werner Lemberg + + [autofit] Fix uninitialized variables. + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde, + af_latin_stretch_bottom_tilde): Initialize `min_measurement`. + +2025-05-23 Behdad Esfahbod + + [ttmtx] Fix check for being non-default variation position. + + If user explicitly sets variations to `NULL` after it being set to something + else, `face->blend` will still be non-`NULL`. The intention here however is + correctly captured by `FT_IS_VARIATION`. + + * src/sfnt/ttmtx.c (tt_face_get_metrics): Use `FT_IS_VARIATION`. + +2025-05-23 Behdad Esfahbod + + [gxvar] Optimize loading of 'gvar' table. + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store, + tt_var_load_delta_set_index_mapping, ft_var_load_gvar): Use frames to + reduce bounds checking. + (TT_Vary_Apply_Glyph_Deltas): Better macro usage. + +2025-05-22 Behdad Esfahbod + + [mm] Short-circuit setting face to default instance if already is so. + + I found that in hb-ft I need to sometime reset the face to the default + instance. However, calling `FT_Set_Var_Design_Coordinates` with no coords + was still slowing down at least the glyph-advance code by processing + variations. + + Perhaps there's a better fix, but this handles the easy cases. + + * src/base/ftmm.c (FT_Set_Var_Design_Coordinates): Implement it. + +2025-05-22 Behdad Esfahbod + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix allocation. + + Bug was introduced in commit 582de1a4b6f. + +2025-05-21 Werner Lemberg + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Remove redundant test. + + This was erroneously added in commit e6e9110a8. + +2025-05-21 ColdPaleLight + + [sdf] Skip neighbor comparison for pixels near edges. + + If the distance of the current pixel to the edge is less than or equal + to 0.5, skip further neighbor comparisons to avoid unnecessary + calculations. When the `USE_SQUARED_DISTANCES` macro is defined, + compare to 0.25 instead. + + * src/sdf/ftbsdf.c (compare_neighbor): Add early return for pixels + close to edges to avoid unnecessary neighbor checks. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Cache shared-tuple scalar values. + + GoogleSansFlex HB benchmark-font draw results: + + Before: 2.13ms + After: 1.65ms + Speedup: 22% + + * src/truetype/ttgxvar.h (GX_BlendRec): Add `tuplescalars` field. + + * src/truetype/ttgxvar.c (ft_var_load_gvar): Allocate `tuplescalars` array. + (tt_set_mm_blend): Set its values. + (TT_Vary_Apply_Glyph_Deltas): Use it. + (tt_done_blend): Deallocate it. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Reduce number of mallocs. + + 8% speed up in drawing GoogleSansFlex variable in HB benchmark-font. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Use an allocation + pool instead of individual allocations. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Another optimization in computing scalar. + + Another ~6% speedup in GoogleSansFlex var drawing. + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Test `ncv` for being zero. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Remove stale comment. + + The code *does* check against start/end! + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Micro-optimize. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Inline two USHORT reads. + + Speeds up GoogleSansFlex variable glyph drawing by ~13%. + + Before: 2.95ms + After: 2.57ms + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Do it. + +2025-05-21 Behdad Esfahbod (بهداد اسÙهبد) + + [gxvar] Micro-optimize loop end condition. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Do it. + +2025-05-21 Behdad Esfahbod + + [truetype] Don't process `mvar` metrics if default instance. + + GoogleSansFlex default-instance HarfBuzz benchmark-font draw: + + Before: 0.610ms + After: 0.435ms + Speedup: 28% + + * src/truetype/ttobjs.c (tt_face_init) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: + Check `instance_index`. + +2025-05-21 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (Ins_MIRP,DELTAP,DELTAC): Minor. + +2025-05-20 Alexei Podtelezhnikov + + [truetype] Update bytecode error handling. + + * src/truetype/ttinterp.c (Ins_SHP,SHPIX,ALIGNRP): Return appropriate + error in case of stack underflow. + (Ins_IP): Ditto and remove redundant check. + +2025-05-19 Werner Lemberg + + * src/aflatin.c (af_latin_hint_edges): Refine fix for serif handling. + + Commit 11432424 (from 2025-May-12) was too aggressive; it is now restricted + to edges that are not too far away. + +2025-05-19 Werner Lemberg + + * src/afadjust.c (adjustment_database): Make it complete up to U+FFFF. + + Also fix two entries. + + This is for Unicode 17.0. + +2025-05-19 Werner Lemberg + + [autofit] Fix vertical adjustment of (mainly) double diacritics. + + The series of commits that introduced this adjustment support had some + flaws. + + - If there were two diacritics on top of a base glyph, and the upper + diacritic was a tilde, the vertical centering correction was incorrectly + applied to the lower, non-tilde glyph instead of the tilde. + + - The maximum value allowed to shift a glyph was too strict (and also not + handling rounding issues), causing some diacritics and combinations of + diacritics to be not shifted at all. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Correctly handle + vertical centering correction. + +2025-05-19 Werner Lemberg + + [autofit] Code hygiene. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Use more flag + variables and improve trace messages. + +2025-05-19 Werner Lemberg + + * src/autofit/aflatin.c (af_latin_hint_edges): Fix handling of serifs. + + This has been discovered while inspecting the auto-hinting results of + character 'Ễ' in font `arial.ttf` (version 7.00) at 13ppem. + +2025-05-19 Werner Lemberg + + [autofit] Minor. + + * src/autofit/aflatin.c (af_latin_hint_edges): Rename `has_serifs` to + `has_non_stem_edges` and make it of type `FT_Bool`. + +2025-05-19 Werner Lemberg + + [autofit] New algorithm for preventing hinting of tilde glyphs. + + The old algorithm removed segments from edges to make the auto-hinter ignore + a tilde. However, the implementation had two flaws. + + - Edge array elements were moved around without reordering them afterwards. + - The linking between edges and segments wasn't correctly updated for moved + edges, which could cause endless loops. + + Correcting both problems are non-trivial; additionally, a fix would make + the auto-hinter slower. + + For these reasons, a new, simpler approach is taken: A new flag allows + points to be tagged as being ignored, and if such a point is enountered, it + doesn't get added to a segment. + + Fixes issue #1333. + + * src/autofit/afhints.h (AF_FLAG_IGNORE): New macro. + + * src/autofit/aflatin.c (af_latin_hints_compute_segments, af_touch_contour): + Use it. + (af_remove_segments_containing_point, af_remove_top_points_from_edges, + af_remove_bottom_points_from_edges): Removed. + (af_latin_stretch_top_tilde): Call `af_touch_top_contours` and + `af_touch_bottom_contours` unconditionally. + (af_latin_hints_apply): Updated. + +2025-05-16 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_DotFix14): Silence UBSAN. + +2025-05-16 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (Ins_DELTAP): Flip if-else. + +2025-05-15 Alexei Podtelezhnikov + + [truetype] Optimize DELTAP and DELTAC. + + * src/truetype/ttinterp.c (Ins_DELTAP,DELTAC): Perform PPEM range- + checking and manipulations outside the loop. + +2025-05-14 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (Compute_Funcs): Replace shifts. + +2025-05-14 Alexei Podtelezhnikov + + [truetype] Tighten code overflow checks. + + Fixes #1336. + + * src/truetype/ttinterp.c (Ins_NPUSHB,NPUSHW,PUSHB, PUSHW): + Tighten conditions. + +2025-05-14 Chris Liddell + + [type1] Fix memory leak on CharString error. + + In the event that a CharString retrieved via the incremental interface + caused an error, the memory for that CharString was not being freed. + + * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Free charstring. + +2025-05-14 Werner Lemberg + + Whitespace, formatting, minor spelling fix. + +2025-05-14 Werner Lemberg + + Adminstrativa. + +2025-05-13 Alexei Podtelezhnikov + + [truetype] Finalize bytecode changes. + + * src/truetype/ttinterp.c: Formatting, minor. + (TT_Goto_CodeRange): Initialize 'iniRange' here... + (TT_RunIns): ... instead of here. + * docs/CHANGES: Updated. + +2025-05-13 Alexei Podtelezhnikov + + [truetype] Streamline backward compatibility. + + The 'backward_compatibility' is only set in v40: no need to check + the interpreter version again and again. In addition, we now track + IUP in its lower bits. After both IUPx and IUPy have been called, + 'backward_compatibility' becomes equal to 0x7. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Wrap 'iup?_called' + into 'backward_compatibility'. + * src/truetype/ttinterp.c (Ins_INSTCTRL): Sync 'backward_compatibility'. + (Direct_Move, Direct_Move_X/Y, Move_Zp2_Point, + Ins_FLIPPT,FLIPRGON,FLIPRGOFF,SHPIX,DELTAP): Updated. + (TT_RunIns): Do not mess with IUP flags. + * src/truetype/ttgload.c (tt_loader_init): Set 'backward_compatibility'. + (TT_Hint_Glyph): Updated. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Optimize bytecode movements. + + Replacing FT_MulDiv with FT_MulFix gives large performance gains. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Store "projected" + freedom vector. + * src/truetype/ttinterp.c (Compute_Funcs): Compute "projected" + freedom vector. + (Direct_Move, Direct_Move_Orig, Compute_Point_displacement): Use it. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Simplify stack access. + + * src/truetype/ttinterp.c (Ins_MINDEX,CINDEX): Use local stack pointers. + (Ins_DELTAP,DELTAC): Ditto; limit the number of pairs before looping. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Tweak bytecode looping. + + * src/truetype/ttinterp.c (Ins_FLIPPT,SHP,SHPIX,IP,ALIGNRP): Handle + counters and stack locally. + (TT_RunIns): Updated. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Tweak bytecode initiation. + + * src/truetype/ttinterp.c (TT_Load_Context): Init stack tops. + * src/truetype/ttinterp.h (TT_ExecContextRec): Document it and clean. + * src/truetype/ttobjs.c (tt_size_run_prep,fpgm): Updated. + * src/truetype/ttgload.c (tt_loader_init): Minor. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Modify stack handling. + + * src/truetype/ttinterp.c (Ins_GETVARIATION): Increment stack. + (Ins_NPUSHB,NPUSHW,PUSHB,PUSHW): Handle the code stack here, ... + (TT_RunIns): ... instead of here. Consolidate error handling. + (SkipCode): Remove preemptive check. + +2025-05-10 Alexei Podtelezhnikov + + [truetype] Modify bytecode steps. + + * src/truetype/ttinterp.h (TT_Exec_ContextRec): Remove 'step_ins'. + * src/truetype/ttinterp.c (TT_RunIns, Ins_Goto_CodeRange, + Ins_JMPR,ENDF,PUSHW,NPUSHW): Set and use zero increment 'length' instead. + (Ins_CALL,LOOPCALL,UNKNOWN): Updated. + +2025-05-10 Werner Lemberg + + [autofit] Add safety check for accent adjustments. + + This commit does two things. + + - Ignore accents that have too large heights. This situation can happen if + an accent outline is unexpectedly not the highest (or lowest) contour. + - Add a new adjustment flag `AF_ADJUST_NO_HEIGHT_CHECK` to override the + height check. + + * src/autofit/afadjust.h (AF_ADJUST_NO_HEIGHT_CHECK): New macro. + + * src/autofit/afadjust.c (adjustment_database): Updated. + + * src/autofit/aflatin.c (af_latin_hints_apply): Handle new flag. + (af_glyph_hints_apply_vertical_separation_adjustments): Check limit. + +2025-05-10 Werner Lemberg + + [autofit] Better handling of characters with attached diacritics. (3/3) + + Fixes issue #136. + + * src/autofit/afadjust.c (adjustment_database): Updated. + +2025-05-10 Werner Lemberg + + [autofit] Better handling of characters with attached diacritics. (2/3) + + * src/autofit/afadjust.h (AF_IGNORE_CAPITAL_TOP, AF_IGNORE_CAPITAL_BOTTOM, + AF_IGNORE_SMALL_TOP, AF_IGNORE_SMALL_BOTTOM): New macros. + + * src/autofit/afadjust.c (af_reverse_character_map_new) + [FT_DEBUG_LEVEL_TRACE]: Updated. + Also fix debugging strings of other flags. + + * src/autofit/afhints.h (AF_EDGE_NO_BLUE): New edge flag to make the + auto-hinter ignore the edge while assigning blue zones. + + * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Use it. + (af_prevent_top_blue_alignment, af_prevent_bottom_blue_alignment, + af_latin_get_base_glyph_blues, af_latin_ignore_top, + af_latin_ignore_bottom): New functions. + (af_latin_hints_apply): Updated. + +2025-05-10 Werner Lemberg + + [autofit] Better handling of characters with attached diacritics. (1/3) + + Introduce blue zone properties that will be used to make the auto-hinter + ignore diacritics attached on the top or the bottom of a base character. + + * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM, + AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM): New properties. + * src/autofit/afblue.dat: Use them. + + * src/autofit/afblue.c, src/autofit/afblue.h: Rengenerated. + + * src/autofit/aflatin.h (AF_LATIN_IS_CAPITAL_BOTTOM_BLUE, + AF_LATIN_IS_SMALL_BOTTOM_BLUE, AF_LATIN_BLUE_BOTTOM, + AF_LATIN_BLUE_BOTTOM_SMALL): New macros. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues)[FT_DEBUG_LEVEL_TRACE]: + Updated. + +2025-05-09 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Line_Up): Use 64-bit calculations. + + Attempt to fix #1332. + +2025-05-09 Werner Lemberg + + [sfnt] Avoid allocation bomb in compressed SVG documents. + + Reported as + + https://issues.oss-fuzz.com/issues/416538625 + + * src/sfnt/ttsvg.c (MAX_SVG_SIZE): New macro. + (tt_face_load_svg_doc): Reject too large buffer. + +2025-05-08 Werner Lemberg + + * include/freetype/ttnameid.h (TT_UCR_*): Define with unsigned long. + (TT_UCR_PHAGSPA): Fix definition. + + Fixes issue #1300. + +2025-05-08 Werner Lemberg + + [doc] Mention that there is no rendering support for 'COLR' v1 tables. + + Handles issue #1319. + +2025-05-08 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_DotFix14): Silence UBSAN. + +2025-05-07 Alexei Podtelezhnikov + + * src/cff/cffgload.c (cff_slot_load): Fix autohinter scaling. + + Fixes #1330. + +2025-05-05 Werner Lemberg + + [autofit] Avoid division by zero. + + Fixes issue #1331. + + * src/autofit/aflatin.c (af_latin_stretch_bottom_tilde): Don't divide by + zero. + +2025-05-04 Carlo Bramini + + Fix Cygwin visibility attributes. + + Reported as compilation warnings in #1329. + + * include/freetype/config/public-macros.h: Check __CYGWIN__. + * include/freetype/internal/compiler-macros.h: Ditto. + +2025-05-03 KatekovAnton + + * CMakeLists.txt: Fix cmake 4 error by specifying the policy version. + +2025-04-29 Werner Lemberg + + * docs/CHANGES: Updated. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + Provide configuration option to dynamically load the HarfBuzz library. + + We now request HarfBuzz version 2.6.8 (published in June 2020) or newer to + simplify the setup; this version introduced function + `hb_ot_layout_lookup_get_glyph_alternates`, which we need for the adjustment + database of the auto-hinter. + + No CMake support yet for dynamic loading. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC): New configuration macro. + + * builds/unix/configure.raw: Implement `--with-harfbuzz=dynamic`. + This gets tested automatically if we can't link with `libharfbuzz`. + (ft_option_set, ft_option_unset): Refine. + Require at least HarfBuzz version 2.6.8. + + * meson.build: Do the same as `configure.raw`. + * meson_options.txt: Updated. + + * CMakeLists.txt: Require at least HarfBuzz version 2.6.8. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Enable dynamic loading of HarfBuzz. (2/2) + + Handle the case where loading HarfBuzz dynamically fails. + + * src/autofit/ft-hb.c, src/autofit/ft-hb.h (ft_hb_enabled): New function. + + * src/autofit/afglobal.c (af_face_globals_new, af_face_globals_free): + Guard HarfBuzz functions with `ft_hb_enabled`. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths, + af_latin_metrics_init_blues, af_latin_metrics_check_digits): Simplify + setup of `shaper_buf`. + Guard calls of `af_shaper_buf_create` with `ft_hb_enabled`. + + * src/autofit/afcjk.c (af_cjk_metrics_init_widths, + af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Dito. + + * src/autofit/afshaper.c: Guard all HarfBuzz function calls with + `ft_hb_enabled`. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Enable dynamic loading of HarfBuzz. (1/2) + + This commit activates the mini-HarfBuzz header files and provides the + necessary infrastructure for dynamically loading HarfBuzz if + `FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC` is defined (this macro gets set up + in a follow-up commit). + + * src/autofit/ft-hb.c: New file, providing `ft_hb_funcs_init` and + `ft_hb_funcs_done` for loading HarfBuzz dynamically. The name of the + library is hold in the macro `FT_LIBHARFBUZZ`, which can be overridden. + + * src/autofit/ft-hb.h: Don't include `hb.h` but `ft-hb-types.h`. + (hb): Modified to handle both standard linking and dynamically + loading of HarfBuzz. + (HB_EXTERN): New macro to load `ft-hb-decls.h`. + + * src/autofit/afadjust.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: For the sake of + dynamically loading the HarfBuzz library, replace the compile-time macro + `HB_VERSION_ATLEAST` with a call to the run-time function + `hb_version_atleast` where necessary – a follow-up commit will set the + minimum version of HarfBuzz to 2.6.8, which provides all necessary + functions needed by FreeType. + + * src/autofit/afmodule.h: Include `ft-hb.h`. + (AF_ModuleRec) [FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC]: Add `hb_funcs` + structure to hold pointers to the dynamically loaded HarfBuzz functions. + + * src/autofit/afmodule.c (af_autofitter_init, af_autofitter_done) + [FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC]: Call `ft_hb_funcs_init` and + `ft_hb_funcs_done`. + + * src/autofit/afshaper.h: Updated. + * src/autofit/autofit.c: Include `ft-hb.c`. + + * src/autofit/rules.mk (AUTOF_DRV_SRC, AUTOF_DRV_H): Updated. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Some preparations for loading HarfBuzz dynamically. (4/4) + + Add 'mini' HarfBuzz declarations to make FreeType independent on HarfBuzz + header files. + + The files get activated in a follow-up commit. + + * src/autofit/ft-hb-decls.h, src/autofit/ft-hb-types.h: New files, holding + verbatim (or slightly massaged) entries from public HarfBuzz header files. + + * src/autofit/hb-script: New file. + A verbatim copy of a public HarfBuzz header file. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Some preparations for loading HarfBuzz dynamically. (3/4) + + * src/autofit/afshaper.c: Move around code so that the non-HarfBuzz code is + present even if `FT_CONFIG_OPTION_USE_HARFBUZZ` is not defined. This is a + preliminary step to allow deactivation of HarfBuzz at run-time. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Some preparations for loading HarfBuzz dynamically. (2/4) + + Pass `AF_FaceGlobals` to many functions, or provide it, tagged with + `FT_UNUSED`. We need this later on to access a dynamically linked HarfBuzz + library. + + * src/autofit/ft-hb-ft.h (ft_hb_ft_font_create): Use `globals` argument. + Drop unused `destroy` argument. + * src/autofit/ft-hb-ft.c (ft_hb_ft_face_create, ft_hb_ft_font_create): Use + `globals` argument. + Drop unused `destroy` argument. + (ft_hb_ft_face_create, ft_hb_ft_reference_table): Cast `user_data` to + `AF_FaceGlobals`. + + * src/autofit/afadjust.c (af_get_glyph_alternates_helper, + af_get_glyph_alternates): Add `globals` argument. + Update callers. + + * src/autofit/afshaper.c, src/autofit/afshaper.h (af_shaper_buf_create, + af_shaper_buf_destroy): Use `globals` argument. + + * src/autofit/afglobal.c (af_face_globals_new): Updated. + + * src/autofit/afcjk.c (af_cjk_metrics_init_widths, + af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated. + * src/autofit/aflatin.c (af_latin_metrics_init_widths, + af_latin_metrics_init_blues, af_latin_metrics_check_digits): Updated. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Some preparations for loading HarfBuzz dynamically. (1/4) + + * src/autofit/ft-hb.h: New file, defining the `hb` macro. Later on, we + provide a different definition of this macro depending on a yet-to-come + configuration option to support dynamic loading of HarfBuzz functions. + + * src/autofit/afadjust.c, src/autofit/afglobal.c, src/autofit/afshaper.c, + stc/ft-hb-ft.c: Use it. + +2025-04-29 Behdad Esfahbod (بهداد اسÙهبد) + + [autofit] Rename 'ft-hb' to 'ft-hb-ft'. + + Since it's a (shrinked) copy of 'hb-ft'. + + * src/autofit/afglobal.c (af_face_globals_new), src/autofit/afshaper.h, + src/autofit/autofit.c: Updated. + + * src/autofit/ft-hb.c, src/autofit/ft-hb.h: Renamed to... + * src/autofit/ft-hb-ft.c, src/autofit/ft-hb-ft.h: ...this; updated. + + * src/autofit/rules.mk (AUTOF_DRV_SRC): Updated. + +2025-04-29 Werner Lemberg + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde): Don't divide by zero. + + Reported as + + https://issues.oss-fuzz.com/issues/414320186 + +2025-04-28 Werner Lemberg + + [autofit] Extend adjustment database with characters up to U+1FFF. + + This adds many pre-combined Latin glyphs, Cyrillic, Greek, and some + characters from other scripts (or rather, Unicode blocks). + + Fixes issues #112 and #471. + +2025-04-28 Werner Lemberg + + [autofit] Support diacritics with special vertical minima. + + This code catches situations like U+1F90 ('á¾'), where some fonts have + exactly the same vertical minimum for the lower accent as for the base + glyph. + + * src/autofit/aflatin.c (af_find_highest_contour, af_find_lowest_contour): + Handle it. + +2025-04-28 Werner Lemberg + + [autofit] More tilde stretch support. (3/3) + + The auto-hinter now supports up to four tilde glyphs (two above and two + below a base character). + + Note that diacritics above (or below) a tilde are now also ignored by the + auto-hinter. + + * src/autofit/afadjust.h (AF_ADJUST_TILDE_TOP2, AF_ADJUST_TILDE_BOTTOM2): + New macros. + * src/autofit/afadjust.c (af_reverse_character_map_new): Updated. + + * src/autofit/aflatin.c (af_remove_top_points_from_edges, + af_remove_bottom_points_from_edges): Make functions also handle all + contours higher (or lower) of the given one in the argument. + (af_touch_top_contours, af_touch_bottom_contours): New functions. + (af_latin_stretch_top_tilde, af_latin_stretch_bottom_tilde): Use it to + also handle all contours higher (or lower) than the tilde contour. + + * (af_latin_hints_apply): Handle more tilde glyphs. + +2025-04-28 Werner Lemberg + + [autofit] More tilde stretch support. (2/3) + + * src/autofit/aflatin.c (af_latin_stretch_top_tilde, + af_latin_stretch_bottom_tilde): Return vertical size difference between + stretched and original contour. + (af_latin_align_top_tilde, af_latin_align_bottom_tilde): Return applied + delta. + (af_latin_hints_apply): Updated; the return values are not used yet. + +2025-04-28 Werner Lemberg + + [autofit] More tilde stretch support. (1/3) + + Move some existing code that we soon need elsewhere into separate functions. + + * src/autofit/aflatin.c (af_move_contours_up, af_move_contours, down): New + functions. + (af_glyph_hints_apply_vertical_separation_adjustments): Use them. + (af_touch_contour): New function. + (af_latin_stretch_top_tilde, af_latin_stretch_bottom_tilde): Use it. + + (af_latin_remove_top_tilde_points_from_edges, + af_latin_remove_bottom_tilde_points_from_edges): Renamed to... + (af_remove_top_points_from_edges, af_remove_bottom_points_from_edges): + ...this. + Update callers. + +2025-04-28 Werner Lemberg + + [autofit] Support two below/above accents for vertical adjustment. (2/2) + + * src/autofit/afadjust.h (AF_ADJUST_UP2, AF_ADJUST_DOWN2): New macros. + * src/autofit/afadjust.c (af_reverse_character_map_new): Updated. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Implement it. + +2025-04-28 Werner Lemberg + + [autofit] Support two below/above accents for vertical adjustment. (1/2) + + Some variable renamings. + +2025-04-28 Werner Lemberg + + [autofit] Routines for finding the second highest/lowest contour. + + * src/autofit/aflatin.c (af_find_second_highest_contour, + af_find_second_lowest_contour): New functions. + +2025-04-28 Werner Lemberg + + [autofit] Use more functions to reduce code. + + * src/autofit/aflatin.c (af_find_highest_contour, af_find_lowest_contour): + Updated. + (af_glyph_hints_apply_vertical_separation_adjustments): Use + `af_compute_vertical_extrema`, `af_find_highest_contour`, and + `af_find_lowest_contour`. + (af_latin_hints_apply): Use `af_compute_vertical_extrema`, + +2025-04-28 Werner Lemberg + + * src/autofit/aflatin.c (af_compute_vertical_extrema): New function. + + To be used in a follow-up commit. + +2025-04-28 Werner Lemberg + + * src/autofit/aflatin.c: Some variable renaming. + +2025-04-28 Werner Lemberg + + [autofit] Avoid recomputation of highest and lowest contour. + + * src/autofit/aflatin.c (af_latin_hints_apply): Compute highest and lowest + contour in this function. + (af_latin_remove_top_tilde_points_from_edges, + af_latin_remove_bottom_tilde_points_from_edges, + af_latin_stretch_top_tilde, af_latin_stretch_bottom_tilde, + af_latin_align_top_tilde, af_latin_align_bottom_tilde): Updated. + +2025-04-28 Werner Lemberg + + * src/aflatin.c (af_latin_trace_height): Remove. + Update caller. + + The algorithm works fine. + +2025-04-28 Werner Lemberg + + [autofit] Support vertical stretching of tilde below base glyph. (2/2) + + * src/autofit/afadjust.h (AF_ADJUST_TILDE_BOTTOM): New macro. + * src/autofit/afadjust.c (af_reverse_character_map_new): Updated. + + * src/autofit/aflatin.c (af_find_lowest_contour, + af_latin_remove_bottom_tilde_points_from_edges, + af_latin_stretch_bottom_tilde, af_latin_align_bottom_tilde): New functions + in analogy to the top tilde versions. + (af_glyph_hints_apply_vertical_separation_adjustments): Add support in + analogy to the top tilde code. + (af_latin_hints_apply): Updated. + +2025-04-28 Werner Lemberg + + [autofit] Support vertical stretching of tilde below base glyph. (1/2) + + * src/autofit/aflatin.c (af_latin_remove_tilde_points_from_edges, + af_latin_stretch_tilde, af_latin_align_tilde): Rename to... + (af_latin_remove_top_tilde_points_from_edges, af_latin_stretch_top_tilde, + af_latin_align_top_tilde): ...this. + Update all callers. + (af_latin_hints_apply): Rename `is_tilde` to `is_top_tilde`. + +2025-04-28 Werner Lemberg + + [autofit] Allow vertical adjustment at the top and bottom simultaneously. + + This will be used to hint characters like U+1FB7 ('á¾·'). + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Implement it. + +2025-04-28 Werner Lemberg + + * src/autofit/afadjust.c (af_reverse_character_map_new): Update tracing. + +2025-04-28 Werner Lemberg + + [autofit] Indicate tilde handling with a flag macro, too. + + * src/autofit/afadjust.h (AF_ADJUST_TILDE_TOP): New macro. + (AF_AdjustmentDatabaseEntry): Remove field `apply_tilde`. + + * src/autofit/afadjust.c (adjustment_database, + af_reverse_character_map_new), src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments, + af_latin_hints_apply): Updated. + +2025-04-28 Werner Lemberg + + [aflatin] Convert adjustment database enum to macros. + + We are going to add more values, and we want to use combinations of them. + + * src/autofit/afadjust.h (AF_VerticalSeparationAdjustmentType): Replace + with... + (AF_ADJUST_UP, AF_ADJUST_DOWN, AF_ADJUST_NONE): ... new macros. + (AF_AdjustmentDatabaseEntry): Rename field + `vertical_separation_adjustment_type` to `flags`. + + * src/autofit/afadjust.c (af_reverse_character_map_new), + src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Updated. + +2025-04-28 Werner Lemberg + + [autofit] Shorten adjustment enum names. + + * src/autofit/afadjust.h (AF_VERTICAL_ADJUSTMENT_TOP_CONTOUR_UP, + AF_VERTICAL_ADJUSTMENT_BOTTOM_CONTOUR_DOWN, AF_VERTICAL_ADJUSTMENT_NONE): + Renamed to... + (AF_ADJUST_UP, AF_ADJUST_DOWN, AF_ADJUST_NONE): ...this. + + * src/autofit/afadjust.c (adjustment_database, + af_reverse_character_map_expand), src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Updated. + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 17.0. + + But no support for new scripts (volunteers welcomed). + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 16.0. + + But no support for new scripts (volunteers welcomed). + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 15.1. + + But no support for new scripts (volunteers welcomed). + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 14.0. + + But no support for new scripts (volunteers welcomed). + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 13.0. + + But no support for new scripts (volunteers welcomed). + +2025-04-26 Werner Lemberg + + * src/autofit/afranges.c: Updated to Unicode 12.0. + + But no support for new scripts (volunteers welcomed). + +2025-04-25 Alexei Podtelezhnikov + + * include/freetype/internal/ftcalc.h (FT_MulFix_64): Silence UBSAN. + +2025-04-22 Behdad Esfahbod + + * src/autofit/afadjust.c (af_get_glyph_alternates): Fix endless loop. + +2025-04-20 Werner Lemberg + + * src/afadjust.c: Fix test for newer HarfBuzz version (second try). + +2025-04-20 Werner Lemberg + + * src/afadjust.c: Fix test for newer HarfBuzz version. + +2025-04-20 Werner Lemberg + + [autofit] Request at least HarfBuzz 7.2.0 for diacritic support. (3/3) + + This version (from April 2023) added 'SingleSubst' support to + `hb_ot_layout_lookup_get_glyph_alternates`. + +2025-04-20 Werner Lemberg + + [autofit] Speed up creation of the adjustment database's reverse map. (2/3) + + Remove the old code and activate the new one. + +2025-04-20 Werner Lemberg + + [autofit] Speed up creation of the adjustment database's reverse map. (1/3) + + As it turns out, the original implementation using + `hb_ot_shape_glyphs_closure` is extremely slow if a font has a rich set of + OpenType features. For example, this function was called 66954 times while + loading font `arial.ttf` version 7.00, increasing FreeType's startup time by + a factor of 10, which is unacceptable. + + The new algorithm uses a completely different, more low-level approach, no + longer working with OpenType features but with OpenType lookups. It relies + on function `hb_ot_layout_lookup_get_glyph_alternates`, also replacing + recursion with a simple loop. In total, this brings the additional startup + time back to an acceptable range of a few percent. + + A side effect of the new approach is that it catches more alternate forms: + the old code didn't properly handle script-specific features. + + To make the change more readable, this commit only adds new code. + +2025-04-18 Werner Lemberg + + * src/autofit/afadjust.c (af_reverse_character_map_new): Check `map` limit. + + Reported as + + https://issues.chromium.org/issues/410925355 + +2025-04-18 Alexei Podtelezhnikov + + * include/freetype/internal/ftcalc.h: Fix fringe compilation. + +2025-04-18 Alexei Podtelezhnikov + + * src/base/ftcalc.c (ft_corner_orientation) [!FT_INT32]: Fix up. + +2025-04-17 Werner Lemberg + + [autofit] Don't access uninitialized memory. + + Reported as + + https://bugs.ghostscript.com/show_bug.cgi?id=708295 + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Initialize all + array elements of `contour_y_minima` and `contour_y_maxima`. + +2025-04-17 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_MulFix14,TT_DotFix14)[!FT_INT64]: Sync. + +2025-04-17 Alexei Podtelezhnikov + + * src/truetype/ttinterp.c (TT_DotFix14): Silence UBSAN. + +2025-04-17 Alexei Podtelezhnikov + + * src/base/ftcalc.c: Miscellaneous cleanups. + +2025-04-16 Werner Lemberg + + [autofit] Avoid crash. + + Reported as + + https://issues.oss-fuzz.com/issues/410811029 + + * src/autofit/aflatin.c (af_remove_segments_containing_point): Check + `edge->last`. + +2025-04-15 Alexei Podtelezhnikov + + [base, truetype] Silence UBSAN (cont'd). + + * src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14): Use MUL_INT64. + * include/freetype/internal/ftcalc.c (FT_MulFix): Ditto. + +2025-04-15 Werner Lemberg + + [autofit] Avoid unnecessary recomputation of HarfBuzz data. + + Call the functions once per font instead of once per glyph. + + * src/autofit/afadjust.c (af_all_glyph_variants): Move code to compute the + `feature_tags` and `type_3_lookup_indices` sets to... + (af_reverse_character_map_new): ...this function. + +2025-04-15 Werner Lemberg + + [autofit] Fix creation of the adjustment database's reverse map. + + Due to the way the reverse map array gets constructed with HarfBuzz, there + might be multiple, identical glyph index entries with different character + values in the array. As an example, an OpenType feature like 'unic' might + map lowercase glyph 'ae' to uppercase glyph 'AE', in addition to the already + present cmap entry for 'AE'. + + In most cases, this incorrect mapping is harmless (but still wrong). + However, there exist some lowercase/uppercase character pairs where the + diacritic for the uppercase character is on the other vertical side of the + base character as for the lowercase character. An example is U+0122 (LATIN + CAPITAL LETTER G WITH CEDILLA) and U+0123 (LATIN SMALL LETTER G WITH + CEDILLA): the former has the cedilla below, the latter above. A wrong + mapping would thus shift the base glyph 'G' up by a pixel instead of + shifting the cedilla down. + + We fix this by always giving precedence to cmap entries. + + * src/autofit/afadjust.c (af_reverse_character_map_entry_compare): Do a + secondary sort on the character code. + + (af_reverse_character_map_lookup): Adjust binary search to return the + first occurrence of an entry (i.e., the one with the lowest array index). + + (af_reverse_character_map_new)[FT_CONFIG_OPTION_USE_HARFBUZZ]: Implement + cmap priority. + +2025-04-15 Werner Lemberg + + [autofit] Reduce adjustment database lookups. + + This is also in preparation for a follow-up commit. + + * src/autofit/afadjust.h (af_lookup_vertical_separation_type, + af_lookup_tilde_correction_type): Replaced with... + (af_adjustment_database_lookup, af_reverse_character_map_lookup): + ... this. + + * src/autofit/afadjust.c (af_adjustment_database_lookup, + af_adjustment_database_lookup): Updated. + (af_lookup_vertical_separation_type, af_lookup_tilde_correction_type): + Removed. + (af_reverse_character_map_new)[FT_DEBUG_LEVEL_TRACE]: Updated. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments, + af_latin_hints_apply): Updated. + +2025-04-15 Werner Lemberg + + * src/afadjust.c (adjustment_database): Make it complete up to U+017F. + +2025-04-15 Werner Lemberg + + * src/autofit/afadjust.c (af_reverse_character_map_new): Add tracing code. + +2025-04-15 Werner Lemberg + + * src/afadjust.c: Minor fixes. + +2025-04-15 Werner Lemberg + + [autofit] Better vertical separation adjustment support. (2/2) + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Handle diacritics + with more than a single contour. + +2025-04-15 Werner Lemberg + + [autofit] Better vertical separation adjustment support. (1/2) + + Test vertical maxima instead of vertical minima to identify the highest + contour (and vice versa to identify the lowest contour). Doing so will + allow support of diacritics that consist of more than a single outline. + + This works because of the topological constraints ensured by the adjustment + database. + + * src/autofit/aflatin.c (af_find_highest_contour, + af_glyph_hints_apply_vertical_separation_adjustments): Implement it. + +2025-04-15 Werner Lemberg + + [autofit] Use new y extrema arrays. + + * src/autofit/aflatin.c + (af_glyph_hints_apply_vertical_separation_adjustments): Implement it. + +2025-04-15 Werner Lemberg + + [autofit] Provide infrastructure for storing y extrema of contours. + + We need this for better positioning support of diacritics. + + * src/autofit/afhints.h (AF_GlyphHintsRec): New fields `contour_y_minima` + and `contour_y_maxima`, together with its embedded variants. + + * src/autofit/afhints.c (af_glyph_hints_done, af_glyph_hints_reload): Handle + new arrays. + +2025-04-15 Werner Lemberg + + [autofit] Avoid crash. + + Reported as + + https://issues.oss-fuzz.com/issues/410609442 + + * src/autofit/aflatin.c (af_remove_segments_containing_point): Check `edge`. + +2025-04-14 Werner Lemberg + + [autofit] Fix just introduced heap buffer overflow + + Reported as + + https://issues.oss-fuzz.com/issues/410393975 + + * src/autofit/afadjust.c [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Synchronize with + HarfBuzz code. + +2025-04-14 Werner Lemberg + + * docs/CHANGES: Mention Craig's GSoC 2023 project. + +2025-04-14 Craig White + + [autofit] Add GSUB table handling to reverse character map generation. + + If HarfBuzz is enabled, the reverse character map generation now considers + GSUB entries when looking for glyphs that correspond to a code point. + + * src/autofit/afadjust.c (af_all_glyph_variants_helper, + af_all_glyph_variants) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New functions. + + (af_reverse_character_map_new) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call new + code. + +2025-04-14 Craig White + + [autofit] Add tilde-unflattening algorithm. + + * src/autofit/aflatin.c (af_find_highest_contour, + af_remove_segments_containing_point, + af_latin_remove_tilde_points_from_edges, af_latin_stretch_tilde, + af_latin_align_tilde): New functions. + (af_latin_hints_apply): Call tilde-unflatting code if necessary. + +2025-04-14 Craig White + + [autofit] Implement vertical separation adjustment. + + * src/autofit/aflatin.c: Include `afadjust.h`. + (af_latin_metrics_init): Call `af_reverse_character_map_new`. + (af_latin_metrics_done): New function. + + (af_move_contour_vertically, af_check_contour_horizontal_overlap, + af_glyph_hints_apply_vertical_separation_adjustments): New functions. + + (af_latin_hints_apply): Call + `af_glyph_hints_apply_vertical_separation_adjustments`. + + (af_latin_writing_system_class): Updated. + + * src/autofit/aftypes.h (AF_StyleMetricsRec): Add `reverse_charmap` field. + +2025-04-14 Craig White + + [autofit] Add code for reverse charmaps and adjustment database lookup. + + * src/autofit/aftypes.h (AF_ReverseMapEntry, AF_ReverseCharacterMap): New + structures. + + * src/autofit/afadjust.c (af_adjustment_database_lookup, + af_reverse_character_map_entry_compare, af_reverse_character_map_lookup, + af_lookup_vertical_separation_type, af_lookup_tilde_correction_type, + af_reverse_character_map_expand, af_reverse_character_map_new, + af_reverse_character_map_done): New functions. + + * src/autofit/afadjust.c: Updated. + +2025-04-14 Craig White + + [autofit] Add adjustment database. + + * src/autofit/afadjust.c, src/autofit/afadjust.h: New files. + + * include/freetype/internal/fttrace.h: Add 'afadjust' component. + + * src/autofit/autofit.c: Include `afadjust.c`. + + * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afadjust.c`. + +2025-04-14 Craig White + + [base] Make `find_unicode_charmap` a base function. + + This is needed for forthcoming changes in the auto-hinter. + + * include/freetype/internal/ftobjs.h, src/base/ftobjs.c: Updated. + +2025-04-12 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (hdigits): Removed. + + Fixes #1325. + +2025-04-12 Alexei Podtelezhnikov + + * include/freetype/internal/ftcalc.h (FT_MSB) [__CC_ARM]: Added. + +2025-04-12 Alexei Podtelezhnikov + + Typos in macros. + + * include/freetype/internal/ftcalc.h: s/_M_X86/_M_IX86/. + * src/truetype/ttinterp.c: s/_M_X86/_M_IX86/. + +2025-04-12 Alexei Podtelezhnikov + + * docs/CHANGES: Updated. + +2025-04-12 Alexei Podtelezhnikov + + [base, truetype] Silence UBSAN. + + * src/truetype/ttinterp.c (TT_MulFix14_64): Use unsigned multiplication. + * include/freetype/internal/ftcalc.h (FT_MulFix_64): Ditto. + +2025-04-12 Alexei Podtelezhnikov + + [base, truetype] Synchronize MulFix assembly. + + * include/freetype/internal/ftcalc.h (FT_MulFix_*), + src/truetype/ttinterp.c (TT_MulFix14_*): Synchronize routines. + +2025-04-10 Alexei Podtelezhnikov + + [truetype] Modernize bytecode projections. + + With 64-bit platforms widely available, it is more efficient to use + 64-bit variables readily. It results in noticeable 10% improvement + in glyph loading speed. + + * src/truetype/ttinterp.c (TT_MulFix14, TT_DotFix14) [FT_INT64]: + Prioritize available implementation with arguments adjusted based on + the use cases. + +2025-04-09 Alexei Podtelezhnikov + + [base] Update FT_MulFix inlining. + + Resolves inconsistencies in 64-bit multiplication discussed in !355. + Importantly, FT_MulFix arguments and return value is FT_Long, + whatever sizeof FT_Long is on 64-bit platforms: 8 bytes on Linux or + 4 bytes on Windows. + + * include/freetype/internal/ftcalc.h (FT_MulFix_x86_64): Removed. + (FT_MulFix_64): Generalize and prioritize the inline implementation + for all 64-bit platforms ifdef FT_INT64. + * src/base/ftcalc.c (FT_MulFix)[FT_INT64]: Call 'FT_MulFix_64'. + * src/base/ftbase.c: Include 'ftcalc.c' after the FT_MulFix callers + to enable its inlining. + +2025-04-09 Alexei Podtelezhnikov + + [base] Update FT_MulFix inlining. + Resolves inconsistencies in 64-bit multiplication discussed in !355. Importantly, FT_MulFix arguments and return value is FT_Long, whatever sizeof FT_Long is on 64-bit platforms: 8 bytes on Linux or 4 bytes on Windows. * include/freetype/internal/ftcalc.h (FT_MulFix_x86_64): Removed. (FT_MulFix_64): Generalize and prioritize the inline implementation + for all 64-bit platforms ifdef FT_INT64. * src/base/ftcalc.c (FT_MulFix)[FT_INT64]: Call 'FT_MulFix_64'. * src/base/ftbase.c: Include 'ftcalc.c' after the FT_MulFix callers to enable its inlining. + +2025-04-05 Graham Asher + + Missing header wrappers. + + * include/freetype/config/integer-types.h, src/smooth/ftgrays.h: + Add missing FT_BEGIN_HEADER and FT_END_HEADER. + * src/smooth/ftgrays.c: Cosmetics. + +2025-03-26 Alexei Podtelezhnikov + + [bdf] Clarify callback flow. + + * src/bdf/bdflib.c (bdf_line_func_t_): Modify callback prototype. + (bdf_parse_*_): Updated. + (bdf_load_font, bdf_readstream_): Delay callback initiation. + +2025-03-26 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_readstream_): Relocate. + +2025-03-26 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_is_atom_): Do not check tabs. + +2025-03-26 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (_bdf_strncmp): Macro removed, callers updated. + +2025-02-26 Alexei Podtelezhnikov + + .gitlab-ci.yml: Minor. + +2025-02-26 Tim-Philipp Müller + + * .gitlab-ci.yml: Switch to arm64 runners for macOS CI. + +2025-02-25 Behdad Esfahbod + + [sfnt/CPAL] Return early if user requested currently-set palette + + Before, we were loading a palette (again and again) even if the + same was requested. Even if the font only had one palette... + + For a font like NotoColorEmoji that has over 5000 colors in its + palette, this was dominating the COLRv1 loading times for HarfBuzz + (and I believe all other clients) because they have to set the + palette to get access to the colors. + + * src/base/ftcolor.c (FT_Palette_Select): Check the current palette. + +2025-01-29 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Move setup of properties. + +2025-01-25 Alexei Podtelezhnikov + + [bdf] Treat all comments uniformly. + + * src/bdf/bdflib.c (bdf_parse_start_): Reject fonts with initial + COMMENTs. + (bdf_parse_properties_): Skip COMMENTs so that... + (bdf_add_property_): Do not make exception for COMMENT. + (bdf_parse_glyphs_, bdf_add_comments): Updated. + +2025-01-25 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (BDF_SWIDTH_ADJ_): Remove clashing flag and update. + +2025-01-23 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_atous_): Remove unnecessary checks. + +2025-01-23 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_ato{i.ul.s.us}_]): Remove uncecessary checks. + +2025-01-23 Alexei Podtelezhnikov + + [bdf] Postpone font default char handling. + + * src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling + of the default char until... + * src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties. + +2025-01-23 Alexei Podtelezhnikov + + [bdf] Postpone font spacing handling. + + * src/bdf/bdf.h (bdf_font_t): Remove `monowidth`. + * src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling + of the font spacing until... + * src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties. + +2025-01-23 Alexei Podtelezhnikov + + [bdf] Postpone font ascent and descent handling. + + * src/bdf/bdflib.c (bdf_parse_start_, bdf_add_property_): Delay handling + of the font ascent and descent until... + * src/bdf/bdfdrivr.c (BDF_Face_Init): ... handles all other properties. + +2025-01-22 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Relax the header order. + + We now check that the header is complete in no specific order. + +2025-01-20 Chad Brokaw + + * src/truetype/ttgxvar.c (tt_face_vary_cvt): Fix all shared values. + + Applying cvar deltas to all shared points was incorrectly omitted. + Fixes #1314. + +2025-01-19 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_glyphs_): Fix tracing. + +2025-01-19 Alexei Podtelezhnikov + + [bdf] Tokenize input instead of listing. + + Instead of cumbersome field list mamangement, we will tokenize input + using custom `bdf_strtok_`. + + * src/bdf/bdflib.c (bdf_list_t_, bdf_list_init_, bdf_list_ensure_, + bdf_list_shift_, bdf_list_join_, bdf_list_split_, + bdf_set_default_spacing_): Removed. + (bdf_strtok_): New function which NUL-terminates the first token at + the delimiter position and returns the next token that follows + consequtive delimiters. + (bdf_parse_*_, bdf_load_font): Updated. + + * docs/CHANGES: Claim overall 75% performance improvement. + +2025-01-18 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Prevent another STARTPROPERTIES. + + Only one STARTPROPERTIES was permitted in the old flow preventing + leaks and overflows. + + See https://issues.oss-fuzz.com/issues/389968131 + https://issues.oss-fuzz.com/issues/390464875 + +2025-01-17 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Do not overwrite flags. + +2025-01-16 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_readstream_): Skip all control characters. + + This agrees with specifications and makes the code a lot simpler. + +2025-01-16 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Reserve space for artificial properties. + +2025-01-15 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_add_property_): Add extra protection. + + See https://issues.oss-fuzz.com/issues/389972472 + https://issues.oss-fuzz.com/issues/389968131 + +2025-01-15 Alexei Podtelezhnikov + + * src/bdf/bdflib.c: Clean up. + +2025-01-15 Alexei Podtelezhnikov + + [bdf] Use flags instead of options. + + * src/bdf/bdf.h (bdf_options_t): Removed. + (BDF_KEEP_COMMENTS, BDF_KEEP_UNENCODED, BDF_CORRECT_METRICS): Updated + to avoid collisions with the other parsing flags. + * src/bdf/bdfdrivr.c (BDF_Face_Init): Use default flags explicitly. + * src/bdf/bdflib.c (bdf_load_font): Use flags as an argument to + initialize the parser. + (bdf_set_fedault_spacing_): Default to BDF_PROPORTIONAL explicitly. + (bdf_parse_*_): Updated. + +2025-01-15 Alexei Podtelezhnikov + + [bdf] Adjust parsing flow and CHARS handling. + + * src/bdf/bdflib.c (bdf_readstream_): Remove CHARS exception. + (bdf_parse_glyphs_): Move glyphs allocation... + (bdf_parse_properties_): and missing ascent and descent handling... + (bdf_parse_start_): ...to here under CHARS. + +2025-01-15 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_readstream_): Tweak variables and loop design. + +2025-01-13 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_glyphs_): Free unused glyph_name. + + See https://issues.oss-fuzz.com/issues/389330334. + +2025-01-13 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_glyphs_): Store glyph as soon as possible. + +2025-01-12 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_glyphs_): Avoid possible leak. + +2025-01-12 Alexei Podtelezhnikov + + [bdf] Speed up bitmap parsing. + + A dedicated parser of bitmap data with minimal error checking and + no string comparisons helps to improve performance. + + * src/bdf/bdflib.c (bdf_parse_bitmap_): New dedicated bitmap parser. + (bdf_parse_glyphs_): Pass to `bdf_parse_bitmap_` on BITMAP. + +2025-01-12 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (a2i): Formatting. + +2025-01-11 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_*_): Minor improvements. + +2025-01-11 Alexei Podtelezhnikov + + * src/bdf/bdf.h (bdf_font_t): Correct `internal` type. + * src/bdf/bdflib.c (*): Update users. + +2025-01-10 Alexei Podtelezhnikov + + * builds/windows/ftsystem.c: Fix ancient condition. + +2025-01-10 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_parse_start_): Fix tracing labels. + +2025-01-09 Alexei Podtelezhnikov + + * MSBuild.rsp: Force console color for mintty. + +2025-01-09 Heiko Lewin + + * CMakeLists.txt: Use modern IMPORTED targets. + + This resolves build problems with newer libPNG versions by switching + to using IMPORTED CMake targets for common libraries where provided. + To do this the required CMake version is raised to version 3.12. + Doing this seems justified as using IMPORTED targets is a cleaner + and more powerful solution that can leverage advanced and CMake-specific + features that may be utilized by the referred dependencies' CMake modules. + + Resolves #1311. + +2025-01-08 Alexei Podtelezhnikov + + [cff] Remove size/slot checks. + + After the previous commit, cff_glyph_load is no longer called + without first checking for valid size and glyph objects in + FT_Glyph_Load and these checks can be removed downstream. + + * src/cff/cffdrivr.c (cff_glyph_load): Remove `size` and `glyph` checks. + * src/cff/cffgload.c (cff_slot_load): Ditto. + +2025-01-08 Alexei Podtelezhnikov + + * src/cff/cffdrivr.c (cff_get_advances): Do only fast advances. + + Otherwise, let TT_Get_Advances fall back on cff_load_glyph to do + slow advances. This avoids unchecked access to cff_load_glyph and + this is how tt_get_advances is implemented. + +2025-01-04 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Load_Glyph): Consolidate flag setting. + +2025-01-04 Alexei Podtelezhnikov + + Delay FT_GLYPH_FORMAT_OUTLINE assignmets. + + This assignmets used to be done prematurely before errors were checked + and outlines were actually loaded. Delaying the assignment provides + certain protection against careless usage of malformed input that + should now remain FT_GLYPH_FORMAT_NONE. + + * src/cff/cffgload.c (cff_slot_load): Ditto. + * src/cid/cidgload.c (cid_slot_load_glyph): Ditto. + * src/pfr/pfrobjs.c (pfr_slot_load): Ditto. + * src/truetype/ttgload.c (TT_Load_Glyph): Ditto. + * src/type1/t1gload.c (T1_Load_Glyph): Ditto. + +2025-01-03 Alexei Podtelezhnikov + + * builds/compiler/gcc-dev.mk: Silence some warnings. + +2025-01-02 Alexei Podtelezhnikov + + Remove superfluous outline zeroing. + + This is already done by `ft_glyphslot_clear`. + + * src/cff/cffgload.c (cff_slot_load): Do not zero outline fields. + * src/cid/cidgload.c (cid_slot_load_glyph: Ditto. + * src/pfr/pfrobjs.c (pfr_slot_load): Ditto. + * src/truetype/ttgload.c (load_sbit_image): Ditto. + * src/type1/t1gload.c (T1_Load_Glyph): Ditto. + +2025-01-02 Alexei Podtelezhnikov + + * src/truetype/ttobjs.c: Abbreviate tracing. + +2025-01-02 Alexei Podtelezhnikov + + * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Refactor `flip`. + +2025-01-01 Alexei Podtelezhnikov + + [truetype] Consolidate bitmap strike handling. + + * src/truetype/ttgload.c (TT_Load_Glyph): Relocate omitted whitespace + strike handling from here... + (load_sbit_image): ... to here. + +2024-12-31 Alexei Podtelezhnikov + + [truetype] Ingnore FT_LOAD_NO_BITMAP in bitmap-only fonts. + + For consistency with other bitmap-only fonts, we should ignore this + flag of the font is not scalable. + + * src/truetype/ttgload.c (TT_Load_Glyph): Check if face is scalable + when checking for FT_LOAD_NO_BITMAP. + + * docs/CHANGES: Start new chapter wtith this change. + +2024-12-16 Ben Wagner + + [ftstroke] Fix invalid pointer assignement to `arc` + + In `FT_Stroker_ConicTo` and `FT_Stroker_CubicTo` there is a `bez_stack`. + `arc` is initialized with `arc = bez_stack` and is never set to point + into any different object. The main loop looks like `while ( arc >= + bez_stack )` which is depending on a later `arc -= 2` (or `arc -= 3`) to + make `arc` point to before `bez_stack`. However, using pointer + subtraction to make `arc` point outside the array is undefined behavior, + and attempting to use the value in the loop predicate is "very" + undefined behavior. (C99 "Additive operators" 6.5.6.8.) + + This particular undefined behavior was discovered as either hangs or + MemorySantizer issues after "[InstCombine] Infer nuw for gep inbounds + from base of object" [0]. With this change, clang can infer that `arc` + must always point into the `bez_stack` object and therefore cannot be at + a "negative index" so the predicate is always true. + + [0] https://github.com/llvm/llvm-project/commit/e21ab4d16b555c28ded307571d138f594f33e325 + + * src/base/ftstroke.c (FT_Stroker_ConicTo, FT_Stroker_CubicTo): test + loop exit condition (there are no more arcs to process) before + decrementing `arc` + + Fixes: #1307 + +2024-12-04 Ben Wagner + + [cff] Fix leak of cmap data + + When `sfnt->load_face` succeeds it has already loaded any (optional) + cmap data. As a result, a subsequent call to `sfnt->load_cmap` will + overwrite the cmap data pointer with a new copy of the data but not free + the old, leading to a leak. + + This is a fix for "* src/cff/cffobjs.c (cff_face_init): Better handling + of Type0 fonts.". This still allows the cmap to be missing but avoids + the leak by only calling `sfnt->load_cmap` when there is no `head` + table (the font data is not being loaded as OpenType/CFF). + + * src/cff/cffobjs.c (cff_face_init): Fix leak + + Fixes: #1306 + +2024-11-06 Honnesh Ramachandra + + * src/cff/cffobjs.c (cff_face_init): Better handling of Type0 fonts. + + This issue relates to the PDF specification and its usage of CFF-based + embedded Type0 fonts. For Type0 fonts containing CID-keyed descendant + CFF-based fonts, the glyph index is the CID present in the content stream. + As a result, there is no requirement for a 'cmap' table to be present in the + font since the glyph indices are derived directly from the CIDs. FreeType + throws an error when it doesn’t find a 'cmap' table for such an Open Type + font containing CFF outlines. This commit relaxes this requirement for a + 'cmap' table for such fonts. + +2024-10-18 suzuki toshiya + + Download the latest gnu-config files in `make dist`. + + * builds/toplevel.mk: In `make dist`, checkout gnu-config + git repository at savannah, copy the latest versions of + `config.guess` and `config.sub` to builds/unix/. Also + the latest version of `gitlog-to-changelog` is used to + generate `ChangeLog`. + +2024-10-16 Behdad Esfahbod + + Move generic destroy to later in the face and size destruction. + + * src/base/ftobjs.c (destroy_size, destroy_face): This is such that the + generic destroy can be used to call `FT_Done_Library`. For that to work, + it needs to call it *after* having removed the face from the respective + module. + +2024-10-14 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (load_truetype_glyph): Rearrange. + +2024-10-14 suzuki toshiya + + * autogen.sh: Fix for Solaris 10. + + o Replace `test -e` by `test -d` (directory) and `-h` + (symlink), because pre-POSIX /bin/sh of Solaris 10 + does not support `test -e`. + o Replace the combination of `head` and `sed ...` by + single sed command `sed -n 1...p`. GNU libtoolize + with Solaris 10 /bin/sh complains "Broken Pipe" for + the closure of stdout by `head`. Let `sed` receive + all stdout and discard. + +2024-10-13 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (gray_convert_glyph): Clear stack pointers. + + Fixes a dangling pointer warning, see #1299. + +2024-10-13 suzuki toshiya + + apinames: Fix a buffer overrun for VMS platform. + + Some output formats may rewrite symbol names during the output, + like the concatenation of "64__" suffix on VMS. To estimate + sufficient size to store symbol name, pass the output format + info to `names_add`. For VMS, `names_add` allocates longer + buffer to append "64__". + + * apinames.c (SUFFIX_VMS_64ADDR): New macro of "64__". + (main): Pass the format info to `read_header_file`. + (read_header_file): Pass the format info to `names_add`. + (names_add): Receive the format info, and reserve the symbol + name buffer 4 byte longer in the case of VMS, to append the + suffix in `names_dump`. + +2024-10-13 suzuki toshiya + + apinames: Fix out-of-scope reference of a static array. + + * apinames.c (names_dump): For WATCOM_LBC format, the + DLL name with no suffix is constructed on a static + array temp[], but the scope is closed before use it. + The declaration of temp[] is moved to the wider + scope for the dumping part to refer it. + +2024-10-12 Alexei Podtelezhnikov + + * vms_make.com: Format rules. + + Use tabs in rules only à la Makefile. + +2024-10-12 Marian Klymov + + * meson.build: Define DLL_EXPORT for shared library only. + + Fixes #1298. + +2024-10-12 Benoit Pierre + + * meson.build: Minor improvements. + +2024-10-12 Benoit Pierre + + * meson.build: Fix `bzip2` option handling. + +2024-10-12 Benoit Pierre + + * meson.build: Add support for compiling with error strings. + * meson_options.txt: Document it. + +2024-10-10 suzuki toshiya + + Fix help message of apinames. + + * src/tools/apinames.c: The first header file must be + given after the options. All arguments after the + first header file are dealt as header files to be + parsed, regardless with their leading "-". + + For example, + "apinames include/freetype/freetype.h -dFREETYPE.DLL" + warns "unable to open -dFREETYPE.DLL". + + Thus, the "header1" must be given after the arguments + to be parsed as the options. + +2024-09-21 Jouk Jansen + + Minor fixes for OpenVMS. + + * vms_name.com: Suppress a warning with the latest Clang compiler. + + * builds/vms/apinames_vms.bash: Use absolute path to avoid dependency on the + environment. + +2024-09-07 Alexei Podtelezhnikov + + * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Respect metrics_only. + + Also fixes recursive flip. + +2024-09-06 Alexei Podtelezhnikov + + * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Tweak loop. + +2024-09-06 Andrew Murray + + [sfnt] Support sbix graphicType 'flip'. + + * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Currently undocumented by + Apple, this flips the bitmap data horizontally. It is used on macOS in + Apple Color Emoji; 19.4d6e1; 2024-02-05 (file `Apple Color Emoji.ttc`). + + Fixes issue #1282. + +2024-09-05 suzuki toshiya + + Add `clang` to host compiler candidates in cross building. + + * builds/unix/configure.raw: In cross building, + `clang` is tried if there is no `gcc`, nor `cc`. + +2024-09-05 suzuki toshiya + + Improve the build rule for `apinames`. + + * builds/unix/configure.raw: copy `CFLAGS` & + `LDFLAGS` values to `CFLAGS_BUILD` & + `LDFLAGS_BUILD`, in a self-hosting case. + + * builds/unix/unix-cc.in: set `CCexe_CFLAGS` & + `CCexe_LDFLAGS` by `CFLAGS_BUILD` & + `LDFLAGS_BUILD`. + + In some confused environments, simple building + like `cc -o apinames apinames.c` is no longer + able to build an executable running on the host. + + The validity of `CC` is tested with consideration + of `CFLAGS` and `LDFLAGS`, thus, duplicating + `CFLAGS` & `LDFLAGS` to `CCexe_CFLAGS` & + `CCexe_LDFLAGS` (via XXX_BUILD) would be slightly + safer in a self-hosting build. + + Fixes the issue #1296. + +2024-08-26 Alexei Podtelezhnikov + + * src/sfnt/ttcmap.c (tt_cmap*_get_info): Remove casting. + +2024-08-25 Alexei Podtelezhnikov + + * include/freetype/ftimage.h (FT_Bitmap): Describe empty bitmap. + +2024-08-14 luz paz + + Fix various typos. + +2024-08-13 Alexei Podtelezhnikov + + * messon.build: Install `include/freetype/ftlogging.h`. + + Fixes #1292. + +2024-08-12 Werner Lemberg + + * Version 2.13.3 released. + ========================== + + Tag sources with `VER-2-13-3'. + + * docs/VERSION.TXT: Add entry for version 2.13.3. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.13.2/2.13.3/, s/2132/2133/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. + + * builds/unix/configure.raw (version_info): Set to 26:2:20. + * CMakeLists.txt (VERSION_PATCH): Set to 3. + +2024-08-12 Werner Lemberg + + * meson.build: Install `freetype2.m4`. + + Fixes #1290. + +2024-08-12 Werner Lemberg + + * src/*/*: Fix C++ compilation; fix clang warnings. + +2024-08-12 Werner Lemberg + + * subprojects/*.wrap: Updated. + +2024-08-12 Werner Lemberg + + Various minor documentation or formatting fixes. + +2024-08-07 Werner Lemberg + + tttables.h (FT_Get_CMap_Format): Minor documentation improvement. + +2024-08-05 Alexei Podtelezhnikov + + * src/truetype/ttgxvar.c (ft_var_readpacked*): Minor. + +2024-08-05 Alexei Podtelezhnikov + + * src/base/ftstream.c (FT_Stream_ReadFields): Switch to `FT_Offset`. + +2024-08-02 Alexei Podtelezhnikov + + * src/winfonts/winfnt.c (fnt_face_get_dll_font): Unwrap arithmetic. + +2024-08-02 Alexei Podtelezhnikov + + * src/base/ftstream.c (FT_Stream_ReadFields): Update condition. + +2024-08-02 Alexei Podtelezhnikov + + [truetype/GX] Use more robust conditions. + + * src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}): Rewrite + conditions to avoid undefined behavior. + +2024-07-31 Alexei Podtelezhnikov + + [truetype/GX] Read points and deltas more carefully. + + Hopefully fixes newly introduced buffer overflows: + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=70807 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=70809 + + * src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}): Explicitly + check stream frame limits and modify run counting. + +2024-07-30 Alexei Podtelezhnikov + + [truetype/GX] Read stream more aggressively. + + With ample checks against the table size, we should be able to use + macros without the limit checks and functional calls. + + * src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}): + Use FT_NEXT_* instead of FT_GET_*. + +2024-07-29 Alexei Podtelezhnikov + + * src/sfnt/ttload.c (tt_face_load_name): Shorten dereference. + +2024-07-29 Alexei Podtelezhnikov + + * src/autofit/afmodule.c (af_autofitter_load_glyph): Shorten deref. + +2024-07-29 Alexei Podtelezhnikov + + [bdf,pcf,winfonts,sfnt] Remove barely used marcros. + + * include/freetype/internal/ftobjs.h (FT_FACE_SIZE, FT_SIZE_FACE): + Removed. + * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Updated. + * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto. + * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto + * src/sfnt/ttbdf.c (tt_face_find_bdf_prop): Ditto. + +2024-07-27 Dan Rosser + + * include/freetype/internal/ftcalc.h (FT_MSB)[_M_ARM64EC]: Added. + +2024-07-19 Werner Lemberg + + * src/truetype/ttobjs.c (tt_size_run_prep): Correct scaling of CVT values. + + This reverts the scaling behaviour introduced in commit 37580053. + + Fixes issue #1005. + +2024-06-29 Philip Race + + * psobjs.c (ps_table_add): Check length before calling `FT_MEM_CPY`. + + Fixes issue #1280. + +2024-06-29 Don Olmstead + + CMakeLists.txt: Respect FT_DISABLE_ZLIB value + + The CMake build uses `find_package` to look for dependencies. Before calling `find_package` it looks to see if the dependency was disabled. If not the associated `_FOUND` variable will be set. This value is then checked to determine if the dependency is added. + + However `find_package(PNG)` calls `find_package(ZLIB)` within its find module. So in the case of `FT_DISABLE_ZLIB=TRUE` and `FT_DISABLE_PNG=FALSE` the `ZLIB_FOUND` value can be set and even though `FT_DISABLE_ZLIB` is turned on. + + Unset the value of `ZLIB_FOUND` after the call to `find_package(PNG)` so the value is only set when `FT_DISABLE_ZLIB` is turned off. + +2024-06-26 Werner Lemberg + + Make 'multi' build work again. + + * src/psaux/psobjs.c: Include `psft.h`. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttgpos.c`. + + Fixes issue #1284. + +2024-06-23 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (load_truetype_glyph): Unsigned fix. + +2024-06-21 Alexei Podtelezhnikov + + Use unsigned tags `FT_Outline`. + + This change comes along with 2a7bb4596f56 ans is only meant to reduce + pointer casting in the code. + + * include/freetype/ftimage.h (FT_Outline): Do it. + * src/*: Update `FT_Outline` users. + +2024-06-21 Ben Wagner + + [ttgxvar] Avoid "applying zero offset to null pointer" + + In C it is undefined behavior to do arithmetic on a null pointer, including + adding zero. When using NotoSansKhmer[wdth,wght].ttf UBSAN produces a report + like + + ttgxvar.c:1052:31: runtime error: applying zero offset to null pointer + + when adding zero to `varData->deltaSet` (which is null) to produce `bytes`. + Protect against all the potential issues of this kind by returning early if + `varData->regionIdxCount == 0`. + + * src/truetype/ttgxvar.c (tt_var_get_item_delta): early return on no regions + +2024-06-21 Alexei Podtelezhnikov + + Use unsigned point and contour indexing in `FT_Outline`. + + This doubles the number or allowed points, see + https://github.com/harfbuzz/harfbuzz/issues/4752 + + Although it is hardly practical to use more than 32767 points, + other font engines seem to support it. + + * docs/CHANGES: Announce it. + * include/freetype/ftimage.h (FT_Outline): Do it and update limits. + * src/*: Update `FT_Outline` users. + +2024-06-20 Alexei Podtelezhnikov + + * src/pfr/pfrgload.c (pfr_glyph_curve_to): Avoid casting. + +2024-06-19 Alexei Podtelezhnikov + + * src/base/ftgloadr.c (FT_GlyphLoader_Prepare): Minor refactoring. + +2024-06-18 Alexei Podtelezhnikov + + [base, autofit, psaux] Remove unnecessary casting. + + * src/autofit/afhints.c (af_glyph_hints_reload): Remove (short) casting. + * src/base/ftgloadr.c (FT_GlyphLoader_Add): Ditto. + * src/psaux/psobjs.c ({t1,cff,ps}_builder_{add,close}_contour): Ditto. + +2024-06-18 Alexei Podtelezhnikov + + * include/freetype/ftimage.h: Explain standard types. + +2024-05-29 Ben Wagner + + [ttgxvar] Replace tabs with spaces + + Also clarify comments around conversion and clamping. + + * src/truetype/ttgxvar.c (ft_var_to_normalized): doit + +2024-05-27 Alexei Podtelezhnikov + + [truetype/GX] Consolidate memory allocations. + + * src/truetype/ttgxvar.c (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): + Allocate and split bigger memory blocks, avoid unnecessary zeroing, + do not copy shared tuples, revise error exit paths. + +2024-05-26 Alexei Podtelezhnikov + + Whitespace. + +2024-05-24 Alexei Podtelezhnikov + + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Reduce checks. + +2024-05-24 Alexei Podtelezhnikov + + Revert "[truetype] Reduce allocation scope." + + This reverts commit 9ff4153cbfd60491f11bb56905ce6e20e94d23c7. + +2024-05-23 Alexei Podtelezhnikov + + [truetype] Reduce allocation scope. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Reduce scope + of `points_org` and 'points_out`. + +2024-05-23 Alexei Podtelezhnikov (ÐлекÑей Подтележников) + + * .gitlab-ci.yml: Disable UWP compilation. + +2024-05-23 Alexei Podtelezhnikov + + * include/freetype/internal/ftmemory.h (FT_MEM_DUP): Fix g++ error. + +2024-05-21 Alexei Podtelezhnikov + + [cff, truetype] Validate variation axes immediately. + + Instead of validating variation axes in every access, OpenType specs + suggest that peak = 0 be used to tag invalid ranges. This implements + just that once during loading. + + * src/cff/cffload.c (cff_blend_build_vector): Move the range checks... + (cff_vstore_load): ... here. + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Ditto... + (tt_var_load_item_variation_store): ... ditto. + +2024-05-21 Alexei Podtelezhnikov + + [cff, truetype] Rearrange variation range checks. + + This should achieve quicker results for common cases. + + * src/cff/cffload.c (cff_blend_build_vector): Rearrange conditionals. + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Ditto. + +2024-05-21 Alexei Podtelezhnikov + + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Align with specs. + +2024-05-21 Alexei Podtelezhnikov + + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Minor refactoring. + +2024-05-21 Alexei Podtelezhnikov + + [cff] Optimize the blend vector computations. + + * src/cff/cffload.c (cff_blend_build_vector): Use FT_MulDiv and skip + multiplying by 1. + +2024-05-20 Alexei Podtelezhnikov + + [bdf] Use concise macros. + + * src/bdf/bdflib.c (bdf_create_property): Use FT_STRDUP. + (bdf_parse_glyphs_, bdf_parse_start_): Use FT_DUP for brevity. + +2024-05-20 Alexei Podtelezhnikov + + [cache] Use FT_DUP to duplicate data. + + * src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): Use concise FT_MEM_DUP. + +2024-05-20 Alexei Podtelezhnikov + + [truetype, type1] Use FT_DUP to duplicate data. + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use concise FT_DUP. + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ditto. + * src/type1/t1load.c (parse_subrs): Ditto. + +2024-05-18 Alexei Podtelezhnikov + + * builds/windows/ftsystem.c: Use _WINRT_DLL to check for UWP. + + Fixes compilation using Windows GDK, reported by Erin Melucci. + +2024-05-13 Alexei Podtelezhnikov + + * include/freetype/ftmm.h: Include `freetype.h`. + + Reported by Ben Wagner, see !326. + +2024-05-13 Alexei Podtelezhnikov + + [type1/MM] Safer handle arrays of different types. + + * src/type1/t1load.c (parse_blend_design_map): Separately allocate... + (T1_Done_Blend): ... and free `design_points` and `blend_points`. + +2024-05-12 Alexei Podtelezhnikov + + * src/type1/t1load.c (parse_blend_design_map): Add risky cast. + +2024-05-12 Alexei Podtelezhnikov + + * docs/CHANGES: Mention the last commit. + +2024-05-12 Alexei Podtelezhnikov + + [type1/MM] Tighten headers. + + * include/freetype/internal/t1types.h: Host PS_DesignMap and PS_Blend. + * include/freetype/ftmm.h: Host and document TT_MAX_MM_XXX. + * include/freetype/t1tables.h: Remove them from here. + +2024-05-11 Alexei Podtelezhnikov + + * src/pshinter/pshrec.c (ps_hints_stem): Correct argument. + +2024-05-08 Ben Wagner + + [psaux] Fix location and type order in initializer + + `T1_FIELD_ZERO` is used to zero initialize a `T1_FieldRec`. + `T1_FIELD_ZERO` is currently initilizing `T1_FieldRec::location` with a + `T1_FieldType` and `T1_FieldRec::type` with a `T1_FieldLocation`. This + was detected with `-Wenum-conversion`. + + * include/freetype/internal/psaux.h (T1_FIELD_ZERO): correct order of + initalizers + +2024-05-08 Alexei Podtelezhnikov + + * include/freetype/internal/psaux.h: Fix g++ warning. + + Reported by Hin-Tak Leung. + +2024-05-08 Ben Wagner + + [colr] Avoid overflow in range checks + + In 32 bit builds `FT_ULong` is 32 bits and can silently overflow when a + large number is read into one and then it is summed or multiplied with + another number. Checks for range overflow must be written so that they + themselves do not overflow. Also ensure that the table_size is always the + first part of the range check and consistently use `<` or `<=`. + + * src/sfnt/ttcolr.c (tt_face_load_colr): Avoid overflow. + (find_base_glyph_v1_record): Remove old work-around. + + Bug: https://issues.chromium.org/issues/41495455 + Bug: https://issues.chromium.org/issues/40945818 + +2024-05-06 Werner Lemberg + + .mailmap: Fix entry for Ben Wagner. + +2024-05-06 Alexei Podtelezhnikov + + [sdf, bsdf] Use shared FT_SqrtFixed. + + FT_SqrtFixed (95b0fe2a6dff) is faster and does not overflow. + + * src/sdf/ftsdfcommin.h (square_root): Replace with a macro. + * src/sdf/ftsdfcommin.c (square_root): Remove function. + +2024-05-04 Alexei Podtelezhnikov + + * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Remove FT_ABS. + + See + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68679 + +2024-05-03 Alexei Podtelezhnikov + + * src/sfnt/sfwoff2.c (woff2_open_font): Fix copy-paste typo. + +2024-05-03 Alexei Podtelezhnikov + + [woff,woff2] Limit the number of tables and use FT_MSB. + + The upper limit of 4095 is implied by the SFNT header format + where the multiplication by 16 would overflow without it. + + * src/sfnt/sfwoff.c (woff_open_font): Updated. + * src/sfnt/sfwoff2.c (woff2_open_font): Ditto. + +2024-05-02 Ben Wanger + + [woff2] Disallow zero table font entries + + The existing code already disallows zero table woff2 overall, but still + allows for individual CollectionFontEntry to create font instances with + zero tables. Such fonts are not useful so error early. + + This also fixes an MSAN discovered issue where if a CollectionFontEntry + numTables is zero then the sfnt_header was not fully initialized. + + * src/sfnt/sfwoff2.c (woff2_open_font): error on zero tables, always + initalize sfnt_header + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68384 + +2024-05-02 Alexei Podtelezhnikov + + [sfnt] Use faster macros in checksums. + + * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Use FT_NEXT_XXX. + * src/sfnt/sfwoff2.c (compute_ULong_sum): Use macros. + +2024-05-01 Alexei Podtelezhnikov + + * src/sfnt/sfwoff2.c (compute_ULong_sum): Clean up. + +2024-04-30 Alexei Podtelezhnikov + + * docs/CHANGES: Updated. + +2024-04-30 Alexei Podtelezhnikov + + * src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Remove nodes instantly. + +2024-04-29 Alexei Podtelezhnikov + + [cache] Remove unused `node_reset`. + + * src/cache/ftcmru.h (FTC_MruListClassRec): Remove `node_reset` field. + * src/cache/ftcbasic.c (ftc_basic_{image,sbit}_family_class): Ditto. + * src/cache/ftcmanag.c (ftc_face_list_class): Ditto. + (ftc_size_node_reset): Remove function. + * src/cache/ftcglyph.h: Fix comment. + +2024-04-29 Alexei Podtelezhnikov + + * src/cache/ftcmru.c (FTC_MruList_New): Do not reset nodes. + + Resetting of the size nodes can crash, if a parent face purge happens + simultaneously and destroys the node. It is safer to create a new node. + Fixes #1270, reopened with a separate issue. + +2024-04-28 Alexei Podtelezhnikov + + * src/cache/ftcimage.c (ftc_inode_weight): Formatting. + +2024-04-28 Alexei Podtelezhnikov + + Document the SDF spread further. + +2024-04-23 Alexei Podtelezhnikov + + * include/freetype/ftdriver.h: s/truncated/clamped/. + +2024-04-23 Alexei Podtelezhnikov + + Improve SDF documentation. + +2024-04-21 Alexei Podtelezhnikov + + [cache] Minor tweaks. + + * src/cache/ftcimage.c (ftc_inode_free): Remove unnecessary check. + * src/cache/ftcmanag.c (FTC_Manager_Done): Do not zero before freeing. + +2024-04-21 Alexei Podtelezhnikov + + * src/cache/ftcbasic.c: Cosmetic harmonization. + +2024-04-20 Alexei Podtelezhnikov + + [cache] Reduce type mismatches. + + * src/cache/ftcbasic.c (FTC_BasicAttrRec): Match type of `load_flags` + to its main purpose in `FT_Load_Glyph`. + (FTC_ImageCache_Lookup{,Scaler},FTC_SBitCache_Lookup{,Scaler}): Updated. + +2024-04-19 Alexei Podtelezhnikov + + * src/cache/{ftcbasic.c,ftccmap.c}: Use FTC_INLINE. + +2024-04-19 Alexei Podtelezhnikov + + [cache] Tweak headers. + + * src/cache/ftccback.h: Include less and move `ftc_node_destroy`... + * src/cache/ftccache.h: ... to here. + * src/cache/ftcmanag.c: Include less. + +2024-04-19 Alexei Podtelezhnikov + + * src/cache/ftcglyph.c [!FTC_INLINE]: Fix compilation. + +2024-04-17 Alexei Podtelezhnikov + + [cache] Improve MRU list management. + + * src/cache/ftcmru.c (FTC_MruList_Remove): Cosmetic. + (FTC_MruList_New): Accept only valid changes. + * src/cache/ftcmanag.c (ftc_size_node_done): Simplify. + +2024-04-17 Alexei Podtelezhnikov + + [cache] Fix error handling. + + Manipulate the cache after a face is requested or a size is looked up + successfully. Fixes #1270. + + * src/cache/ftcmanag.c (ftc_size_node_init, ftc_size_node_reset, + ftc_face_node_init): Check for errors before accepting a change. + * src/cache/ftcmru.c (FTC_MruList_New): Do nothing if reset fails. + +2024-04-14 Alexei Podtelezhnikov + + [smooth] Switch to vertical bisections. + + With horizontal bisections, the smallest section is a whole single + scanline. Almost horizontal lines or other complex scanlines can + easily overflow the rendering pool. Switching to vertical bisections + splits the scanlines and should rule out the overflows. Fixes #1269. + + * src/smooth/ftgrays.c (gray_convert_glyph): Bisect vertically. + +2024-04-14 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (gray_convert_glyph): Refactor for convenience. + +2024-04-14 Alexei Podtelezhnikov + + [smooth] Store persistent clipping box. + + * src/smooth/ftgrays.c (gray_TWorker, gray_raster_render): Add and set + the new structure field. + (gray_convert_glyph): Use it. + +2024-03-08 Ben Wanger + + [colr] Ensure enough bytes for PaintColrLayers + + * src/sfnt/ttcolr.c (read_paint): check that there are five additional + bytes to be read when reading PaintColrLayers. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66566 + +2024-03-08 Ben Wagner + + Avoid n^2 scanning for binary data. + + When creating a CID parser the location of the 'StartData' or '/sfnts' + tokens needs to be known. However, the token parser requires that the + entire document be in memory and flattening the entire stream into memory is + to be avoided. + + To avoid forcing the entire stream into memory, previously this code would + scan through the stream looking for 'StartData' or '/sfnts' as strings. + However, these strings could have been in a comment or string token, so the + stream would be read into memory up to that point and the parser run to + check that these strings were actually tokens. This forced a parser restart + from the beginning each time; as a result, data with many 'StartData' + non-tokens would take n^2 time to check. + + * src/cid/cidparse.c (cid_parser_new): Change algorithm to make the initial + scan look for the last possible 'StartData' or '/sfnts' string in the + stream. The stream is read forward instead of backward as a typical normal + CID font will have one 'StartData' toward the beginning of the data and it + it much faster to read the data from beginning to end instead of end to + beginning. For memory-based fonts the limit is set to the end of the stream + since the stream is already in memory. Then the parser is run once to look + for 'StartData' or '/sfnts' tokens. If they are found the parser is re-set + to reflect this new information. + + Reported as + + https://issues.chromium.org/issues/40201695 + +2024-03-06 Alexei Podtelezhnikov + + * CMakeLists.txt: Bump required version to 3.5. + + Fixes #1267. + +2024-03-04 Jordan Williams + + meson: Use the standard dependency mechanism to find bzip2 + + This follows standard conventions in Meson by using the pkg-config file. + This change allows Conan to switch to the Meson build system. + +2024-02-29 Ben Wanger + + [cff, truetype] Always set up default variable instance. + + For default variable instances `cff_face_init` did not set the blend. This + mostly worked as later use of the unset blend produced the default + variation. However, if a user called `TT_Get_MM_Var` the blend would be + partially set up, but not fully. In particular the number of axes, the axis + definitions, and the instance locations would be set up, but not the current + instance location (`coords` and `normalizedcoords`). This could lead to the + default instances of CFF2 fonts erroring on any use of `blend`. + + Ensure the default variable instance is fully set up by always calling + `FT_Set_Named_Instance` on a variable face. + + * src/cff/cffobjs.c (cff_face_init): Call `FT_Set_Named_Instance` on + default instances. + * src/truetype/ttobjs.c (tt_face_init): Ditto. + + Fixes #1268. + +2024-02-23 Werner Lemberg + + * src/truetype/ttgxvar.c (ft_var_to_normalized): Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66543 + +2024-01-27 Alexei Podtelezhnikov + + Update all copyright notices. + +2024-01-27 Alexei Podtelezhnikov + + * src/sfnt/ttgpos.c (tt_gpos_get_glyph_class): Fix warning C4018. + +2024-01-27 David Saltzman + + Add support for kerning from 'GPOS' tables. + + This commit adds support for kerning from 'GPOS' tables, while maintaining + support for basic 'kern' tables. `FT_HAS_KERNING` will be true for a font + with either available and `FT_Get_Kerning` will still use the basic 'kern' + table data if avilable, otherwise check the GPOS 'kern' feature. + + This feature is disabled by default; it can be enabled with the + `TT_CONFIG_OPTION_GPOS_KERNING` flag. + + Only basic kerning (pair positioning with just an x advance) is supported + from the GPOS layout features; support for that was added to make the + existing `FT_Get_Kerning` API more consistently functional. FreeType does + not intend to extend itself to further GPOS functionality though; a + higher-level library like HarfBuzz can be used instead for that. + + * include/freetype/config/ftoption.h, include/devel/ftoption.h + (TT_CONFIG_OPTION_GPOS_KERNING): New configuration option. + + * include/freetype/internal/fttrace.h: Add `ttgpos` trace handler. + + * include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_gpos` and + `get_gpos_kerning` fields. + (FT_DEFINE_SFNT_INTERFACE): Updated. + + * include/freetype/internal/tttypes.h: Include `fttypes.h`. + (TT_FaceRec) [TT_CONFIG_OPTION_GPOS_KERNING]: Add `gpos_table` and + `gpos_kerning_available` fields. + + * src/sfnt/ttgpos.c, src/sfnt/ttgpos.h: New files. + + * src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`. + (sfnt_interface): Updated. + + * src/sfnt/sfnt.c: Include `ttgpos.c`. + + * src/sfnt/sfobjs.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`. + (sfnt_load_face) [TT_CONFIG_OPTION_GPOS_KERNING]: Load and free GPOS kerning + data; check GPOS kerning availability. + + * src/truetype/ttdriver.c (tt_get_kerning): Use GPOS kerning if there's no + 'kern' table. + +2024-01-14 Alexei Podtelezhnikov + + [smooth] Remove SSE2. + + As a result of 7b308a29dd10, the regular 64-bit execution is now faster + than SSE2. The rendering speed of script fonts at 64 ppem or larger is + improved by about 3% without SSE2. See !314 for the testing results. + + * src/smooth/ftgrays.c (gray_render_conic)[FT_INT64]: Remove SSE2 code. + +2024-01-14 Alexei Podtelezhnikov + + * CMakeLists.txt: Accommodate MingGW. + + See https://github.com/StephanTLavavej/mingw-distro/issues/97. + +2024-01-08 Ozkan Sezer + + * src/sfnt/ttcolr.c (find_base_glyph_v1_record): Fix build in C90 mode. + +2024-01-07 Alexei Podtelezhnikov + + [base] Fix up Mac resource forks and dfonts. + + * src/base/ftobjs.c (IsMacResource): Assign `face_index`. + * src/base/ftmac.c (FT_New_Face_From_Suitcase): Ditto after rework. + +2024-01-05 Alexei Podtelezhnikov + + [sfnt] Restrict POST version 1.0. + + A font has surfaced with `post` version 1.0 and fewer than 258 glyphs. + Its glyphs did not correspond to their names. We now reject such `post` + strictly following specifications. + + * src/sfnt/ttpost.c (tt_face_get_ps_name): Check the number of glyphs + for version 1.0. + +2024-01-03 Alexei Podtelezhnikov + + * .gitlab-ci.yml: Use detached CI pipelines. + + See issue freedesktop/freedesktop#540. + +2024-01-02 Werner Lemberg + + [sfnt] Guard access in 'COLR' v1 glyph binary search. + + Reported as + + https://bugs.chromium.org/p/chromium/issues/detail?id=1505216 + + * src/sfnt/ttcolr.c (find_base_glyph_v1_record): Guard access of the search + pointer during binary search. The pointer needs to be checked as we go as + the test that compares number of v1 glyphs with table size at the time of + loading the table is not sufficient on its own. + + A scenario is possible in which the `BaseGlyphRecord` list extends into + non-`BaseGlyphRecord` parts of the 'COLR' v1 table (but passed the size + comparison check). Then, at those locations, invalid glyph ID values are + read and may provoke an invalid read due to reassigning min and max values + during the binary search. + +2023-12-18 Alexei Podtelezhnikov + + [ci] Add support for MSBuild on Windows. + + This adds msbuild job for VS2019 (x64). + + * .gitlab-ci.yml: Added "windows msbuild vs2019 amd64". + +2023-12-14 Skef Iterum + + [CFF] Extract `BlueValues` as `Fixed` rather than `Int`. + + This is a follow-up to commit 26a7f047, + + [cff] Make blend operator work with floats in private dicts. + + which addressed the 'party baseline' bug. However, the reporting user + indicated that the default location and some other points in design space + rendered OK, but other points in design space still had problems. The most + obvious issue being that the x-heights of lower-case letters did not align; + see + + https://github.com/adobe-fonts/source-serif/issues/121#issuecomment-1773794136 + + After some analysis we determined that this was due to an interaction + between `BlueValue` rounding and the zone-based algorithm. In short, for a + point to be considered in a zone it must fall within the bounds of the zone. + (There is a slop factor in some cases, but only a very small one.) In the + Adobe-contributed side of the code, point values are not integer-rounded, + instead they're kept as (some form of) fixed. Rounding just the `BlueValues` + means that points that need to be considered within a zone will fall outside + of it at some points in design space. + + The majority of this patch changes the storage and parsing of `BlueValues` + to keep them as `FT_Fixed`. No significant code changes were needed because + the values are converted to `Fixed` anyway when stored in `CF_BlueRec`. No + attempt was made to address problems in the older pshinter code beyond + converting the values from `FT_Fixed` to `FT_Short` when copying the private + dictionary. (However, as the point values are also rounded in that code, + the problem is much less likely to occur, although inconsistency between + rounding and truncation could cause an analogous problem.) + + * include/freetype/internal/cfftypes.h (CFF_PrivateRec): Use `FT_Fixed` for + `blue_values`, `other_blues`, `family_blues`, and `family_other_blues`. + + * src/cff/cffload.c (cff_blend_doBlend): Updated. + + * src/cff/cffobjs.c (CFF_fixedToInt): New macro. + (cff_make_private_dict): Use it. + + * src/cff/cffparse.h (cff_kind_delta_fixed): New enum value. + + * src/cff/cffparse.c (do_fixed): Updated. + (CFF_FIELD_DELTA, CFF_FIELD_DELTA_FIXED, CFF_DELTA_KIND): New set of macros, + replacing `CFF_FIELD_DELTA`. + (cff_parser_run): Updated to handle fixed-float deltas. + + * src/cff/cfftoken.h: Updated to use `CFF_FIELD_DELTA_FIXED` for blue + values. + + * src/psaux/psblues.c (cf2_blueToFixed): Removed, no longer needed. + (cf2_blues_init): Updated. + + * src/pxaux/psft.c, src/pxaux/psft.h (cf2_getBlueValues, cf2_getOtherBlues, + cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Updated signatures. + + * src/psaux/psobjs.c (t1_make_subfont): Updated. + +2023-12-14 Skef Iterum + + [psaux] Improve tracing. + + * src/psaux/psintrp.c (cf2_doBlend, cf2_interpT2CharString [cf2_cmdBLEND]): + Show blended values. + +2023-12-14 Jouk Jansen + + * vms_make.com: Switch to `clang`. + + Also add proper bzip2 support. + +2023-12-14 Werner Lemberg + + * src/truetype/ttgxvar.c (ft_var_to_normalized): Fix undefined left-shift. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=63723 + +2023-12-07 Alexei Podtelezhnikov + + [msbuild] Streamline the process. + + MSBuild.exe can now be fired from the root folder without options. + + * builds/windows/vc2010/freetype.sln: Relocated to... + * MSBuild.sln: ... here with minor changes. + * MSBuild.rsp: New file with command line options. + * docs/INSTALL: Reference `MSBuild.sln`. + +2023-12-02 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Draw_Sweep): Swap stub conditions. + +2023-12-02 Alexei Podtelezhnikov + + * src/raster/ftmisc.h (FT_MulDiv): Remove unused copy. + +2023-11-28 Alexei Podtelezhnikov + + [raster] Speed up Bézier arches with extrema. + + While it is recommended to have an explicit point at each curve + extrema, they might be missing or outline could be rotated. This + leads to excessive bisections in raster to find them. This change + helps to decrease the number of bisections. The scanline + intersections remain monotonous, of course. + + * src/raster/ftraster.c (Conic_To, Cubic_To): Check that control + points cross the scanlines to bisect. + +2023-11-25 Alexei Podtelezhnikov + + * docs/*: Typos. + +2023-11-24 Alexei Podtelezhnikov + + [raster] Eliminate intensive flow checking. + + * src/raster/ftraster.c (Draw_Sweep): Pass the flow increment. + (Increment): Accept the flow increment. + +2023-11-23 Alexei Podtelezhnikov + + * src/raster/ftraster.c: Comments, defines, includes, cleanups. + +2023-11-21 Alexei Podtelezhnikov + + * src/raster/ftraster.c (FT_Outline_Get_CBox ) [STANDALONE_]: Removed. + +2023-11-21 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Draw_Sweep): No-fault return. + (Render_Single_Pass): Updated. + +2023-11-21 Alexei Podtelezhnikov + + [raster] Sweep polishing. + + * src/raster/ftraster.c (*_Sweep_Span): Polish. + (*_Sweep_Drop): Restore tracing, polish. + (Draw_Sweep): Simplify the dropout processing loop. + +2023-11-21 Alexei Podtelezhnikov + + [raster] Rearrange dropout control. + + This reduces the code duplication. + + * src/raster/ftraster.c (Function_Sweep_Span): Change signature. + (Vertical_Sweep_Drop, Horizontal_Sweep_Drop): Focus on pixel setting + and move duplicated the dropout control logic to... + (Draw_Sweep): ... this function and refactor. + (Vertical_Sweep_Span, Horizontal_Sweep_Span): Minor. + +2023-11-21 Alexei Podtelezhnikov + + [raster] Use bitwise dropout mode interpretation. + + * src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop, + Draw_Sweep, Render_GLyph): Interpret dropout mode using bit masks. + +2023-11-16 Alexei Podtelezhnikov + + * docs/CHANGES: Updated. + +2023-11-16 Alexei Podtelezhnikov + + [raster] Keep only bottom y-turns. + + This results in noticeable performance improvement. + + * src/raster/ftraster.c (Insert_Y_Turns): All bottom y-turns are still + sorted and stored; only the maximum top y-turn is recorded now. The + function is renamed. + (End_Profile): Updated accordingly. + (Convert_Glyph): Reserve space for the top value. + +2023-11-15 Alexei Podtelezhnikov + + * src/raster/ftraster.c (End_Profile): Reduce branching. + (InsNew): Tweak condition. + +2023-11-15 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Draw_Sweep): Use more natural loop. + +2023-11-15 Alexei Podtelezhnikov + + [raster] Dissolve a loop. + + * src/raster/ftraster.c (End_Profile): Set initial `X` here... + (Draw_Sweep): ... instead of here; delay the `start` decrement. + +2023-11-15 Alexei Podtelezhnikov + + * src/raster/ftraster.c: Comments. + +2023-11-14 Alexei Podtelezhnikov + + [raster] Stylistic changes. + + * src/raster/ftraster.c (Line_To): Code it similar to curves; + shortcut the flat lines here... + (Line_Up): ... instead of here. + +2023-11-14 Alexei Podtelezhnikov + + [raster] Revise overshoot setting. + + * src/raster/ftraster.c (New_Profile, End_Profile): Deal with overshoots + locally. + (Line_To, Conic_To, Cubic_To): Update callers. + +2023-11-14 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Conic_To, Cubic_To): Fix recent regression. + +2023-11-14 Alexei Podtelezhnikov + + * include/freetype/ftimage.h: Fix type and link. + +2023-11-14 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Increment): Minor tweak. + +2023-11-13 Alexei Podtelezhnikov + + [raster] Get rid of the fresh flag. + + * src/raster/ftraster.c (black_TWorker): Remove the fresh flag. + (New_Profile): Set the starting scanline here based on the current + coordinate and initialize the joint crossing if necessary. + (Line_Up, Bezier_Up): Do not deal with fresh and joint starts at all. + (Line_Down, Bezier_Down): Simplify. + (Conic_To, Cubic_To): Update the current coordinate after each + subsection. + +2023-11-12 Alexei Podtelezhnikov + + [raster] Get rid of the joint flag. + + * src/raster/ftraster.c (Line_Up, Bezier_Up): Deal with the scanline + joints directly based on the initial y-coordinate. + (New_Profile, black_TWorker): Remove the boolean flag. + +2023-11-11 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Line_Up, Bezier_Up): Check "between" earlier. + +2023-11-11 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Line_Up): Updated and fixed up. + + This largely synchronizes the entries into `Line_Up` and `Bezier_Up`. + Minor bugs in the remainder calculations and accumulations are fixed. + +2023-11-10 Alexei Podtelezhnikov + + * src/raster/ftraster.c (End_Profile, Convert_Glyph): Clean up. + +2023-11-10 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Bezier_Up): Improve joint and loop. + +2023-11-07 Alexei Podtelezhnikov + + [raster] Harmonize target bitmap navigation. + + * src/raster/ftraster.c (black_TWorker): Store signed maximum indexes + in both directions instead of unsigned dimensions of the original bitmap. + (*_Sweep_*, Render_Glyph, ft_black_render): Updated all users. + +2023-11-06 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Bezier_Up): Improve flow. + +2023-11-06 Alexei Podtelezhnikov + + [raster] Reshuffle code for readability. + + * src/raster/ftraster.c (Render_Glyph): Setup the rendering pool here. + (ft_black_render): Setup the target bitmap helpers here. + +2023-11-04 Alexei Podtelezhnikov + + [raster] Improve profile accounting during sweeping. + + * src/raster/ftraster.c (TProfile): Get rid of `countL`. + (Draw_Sweep): Use `start` for countdown to activation. + (Horizontal_Sweep_Drop, Vertical_Sweep_Drop): Rely on `height` and + `offset` to verify profile ends for the stub detection. + +2023-11-04 Alexei Podtelezhnikov + + [raster] Consolidate profile increment to the next line. + + * src/raster/ftraster.c (s/Sort/Increment): Rename this function to + reflect its true purpose, delete exhausted profiles here... + (Draw_Sweep): ... instead of here. + +2023-11-04 Alexei Podtelezhnikov + + [raster] Instantly remove profiles from linked lists. + + * src/raster/ftraster.c (DelOld): Remove loopy function. + (Draw_Sweep): Implement instant profile removal. + +2023-11-03 Alexei Podtelezhnikov (ÐлекÑей Подтележников) + + [raster] Modify the split condition. + + While curving close to a pixel center, vertical and horizontal pass + might split the curve differently and cause a rare dropout. This + makes the split condition invariant of the sweep direction and more + robust. + + * src/raster/ftraster.c (Bezier_Up): Modify the split condition. + +2023-11-03 Alexei Podtelezhnikov (ÐлекÑей Подтележников) + + [raster] Remove the jitter exception. + + The jitter exception used to be applied when two neighboring pixels + were barely inside the outline. One the left one was turned on then, + which contradicts the OpenType specifications. Intended to remove + glitches, it caused disappearing lines and was softened by adding an + exception to the exception (#54589). + + * src/raster/ftraster.c (Vertical_Sweep_Span): Drop the jitter exception. + +2023-10-31 Alexei Podtelezhnikov + + [raster] Simplify dropout detection. + + * src/raster/ftrater.c (Draw_Sweep): Use a single dropout condition. + +2023-10-31 Alexei Podtelezhnikov + + [raster] Simplify sweeping entry and exit. + + * src/raster/ftraster.c (Draw_Sweep): Use y-turns to set the range, + correctly set the initial position, directly loop through y_turns, + and remove a 5-gray remnant at exit. + +2023-10-26 Alexei Podtelezhnikov + + [raster] Switch to routine Int instead of Short. + + This is mostly cosmetic and removes a few casts, plus Short is + promoted to Int in calculations anyway. + + * src/raster/ftraster.c (Vertical_Sweep_Init, Vertical_Sweep_Span, + Vertical_Sweep_Drop, Horizontal_Sweep_Init, Horizontal_Sweep_Span, + Horizontal_Sweep_Drop, Draw_Sweep): Mostly s/Short/Int/ and remove + casting. + +2023-10-24 Alexei Podtelezhnikov + + [raster] Increase the raster pool density. + + This only helps to delay the pool overflow and bisections to larger + sizes and benefits only very intricate glyphs at reasonable sizes. + + * src/raster/ftraster.c (TProfile): Use Int instead of Long or PLong + when it is sufficient. + (New_Profile, End_Profuile, Bezier_Up, Sort): Updated accordingly. + +2023-10-23 Alexei Podtelezhnikov + + [raster] Slightly improve the pool design. + + * src/raster/ftraster.c (TProfile): Include the variable array member + and repackage with pointers first. + (New_Profile): Advance the top using the variable array pointer. + +2023-10-22 Alexei Podtelezhnikov + + [raster] Clean up sweeping. + + * src/raster/ftraster.c (Draw_Sweep): Zero initialize the working + lists directly and remove unnecessary y-turn checks. + (Init_Linked): Removed. + +2023-10-22 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Insert_Y_Turn): Improve flow. + +2023-10-22 Alexei Podtelezhnikov + + * src/pcf/pcfutil.c (BSWAP16): Limit clang support. + + These ancient builtins have been supported by clang since 2013. We + condition it somewhat stricter but still around 2017. This is more + portable than `__has_builtin`. Fixes #1260. + +2023-10-19 Alexei Podtelezhnikov + + [raster] Small optimizations. + + * src/raster/ftraster.c (New_Profile): Set important fields only and + delay setting `gProfile` until... + (End_Profile): ... it is checked to be valid here. + (Convert_Glyph): Updated. + +2023-10-18 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Convert_Glyph): Remove redundant check. + +2023-10-18 Alexei Podtelezhnikov + + [raster] Fix linked profiles in contour loops. + + This fixes a subtle bug when the last profile in a contour was not + properly short-circuited if it was still empty at `End_Profile`. + We finalize all linking in `Finalize_Profile_List` now and do nothing + else there. The turns are added in `End_Profile`. + + * src/raster/ftraster.c (Insert_Y_Turn): Moved up unchanged. + (End_Profile): Take care of turns but set only preliminary linking. + (Finalize_Profile_Table): Take care of linking and null-termination. + (Convert_Glyph): Adjusted accordingly. + +2023-10-15 Alexei Podtelezhnikov + + * src/raster/ftraster.c: Improve tracing. + +2023-10-13 Alexei Podtelezhnikov + + [raster] Improve profile accounting. + + * src/raster/ftraster.c (End_Profile): Do not initiate next profile. + (New_Profile): Fully initiate new profile. + (Convert_Glyph): Clean up variables, initialize `fProfile` here. + +2023-10-13 Alexei Podtelezhnikov + + * src/raster/ftraster.c (Convert_Glyph): Fix null-dereference. + +2023-10-13 Alexei Podtelezhnikov + + [raster] Fix pool overflow checking. + + * src/raster/ftraster.c (New_Profile, End_Profile): Check for overflow + immediately. + (Convert_Glyph, Render_Single_Pass): Fix boundaries. + +2023-10-13 Alexei Podtelezhnikov + + [raster] Miscellaneous clean-ups. + + * src/raster/ftraster.c (New_Profile): Use NULL. + (End_Profile): Optimize variables. + (Convert_Glyph): Do not initialize `cProfile` yet. + (Render_Single_Pass): Tracing. + +2023-10-10 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c: Move the sweep functions... + + ... out of the setjmp/longjmp scope for readability. + +2023-10-10 Alexei Podtelezhnikov + + * src/raster/ftraster.c: Tracing updates. + +2023-10-09 Zachary Zollman + + fix typo in FT_Outline_Decompose note + +2023-09-29 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (gray_render_conic) [SSE2]: Improve flow. + +2023-09-26 Alexei Podtelezhnikov + + * src/gxvalid/gxvcommn.h (GXV_USHORT_TO_SHORT): Removed. + +2023-09-25 Alexei Podtelezhnikov + + Comment typos. + +2023-09-25 Alexei Podtelezhnikov + + * src/base/ftcalc.c (FT_MOVE_SIGN): Enclose assignments. + +2023-09-21 Alexei Podtelezhnikov + + * include/freetype/internal/ftcalc.h (FT_MSB): Define for Solaris 11. + +2023-09-20 Alexei Podtelezhnikov + + [psaux] Use `FT_SqrtFixed`. + + * src/psaux/cffdecode.c : Call `FT_SqrtFixed`. + * src/psaux/psintrp.c : Ditto. + +2023-09-20 Alexei Podtelezhnikov + + [base] Reintroduce `FT_SqrtFixed`. + + The general square root calculations are not necessary in FreeType. + For vector normalization or length, FreeType uses special functions. + It is, however, required in the legacy CFF specifications. + + * src/base/ftcalc.c (FT_SqrtFixed): New function that uses either + Babylonian or bit-wise algorithm, whichever is faster for the given + situation. + * include/freetype/internal/ftcalc.h (FT_SqrtFixed): Declare it. + +2023-09-18 Alexei Podtelezhnikov + + * src/base/ftcalc.c /* FT_SqrtFixed */: Fix defunct overflow. + +2023-09-14 Alexei Podtelezhnikov + + * src/tools/apinames.c (read_header_file): Typos. + +2023-09-13 Alexei Podtelezhnikov + + Update 2 files + + - /src/base/ftcalc.c + - /include/freetype/internal/ftcalc.h + +2023-09-13 Ben Wagner + + [base] Fix typo to correct predicate for call + + * src/base/ftobj.c (FT_Get_Color_Glyph_Paint): check + `get_colr_glyph_paint` before calling `get_colr_glyph_paint` and not + `get_colr_layer` + +2023-09-12 Alexei Podtelezhnikov + + * src/psaux/cffdecode.c (cff_op_sqrt): Correct upper limit. + +2023-09-11 Alexei Podtelezhnikov + + * src/psaux/cffdecode.c (cff_op_sqrt): Improve initial guess. + +2023-09-11 Alexei Podtelezhnikov + + src/psaux/psintrp.c (cf2_escSQRT): Improve initial guess. + + The worst number of iterations decreased from 11 to 5. + +2023-09-11 Alexei Podtelezhnikov + + * src/type1/t1afm.c (t1_get_index): Restore `strlen` call. + + This reverts commit 8ed6d97446f2f3e5523da62eefbbf32ef7c1290e + and fixes + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62246 + +2023-09-10 Alexei Podtelezhnikov + + * src/cff/cffparse.c (CFF_Field_Handler): Some s/0/NULL/. + +2023-09-10 Alexei Podtelezhnikov + + [type1, cid, type42] Post-cleanup. + + * include/freetype/internal/psaux.h (T1_FIELD_ZERO): Terminating macro. + * src/cid/cidload.c (cid_parse_dict): Use while-loop. + * src/type1/t1load.c (parse_dict): Ditto. + * src/type42/t42parse.c (t42_parse_dict): Ditto. + +2023-09-09 Alexei Podtelezhnikov + + Update forgotten array termini. + + * src/cid/cidload.c (cid_field_records): Account for added `len`. + * src/type1/t1load.c (t1_keywords): Ditto. + * src/type42/t42parse.c (t42_keywords): Ditto. + +2023-09-09 Alexei Podtelezhnikov + + [type1, cid, type42] Streamline dictionary parsing. + + When matching the keywords, we avoid calculating their lengths by + checking the stored values. This itself is a sufficient pre-check + before diving into `memcmp`. Therefore, we remove explicit check of + the first characters. + + * include/freetype/internal/psaux.h (T1_FieldRec): Store length. + * src/cid/cidload.c (cid_parse_dict): Use `memcmp` and stored length. + * src/type1/t1load.c (parse_dict): Ditto. + * src/type42/t42parse.c (t42_parse_dict): Ditto. + +2023-09-09 Alexei Podtelezhnikov + + * src/type1/t1afm.c (t1_get_index): Avoid `strlen` call. + + Instead, we check the terminal zero. + +2023-09-08 Alexei Podtelezhnikov + + * src/type1/t1driver.c (t1_ps_get_font_value): Avoid redundant null. + +2023-09-08 Alexei Podtelezhnikov + + [cff, truetype] Improve prefix and suffix removal. + + * src/cff/cffobjs.c (remove_style): Rewrite using pointers. + (remove_subset_prefix): Unwrap loop and use `memmove`. + * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): Unwrap loop + and avoid `strlen`. + +2023-09-07 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_20): Micro-optimize. + +2023-09-05 Werner Lemberg + + [autofit] Fix synchronization mistake between FreeType and ttfautohint. + + Found by Behdad. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix array size of + `blue_sorted`: FreeType doesn't have artificial blue zones. + +2023-09-04 Werner Lemberg + + [autofit] Fix typos. + + This also reduces the used heap size by a large factor. + + From Behdad. + + * src/autofit/afcjk.h (AF_CJKAxisRec): Use `AF_BLUE_STRINGSET_MAX_LEN`. + * src/autofit/aflatin.h (AF_LatinAxisRec): Ditto. + +2023-08-31 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_20): Rework tracing. + +2023-08-30 Alexei Podtelezhnikov + + [builds] Abbreviate the DLG submodule update. + + * autogen.sh, builds/toplevel.mk: Revise the command options. + +2023-08-29 Alexei Podtelezhnikov + + Comment added. + +2023-08-29 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_20): Permit long names. + + Fixes #1254. + +2023-08-27 Werner Lemberg + + [gzip] Update sources to zlib 1.13. + +2023-08-25 Werner Lemberg + + docs/release: Minor fixes. + +2023-08-25 Anurag Thakur + + docs/freetype-web.txt: New file. + +2023-08-25 Werner Lemberg + + * Version 2.13.2 released. + ========================== + + Tag sources with `VER-2-13-2'. + + * docs/VERSION.TXT: Add entry for version 2.13.2. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.13.1/2.13.2/, s/2131/2132/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. + + * builds/unix/configure.raw (version_info): Set to 26:1:20. + * CMakeLists.txt (VERSION_PATCH): Set to 2. + +2023-08-25 Alexei Podtelezhnikov + + * src/base/ftcalc.c (FT_MulAddFix): Simplify 32-bit rounding. + +2023-08-25 Werner Lemberg + + Fix clang warnings. + + * src/cffload.c (cff_blend_doBlend): Fix type of `sum`. + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Fix type of + `word_delta_count`. + +2023-08-24 Werner Lemberg + + * subprojects/*.wrap: Updated. + +2023-08-24 Hugh McMaster + + builds/unix/configure.raw: Use variable to specify minimum Python version. + +2023-08-24 Alexei Podtelezhnikov + + * builds/toplevel.mk: Simplify version extraction. + +2023-08-22 Alexei Podtelezhnikov + + [base] Improve the matrix degeneracy check. + + Also fixes #1251. + + * src/base/ftcalc.c (FT_Matrix_Check): To avoid overflow, scale by shifting. + * include/freetype/internal/ftcalc.h (FT_Matrix_Check): Update description. + +2023-08-22 Werner Lemberg + + builds/toplevel.mk: Don't use `\#` in functions. + + The behaviour changed in GNU make 4.3, where `#` (without the backslash) + would be necessary. Using a variable instead the code works with both older + and newer GNU make versions. + + Fixes #1252. + +2023-08-19 Hugh McMaster + + builds/freetype.mk: Invoke `mkdocs` as a Python module + + FreeType's `refdoc` target currently allows users to override the + default Python path, which is useful for testing and development. + + In contrast, `mkdocs` is invoked via the default Python path. + + Invoking `mkdocs` via Python's module syntax allows for greater + flexibility, although there is no change for the default use case. + +2023-08-17 Ben Wagner + + [base] Avoid UB with memcpy + + `FT_NEW_ARRAY(p, 0)` sets `p` to `NULL`. `FT_Stream_ReadAt` with a + memory based stream uses `FT_MEM_COPY` which is `memcpy` which specifies + that it is undefined behavior for either the `src` or `dst` to be + `NULL`. Instead of forcing all callers work around calling + `FT_Stream_Read` when `buffer == NULL && count == 0` do the check in + `FT_StreamRead`. This allows any call with `count == 0` to succesfully + read zero bytes without UB. + + * src/base/ftstream.c (FT_Stream_ReadAt): skip `FT_MEM_COPY` when + `count == 0`. (FT_Stream_TryRead): ditto + + Fixes: #1250 + +2023-08-12 Werner Lemberg + + Fix warnings in tracing messages for 32bit compilation. + + Since we now require C99, use `%td` for `ptrdiff_t` and `%zu` for `size_t`. + +2023-08-04 Ben Wagner + + Avoid overflow in COLR bounds checks. + + The values read into `base_glyphs_offset_v1` and `layer_offset_v1` may + be in the range 0xFFFFFFFD-0xFFFFFFFF. On systems where `unsigned long` + is 32 bits adding 4 to such values will wrap and pass bounds checks but + accessing values at such offsets will be out of bounds. + + On the other hand `table_size` has already been tested to be at least + `COLRV1_HEADER_SIZE` (34) so it is safe to subtract 4 from it. + + * src/sfnt/ttcolr.c (tt_face_load_colr): subtract 4 from `table_size` + instead of adding 4 to font data offsets in bounds checks + + Fixes: https://crbug.com/1469348 + +2023-08-02 Alexei Podtelezhnikov + + * src/base/ftobjs.c (open_face_from_buffer): Silence `maybe-uninitialized`. + + We never call this function without a `driver_name` (#1245). + +2023-07-29 Alexei Podtelezhnikov + + [truetype] Reduce v40 footprint. + + * src/truetype/ttgload.c (TT_HInt_Glyph, tt_loader_set_pp, + tt_loader_init): Refactor code. + +2023-07-27 Alexei Podtelezhnikov + + [truetype] Remove Infinality for good (remaining bits). + + * src/truetype/ttobjs.h: Remove remaining fields. + * src/truetype/ttinterp.c: Do not initialize them. + * include/freetype/internal/tttypes.h: Remove descriptions. + +2023-07-27 Alexei Podtelezhnikov + + [truetype] Remove Infinality for good. + + Remove everything `#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY`, + which was undefined for a while now. + + * include/freetype/internal/tttypes.h: Ditto. + * src/truetype/truetype.c: Ditto. + * src/truetype/ttdriver.c: Ditto. + * src/truetype/ttgload.c: Ditto. + * src/truetype/ttinterp.c: Ditto. + * src/truetype/ttinterp.h: Ditto. + * src/truetype/ttobjs.c: Ditto. + * src/truetype/ttsubpix.[ch]: Remove files. + * src/truetype/rules.mk: Don't mention "ttsubpix.c". + +2023-07-21 Jouk Jansen + + * vms_make.com: Provide separate library compiled with C++. + + Some types on OpenVMS x86_64 (for example, `long') have different sizes + depending on whether compiled with either C or C++. In particular, + X-Windows applications crash if linked with the C++ version. + + This patch makes `vms_make.com` create a second version of the FreeType + library compiled with C++ if OpenVMS is running on the x86_64 platform. + +2023-07-21 Jouk Jansen + + * vms_make.com: Fix typos. + +2023-07-21 Jouk Jansen + + * src/smooth/ftgrays.c (FT_SSE2): Fix definition for VMS. + +2023-07-19 Jouk Jansen + + vms_make.com: Make use of additional libraries optional. + + Check whether `.olb` files are present. + + Also check for the HarfBuzz library. + +2023-07-19 Jouk Jansen + + vms_make.com: Add `/warn=noinfo` to `CFLAGS`. + + This reduces enormously the informationals while compiling on x86_64 (i.e., + which `.h` file is inluded form where). + +2023-07-18 Ben Wagner + + [woff2] Clean up on large brotli expansion + + * src/sfnt/sfwoff2.c (woff2_open_font): set error and goto cleanup + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=60711 + +2023-07-16 Werner Lemberg + + [woff2] Avoid allocation bomb. + + This is a fix for commit 85167dbd5, reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=60615 + + * src/sfnt/sfwoff2.c (MAX_SFNT_SIZE): New macro. + (woff2_open_font): Use it to limit the maximum size of an uncompressed WOFF2 + font. + +2023-07-14 Werner Lemberg + + [cff] Fix compiler warning. + + * src/cff/cffparse.c, src/cff/cffparse.h: Make `cff_parse_fixed` a local + function. + +2023-07-14 Ben Wagner + + [woff2] Remove sfnt size guess check + + In WOFF the `totalSfntSize` must be correct, however in WOFF2 this value + is now just a hint and a conforming implementation must not reject + otherwise valid data if the `totalSfntSize` turns out not to be exact. + + * src/sfnt/sfwoff2.c (woff2_open_font): remove check that uncompressed + woff2 data would fit in the sfnt size guess. + + Fixes: #1235 + +2023-07-14 Skef Iterum + + [cff] Make blend operator work with floats in private dicts. + + The CFF2 blend operator takes N default values and corresponding + sets of deltas and pushes N values specific to a designspace + location. CFF has a floating point numeric type and the FreeType + blending code was not converting those into its internal 16.16 + Fixed type format. + + Fixes #1243. + + * src/cff/cffparse.c (do_fixed): Handle floating point numbers. + Also fix scaling overflow check for integer-to-fixed conversion. + + * src/cff/cffload.c (cff_blend_doBlend): Updated. + +2023-07-08 Hin-Tak Leung + + * src/truetype/ttgload.c (TT_Hint_Glyph): More mostly cosmetic update. + + This is a follow-up to commit 49c74ac02, which creates a new local variable + "exec = loader->exec", and shortening a lot of "loader->exec". This commit + does two more such changes missed in that first commit. + +2023-07-06 Hugh McMaster + + [gzip] Don't compile internal zlib development files when using system zlib. + + `src/gzip/rules.mk` compiles the internal zlib sources even when using the + zlib development files provided by a host system. If the internal zlib + development files are not present, FreeType fails to build from source. + + This patch ensures the internal zlib development files are only + prerequisites when not using zlib development files on a host system. + + * src/gzip/rules.mk (GZIP_DRV_SRCS): Define conditionally. + +2023-06-24 Werner Lemberg + + * Version 2.13.1 released. + ========================== + + Tag sources with `VER-2-13-1'. + + * docs/VERSION.TXT: Add entry for version 2.13.1. + * docs/CHANGES: Updated. + * docs/release, docs/README, builds/macs/README: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.13.0/2.13/1/, s/2130/2131/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 26:0:20. + * CMakeLists.txt (VERSION_PATCH): Set to 1. + + * subprojects/libpng.wrap, subprojects/zlib.wrap, subprojects/dlg: Updated. + +2023-06-09 suzuki toshiya + + Comment fixes. + +2023-06-09 Werner Lemberg + + [sdf] Correct handling of empty glyphs. + + This is a refinement of commit 7b3ebb9. + + * src/sdf/ftsdfrend.c (ft_sdf_render): Goto 'Exit' instead of directly + returning. + (fd_bsdf_render): Ditto, also taking care of setting `FT_GLYPH_OWN_BITMAP` + correctly. + +2023-06-05 Ben Wagner + + Mark FT_Renderer_Class::raster_class as pointer to const + + The `FT_DEFINE_RASTER_FUNCS` macro declares a `const FT_Raster_Funcs`. + The address of the definition is taken and assigned to + `FT_Renderer_Class::raster_class` which is currently `FT_Raster_Funcs*`. + Until recently the `const` was cast away and with the removal of the + cast there are now warnings about dropping this `const`. Instead of + adding back the casts, make `FT_Renderer_Class::raster_class` a pointer + to const, as is done with pointers in other interfaces. + + * include/freetype/ftrender.h (FT_Renderer_Class_): mark `raster_class` + as const. + +2023-06-03 Ben Wagner + + Fix some `FT_Fixed` vs. `FT_Long` confusion. + + `FT_Fixed` and `FT_Long` are both typedef'ed to be `signed long`. However, + `FT_Fixed` implies that the lower 16 bits are being used to express + fractional values and so these two types should not be confused. + + * include/freetype/internal/services/svmm.h (FT_Set_MM_Blend_Func): Use + `FT_Fixed` for `coords`. Users are passing `FT_Fixed` and implementations + are taking `FT_Fixed`. + (FT_Get_MM_Blend_Func): Ditto. + + * src/autofit/afcjk.c (af_cjk_metrics_check_digits): Use `FT_Long` for + `advance` and `old_advance`. `advance`'s address is passed as `FT_Long*` to + `af_shaper_get_elem`, which writes the advance in em units (not fixed). The + exact value is not important here as it is only compared to check whether it + has changed. + + * src/autofit/aflatin.c (af_latin_metrics_check_digits): Ditto. + +2023-06-03 Ben Wagner + + */*: Remove many function pointer casts. + + In C it is undefined behavior to call a function through a function pointer + of a different type. This is now detected by the Control Flow Integrity + Sanitizer. All known issues have already been fixed. Prevent any + accidental re-introduction by removing function pointer casts when defining + services. The services will call the service functions through the function + pointers on the service. As a result the functions must have the same type + so there should be no need to cast. Removing the casts allows compilers to + warn about assignment to an incompatible function pointer type. + +2023-06-03 Werner Lemberg + + Minor formatting. + +2023-05-23 Werner Lemberg + + Replace `sprintf` with `snprintf`. + + Fixes #1233. + + * include/freetype/config/ftstdlib.h (ft_sprintf): Replace with... + (ft_snprintf): This new macro. + + * src/autofit/afhints.c (af_print_idx): Add argument to pass the buffer + size. + (af_glyph_hints_dump_points, af_glyph_hints_dump_segments, + af_glyph_hints_dump_edges): Updated. + + * src/bdf/bdflib.c (BUFSIZE): New macro. + (bdf_parse_properties_, bdf_parse_start_): Use `ft_snprintf`. + + * src/tools/ftrandom/ftrandom.c (do_test): Use `snprintf`. + +2023-05-23 Werner Lemberg + + docs/DEBUG: Formatting. + +2023-05-20 suzuki toshiya + + [doc] Type1 GX (sfnt-wrapped Type1) is not supported. + + * docs/formats.txt: Clarify the reference of Type1 GX, + and state that this format is not supported. This + is because the content `TYP1' table is not exactly same + with the Type1 font format specification; no eexec + encryption is used. For detail and concrete examples, + see the analysis on: + + https://gitlab.freedesktop.org/freetype/freetype/-/issues/1231 + +2023-05-19 Craig White + + Add missing end quote of a string in the example code of FT_Trace_Set_Level + +2023-05-19 Seigo Nonaka + + [truetype] Reduce heap allocation of `deltaSet` variation data. + + `deltaSet` is an array of packed integers that can be 32 bits, 16 bits, or + 8 bits. Before this change, these values were unpacked to 32-bit integers. + However, this can cause big heap allocations, e.g., around 500 KByte for + 'NotoSansCJK'. To reduce this amount, store the packed integers and unpack + them just before passing to the calculation. At calculation time, due to + the variable length of region indices, temporary heap allocations are + necessary. This heap allocation is not negligible and visible in `ftbench` + results. So, use stack-allocated arrays for short array calculations. + + Fixes #1230. + + * include/freetype/internal/ftmmtypes.h (GX_ItemVarDataRec): New fields + `wordDeltaCount` and `longWords`. + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Load packed + data. + (tt_var_get_item_delta): Unpack data before applying. + +2023-05-17 Jouk Jansen + + vms_make.com: Create shared executable for x86 version of OpenVMS. + +2023-05-15 Werner Lemberg + + Add new load flag `FT_LOAD_NO_SVG`. + + Modern color fonts often contain both an 'SVG' and 'COLR' table. FreeType + always preferred 'SVG' over 'COLR' (this was a design decision), however, + this might not be the right choice for the user. The new flags makes + FreeType ignore the 'SVG' table while loading a glyph. + + Fixes #1229. + + * include/freetype/freetype.h (FT_LOAD_NO_SVG): New macro. + + * src/base/ftobjs.c (FT_Load_Glyph), src/cff/cffgload.c (cff_slot_load), + src/truetype/ttgload.c (TT_Load_Glyph): Use it. + +2023-05-13 Werner Lemberg + + .mailmap: Updated. + +2023-05-13 Alexei Podtelezhnikov + + [cache] Merge functions. + + * src/cache/ftccache.c (FTC_Cache_Init): Merge into... + (ftc_cache_done): ... this function, with unnecessary checks removed. + +2023-05-13 Alexei Podtelezhnikov + + [cache] Minor casting and cosmetic updates. + + * src/cache/ftcglyph.c (ftc_gcache_{init,done}): Remove casting. + (FTC_GCache_Lookup): Cosmetic variable renaming. + * src/cache/ftcsbits.c (ftc_snode_compare): Formatting. + +2023-05-12 Werner Lemberg + + * include/freetype/ftcache.h: Typo, punctuation. + +2023-05-12 Alexei Podtelezhnikov + + * include/freetype/ftcache.h: Formatted and updated. + +2023-05-12 suzuki toshiya + + * include/freetype/internal/t1types.h: Fix the indentation. + +2023-05-11 Alexei Podtelezhnikov + + [cache] Revise the dynamic hash table accounting. + + Instead of counting entries relative to the middle of the hash table, + this switches to the absolute counter with the full index range mask. + As a result, some calculations become a bit simpler. The cache resizing + logic stays largely the same. + + * src/cache/ftccache.h (FTC_NODE_TOP_FOR_HASH): Revised with new counter. + * src/cache/ftccache.c (ftc_get_top_node_for_hash): Ditto. + (ftc_cache_resize): Simplify reallocations and stop their zeroing. + (ftc_cache_init): Stop over-allocating but keep zeroing initially. + (FTC_Cache_Clear, FTC_Cache_RemoveFaceID): Updated accordingly. + +2023-05-11 suzuki toshiya + + [t1cid] Set FT_FACE_FLAG_CID_KEYED. + + * cidobjs.c (cid_face_init): Set FT_FACE_FLAG_CID_KEYED. + + * cidriver.c (cid_get_is_cid): Comment about the case that + is_cid cannot guarantee the glyph collection specification. + +2023-05-09 Jouk Jansen + + * src/smooth/ftgrays.c (FT_SSE2): Don't define for VMS. + +2023-05-08 Werner Lemberg + + * src/cff/cffdrivr.c (cff_glyph_load): Fix guard for `size`. + + This was forgotten to change in commit 2b54eba36b (in May 2004). + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=58739 + +2023-05-08 Werner Lemberg + + Minor compiler warning fixes. + + * src/autofit/afcjk.c (af_cjk_get_standard_widths), src/autofit/aflatin.c + (af_latin_get_standard_widths): Use `FT_CALLBACK_DEF`. + + * src/cff/cffparse.c (cff_parser_run): Initialize and fix allocation of `q`. + +2023-05-08 Werner Lemberg + + * src/psaux/t1cmap.c: Signature fixes. + +2023-05-08 Werner Lemberg + + * src/bzip2/ftbzip2.c: Signature fixes. + +2023-05-08 Werner Lemberg + + [cache] Signature fixes. + + * src/cache/ftcglyph.c, src/cache/ftcglyph.h (FTC_GNode_Compare): Remove + redundant function. It is equivalent to `ftc_gnode_compare` and becomes + completely meaningless with fixed signatures. + Update all callers. + + * src/cache/ftcsbits.c, src/cache/ftcsbits.h (FTC_SNode_Compare): Remove + redundant function. It is equivalent to `ftc_snode_compare` and becomes + completely meaningless with fixed signatures. + Update all callers. + +2023-05-07 Werner Lemberg + + [sdf] Signature fixes. + +2023-05-07 Werner Lemberg + + * src/svg/ftsvg.c: Signature fixes. + +2023-05-07 Werner Lemberg + + [raster] Signature fixes. + +2023-05-07 Werner Lemberg + + [smooth] Signature fixes. + +2023-05-07 Werner Lemberg + + [pshinter] Signature fixes. + + * src/pshinter/pshrec.c (t1_hints_close, t1_hints_apply): New wrapper + functions. + (t1_hints_funcs_init): Use them. + (t2_hints_close, t2_hints_apply): New wrapper functions. + (t2_hints_funcs_init): Use them. + +2023-05-07 Werner Lemberg + + [autofit] Signature fixes. + +2023-05-07 Werner Lemberg + + * src/sfnt/ttcmap: Signature fixes. + +2023-05-07 Werner Lemberg + + * src/pcf/pcfdrivr.c: Signature fix. + +2023-05-07 Werner Lemberg + + * src/winfonts/winfnt.c: Signature fixes. + +2023-05-07 Werner Lemberg + + * src/type42/t42parse.c: Signature fixes. + +2023-05-07 Werner Lemberg + + [pfr] Signature fixes. + +2023-05-07 Werner Lemberg + + * src/cid/cidload.c: Signature fixes. + +2023-05-07 Werner Lemberg + + * src/cff/cffcmap.c: Signature fixes. + +2023-05-07 Werner Lemberg + + * src/type1/t1load.c: Signature fixes. + +2023-05-07 Werner Lemberg + + [truetype] Signature fixes. + +2023-05-07 Werner Lemberg + + [base] Signature fixes. + +2023-05-07 Werner Lemberg + + * src/type42/t42drivr.c: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/type1/*: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/truetype/*: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/sfnt/sfdriver.c, src/sfnt/ttbdf.c: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + + * src/sfnt/sfdriver.c (sfnt_load_table): New wrapper function. + (sfnt_service_sfnt_table): Use it. + +2023-05-07 Werner Lemberg + + * src/psnames/psmodule.c: Use `FT_CALLBACK_DEF`. + +2023-05-07 Werner Lemberg + + * src/pfr/pfrdrivr.c: face -> pfrface, pfrface -> face. + +2023-05-07 Werner Lemberg + + * src/pcf/pcfdrivr.c: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/cid/cidriver.c: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/bdf/bdfdrivr.c: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-07 Werner Lemberg + + * src/cff/*: Clean up interface. + + Ensure that all driver functions use the signature of the service or driver. + This avoids pointer mismatches, which are technically undefined behaviour. + Recent compilers are more picky in catching them as part of Control Flow + Integrity tests. + +2023-05-06 Werner Lemberg + + [truetype] Fix style name handling for variation fonts. + + * include/freetype/internal/tttypes.h (TT_FaceRec): New field + `non_var_style_name`. + + * src/sfnt/sfobjs.c (sfnt_load_face): Initialize `non_var_style_name`. + (sfnt_done_face): Free `non_var_style_name`. + + * src/truetype/ttgxvar.c (TT_Set_Named_Instance): Restore non-VF style name + if switching back to non-VF mode. + +2023-05-06 Werner Lemberg + + [truetype] Fix PostScript name handling for variation fonts. + + A variation font's PostScript name of a named instance is usually different + from the PostScript name of an unnamed instance. However, if a change + between a named instance and an unnamed instance with exactly the same + design axis values happened, it was possible that the PostScript name wasn't + correctly updated. + + This commit reorganizes the code to handle this issue within the top-level + API functions, using a new service to trigger recomputation of the + PostScript name. + + * include/freetype/internal/services/svmm.h (FT_Construct_PS_Name_Func): New + typedef. + (FT_Service_MultiMasters): New field `construct_ps_name`. + (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. + + * src/base/ftmm.c (FT_Set_Var_Design_Coordinates, + FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Call + `mm->construct_ps_name` to handle `postscript_name`. + (FT_Set_Named_Instance): Call `mm->construct_ps_name` to handle + `postscript_name`. + Use shortcut. + * src/cff/cffdrivr.c (cff_construct_ps_name): New function. + (cff_service_multi_masters): Updated. + + * src/truetype/ttgxvar.c (tt_set_mm_blend): Don't handle `postscript_name`. + (TT_Set_MM_Blend): Simplify. + (TT_Set_Named_Instance): Return -1 if axis values haven't changed. + Don't set `face_index`. + (tt_construct_ps_name): New function. + + * src/truetype/ttgxvar.h: Updated. + + * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. + + * src/type1/t1driver.c (t1_service_multi_masters): Updated. + + * src/type1/t1load.c (T1_Set_MM_Blend): Simplify. + +2023-05-06 Werner Lemberg + + * include/freetype/internal/services/svmm.h: Minor changes. + +2023-05-06 Werner Lemberg + + [truetype] Fix deactivation of variation font handling. + + According to the documentation, the functions `FT_Set_Named_Instance`, + `FT_Set_MM_Design_Coordinates`, `FT_Set_Var_Design_Coordinates`, and + `FT_Set_Var_Blend_Coordinates` can unset the `FT_FACE_FLAG_VARIATION` flag. + (The same is true for `FT_Set_MM_WeightVector` but this information was + accidentally omitted from the documentation.) + + However, if a call of these functions didn't change the axis values this + could fail because internal shortcuts exited too early. + + This commit reorganizes the code to handle `FT_FACE_FLAG_VARIATION` in the + top-level API functions, also taking care of the issue at hand. + + * src/base/ftmm.c (FT_Set_MM_Design_Coordinates, FT_Set_MM_WeightVector, + FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates, + FT_Set_Var_Blend_Coordinates): Handle `FT_FACE_FLAG_VARIATION`. + + * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design, + TT_Set_Named_Instance) Don't handle `FT_FACE_FLAG_VARIATION`. + + * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_WeightVector, + T1_Set_MM_Design): Ditto. + + * src/cff/cffobjs.c (cff_face_init): Use `FT_Set_Named_Instance` instead of + low-level functions. + + * src/truetype/ttobjs.c (tt_face_init): Ditto. + +2023-05-06 Werner Lemberg + + s/set_instance/set_named_instance/ + + * include/freetype/internal/services/svmm.h (FT_Set_Instance_Func): Renamed + to... + (FT_Set_Named_Instance_Func): ...this. + (FT_Service_MultiMasters): Rename `set_instance` to `set_named_instance`. + (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. + + * src/base/ftmm.c (FT_Set_Named_Instance): Updated. + + * src/cff/cffdrivr.c (cff_set_instance): Renamed to... + (cff_set_named_instance): ...this. + (cff_service_multi_masters): Updated. + * src/cff/cffobjs.c (cff_face_init): Updated. + + * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. + + * src/type1/t1driver.c (t1_service_multi_masters): Updated. + +2023-05-06 Werner Lemberg + + New Variation Font function `FT_Get_Default_Named_Instance`. + + * include/freetype/ftmm.h, src/base/ftmm.c (FT_Get_Default_Named_Instance): + New function. + + * include/freetype/internal/services/svmm.h + (FT_Get_Default_Named_Instance_Func): New typedef. + (FT_Service_MultiMasters): New field `get_default_named_instance`. + (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. + + * include/freetype/internal/tttypes.h (TT_Face): New field + `var_default_named_instance`. + + * src/sfnt/sfobjc.s (sfnt_init_face): Initialize + `var_default_named_instance`. + + * src/cff/cffdrivr.c (cff_get_default_named_instance): New function. + (cff_service_multi_masters): Updated. + + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Initialize + `var_default_named_instance`. + (TT_Get_Default_Named_Instance): New function. + * src/truetype/ttgxvar.h: Updated. + * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. + + * src/type1/t1driver.c (t1_service_multi_masters): Updated. + + * docs/CHANGES: Updated. + +2023-05-06 Werner Lemberg + + [cid] Improve tracing messages; formatting. + +2023-05-04 Alexei Podtelezhnikov + + * src/cache/ftccache.c (ftc_node_hash_unlink): Minor. + +2023-05-04 Alexei Podtelezhnikov + + * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Purge backwards. + +2023-05-04 Alexei Podtelezhnikov + + [cache] Revise list cleansing. + + * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Use one loop to + do it. + * src/cache/ftcmanag.c (FTC_Manager_Compress, FTC_Manager_FlushN): + Streamline loops. + +2023-05-03 suzuki toshiya + + [t1cid] Improve cid_get_cid_from_glyph_index(). + + Update cid_get_cid_from_glyph_index() to + return an error and CID=0 in the case that + the specified glyph index points to an invalid + entry. + + cidgload.h (cid_compute_fd_and_offsets): + Declare new helper function to set the + fd_select and 2 offsets to access the glyph + description data. + + cidgload.c (cid_compute_fd_and_offsets): + Move the part loading fd_select and 2 offsets + from cid_load_glyph() to here. If the loaded + parameters are broken, return the Invalid_Offset + error. This function does not load the glyph + data, only fills these parameters. + + (cid_load_glyph): Use new helper function in above. + + cidriver.c (cid_get_cid_from_glyph_index): + Check whether the requested glyph index points + to a valid entry, by calling cid_compute_fd_and_offsets(). + If it is valid, fill the cid by the glyph + index (=CID). If it is invalid, return an + error and fill the cid by 0. + +2023-04-30 Werner Lemberg + + API documentation: Re-organize chapters and sections + + * Split the very long 'Base Interface' section into smaller sections. + * Split the 'Core API' chapter into two chapters. + * Remove single enumeration values from `@order` fields since they have no + effect. + +2023-04-29 Alexei Podtelezhnikov + + * src/sfnt/pngshim.c (Load_SBit_Png): Remove FALL_THROUGH warning. + +2023-04-28 Werner Lemberg + + * src/sfnt/ttload.c (tt_face_load_font_dir): Add another guard. + + Reject 'OTTO' fonts with no valid tables. + +2023-04-28 Werner Lemberg + + * src/cff/cffdrivr/c (cff_get_ps_name): Avoid unnecessary crash. + + The situation can happen if `FT_New_Face` (or one of its siblings) is called + with a negative index to get the number of contained faces, followed + immediately by a call to `FT_Get_Postscript_Name`. While this is not a valid + use of the FreeType library there is no need for a crash. + + Fixes #1219. + +2023-04-28 Werner Lemberg + + * src/cff/cffdrivr.c (cff_ps_get_font_info): Reject 'CFF2' format. + +2023-04-28 Werner Lemberg + + * src/cid/cidgload.c (cid_load_glyph): Fix compiler warnings. + +2023-04-28 Werner Lemberg + + Minor documentation updates. + +2023-04-27 Werner Lemberg + + * src/ttgxvar.c: Minor changes. + + (TT_Get_MM_Var): Improve tracing messages. + (tt_set_mm_blend): Minor speed-up. + +2023-04-27 Werner Lemberg + + s/this is,/that is,/ + +2023-04-27 Alexei Podtelezhnikov + + [bdf] Clean up the atom property parsing. + + * src/bdflib.c (bdf_is_atom_): Refactor code with fewer checks. + (bdf_list_join_): Return NULL. + (bdf_add_comment_): Use const argument. + (bdf_get_property): Ditto, ditto, make the function static. + * src/bdf.h (bdf_get_property): Remove prototype. + +2023-04-25 Werner Lemberg + + Improve/add source comments and documentation. + +2023-04-25 Werner Lemberg + + [sfnt] Fix handling of PS names for Variation Fonts. + + * src/sfnt/sfdriver.c (get_win_string, get_apple_string): Continue + construction of string if an invalid character is encountered. + + Fixes #1218. + +2023-04-24 suzuki toshiya + + [t1cid] Change the trace messages of the charstrings retrieval errors. + + The t1cid driver catches 3 types of errors in + the charstrings retrieval; + A) The invalid FD number, there are 2 subtypes; + A-1) FD number is the maximum number fitting to FDBytes. + A-2) FD number is greater than num_dicts. + B) Declared length is overrunning. + C) Declared length is invalid (its end is before its head). + + Considering that some widely distributed fonts + (e.g., "CJKV" book by O'Reilly) have A-1 errors + in the unimplemented glyphs, the trace level for + A-1 is calmed to level 1. + + The errors A-2, B, and C would be irregular; + their trace levels are kept at level 0, but + the updated trace messages include the CID number. + +2023-04-24 suzuki toshiya + + [truetype] Fix `make multi'. + + * src/truetype/ttgxvar.c: Include freetype/internal/services/svmetric.h + for the FT_Service_MetricsVariations type definition. + +2023-04-19 Ben Wagner + + [services] FT_Size_Reset_Func to return FT_Error + + The `MetricsVariations` `FT_Size_Reset_Func` is currently defined to + return `void`, but the implementations return `FT_Error`. Even though + the pointers passed will be the same at runtime, calling a function + through a pointer of a different type from the original function pointer + type is undefined behavior. This may be caught at runtime by Control + Flow Integrity with something like clang's `cfi-icall`. + + Issue: https://crbug.com/1433651 + + * include/freetype/internal/services/svmetric.h (FT_Size_Reset_Func): + return `FT_Error` instead of `void`. + +2023-04-17 Ben Wagner + + [truetype] tt_size_reset_height to take FT_Size + + The `MetricsVariations` `FT_Size_Reset_Func` is defined to take an + `FT_Size`. Because `tt_size_reset_height` is to be used as such a + function, it must also take an `FT_Size` instead of a `TT_Size`. Even + though the pointers passed will be the same at runtime, calling a + function through a pointer of a different type from the original + function pointer type is undefined behavior. This may be caught at + runtime by Control Flow Integrity with something like clang's + `cfi-icall`. + + Issue: https://crbug.com/1433651 + + * src/truetype/ttobjs.h (tt_size_reset_height): take `FT_Size` + + * src/truetype/ttobjs.c (tt_size_reset_height): take `FT_Size` and + update documentation + +2023-04-13 Werner Lemberg + + * src/truetype/ttinterp.c: Remove outdated comments. + +2023-04-11 Ben Wagner + + [sfnt, truetype] Add `size_reset` to `MetricsVariations`. + + This is a generalization of commit + + ``` + commit e6699596af5c5d6f0ae0ea06e19df87dce088df8 + Author: Werner Lemberg + Date: Thu Feb 2 11:38:04 2017 +0100 + + [truetype] Fix MVAR post-action handling. + ``` + + It is also possible for plain `CFF ` style fonts to contain an `fvar` and + `MVAR` table and use `cff_metrics_adjust`. `tt_size_reset` should only be + called with `TT_Size` and never with `CFF_Size`. + + Allow the "metrics-variations" service to specify the correct function (if + any) to reset `FT_Size`s after adjusting metrics. + + * src/truetype/ttobjs.c (tt_size_reset): Split off some functionality + into... + (tt_size_reset_height): ... this new function. + + * src/truetype/ttdriver.c (tt_service_metrics_variations): Add + `size_reset`. + (tt_size_select, tt_size_request): Updated. + + * src/truetype/ttobjs.h: Updated. + + * include/freetype/internal/services/svmetric.h (MetricsVariations): Add + `size_reset`. + (FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Updated. + + * include/freetype/internal/tttypes.h (TT_FaceRec_): Rename `var` to + `tt_var` and add `face_var`. + + * src/cff/cffdrivr.c (cff_service_metrics_variations): Add `size_reset`. + (cff_hadvance_adjust, cff_metrics_adjust): Updated. + + * src/cff/cffobjs.c (cff_face_init): Use `face_var`. + + * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `face_var`. + + * src/sfnt/ttmtx.c (tt_face_get_metrics): Use `tt_var`. + + * src/truetype/ttgxvar.c (tt_size_reset_iterator): Renamed to... + (ft_size_reset_iterator): ... this new function. + Call `size_reset`. + (tt_apply_mvar): Pass `size_reset` to `ft_size_reset_iterator`. + + Fixes #1211 + +2023-04-10 Alexei Podtelezhnikov + + * src/cff/cffcmap.c (cff_cmap_encoding_char_next): Abbreviate. + +2023-04-10 Alexei Podtelezhnikov + + Align `char_next` return types. + + This is mostly cosmetic because FT_UInt and FT_UInt32 are likely identical. + + * src/sfnt/ttcmap.c, src/cff/cffcmap.c, src/psaux/t1cmap.c, + src/psnames/psmodule.c, include/freetype/internal/service/svpcsmap.h, + src/pfr/pfrcmap.c, src/winfonts/winfnt.c (*_char_next): return FT_UInt. + +2023-04-09 Alexei Podtelezhnikov + + [sfnt] Clean up CMAP{4,12,13} handling. + + This moves the charcode overflow checks upstream and turns some + while-loops into the do-while ones to avoid the uninitialized warnings. + This should slightly reduce the number of checks and jumps. + + * src/sfnt/ttcmap.c (tt_cmap{4,12,13}_next, + tt_cmap{4.12.13}_char_map_linear): Remove the charcode overflow check. + (tt_cmap{4,12,13}_char_map_binary): Ditto and use do-while. + (tt_cmap{12,13}_char_next): Add the overflow check. + +2023-04-03 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_25): Do not abort frame reading. + +2023-04-03 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_*): Streamline frame reading. + +2023-04-02 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c: Formatting and comments. + +2023-04-02 Alexei Podtelezhnikov + + [sfnt] Consolidate POST version 2.0 and 2.5 (pt 2). + + * src/sfnt/ttpost.c (load_format_20, load_format_25): Update arguments + and move shared calls and checks upstream to... + (load_post_names): ... this function. + (tt_face_free_ps_names, tt_face_get_ps_name): Updated. + +2023-04-02 Alexei Podtelezhnikov + + [sfnt] Consolidate POST version 2.0 and 2.5 (pt 1). + + The deprecated POST version 2.5 can be handled using the data + structures of version 2.0. The goal is to reduce the footprint. + + * include/freetype/internal/tttypes.h (TT_Post_Names): Absorb and... + (TT_Post_20, TT_Post_25): ... remove these structures. + src/sfnt/ttpost.c (load_post_names, tt_face_get_ps_name, + tt_face_free_ps_names, load_format_20): Updated accordingly. + (load_format_25): ditto and convert offsets to glyph indices. + +2023-04-01 Alexei Podtelezhnikov + + [sfnt] Miscellaneous POST clean-ups. + + * src/sfnt/ttpost.c (load_format_20): Decrease casts. + (load_format_25): Check the table length and impose a theoretical + glyph number limit usable with 8-bit offset. Decrease casts. + (load_post_names): Pass the mapping data length without 2 bytes. + +2023-03-30 Alexei Podtelezhnikov + + * src/sfnt/ttpost.c (load_format_20): Simplify comutations. + +2023-03-29 Alexei Podtelezhnikov + + [sfnt] Streamline POST format 2.0 handing (cont'd). + + * src/sfnt/ttpost.c (load_format_20): Co-allocate the string data and + their pointers, which makes it easier to handle and free them. + (tt_face_free_ps_names): Updated. + * include/freetype/internal/tttypes.h (TT_Post_20): Update type. + +2023-03-20 Alexei Podtelezhnikov + + [cff] Simplify `t2_strings` management in the old engine. + + * src/cff/cffparse.c (cff_parser_run): Allocate the charstring buffers + and the list nodes together so that they can be freed at once. + (finalize_t2_strings): Removed as no longer needed. + (cff_parser_done): Updated. + +2023-03-19 Alexei Podtelezhnikov + + [cff] Rework the stream limit checks. + + The old stream limit checks, before 6986ddac1ece, were good but + pointless for the crafted t2_strings. Checking limits there is + not necessary as they are created to hold all data. By using two + conditions, we can detect the actual crossing of the stream boundary + as appropriate for the stream pointer only. The t2_strings parsing + will not be triggering these checks. + + * src/cff/cffparse.c (cff_parser_within_limits): Removed. + (cff_parse_real, cff_parse_integer): Redesign the stream limit check. + (cff_parse_num, do fixed, cff_parse_fixed_dynamic): Update callers. + +2023-03-18 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use for-loop. + + Even though we never call `TT_Load_Simple_Glyph` with zero contours, + out of abundance of precaution, let's handle this case properly. + +2023-03-18 Alexei Podtelezhnikov + + [truetype] Clean up zeroing and local variables. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Avoid zeroing. + (load_truetype_glyph): Avoid zeroing and clean local variables. + +2023-03-16 Werner Lemberg + + * include/freetype/ftsystem.h (FT_Stream_IoFunc): Improve documentation. + + Fixes #1208. + +2023-03-16 Alexei Podtelezhnikov + + * src/base/ftsynth.c (FT_GlyphSlot_AdjustWeight): New API. + +2023-03-16 Alexei Podtelezhnikov + + [truetype] Clean up glyph loading. + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean space checking. + (TT_Hint_Glyph): Don't copy the outline structure. + (TT_Process_Simple_Glyph): Cosmetic update. + +2023-03-15 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Clean up. + +2023-03-13 Werner Lemberg + + builds/vms/apinames_vms.bash: Fix `unzip` artifact + + The problem occured when unpacking a zip file created on OpenVMS on Linux. + While OpenVMS knows many different file formats, Unix only knows stream-LF + and binary. In principle `zip` on Linux should have translated the file to + stream-LF but failed to do so. That caused the file to incorrectly contain + only one line with control-characters. + +2023-03-11 Alexei Podtelezhnikov + + [truetype] Fix recent fallout in memory management. + + * src/truetype/ttgload.c (TT_Process_Composite_Glyph, + TT_Load_Simple_Glyph): Clean up old instructions regardless of + new ones, postpone setting `control_len` and `control_data` until... + (TT_Load_Glyph): ... the exit from this function. + +2023-03-10 Jouk Jansen + + Update VMS installation support. + +2023-03-10 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Hint_Glyph): Mostly cosmetic update. + + The number of instructions is now taken from the executed context. + Technically, this means that `control_len` and `control_data` + values are no longer _used_ internally but only expose them. + +2023-03-08 Werner Lemberg + + apinames.c: Add comment. + +2023-03-07 Werner Lemberg + + [gzip] File `infback.c` is not needed. + + * src/gzip/infback.c: Remove. + * src/gzip/rules.mk (GZIP_DRV_SRCS): Updated. + +2023-03-07 Werner Lemberg + + [apinames] Fix VMS handling of overly long function names. + + Based on ideas from Jouk Jansen . + + * src/tools/vms_shorten_symbol.c: New file, taken from + + https://sourceforge.net/p/vms-ports/vmsshortsym/ci/default/tree/vms_shorten_symbol.c + + with some minor edits to allow compilation with C++ and being included in + another source code file. + + * src/tools/apinames.c: Include `vms_shorten_symbol.c`. + (PROGRAM_VERSION): Set to '0.5'. + (names_dump) [OUTPUT_VMS_OPT]: Call `vms_shorten_symbol` to get unique function + identifiers not longer than 31 characters. + +2023-03-07 Werner Lemberg + + * src/tools/apinames.c (panic): Accept variable number of arguments. + +2023-03-07 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix leak too. + +2023-03-07 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Triage memory leak. + + This leak has been introduced in the previous commit and immediately + detected: + https://chromium-review.googlesource.com/c/chromium/src/+/4313202 + +2023-03-06 Alexei Podtelezhnikov + + [truetype] Simplify memory management. + + Instead of using `Update_Max`, switch to regular FreeType memory + allocation macros, stop pre-allocating the glyph instruction arrays. + + * src/truetype/ttgload.c (TT_Load_Simple_Glyph, + TT_Process_Composite_Glyph): Switch to regular memory allocation. + * src/truetype/ttinterp.c (Update_Max): Removed. + (TT_Load_Context): Reallocate stack and free old instructions. + (Modify_CVT_Check, Ins_WS): Switch to regular memory allocation. + * src/truetype/ttinterp.h (Update_Max): Removed. + +2023-03-06 David PROVENT + + Added information about the zlib version update in the changelog + +2023-03-06 Alexei Podtelezhnikov + + Fix a couple of MSVC warnings. + + * src/base/ftcalc.c (FT_MulAddFix): Add cast. + * src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Ditto. + +2023-03-05 Alexei Podtelezhnikov + + * builds/windows/vc2010/freetype.vcxproj: Suppress C4267 on _WIN64. + + This usually comes from `strlen` returning 64-bit `size_t`, which + we often assign to 32-bit `FT_ULong` on Windows-64 (LLP64). + +2023-03-05 Alexei Podtelezhnikov + + * src/cff/cffparse.c (cff_parser_run): Thinko. + +2023-03-05 Alexei Podtelezhnikov + + [cff] Clean up CharString number encoding. + + * src/cff/cffparser.c (cff_parser_run): Work with signed numbers. + +2023-03-05 Alexei Podtelezhnikov + + * src/cff/cffparse.c (cff_parser_run): Fix variable type. + +2023-03-04 Alexei Podtelezhnikov + + [cff] Clean up memory management in the old engine. + + * src/cff/cffparse.c (finalize_t2_strings): Fix NULL-dereferencing + in the out-of-memory situation, use `FT_FREE`. + (cff_parser_run): Use FreeType memory allocation macros and avoid + uninitialized pointers. + +2023-03-04 Alexei Podtelezhnikov + + * src/cff/cffobjs.c (cff_size_init): Synonymous change. + +2023-03-04 Alexei Podtelezhnikov + + * src/sfnt/sfobjs.c (sfnt_load_face): Shorten de-referencing. + +2023-03-04 Alexei Podtelezhnikov + + [pfr] Shorten de-referencing. + + * src/pfr/pfrobjs.c (pfr_face_done, pfr_face_init): Use closer `memory`. + * src/pfr/pfrgload.c (pfr_glyph_load_compound): Remove `loader`. + +2023-03-03 Alexei Podtelezhnikov + + * src/cff/cffobjs.c (cff_size_get_globals_funcs): Shorten de-referencing. + +2023-03-03 Alexei Podtelezhnikov + + [cff,cid,type1] Shorten de-referencing. + + * src/cff/cffobjs.c (cff_clot_init): Use immediate library reference. + * src/cid/cidobjs.c (cid_slot_init): Ditto. + * src/type1/t1objs.c (T1_GlyphSlot_Init): Ditto. + +2023-03-02 Alexei Podtelezhnikov + + * configure: Use `sed` instead of `grep`. + + This is more portable and consistent with `autogen.sh`. + +2023-03-02 Ben Wagner + + Avoid strtol on non-null-terminated data. + + Technically, `strtol` can only be used with C strings terminated with + `\0`. CID data is not generally null-terminated and often does not + contain a `\0` if it is hex-encoded. AddressSanitizer with `ASAN_OPTIONS` + containing `strict_string_checks=1` verifies this by using an adversarial + `strtol` that always reads to the terminating `\0`. + + To avoid undefined behavior from `strtol` in `cid_parser_new`, use the + parser to parse the tokens instead of attempting to parse them ad-hoc. + This will internally use `PS_Conv_Strtol` to parse the integer, which + respects the parser's limits and directly implements the PostScript + parsing rules for integers. + + * src/cid/cidparse.c (cid_parser_new): Use the parser to parse the + tokens. + + Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1420329 + +2023-03-02 Alexei Podtelezhnikov + + * src/cff/cffload.c (cff_subfont_load): Synonymous update. + +2023-03-01 ubawurinna + + * src/gzip/README.freetype: Update version. + +2023-03-01 ubawurinna + + [gzip] Fix static linking. + + Without this patch, static linking with MS Visual Studio causes linking + errors. + + * src/gzip/ftgzip.c: Set `ZEXPORT` to nothing and `ZEXTERN` to static for + all compilers. + +2023-03-01 Werner Lemberg + + * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update. + + This follows + + https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00200.html + +2023-02-28 Alexei Podtelezhnikov + + [truetype] Treat 38 as 40 without Infinality. + + * include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Reinstate. + * src/truetype/ttdriver.c (tt_property_set): Fallback from 38 to 40. + +2023-02-26 Werner Lemberg + + * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Update. + + This follows + + https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00159.html + +2023-02-26 Werner Lemberg + + * src/*: Replace leading underscores with trailing ones in dummy variables. + + This is to avoid clang warnings. + +2023-02-26 Karl Berry + + * configure: Don't hardcode `grep -E`. + + TeXLive still supports Solaris 5.10, where the system's `grep` doesn't + accept the `-E` option. We thus introduce an `EGREP` variable that is set + to either `grep -E` or `-egrep`. + +2023-02-26 Alexei Podtelezhnikov + + * src/cff/cffload.c (cff_encoding_load): Optimize array zeroing. + + This is unnecessary for predefined standard and expert encodings. + Even for custom encodings the arrays might be already zeroed when + CFF_FontRec is created but we keep it just in case. + +2023-02-25 Alexei Podtelezhnikov + + * src/type1/t1load.c (T1_Get_MM_Var): Optimize array zeroing. + +2023-02-25 Tamir Duberstein + + * src/base/ftsystem.c (ft_ansi_stream_io): Avoid undefined behaviour. + Also short-circuit on `offset` to avoid checking `count` a second time when + `ft_ansi_stream_io` is used for reading. + + Per ISO/IEC 9899: + + If an argument to a function has an invalid value (such as a value outside + the domain of the function, or a pointer outside the address space of the + program, or a null pointer, or apointer to non-modifiable storage when the + corresponding parameter is not const-qualified) or a type (after + promotion) not expected by a function with variable number of arguments, + the behavior is undefined. If a function argument is described as being + an array, the pointer actually passed to the function shall have a value + such that all address computations and accesses to objects (that would be + valid if the pointer did point to the first element of such an array) are + in fact valid. + + Per IEEE Std 1003.1: + + size_t fread(void *restrict ptr, size_t size, size_t nitems, + FILE *restrict stream); + + The `fread` function shall read into the array pointed to by `ptr` up to + `nitems` elements whose size is specified by `size` in bytes, from the + stream pointed to by `stream`. + + Since the first argument to `fread` is described as being an array, its + behavior is undefined when that argument is a null pointer. + + Per the documentation on `ft_ansi_stream_io`: + + If `count' is zero (this is, the function is used for seeking), a non-zero + return value indicates an error. + + Thus the intent is clear, and the call to `fread` can be skipped, avoiding + undefined behaviour. + +2023-02-21 Alexei Podtelezhnikov + + [raster] Clean up contour indexing. + + * src/raster/ftraster.c (Decompose_Curve, Convert_Glyph): Use consistent + index types (Int) and compact iterations. + +2023-02-21 Alexei Podtelezhnikov + + [autofit] Clean up contour indexing. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Refactor. + * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Ditto. + +2023-02-21 Alexei Podtelezhnikov + + * src/base/ftoutln.c (FT_Outline_Check): Fix C4701 warning. + +2023-02-21 Alexei Podtelezhnikov + + * src/sdf/ftsdf.c (get_min_distance_cubic): Fix C4701, typos. + +2023-02-20 Alexei Podtelezhnikov + + * src/base/ftstroke.c (FT_Stroker_ParseOutline): Clean up contour indexing. + +2023-02-20 Alexei Podtelezhnikov + + [base] Clean up contour indexing. + + * src/base/ftoutln.c (FT_Outline_Reverse, FT_Outline_EmboldenXY, + FT_Outline_Get_Orientation): Set the first and last indexes together. + (FT_Outline_Decompose): Ditto and check them more stringently. + * src/smooth/ftgrays.c (FT_Outline_Decompose)[STANDALONE_]: Ditto. + +2023-02-20 Alexei Podtelezhnikov + + * src/base/ftoutln.c (FT_Outline_Check): Update error code, clean up. + +2023-02-17 Alexei Podtelezhnikov + + [truetype] Hide Infinality. + + Remove Infinality as an option before its complete extraction. + + * include/freetype/ftoption.h: Remove the Infinality option. + * devel/ftoption.h: Ditto. + * include/freetype/ftdriver.h (TT_INTERPRETER_VERSION_38): Is 40 now. + +2023-02-17 Alex Ringlein + + * src/base/ftoutln.c (FT_Outline_Reverse): Anchor first contour points. + + A cubic contour has to always start from an on-point. Therefore, we + should not swap the first with the last point, which might be off, and + obtain an invalid contour. This does not matter for conic contours. + If anything, it also saves one swap there. Fixes #1207. + +2023-02-16 Werner Lemberg + + Documentation improvement for `FT_Bitmap`. + + Fixes #1205. + +2023-02-10 Alexei Podtelezhnikov + + [type1/MM] Round design coordinates. + + The design coordinates for MM fonts were not rounded. For example, + `FT_Get_Var_Design_Coordinates` returned values with fractional part. + + * src/type1/t1load.c (mm_axis_unmap): Refactor with rounding. + + * include/freetype/ftmm.h (FT_Var_Axis, FT_Set_Var_Design_Coordinates, + FT_Get_Var_Design_Coordinates): Reword documentation. + +2023-02-09 Jan Alexander Steffens (heftig) + + * builds/meson/parse_modules_cfg.py: Handle `gxvalid` and `otvalid`. + + These need a name mapping similar to what was done for other modules, + or linking will fail. + +2023-02-09 Werner Lemberg + + * build/toplevel.mk (do_dist): Fix typo. + +2023-02-09 Werner Lemberg + + * Version 2.13 released. + ========================== + + Tag sources with `VER-2-13-0'. + + * docs/VERSION.TXT: Add entry for version 2.13. + * docs/CHANGES: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.12.1/2.13/, s/2121/2130/. + + * include/freetype/freetype.h (FREETYPE_MINOR): Set to 13. + (FREETYPE_PATCH): Set to 0. + + * builds/unix/configure.raw (version_info): Set to 25:0:19. + * CMakeLists.txt (VERSION_MINOR): Set to 13. + (VERSION_PATCH): Set to 0. + +2023-02-09 Alexei Podtelezhnikov + + Comment on `FT_GlyphSlot_Slant'. + +2023-02-08 Werner Lemberg + + [autofit] Fix 'multi' compilation. + + * src/autofit/ft-hb.c: Decorate with `FT_LOCAL_DEF`. + Add ANSI boilerplate code for otherwise empty file. + * src/autofit/ft-hb.h: Include `compiler-macros.h` and `freetype.h`. + Use `FT_BEGIN_HEADER` and `FT_END_HEADER`. + Decorate with `FT_LOCAL`. + + * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `ft-hb.c`. + +2023-02-08 Werner Lemberg + + Fix `FT_LOCAL` and `FT_LOCAL_DEF` tags. + +2023-02-08 Werner Lemberg + + Fix 'fall-through' warning messages. + + Modern compilers get more insistent on that... + + * include/freetype/internal/compiler-macros.h (FALL_THROUGH): Define. + * src/*: Use it instead of `/* fall through */` comments. + +2023-02-08 Werner Lemberg + + For debugging, avoid implicit conversion from integer to double. + + Otherwise we get zillions of clang 15 warnings. + + * src/autofit/afcjk.c, src/autofit/afhints.c, src/autofit/aflatin.c, + src/base/ftobjs.c, src/base/ftoutln.c, src/cff/cffparse.c, + src/raster/ftraster.c, src/sfnt/pngshim.c, src/truetype/ttgload.c, + src/truetype/ttgxvar.c, src/truetype/ttobjs.c, src/type1/t1gload.c: Use + `double` cast in debugging and tracing macros. + +2023-02-08 Werner Lemberg + + Avoid reserved identifiers that are globally defined. + + This is mandated by the C99 standard, and clang 15 produces zillions of + warnings otherwise. + + * devel/ftoption.h, include/freetype/config/ftoption.h, + include/freetype/internal/ftmemory.h, src/autofit/afhints.h, + src/autofit/afmodule.c, src/autofit/aftypes.h, src/base/ftadvanc.c, + src/base/ftdbgmem.c, src/base/ftstream.c, src/bdf/bdflib.c, + src/truetype/ttinterp.c: Replace identifiers of the form `_foo` with `foo_`. + +2023-02-08 Werner Lemberg + + Fix minor clang and clang++ warnings. + +2023-02-08 Alexei Podtelezhnikov + + [truetype, type1] Additional variation tags. + + Sync with + https://learn.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg#registered-axis-tags + + * src/truetype/ttgxvar.h (TTAG_ital): New tag. + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use it. + * src/type1/t1load.c (T1_Get_MM_Var): Handle 'slnt' and 'ital'. + +2023-02-08 Alexei Podtelezhnikov + + * src/base/ftsynth.c (FT_GlyphSlot_Slant): Add vertical slant. + * include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Update it. + +2023-02-08 anuj <95867901+anuj99@users.noreply.github.com> + + [sdf] Use 32-bit integers internally. + + * src/sdf/ftsdfcommon.h (FT_16D16, FT_26D6): Use 32-bit integers + instead of `FT_Fixed` for internal data types. `FT_Fixed` i.e. + `signed long` is 64-bit on some architectures. + +2023-02-07 Werner Lemberg + + docs/CHANGES: Updated. + +2023-02-04 Alexei Podtelezhnikov + + Comment on optional ascender and descender. + +2023-02-04 Alexei Podtelezhnikov + + * src/type1/t1afm.c (T1_Read_Metrics): Reaffirm ascender and descender. + +2023-02-04 Alexei Podtelezhnikov + + * src/type1/t1afm.c (T1_Read_Metrics): Validate ascender and descender. + + The ascender and descender are optional in the AFM specifications. + They could be omitted or even set to zero, e.g., in the current release + of URW++ base 35 fonts. + +2023-02-02 Werner Lemberg + + * src/cff/cffgload.c (cff_slot_load): Avoid memory leak. + + Fixes issue #1204. + +2023-02-01 Werner Lemberg + + * src/truetype/ttgxvar.c (tt_var_get_item_delta): Check `face->blend`. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=55581 + +2023-02-01 Werner Lemberg + + * docs/CHANGES: Add news for 'freetype-demos'. + +2023-01-30 Werner Lemberg + + * subprojects/harfbuzz.wrap, subprojects/libpng.wrap: Updated. + +2023-01-28 Werner Lemberg + + Minor changes. + + Comment fixes, typos, removing of unnecessary parentheses. + +2023-01-28 Werner Lemberg + + Whitespace. + +2023-01-27 Behdad Esfahbod + + [ttgxvar] Fix crash in COLRv1. + + This is a stopgap until issue #1202 is properly fixed. + + * src/truetype/ttxgvar.c (tt_var_get_item_delta): Check `normalizedcoords`. + +2023-01-19 Werner Lemberg + + The 'COLR' v1 API will no longer be experimental in the next release. + +2023-01-18 Alexei Podtelezhnikov + + * docs/oldlogs/ChangeLog.210: Typos. + +2023-01-18 Ben Wagner + + [base] Fix typo. + + * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Request module 't1cid', + not 'cid'. + +2023-01-18 Ben Wagner + + [base] Return error if requested driver is not found. + + In `open_face_from_buffer` it is possible that a driver is requested but + FreeType was built without the requested module. Return an error in this + case to indicate that the request could not be satisfied, rather than trying + all existing driver modules. + + * src/base/ftobjs.c (open_face_from_buffer): Return `FT_Err_Missing_Module` + if a driver is specified but not found. + +2023-01-18 Dominik Röttsches + + [sfnt] Avoid nullptr dereference in reading malformed 'COLR' v1 table. + + Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=1408044. + + * src/sfnt/ttcolr.c (tt_face_load_colr): When the 'COLR' v1 table header is + too small, don't deallocate delta set index map structures. + +2023-01-17 Werner Lemberg + + * src/tools/update-copyright: Allow execution from other repositories. + + We use this for `freetype-demos`. + +2023-01-17 Werner Lemberg + + Update all copyright notices. + +2023-01-17 Werner Lemberg + + * src/tools/no-copyright: Updated. + +2023-01-17 Ben Wagner + + [base] 'close' callback may not use `stream->memory`. + + The documentation for `FT_StreamRec::memory` states that it 'shouldn't be + touched by stream implementations'. This is true even for internal + implementations of the 'close' callback, since it is not guaranteed that + `memory` will even be set when the 'close' callback occurs. + + * src/base/ftobjs.c (new_memory_stream): stash current `memory` in + `stream->descriptor`. + (memory_stream_close): Use it. + +2023-01-17 Ben Wagner + + [base] Always close user-provided stream. + + The `FT_Open_Face` documentation states + + > If `FT_OPEN_STREAM` is set in `args->flags`, the stream in `args->stream` + > is automatically closed before this function returns any error (including + > `FT_Err_Invalid_Argument`). + + However, if the user provides a stream in `args.stream` with + `FT_OPEN_STREAM` set and a `close` function, but then for some reason passes + NULL for `aface` and a non-negative `face_index`, the error + `Invalid_Argument` is returned but the `close` callback will not be called + on the user-provided stream. This may cause resource leaks if the caller is + depending on the `close` callback to free resources. + + The difficulty is that a user may fill out a `FT_StreamRec` and pass its + address as `args.stream`, but the stream isn't really 'live' until + `FT_Stream_New` is called on it (and `memory` is set). In particular, it + cannot really be cleaned up properly in `ft_open_face_internal` until the + stream pointer has been copied into the `stream` local variable. + + * src/base/ftobj.c (ft_open_face_internal): Ensure that user-provided + `args.stream.close` is called even with early errors. + +2023-01-17 Ben Wagner + + [base] Fix leak of internal stream marked external. + + `open_face_from_buffer` allocates a new `FT_Stream` to pass to + `ft_open_face_internal`. Because this is an `FT_OPEN_STREAM`, + `ft_open_face_internal` will mark this as an 'external stream', which the + caller must free. However, `open_face_from_buffer` cannot directly free it + because the stream must last as long as the face. There is currently an + attempt at this by clearing the 'external stream' bit after + `open_face_from_buffer` returns successfully. However, this is too late as + the original stream may have already been closed and the stream on the face + may not be the same stream as originally passed. + + It is tempting to use `FT_OPEN_MEMORY` and let `ft_open_face_internal` + create the stream internally. However, with this method there is no means + to pass through a 'close' function to the created stream to free the + underlying data, which must be owned by the stream. + + A possibility is to check on success if the stream of the face is the same + as the original stream. If it is then unset the external flag. If not, + then free the original stream. Unfortunately, while no current + implementation does so, it is possible that the face still has the original + stream somewhere other than as the `FT_FaceRec::stream`. The stream needs + to remain available for the life of the face or until it is closed, + whichever comes earlier. + + The approach taken here is to let the stream own itself. When the stream is + closed it will free itself. + + * src/base/ftobjs.c (memory_stream_close): Free `stream`. + (open_face_from_buffer): Simplify error handling, since + `ft_open_face_internal` always closes `args.stream` on any error. + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54930 + +2023-01-16 Werner Lemberg + + sr/*.c: Various minor fixes. + + * src/autofit/ft-hb.c (_hb_ft_reference_table): Call `FT_UNUSED` after + variable declarations. + + * src/gxvalid/gxvjust.c (gxv_just_widthDeltaClusters_validate): Eliminate + unused variable. + + * src/gzip/ftgzip.c: Don't call GCC '-Wstrict-prototypes' pragma for C++ + compiler. + + * src/sfnt/ttcolr.c (ENSURE_READ_BYTES): Remove final semicolon to avoid + compiler warning. + + * src/sfnt/ttsvg.c (tt_face_load_svg_doc): Fix signedness warning. + +2023-01-16 Dominik Röttsches + + [sfnt] Remove temporary runtime flag for variable 'COLR' v1. + + Fixes #1187. + + * src/sfnt/ttcolr.c (top level, read_paint, tt_face_load_colr, + tt_face_free_colr, get_deltas_for_var_index_base, + tt_face_get_color_glyph_clipbox, tt_face_get_colorline_stops): Remove macro + definition `VARIABLE_COLRV1_ENABLED` and its usage. + + * src/truetype/ttdriver.c (tt_property_set): Remove parsing of + 'TEMPORARY-enable-variable-colrv1' property name. + + * src/truetype/ttobjs.h (TT_DriverRec): Remove `enable_variable_colrv1` + flag. + +2023-01-07 Werner Lemberg + + * src/autofit/ft-hb.c (_hb_ft_reference_table): Minor integration fixes. + +2023-01-07 Ben Wagner + + [truetype] Reset cvt and storage in context load. + + Currently the cvt and storage are saved and restored in `TT_RunIns`. + However, this is too granular as the cvt and storage area should be set to + the original cvt and storage area only when setting up the hinting context. + This allows for the cvt and storage area to be modified while parsing + multiple glyphs, as is the case with composite glyphs. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Remove `origCvt` and + `origStorage`. + + * src/truetype/ttinterp.c (TT_RunIns): Don't save and restore the cvt and + storage area. + (Modify_CVT_Check, Ins_WS): Switch from "if in glyph and using original data + do copy on write" to "if in glyph and not using glyph specific data do copy + on write". + +2023-01-06 Matthias Clasen + + [autofit] Don't depend on 'hb-ft'. + + The circular dependency is still there, but at least we no longer depend on + the HarfBuzz API that is only present if HarfBuzz has been built with + FreeType support, making the bootstrapping a bit easier. + + * src/autofit/ft-hb.c, src/autofit/ft-hb.h: New files, providing + `_hb_ft_font_create`, which is more or less a verbatim copy of the + corresponding HarfBuzz code from file `hb-ft.cc`. + + * src/autofit/afglobal.c (af_face_globals_new): Use it. + * src/autofit/afshaper.h: Don't include `hb-ft.h` but `ft-hb.h`. + * src/autofit/autofit.c: Include `ft-hb.c`. + + * LICENSE.TXT: Updated. + +2023-01-06 Ben Wagner + + [truetype] Keep variation store consistent. + + `tt_var_load_item_variation_store` fills out a `GX_ItemVarStore`. While it + may return an error, the item store must be left in a consistent state so + that any use or destruction of the item store can properly use or free the + data in it. Before this change the counts from the font data were read + directly into the item store before the actual allocation of the arrays to + which they referred. There exist many opportunities between the time the + counts are read and the arrays are allocated to return early due to invalid + data. When this happened the item store claimed to have entires it actually + did not, leading to crashes later when it was used. + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54449 + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Read the counts + into local variables and store them in the item store only after the related + arrays are actually created on the item store. + +2023-01-05 Ben Wagner + + [base] Report used stream's external status. + + In `open_face` the initial stream is set on the face, along with the + information about if FreeType is the owner of the stream object itself. The + loaders may in the course of their work replace this stream with a new + stream (as is the case for 'woff' and 'woff2'), which may have a different + ownership than the initial stream object (likely the original stream object + is owned by the user and is external, while the new stream object is created + internally to FreeType and is internal). When the stream is replaced, the + face's flags are updated with the new ownership status. + + However, `open_face` cannot itself free this stream as its caller + `ft_open_face_internal` is responsible for this. In addition, in the case + of an error `open_face` cannot return an actual face with the new stream and + its ownership status to the caller. As a result, it must pass this + information back to the caller as a sort of "failed face" so that the caller + can clean up. + + `open_face` was already passing back the new stream but was not passing back + the stream ownership information. As a result the stream may not have been + free'd when needed. + + Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54700 + + * src/base/ftobjs.c (open_face): Pass back the ownership information as + well. + (ft_open_face_internal): Updated. + +2023-01-05 Noah Cabral + + fix spelling err in LICENSE.txt + +2023-01-05 Dominik Röttsches + + [sfnt] Fix color stop bounds check calculation at table end. + + Fixes https://bugs.chromium.org/p/skia/issues/detail?id=14021 + + * src/sfnt/ttcolr.c (VAR_IDX_BASE_SIZE): New macro. + (tt_face_get_colorline_stops): Fix off-by-one bounds check calculation, take + `VarColorStop` into account, and hopefully make it easier to read. + +2023-01-05 Alexei Podtelezhnikov + + * src/base/ftobjs.c (FT_Request_Metrics): Avoid division by zero. + + The division-by-zero might happen in broken fonts (see #1194). + Instead of returning a huge number from FT_DivFix and failing + to scale later, we now bail immediately. + +2022-12-20 Alexei Podtelezhnikov + + [psaux] Delay the upem validity assertion. + + Fixes #1194. + + * src/psaux/psft.c (cf2_getUnitsPerEm): Remove the upem assert. + (cf2_checkTransform): Assert the upem validity after checking the scale. + +2022-12-14 David Vanderson + Werner Lemberg + + [gzip] Make static compilation not leak global symbols. + + * src/gzip/ftgzip.c (HAVE_HIDDEN): Do not define; it is no longer needed + because everything is static. + (HAVE_MEMCPY): Define. + (zcalloc, zcfree): Remove no longer needed definitions (because `Z_SOLO` is + active). + + * src/gzip/patches/freetype-zlib.diff: Regenerated. + + Fixes #1146. + +2022-12-14 Werner Lemberg + + * src/gzip/ftzconf.h: Updated to zlib 1.2.13. + + I forgot to copy that file. + +2022-12-14 Werner Lemberg + + * builds/unix/configure.raw: Don't check for `memcpy` and `memmove`. + + We expect a C99 compiler, and both functions are part of this standard. + +2022-12-13 Werner Lemberg + + [sdf, sfnt] Handle minor compiler warnings. + + * src/sdf/ftsdf.c (get_min_distance_conic): Initialize `nearest_point`. + + * src/sfnt/ttsvg.c (find_doc): Initialize `mid_doc`. + + Fixes #1195. + +2022-12-07 Werner Lemberg + + * subprojects/zlib.wrap: Micro-update from upstream. + +2022-12-06 Jiří Malák + + * include/freetype/internal/ftcalc.h (FT_MSB): Support Open Watcom 2.0. + + Closes !232. + +2022-11-23 Luca Bacci + + * src/base/ftdbgmem.c (ft_mem_source_compare): Add FT_COMPARE_DEF. + + Closes !230. + +2022-11-21 Alexei Podtelezhnikov + + * src/autofit/afloader.c (af_loader_load_glyph): Remove `size` check. + + This is done by `FT_Load_Glyph`. + +2022-11-18 Alexei Podtelezhnikov + + Comments added. + +2022-11-16 Johan Matsson + + * src/autofit/afloader.c (af_loader_load_glyph): Fix dereference. + + This must happen after the NULL check. + + Taken from + + https://github.com/freetype/freetype/pull/2 + +2022-11-15 Alexei Podtelezhnikov + + * src/pcf/pcfutil.c ({Two,Four}ByteSwap): Use builtins or shifts. + + We trust glibc which uses shifts or builtins to swap bytes. This + must be more efficient. + +2022-11-14 Werner Lemberg + + * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50462 + +2022-11-14 Loïc Yhuel + + [meson] Use generated ftmodule.h + + ftmodule.h is generated at the root of the build directory, but FT_CONFIG_MODULES_H + (freetype/config/ftmodule.h) is used instead. + This makes the build fail when disabling modules in modules.cfg. + + * meson.build (harfbuzz_dep): Add '-DFT_CONFIG_MODULES_H='. + +2022-11-14 Loïc Yhuel + + [meson] Fix generated ftmodule.h + + The sdf module wasn't recognized, so the generated ftmodule.h had "None_renderer_class". + + * builds/meson/parse_modules_cfg.py: Handle sdf in RASTER_MODULES. + +2022-11-12 Dominik Röttsches + + Add `TT_CONFIG_OPTION_NO_BORING_EXPANSION` configuration macro. + + This gives users a possibility to deactivate new features not (yet) in the + OpenType standard. + + * include/freetype/config/ftoption.h, devel/ftoption.h + (TT_CONFIG_OPTION_NO_BORING_EXPANSION): New macro. + + * src/truetype/ttgxvar.c (ft_var_load_avar): Use it to disable 'avar' + version 2.0 support. + +2022-11-12 Behdad Esfahbod + + [truetype] Improve bounds checks for `ItemVariationStore`. + + * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Move bounds check ... + (tt_var_get_item_delta): ... to this function, because it is safer. For + example, the 'avar' table 2.0 codepath was not performing a bounds check at + all. + +2022-11-12 Behdad Esfahbod + + [truetype] In `ItemVariationStore`, value 0xFFFF for `dataCount` is valid. + + It corresponds to outer indices of 0 to 0xFFFE. + + * src/truetype/ttgxvar.c (tt_var_load_item_variation_store): Remove invalid + code. + +2022-11-11 Alexei Podtelezhnikov + + [pcf] Improve CMap efficiency and readability. + + * src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Check and walk + the encoding array indexes. + +2022-11-10 Sam James + + Fix `-Wstrict-prototypes`. + + * builds/unix/configure.raw: Fix `-Wstrict-prototypes`. + Clang 16 warns on these and they will be dropped in C23. + + * builds/unix/freetype2.m4: Ditto. + +2022-11-09 Ben Wagner + + [truetype] Check avar_segment before access + + * src/truetype/ttgxvar.c (tt_done_blend): check `avar_segment` before + accessing to free its `correspondence`. + + Reported as: + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53062 + +2022-11-09 Ben Wagner + + [truetype] Restore behavior of ft_var_load_hvvar + + * src/truetype/ttgcvar.c (ft_var_load_hvvar): restore previous behavior + + In a previous change [0] the behavior of `ft_var_load_hvvar` was changed + to not load the item variation store if it was at offset 0, but not + return an error when this happened. This broke any users, like + `tt_hvadvance_adjust`, that rely on successful completion of + `ft_var_load_hvvar` to imply that returned table's `itemStore` had been + initialized. This lead such users to dereference NULL. + + This change appears to have been unintentional and unrelated to the + actual avar2 changes. As a result, fix these NULL dereferences by + restoring the code to always attempt to initialize the `itemStore`. + + [0] ae4eb996 "[truetype] Add support for `avar` table 2.0 format." + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53061 + +2022-11-08 Werner Lemberg + + docs/CHANGES: Updated. + +2022-11-08 suzuki toshiya + + [build] use AC_CHECK_PROG() macro for libpng-config detection + + * builds/unix/configure.raw: use AC_CHECK_PROG() instead of `which` to find `libpng-config`. + +2022-11-08 suzuki toshiya + + [build] fix for make multi + + Fix "make multi" by MR !223 + + * include/freetype/internal/services/svmm.h: include ftmm.h to define FT_Get_MM_Func. + * src/truetype/ttgxvar.h: include ftmmtypes.h to use GX_AVarTable properly. + * src/base/ftmac.c: include ftdebug.h to use FT_THROW() properly. + +2022-11-08 Alexei Podtelezhnikov + + * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Accelerate the search. + + This is mostly for consistency because PFR fonts with bitmap strikes + do not seem to exist. + +2022-11-06 Alexei Podtelezhnikov + + [bdf, pfr, psnames] Accelarate charmap searches. + + The binary searches within charmaps can be accelerated because they + often contain dense continuous blocks of character codes. Within such + blocks, you can predict matches based on misses. This method has been + deployed in `bdf` since 0f122fef34; we only refactor it there. We now + use it in `pfr` and `psnames`, which speeds up the unicode charmap + access by about 50% in PFR and Type 1 fonts. + + * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Refactor. + * src/pfr/pfrcmap.c (pfr_cmap_char_{index,next}): Predict `mid` based + on the mismatch distance. + * src/psnames/psmodule.c (ps_unicodes_char_{index,next}): Ditto. + +2022-11-04 Behdad Esfahbod + + [truetype] Add support for `avar` table 2.0 format. + + See + + https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md + + for the specification. + + Currently, this is implemented only in most recent OS versions on Apple + platforms and in the HarfBuzz library, but it is expected to be added to the + OpenType standard soon. + + * src/truetype/ttgxvar.h (GX_AVarTableRec): New structure. + (GX_BlendRec): Use it to replace `avar_segment` with `avar_table`. + + * src/truetype/ttgxvar.c (ft_var_load_avar): Load new table version. + (ft_var_to_normalized, tt_done_blend): Extend for new format. + (ft_var_load_hvvar, ft_var_to_design): Updated. + +2022-10-24 Werner Lemberg + + Replace '1/64th' (and similar entries) with '1/64' in docs and comments. + +2022-10-24 Ivan Panchenko + + * include/freetype/*: Fix documentation typos. + +2022-10-21 Alexei Podtelezhnikov + + * src/truetype/ttgload.c: Cosmetic changes. + +2022-10-21 Alexei Podtelezhnikov + + [cff, truetype] Simplify SVG metrics scaling. + + Use pre-calculated scaling factors. Also, the advance widths used + to be rounded, which was incorrect. + + * src/cff/cffgload.c (cff_slot_load): Use `x_scale` and `y_scale`. + * src/truetype/ttgload.c (TT_Load_Glyph): Ditto. + +2022-10-20 Werner Lemberg + + * subprojects/zlib.wrap: Update to zlib version 1.2.13. + +2022-10-18 Dominik Röttsches + + [sfnt] Additional bounds checks for `COLR` v1 table handling. + + * src/sfnt/ttcolr.c (read_paint): Add `colr` argument, necessary for... + ... another use of `ENSURE_READ_BYTES`. + Update callers. + (tt_face_get_paint_layers): Ensure that the 4-byte paint table + offset can be read. + + This is a follow-up to !124 and issue + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52404 + +2022-10-18 Werner Lemberg + + [gzip] Update sources to zlib 1.2.13. + +2022-10-18 Alexei Podtelezhnikov + + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Simplify calculations. + +2022-10-18 Werner Lemberg + + Minor formatting. + +2022-10-18 Dominik Röttsches + + [sfnt] Guard individual `COLR` v1 paint field reads. + + * src/sfnt/ttcolr.c (ENSURE_READ_BYTES): New macro. + (read_paint): Use it – after the start pointer `p` has been checked for + whether it allows reading the format byte, each successive paint table field + read need to be bounds-checked before reading further values. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52404 + +2022-10-17 Xiang Xiao + + * builds/toplevel.mk: Prefix all paths with `$(TOP_DIR)/`. + + This is useful for builds that are not started from the root directory. + +2022-10-17 Liu Kunpeng(柳鲲é¹) + + * src/base/ftsynth.c (FT_GlyphSlot_Slant): New API with custom slant. + * include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Declare it. + +2022-10-15 Alexei Podtelezhnikov + + Note the lack of floating-point data types. + +2022-10-10 Werner Lemberg + + [cff] Remove `FT_CONFIG_OPTION_NO_GLYPH_NAMES`. + + This ancient option stayed completely undocumented. Given that the 'cff' + driver requires the 'psnames' module, it makes no sense today to have this + macro. + + * src/cff/cffdrivr.c (cff_services), src/cff/cffobjs.c (cff_face_init): + Remove corresponding conditional code. + +2022-10-10 Werner Lemberg + + Synchronize `ftoption.h` flavours. + +2022-10-10 Werner Lemberg + + Minor comment changes. + +2022-10-05 Alexei Podtelezhnikov + + Improve FT_Get_Name_Index docs and place it next to FT_Get_Glyph_Name. + +2022-10-04 Alexei Podtelezhnikov + + [autofit] Reset the face charmap directly. + + There is no need to validate the original charmap in `FT_Set_Charmap`. + It can be reset directly. + + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): + Use direct assignment. + * src/autofit/af{latin,cjk,indic}.c (af_latin_metrics_init): Ditto. + +2022-10-04 Alexei Podtelezhnikov + + * src/type1/t1afm.c (T1_Read_PFM): Set charmaps directly. + + As with the previous commit, we can avoid the validation checks + of `FT_Set_Charmap` and set it directly when choosing from the + available list. + +2022-10-03 Alexei Podtelezhnikov + + * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Avoid `FT_Set_Charmap`. + + Set charmap aggressively without all validations of `FT_Set_Charmap` + because we take it from the available array and only temporarily. + Even CMap Format 14 will gracefully return 0. + +2022-10-03 Alexei Podtelezhnikov + + * src/cache/ftcbasic.c (ftc_basic_family_get_count): Remove redundancy. + +2022-09-30 Werner Lemberg + + * src/psaux/pshints.c (cf2_hintmap_insertHint): Fix midpoint computation. + + Replace '(start + end) / 2' with 'start + (end - start) / 2' to avoid + overflow. + + Fixes #1180. + +2022-09-30 Werner Lemberg + + * src/psaux/pshints.c (cf2_hintmap_build): Improve debugging output. + +2022-09-29 mlugg + + [truetype] Fix undefined pointer arithmetic. + + * src/truetype/ttgxvar.c (tt_var_get_item_delta, ft_var_load_mvar): Use + `FT_OFFSET`. + +2022-09-29 Alexei Podtelezhnikov + + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Use lighter FT_DivFix. + +2022-09-29 Ali Chraghi + + [base] FT_Attach_Stream: Make `parameters` argument constant. + +2022-09-29 Azamat Hackimov + + * src/tools/*.py: Migrate to Python 3. + + Fixes #1185, closes !205. Formatting changes according to PEP8. + +2022-09-27 Dominik Röttsches + + [sfnt] Guard access in 'COLR' table when requesting child table pointer. + + * src/sfnt/ttcolr.c (tt_face_get_colorline_stops, read_paint): Tighten + pointer bounds checks. + (get_child_table_pointer): Check whether incoming pointer `p` lies within + the 'COLR' table. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51816 + +2022-09-27 Ben Wagner + + [sfnt] Add SVG document bounds checking. + + Add a check that the document content is actually contained within the + `SVG ` table. Without this check a malformed font may claim arbitrary + memory as its document content. + + * src/sfnt/ttsvg.c (tt_face_load_svg): Take `numEntries` into account when + testing 'documentRecord' extents. + (find_doc): Rename `stream` to `document_records` for clarity. + (tt_face_load_svg_doc): Split `doc` from `doc_list` pointer for clarity. + Test that the document content is contained within the table. + Ensure minimum length of document before testing for gzip format. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51812 + +2022-09-23 Alexei Podtelezhnikov + + [base] Clean up the bitmap flow control. + + * src/base/ftbitmap.c (FT_Bitmap_Copy): Flip the copy if its pitch + is trully opposite, zero is not a positive value. + (FT_Bitmap_Convert): Set negative pitch as needed, accept negative + alignment values. + +2022-09-22 Alexei Podtelezhnikov + + [base] Discard and recreate bitmaps for copying and converting. + + Reusing target bitmaps for copying and converting is permitted. It is, + however, pointless to preserve their content before overwriting. Free- + malloc might be faster than realloc. + + * src/base/ftbitmap.c (FT_Bitmap_Copy, FT_Bitmap_Convert): Free + an old buffer and create a new one. + +2022-09-16 Dominik Röttsches + + Reject 'COLR' table if version is 1 but header too small. + + * src/sfnt/ttcolr.c (tt_face_load_colr): If the version is determined to + be 1, then the table size has to be at least the size of the v1 header. + Also, for peeking the number of base glyphs and entries in the layer list, + ensure that the table is sufficiently long. + + Fixes #1179. Original patch by Sergey Temnikov. + +2022-09-15 Werner Lemberg + + * src/otvalid/otvgsub.c (otv_SingleSubst_validate): Fix format 1 handling. + + Fixes #1181. + +2022-09-06 Dominik Röttsches + + [truetype] Reject 'fvar' loading when `num_instances` is too small. + + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Reject retrieving master when + 'fvar' values locally do not match with sanitized values from initialization + at `sfnt_init_face` time. + + Reported as + + https://bugs.chromium.org/p/chromium/issues/detail?id=1360295 + +2022-09-05 Dominik Röttsches + + [sfnt] Handle variable `COLR` v1 fonts without delta set index map + + Fixes #1178. + + * src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Set outer index to + 0 and inner index to the delta index when retrieving deltas if the + `COLR` table has no delta set index map. + +2022-09-05 Dominik Röttsches + + [sfnt] Pointer sanity checks before reading layer info in 'COLR' v0 + + * src/sfnt/ttcolr.c (tt_face_get_colr_layer): Check that the pointer to + read from is within the 'COLR' table. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50633 + +2022-09-05 Werner Lemberg + + [autofit] Minor fix. + + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): Avoid + compiler warning. + +2022-09-05 Dominik Röttsches + + [sfnt] Don't require 'gvar' table to support variation fonts. + + Fixes #1172. + + * src/sfnt/sfobjs.c (sfnt_load_face): Tag font as Multiple Masters font if + `fvar` is present; do not require other tables to be present. + + * src/truetype/ttgxvar.c (tt_set_mm_blend): Allow for a missing 'gvar' table + when setting variation coordinates. However, if a 'gvar' table is actually + present, do perform a sanity check and fail on malformedness. + (TT_Get_MM_Var): Don't assume 'fvar' needs 'gvar' or 'CFF2 tables in all + cases, which is an overly tight check. + +2022-08-27 Alexei Podtelezhnikov + + * src/base/ftver.rc: Explicitly use UTF-16. + + Fixes #1177 to avoid mistranslation and other problems. + +2022-08-26 Dominik Röttsches + + [sfnt] Avoid undefined shifts in `COLR` v1 color line retrieval + + * src/sfnt/ttcolr.c (tt_face_get_colorline_stops): Disambiguate shift + behavior by using multiplication using macros from ftcalc.h. + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50573 + +2022-08-21 Sean Farrell + + CMakeLists.txt (FT_ENABLE_ERROR_STRINGS): New configuration option. + + This option uncomments FreeType configuration macro + `FT_CONFIG_OPTION_ERROR_STRINGS` to make function `FT_Error_String` return + meaningful error strings. + + This option is off by default. + +2022-08-21 Chris Liddell + + [base, type1] Better handling of out-of-memory situations. + + This follows similar code in `cff_slot_done`. + + * src/base/ftobjs.c (ft_glyphslot_done), src/type1/t1objs.c + (T1_GlyphSlot_Done): Check `internal` pointer. + + The Type1 problems was reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50057. + +2022-08-06 Tim-Philipp Müller + + ci: bump windows image and use newer runner and vs2019 + + The old 1809 runner will be decommissioned at some point. + +2022-08-04 @udoudou <> + + * src/cache/ftcmanag.c (FTC_Manager_New): Initialize `cur_weight`. + + See !192. + +2022-08-02 Alexei Podtelezhnikov + + * src/sfnt/ttload.c: Trace formatting updates. + +2022-08-02 Alexei Podtelezhnikov + + * src/psaux/psobjs.c (ps_table_release): Remove redundant casting. + +2022-08-02 Alexei Podtelezhnikov + + * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Reduce casting. + +2022-08-02 Alexei Podtelezhnikov + + [cache] Remove some casts, clean up tracing. + + * src/cache/ftcbasic.c (FTC_ImageCache_Lookup, FTC_SBitCache_Lookup): + Clean up tracing types. + * src/cache/ftccache.c (ftc_node_destroy): Ditto. + * src/cache/ftcmanag.c (FTC_Manager_Check): Ditto. + (FTC_Manager_Check, FTC_Node_Unref): Remove a cast. + * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Ditto. + +2022-08-01 Alexei Podtelezhnikov + + [autofit] Updated to reduce casting (cont'd). + + * src/autofit/afmodule.h (AF_ModuleRec): Change `default_script` type. + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): + Remove casting. + * src/autofit/afmodule.c (af_property_{set,get}): Updated accordingly. + +2022-08-01 Alexei Podtelezhnikov + + [autofit] Updated to reduce casting. + + * src/autofit/afglobal.h (AF_FaceGlobalsRec): Change `glyph_count` type. + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage, + af_face_globals_get_metrics, af_face_globals_is_digit, + af_face_globals_new): Changed local types and updated accordingly. + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Ditto. + +2022-08-01 Alexei Podtelezhnikov + + [psaux] Remove unused structure field. + + * include/freetype/internal/psaux.h (PS_TableRec): Remove `num_elems`. + * src/psaux/psobjs.c (ps_table_new): Remoove its initialization. + +2022-07-30 Dominik Röttsches + + [sfnt] Implement VarClipBox. + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Depending on the + format, read `var_index_base`, then retrieve and apply scaled deltas. + +2022-07-30 Dominik Röttsches + + [sfnt] Fix typo in clip box computation. + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Use appropriate + scale factor for `yMin` and `yMax`. + +2022-07-30 Alexei Podtelezhnikov + + [autofit] Use unsigned accounting for hints. + + * src/autofit/afhints.h (AF_AxisHintsRec): Use unsigned types. + + * src/autofit/afhints.c (af_axis_hints_new_{segment,edge}, + af_glyph_hints_get_num_segments, af_glyph_hints_get_segment_offset): + Updated accordingly. + * src/autofit/aflatin.c (af_cjk_hints_compute_edges): Ditto. + * src/autofit/afcjk.c (af_cjk_hints_compute_edges): Ditto. + +2022-07-30 Alexei Podtelezhnikov + + * src/autofit/afhints.h: Remove dead code. + +2022-07-29 Werner Lemberg + + * src/base/ftglyph.c (FT_Get_Glyph): Set `*aglyph` to NULL in case of error. + +2022-07-29 Werner Lemberg + + Fix compilation if `TT_CONFIG_OPTION_GX_VAR_SUPPORT` is not set. + + * src/sfnt/ttcolr.c: Protect relevant code with + `TT_CONFIG_OPTION_GX_VAR_SUPPORT`. + +2022-07-29 Werner Lemberg + + Fix clang14 compiler warnings. + + * include/freetype/internal/ftstream.h (FT_GET_SHORT_LE, FT_GET_USHORT_LE): + Fix type. + + * src/sfnt/ttcolr.c (get_deltas_for_var_index_base): Always return boolean + value. + (tt_face_get_colorline_stops): Fix type of `var_index_base`. + +2022-07-26 Alexei Podtelezhnikov + + [pfr] Fortify the kerning code. + + Any array index must be strictly less then the array size. Therefore, + we must reject indexes that are equal to the array size. Alternatively, + we should move the bounds check before the index decrement but that + would be confusing. + + In addition, it is ok to decrement zero (.notdef) and get UINT_MAX, + which is then automatically rejected in the bounds check. + + * src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix the bounds checking. + +2022-07-26 Werner Lemberg + + [pfr] Add some safety guards. + + * src/pfr/pfrload.c (pfr_phy_font_load): Check resolutions and number of + characters. + + Fixes #1174. + +2022-07-26 Werner Lemberg + + * src/pfr/*.c: Trivial improvements and formatting. + +2022-07-24 Werner Lemberg + + * configure: s/egrep/grep -E/ + + `egrep` is deprecated. + +2022-07-23 Ben Wagner + + [base] Build outlines in amortized constant time. + + When resizing the loader's points and contours, resize them to at least 1.5 + times their current size. The code currently only reserves as much space as + is currently required, leading to O(n^2) runtime when adding points one at a + time. + + This change does not attempt to ever shrink the loader's point and contour + storage since this was not attempted previously either. The 1.5 multiple + was chosen as a trade-off between potentially unused space and the runtime. + + * src/base/ftgloader.c (FT_GlyphLoader_CheckPoints): Implement it. + + Fixes #1173. + +2022-07-09 Dominik Röttsches + + [sfnt] Support variable 'COLR' v1 `PaintVarSkew*`. + + * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW`, + `FT_COLR_PAINTFORMAT_INTERNAL_SKEW_CENTER`, and + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SKEW_CENTER`. + (read_paint): Handle new enumeration values. + +2022-07-09 Dominik Röttsches + + [sfnt] Support variable 'COLR' v1 `PaintVarRotate*`. + + * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration values + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE` and + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_ROTATE_CENTER`. + (read_paint): Handle new enumeration values. + +2022-07-09 Dominik Röttsches + + [sfnt] Support 'COLR' v1 variable `PaintVarScale*`. + + * src/sfnt/ttcolr.c: (FT_PaintFormatInternal): New enumeration values + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE`, + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_CENTER`, + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM`, and + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SCALE_UNIFORM_CENTER`. + (read_paint): Handle new enumeration values. + +2022-07-09 Dominik Röttsches + + [sfnt] Support for 'COLR' v1 variable translate. + + * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSLATE`. + (read_paint): Handle new enumeration value. + +2022-07-09 Dominik Röttsches + + [sfnt] Support for 'COLR' v1 variable transforms. + + * src/sfnt/ttcolr.c (FT_PaintFormat_Internal): New enumeration value + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_TRANSFORM`. + (read_paint): Handle new enumeration value. + +2022-07-09 Dominik Röttsches + + [sfnt] Deltas for 'COLR' v1 gradient coordinates. + + * src/sfnt/ttcolr.c (read_paint) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Read and + apply deltas to radial, linear, and sweep gradient coordinates such as 'p0', + 'p1', 'p2', 'center', 'radii', and 'angles'. + +2022-07-08 Dominik Röttsches + + [sfnt] Support variable 'COLR' v1 color lines. + + * include/freetype/ftcolor.h (FT_ColorStopIterator): Add field + `read_variable` to indicate whether a variation index base should be read. + + * src/sfnt/ttcolr.c: (FT_PaintFormat_Internal): New enumerations + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_LINEAR_GRADIENT` + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_RADIAL_GRADIENT`, and + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SWEEP_GRADIENT`. + (read_color_line): New parameter `read_variable`; update callers. + (read_paint): Handle new enumerations. + +2022-07-07 Dominik Röttsches + + [sfnt] Apply variation deltas to `PaintVarSolid`. + + * src/sfnt/ttcolr.c (FT_PaintFormat_Internal_): New enumeration + `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`. + + (get_deltas_for_var_index_base) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New + function to retrieve an array of delta values, which will be used for most + of 'COLR' v1 variation formats (in follow-up commits). + + (read_paint): Add `face` parameter; update caller. + Handle `FT_COLR_PAINTFORMAT_INTERNAL_VAR_SOLID`. + +2022-07-07 Dominik Röttsches + + [sfnt] Check safety of cast to `TT_Driver` before accessing member. + + * src/sfnt/ttcolr.c (VARIABLE_COLRV1_ENABLED): Access + `enable_variable_colrv1` only if driver class matches. + +2022-07-06 Stephen Holdaway + + doc: Clarify description of `FT_Stream_IoFunc`. + + The existing documentation comments on `FT_Stream_IoFunc` hinted at the dual + seek/read behavior required for custom stream implementations to work, but + it didn't explicitly explain it. Without looking at the internals of + FreeType, it was easy for someone to assume their implementation should + handle both seek and read operations all the time. If this is done, you get + a variety of errors, but mostly just `Unknown_File_Format` (error code + 0x02). + +2022-07-04 Dominik Röttsches + + [sfnt] Load variation store for 'COLR' v1. + + * src/sfnt/ttcolr.c: Include `ttobjs.h` temporarily. + (VARIABLE_COLRV1_ENABLED): New temporary macro to detect whether variable + COLRv1 is enabled. + (Colr): New fields `var_store` and `delta_set_idx_map`. + (tt_face_load_colr, tt_face_free_colr) [VARIABLE_COLRV1_ENABLED]: Load and + free variation store data using the functions from the Multiple Masters + service. + +2022-07-03 Chris Liddell + + [base] Improve error handling in `FT_GlyphLoader_CheckPoints`. + + If `FT_GlyphLoader_CreateExtra` returns an error (and a couple of other + places), `FT_GlyphLoader_CheckPoints` would propagate the error immediately, + rather than cleaning up the partially set up `FT_GlyphLoader`. As a + consequence, a subsequent attempt to create a glyph could result in a crash. + + * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Ensure all the error + conditions exits are consistent, eventually calling `FT_GlyphLoader_Reset`. + +2022-07-03 Thomas Sondergaard + + CMakeLists.txt: Provide both 'freetype' and 'Freetype::Freetype' targets. + + FreeType can be located by consuming projects that use + `find_package(Freetype)` either via the old `MODULE` path (which uses + `FindFreetype.cmake` supplied by CMake), or via the new `CONFIG` path (which + uses `freetype-config.cmake` as supplied by this project). Up to this point + the CMake module has supplied the target `Freetype::Freetype` and the config + file provided by this project the target `freetype`. Now we supply both + `freetype` and `Freetype::Freetype` so that consuming projects can always + use the target `Freetype::Freetype` regardless of what path was taken by + `find_package(Freetype)`. + + Fixes #1165. + +2022-07-02 Werner Lemberg + + include/freetype/ftmm.h: Improve documentation. + +2022-07-01 Dominik Röttsches + + [base] Round values in `FT_MulAdd_Fix`. + + This avoids regressing Blink layout tests and makes `FT_MulAdd_Fix` delta + retrieval implementation consistent with the previous implementation, which + used `FT_fixedToInt` and included rounding. + + * src/base/ftcalc.c (FT_MulAdd_Fix): Implement it. + Also fix remaining `temp` initialization compilation issue. + + Fixes #1169. + +2022-07-01 Werner Lemberg + + Minor formatting. + +2022-06-30 Dominik Röttsches + + Fix initialisation of temp variable in new FT_MulAddFix + + src/truetype/ttgxvar.c (FT_MulAddFix): Initialise `temp`. + +2022-06-29 Dominik Röttsches + + [truetype] Perform variation store delta computation with 64-bit precision. + + * include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Make type + explicitly 32-bit. + * include/freetype/internal/services/svmm.h + (FT_Var_Get_Item_Delta_Func): Change return type to `FT_ItemVarDelta` + * truetype/ttgxvar.h (tt_var_get_item_delta): Change return type to + `FT_ItemVarDelta`. + * truetype/ttgxvar.c (tt_var_get_item_delta): Store scalars and deltas + to intermediate array, perform computation using new method + `FT_MulAddFix`. + +2022-06-29 Dominik Röttsches + + New function `FT_MulAddFix` to compute the sum of fixed-point products. + + This function, based on the code of `FT_MulFix`, uses 64-bit precision + internally for intermediate computations. + + * include/freetype/internal/ftcalc.h, base/ftcalc.c (FT_MulAddFix): + Implement it. + +2022-06-22 Werner Lemberg + + CMakeLists.txt: Move inclusion of `FindPkgConfig` down. + + It must come after `CMAKE_TOOLCHAIN_FILE`. + + Fixes #1167. + +2022-06-22 Dominik Röttsches + + [sfnt] Upgrade stop_offset to FT_Fixed from FT_F2Dot14 + +2022-06-21 Alexei Podtelezhnikov + + * docs/CHANGES: Announce impending Infinality removal. + +2022-06-21 Alexei Podtelezhnikov + + * ttgload.c (TT_Process_Composite_Glyph): Fix a signedness warning. + +2022-06-21 Werner Lemberg + + s/fixed point/fixed-point/ + +2022-06-21 Werner Lemberg + + .gitlab-ci.yml: Correctly upgrade `meson`. + +2022-06-21 Dominik Röttsches + + Proposal: Feature control for variable COLRv1 + + * include/freetype/ftdriver.h (variable-color-v1 property): Add documentation + for variable-colr-v1 property. + * src/truetype/ttdriver.c (tt_property_set): Ingest variable-control property + when called, set to enable_variable_colrv1 driver flag. + * src/truetype/ttobjs.h (TT_DriverRec): Add enable_variable_colrv1 flag. + +2022-06-21 Xavier Claessens + + [meson] Disable FreeType in HarfBuzz fallback. + + This avoids cyclic subproject configuration when the 'harfbuzz' feature is + enabled, or `--wrap-mode=forcefallback` is used, but HarfBuzz is built as a + subproject. HarfBuzz does the same and disables HarfBuzz support when + configuring FreeType as a subproject. + + * meson.build (harfbuzz_dep): Implement it. + + * subprojects/harfbuzz.wrap: New file. + + * .gitlab-ci.yml [windows meson]: Use latest version of the meson 0.59 + series, which has a necessary bug fix to make CI work. + +2022-06-19 Alexei Podtelezhnikov + + [truetype] Clean up phantom point accounting. + + This formalizes that the phantom points appended in the outline + do not increase its point count, nor are they tagged or included + in any additional contours. Only their coordinates are stored. + They are counted in the glyph zone, however. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Infer `n_points` + from the outline size plus four phantom points. + * src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Remove this + argument. + * src/truetype/ttgload.c (tt_prepare_zone): Add phantom four. + (TT_Process_Simple_Glyph, load_truetype_glyph): Update all callers. + +2022-06-19 Alexei Podtelezhnikov + + [truetype/GX] Clean up phantom point adjustment. + + This moves phantom point and advance variation adjustment next to + calculations. The logic stays the same, HVAR and VVAR take priority. + + * src/truetype/ttgload.c (load_truetype_glyph): Move it from here... + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here + and check for HVAR and VVAR presence outside the main loop. + +2022-06-18 Ben Wagner + + [stream] Fix reading s32 when long is s64 + + `FT_READ_LONG`, `FT_GET_LONG`, and related macros did not return + negative values when `long` is more than 32 bits. `FT_Stream_ReadULong` + would read four bytes into the LSB of an `FT_ULong` and return that. + Since this can never set the MSb of the `FT_ULong` when `FT_ULong` is + more than 32 bits the cast to `FT_Long` never resulted in a negative + value. + + Fix this by modifying `FT_Stream_Read*` to return a type of the same + size as the bytes it is reading and changing the `FT_READ_*` and + `FT_GET_*` macros to cast to the same type returned by `FT_Stream_Read*` + but with the correctly signed type (instead of casting to what is + assumed to be the type of `var` which will happen automatically anyway). + + There exist a few cases like with the `OFF3` variants where there isn't + generally a type with the correct size. `FT_PEEK_OFF3` works around this + loading the bytes into the three most significant bits and then doing a + signed shift down. `FT_NEXT_OFF3` also already worked correctly by + casting this signed value to another signed type. `FT_Stream_GetUOffset` + works correctly but one must be careful not to attempt to cast the + returned value to a signed type. Fortunately there is only + `FT_GET_UOFF3` and no `FT_GET_OFF3`. + + All of these cases are handled correctly when reading values through + `FT_Stream_ReadFields` since it generically computes the signed value + through an `FT_Int32`. This change is essentially doing the same for + these macros. + + * include/freetype/internal/ftstream.h (FT_NEXT_*, FT_GET_*, FT_READ*): + Update macros and return types to use fixed size types for fixed size + values. + + * src/base/ftstream.c (FT_StreamGet*, FT_StreamRead*): Dito. + + Issue: #1161 + +2022-06-17 Alexei Podtelezhnikov + + [truetype/GX] Fix an old typo. + + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Vertical + advance is measured along y-coordinate. + +2022-06-16 Alexei Podtelezhnikov + + [truetype/GX] Clean up advance adjustment (Brrr). + + * src/truetype/ttgload.c (load_truetype_glyph): Remove remaining code. + +2022-06-16 Ben Wagner + + [type1] Directly search for eexec in private dict + + This code originally just searched for `eexec`. This was later modified + to check that the `eexec` found is valid (not in a string or comment). + This was done by searching for `eexec` as before and then, for each + `eexec` found, searching from the beginning using the correct parsing to + see if the `eexec` was still found. If the private dictionary is large + and contains many copies of `eexec` which are not valid, the initial + part of the private dictionary is scanned once for each, potentially + leading to n^2 parsing time. + + Instead of finding an initial `eexec` and then re-parsing to discover if + it is valid, drop the initial search for `eexec` and just parse to find + a valid `eexec`. This is strictly faster since the validation must + happen anyway and avoids restarting from the beginning each time an + `eexec` is found in the data. + + * src/type1/t1parse.c (T1_Get_Private_Dict): avoid n^2 parsing + + Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1328883 + +2022-06-16 Alexei Podtelezhnikov + + [truetype/GX] Clean up advance adjustment. + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, load_truetype_glyph): + Move the advance adjustment from here... + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): ... to here and + simplify arguments. + * src/truetype/ttgxvar.h (TT_Vary_Apply_Glyph_Deltas): Update prototype + with fewer arguments. + +2022-06-14 Ben Wagner + + [gzip] Handle inflate returning Z_NEED_DICT + + When `inflate` returns `Z_NEED_DICT` this is currently not reported as + an error and callers may assume that the decompression succeeded when it + did not. In particular, a compressed table in a woff file may not + actually be decompressed and written as expected, leaving the backing + memory for the expanded table uninitialized. + + * src/gzlip/ftgzip.c (FT_Gzip_Uncompress): treat `Z_NEED_DICT` as + indicating invalid data since there is no means to provide a dictionary. + + Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1335712 + +2022-06-13 Ben Wagner + + [woff] Don't allocate table entries until needed + + * src/sfnt/sfwoff.c (woff_open_font): delay allocating space for the + table entries until they are actually written out with the data. + +2022-06-12 Alexei Podtelezhnikov + + * src/sfnt/sfwoff2.c (woff2_open_font): Partial revert. + + Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47981. + +2022-06-12 Alexei Podtelezhnikov + + * src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Cosmetic macro change. + +2022-06-11 Alexei Podtelezhnikov + + [woff, woff2] Avoid buffer zeroing. + + * src/sfnt/sfwoff.c (woff_open_font): Use Q-macros. + * src/sfnt/sfwoff2.c: Ditto. + (reconstruct_font): Allocate table_entry on stack. + +2022-06-10 Alexei Podtelezhnikov + + [smooth] Fix GCC LTO crashes on Windows. + + Fixes #1164 by using a volatile variable around `setjmp`. It is hard to + say how this fixes crashes related to certain link-time optimizations. + This does not decrease the rendering performance. + + * src/smooth/ftgrays.c (gray_convert_glyph_inner): Use volatile `error`. + +2022-06-09 bruvzg <@bruvzg> + + * src/smooth/ftgrays.c [FT_STATIC_RASTER]: Fix compilation. + +2022-06-06 Ben Wagner + + [svg] Set linear advances when loading SVG glyphs + + * include/freetype/freetype.h (FT_GlyphSlotRec_): update doc + * src/cff/cffgload.c (cff_slot_load): do it + * src/truetype/ttgload.c (TT_Load_Glyph): do it + + Fixes: #1156 + +2022-06-01 Ben Wagner + + [svg] Clear correct flags for doc ownership + + This issue was discovered with an SVG based font with some documents + compressed and other uncompressed. After loading the first compressed + document the ownership flag on the glyph slot was set to true but never + set to false. As a result after loading a compressed document a glyph + from an uncompressed document would load fine, but when this glyph slot + was cleared it would try to free its document resulting in a wild free. + + * src/base/ftobjs.c (ft_glyphslot_clear): clear correct flags + + Fixes: #1162 + +2022-06-01 Alexei Podtelezhnikov + + [docs] Correct favicon. + +2022-06-01 Alexei Podtelezhnikov + + [docs] Use hinted favicon. + +2022-05-27 Alexei Podtelezhnikov + + [docs] Update favicon. + +2022-05-25 Behdad Esfahbod (بهداد اسÙهبد) + + * src/sfnt/ttmtx.c (tt_face_get_metrics): Apply variations unconditionally. + + This causes a speed-up of approx. 20% for getting advance widths. + +2022-05-23 Dominik Röttsches + + [truetype] Support reading 32bit/16bit VarStore deltas + + * include/freetype/internal/ftmmtypes.h (FT_ItemVarDelta): Define type + to be used for delta arrays, upgrade to FT_long. + * src/truetype/ttgxvar.c: Adhere to long_words bit and read either + Short/Byte pairs or Long/Short pairs, as defined by spec. For better + readability, define macro for repetitive read code. + +2022-05-20 Dominik Röttsches + + [truetype] Handle 0xFFFF special value inside delta retrieval function + + * truetype/ttgxvar.c (tt_hvadvance_adjust, tt_apply_mvar, + tt_var_get_item_delta): Remove special 0xFFFF handling in favor of less + redundant handling inside the tt_var_get_item_delta function, as it is + equivalent to returning a 0 delta. Avoids code-duplication checking for + special value 0xFFFF. + +2022-05-19 Dominik Röttsches + + [truetype, snft] Add service methods for `DeltaSetIdxMap` and `VarStore`. + + This will be needed for 'COLR' v1 variation support. + + * src/truetype/ttgxvar.h (GX_ItemVarData, GX_AxisCoords, GX_VarRegion, + GX_VarItemStore, GX_DeltaSetIdxMap): Move structures to... + * include/freetype/internal/ftmmtypes.h: ... this new file. + + * include/freetype/internal/service/svmm.h (MultiMasters): Include + `ftmmtypes.h`. + (FT_Var_Load_Delta_Set_Idx_Map_Func, FT_Var_Load_Item_Var_Store_Func, + FT_Var_Get_Item_Delta_Func, FT_Var_Done_Item_Var_Store_Func, + FT_Var_Done_Delta_Set_Idx_Map_Func): New function typedefs. + (MultiMasters): Add them. + (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated. + + * src/cff/cffdrivr.c (cff_load_item_variation_store, + cff_load_delta_set_index_mapping, cff_get_item_delta, + cff_done_item_variation_store, cff_done_delta_set_index_map): New wrapper + methods calling into mm service. + (cff_service_multi_masters): Updated. + + * src/truetype/ttgxvar.c (ft_var_load_item_variation_store, + ft_var_load_delta_set_index_mapping, ft_var_get_item_delta, + ft_var_done_item_variation_store, ft_var_done_delta_set_index_map): Renamed + to ... + (tt_var_load_item_variation_store, tt_var_load_delta_set_index_mapping, + tt_var_get_item_delta, tt_var_done_item_variation_store, + tt_var_done_delta_set_index_map): ... this for consistency. + Mark them as non-static. + * src/truetype/ttgxvar.h: Add corresponding prototypes. + + * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated. + + * src/type1/t1driver.c (t1_service_multi_masters): Updated. + +2022-05-19 Dominik Röttsches + + [truetype] Move deallocation of `DeltaSetIdxMap` into own function. + + This is a preparation for handling `DeltaSetIdxMap` and `VarStore` as a + FreeType service. + + * src/truetype/ttgxvar.c (ft_var_done_delta_set_index_map): New function. + (tt_done_blend): Use it. + +2022-05-18 Werner Lemberg + + * builds/toplevel.mk (do-dist): Don't remove meson wrap files. + + Fixes #1157. + +2022-05-18 Werner Lemberg + + * subprojects/zlib.wrap: Update to zlib version 1.2.12. + +2022-05-18 Werner Lemberg + + REAMDE: Mention that gitlab's 'download' button doesn't work. + + This is because the `git archive` command doesn't preserve submodules. + + Note that currently there is no support for disabling the 'download' button + in gitlab (https://gitlab.com/gitlab-org/gitlab/-/issues/17032). + + Fixes issue #1158. + +2022-05-11 Werner Lemberg + + [truetype] Handle inner/outer index values 0xFFFF/0xFFFF. + + This was introduced in OpenType 1.8.4. + + * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping, + tt_hvadvance_adjust, ft_var_load_mvar, tt_apply_mvar): Handle special + inner/outer index values. + (ft_var_load_item_variation_store): Add test. + + Fixes #1154. + +2022-05-01 Werner Lemberg + + * Version 2.12.1 released. + ========================== + + Tag sources with `VER-2-12-1'. + + * docs/VERSION.TXT: Add entry for version 2.12.1. + * docs/CHANGES, docs/release: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.12.0/2.12.1/, s/2120/2121/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 24:3:18. + * CMakeLists.txt (VERSION_PATCH): Set to 1. + +2022-04-30 Anuj Verma + + [sdf] Do not throw errors for invisible glyphs. + + * src/sdf/ftsdfrend.c (ft_sdf_render, ft_bsdf_render): Return `FT_Err_Ok` if + width or height is zero, since some glyphs do not generate visible bitmaps. + + Fixes #1150. + +2022-04-30 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_COLOR` for SVG fonts. + + Fixes #1151. + +2022-04-27 Brendan Shanks + + autogen.sh: Fix building when freetype is itself a git submodule. + + There are situations where .git is not a directory, like when + freetype is a submodule in another repository. + +2022-04-26 Alexei Podtelezhnikov + + [builds/windows] Simplify non-desktop UWP check. + + Fixes mingw compilation described in !159. + + * builds/windows/ftsystem.c: Do not use WINAPI_FAMILY_PARTITION macro. + +2022-04-25 Alexei Podtelezhnikov + + [truetype] Reset IUP flags in `TT_RunIns`. + + Fixes #1148 by moving the flag initialization back, partly reverting + 7809007a and fd03dcc1. Initializing these flags elsewhere skips 'cvt'. + + * src/truetype/ttinterp.c (TT_RunIns): Initialize the IUP flag here... + (TT_Run_Context): ... instead of here. + +2022-04-24 Xavier Claessens + + [meson] Remove `default_library=both` from `default_options`. + + It is inconsistent with what all other Meson projects do. + + It also prevents static linking to FreeType when it is a subproject because + `default_options` in a subproject takes precedence on values set on the main + project. For example, building 'GStreamer' with `-Ddefault_library=static` + would still dynamically link on FreeType unless the user also sets + `-Dfreetype2:default_library=static`. + + * meson.build: Updated. + + * .gitlab-ci.yml: Retain `both` option for testing. + +2022-04-19 Werner Lemberg + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46792 + +2022-04-16 Georg Brandl + + * src/cff/cffgload.c (cff_slot_load) [FT_CONFIG_OPTION_SVG]: Fix segfault. + + This can happen if the function is called with `size` being `NULL`. + + Fixes #1147. + +2022-04-14 Steve Lhomme + + .gitlab-ci.yml: Add a Universal Windows build target + + It's compiled for Windows 10 and up, ensuring UNICODE is set (default for UWP) + and selecting the proper WINAPI_FAMILY (WINAPI_FAMILY_APP). + + Do not try to run the UWP exe in the Docker as it doesn't work. + +2022-04-04 Ben Wagner + + [sfnt] Correct FT_ColorStopIterator documentation. + + * include/freetype/ftcolor.h (FT_ColorStopIterator): the user should not + set `p` to NULL before calling `FT_Get_Colorline_Stops`. `p` and + `num_color_stops` are set by `FT_Get_Paint`. `p` and + `current_color_stop` are updated by `FT_Get_Colorline_Stops`. + +2022-04-01 Werner Lemberg + + * builds/unix/configure.raw: Add option `--with-librsvg`. + + Since 'librsvg' is written in Rust, this option allows distributions to + avoid a dependency on the entire Rust toolchain to provide the FreeType demo + programs. + + Suggested by Lars Wendler in !156. + +2022-04-01 Werner Lemberg + + * src/sfnt/sfwoff.c (reconstruct_glyf): Fix gcc 10 warning. + +2022-04-01 Werner Lemberg + + [gzip] Update sources to zlib 1.2.12. + +2022-04-01 Eric Jing <@CPUcontrol> + + CMakeLists.txt: Fix `Info.plist` path. + + When building a framework using CMake with `add_subdirectory`, CMake must be + able to find `freetype-Info.plist` when configuring the framework + properties. + + Fixes #1145. + +2022-04-01 Werner Lemberg + + Whitespace. + +2022-04-01 Ben Wagner + + [truetype] Use SUB_LONG for component offset. + + * src/truetype/ttgload.c (TT_Process_Composite_Component): do it. + + Bug: https://crbug.com/1309429 + +2022-03-31 Werner Lemberg + + CMakeList.txt: Update code to handle recent changes for `freetype.pc`. + + Fixes #1144. + +2022-03-31 Werner Lemberg + + CMakeLists.txt: s/PKG_CONFIG/PKGCONFIG/, s/REQUIRED_/REQUIRES_/. + +2022-03-31 Werner Lemberg + + * Version 2.12.0 released. + ========================== + + Tag sources with `VER-2-12-0'. + + * docs/VERSION.TXT: Add entry for version 2.12.0. + * docs/CHANGES, docs/release: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.11.1/2.12.0/, s/2111/2120/. + + * include/freetype/freetype.h (FREETYPE_MINOR): Set to 12. + (FREETYPE_PATCH): Set to 0. + + * builds/unix/configure.raw (version_info): Set to 24:2:18. + * CMakeLists.txt (VERSION_MINOR): Set to 12. + (VERSION_PATCH): Set to 0. + + * builds/toplevel.mk (do-dist): Generate `ChangeLog` entries for all commits + since version 2.11.0 (when we stopped creating this file manually). + +2022-03-31 Werner Lemberg + + Fix clang++ warnings. + + * src/base/ftglyph.c (ft_svg_glyph_prepare), src/base/ftobj.c + (ft_glyphslot_init), src/cache/ftccmap.c (ftc_cmap_node_new), + src/cache/ftcimage.c (FTC_INode_New), src/lzw/ftlzw.c (FT_Stream_OpenLZW), + src/psaux/psobjs.c (ps_parser_load_field), src/pshinter/pshglob.c + (psh_globals_new), src/sfnt/ttsvg.c (tt_face_load_svg_doc): Initialize + variables used for allocation. + + * src/sdf/ftsdf.c (split_sdf_conic, split_sdf_cubic): Change type of + `max_splits` to FT_UInt. + (sdf_generate_bounding_box): Add cast. + +2022-03-30 Werner Lemberg + + Whitespace. + +2022-03-30 Werner Lemberg + + [builds] Fix creation of `freetype2.pc` for static-only builds. + + We have to help `pkg-config` since it can't recognize that there is no + shared library installed. + + Note that meson already does exactly the same. + + * builds/unix/configure.raw (REQUIRES_PRIVATE, LIBS_PRIVATE): Rename to... + (PKGCONFIG_REQUIRES_PRIVATE, PKGCONFIG_LIBS_PRIVATE): This. Adjust them + depending on `$enable_shared`. + (PKGCONFIG_REQUIRES, PKGCONFIG_LIBS): New variables. + + * builds/unix/freetype2.in, builds/unix/unix-def.in: Use new and updated + variables. + +2022-03-25 Werner Lemberg + + Add `FT_FACE_FLAG_SBIX_OVERLAY` and `FT_HAS_SBIX_OVERLAY`. + + * include/freetype/freetype.h (FT_FACE_FLAG_SBIX_OVERLAY, + FT_HAS_SBIX_OVERLAY): New macro. + + * src/sfnt/ttsbit.c (tt_face_load_sbit): Handle `FT_FACE_FLAG_SBIX_OVERLAY`. + Remove obsolete tracing message. + +2022-03-25 Werner Lemberg + + Add `FT_PARAM_TAG_IGNORE_SBIX`. + + This is another bit to handle 'sbix' tables as described in the OpenType + specification. + + * include/freetype/ftparams.h (FT_PARAM_TAG_IGNORE_SBIX): New macro. + + * src/sfnt/sfobjc.c (is_apple_sbix): Rename to... + (has_sbix): ... this. + Check for more sbit tables. + Handle `FT_PARAM_TAG_IGNORE_SBIX` to eventually control `has_sbix`. + Only call sbit table loader if an sbit table is present. + +2022-03-25 Werner Lemberg + + [truetype] Fix 'sbix' table handling. + + * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Correct calculation of + 'metrics->horiBearingY'. + Set vertical metrics. + + * src/sfnt/sfobjs.c (sfnt_load_face): Adjust setting of `FT_FACE_FLAG_SBIX`. + Handle metrics of fonts with 'sbix' table. + + * src/truetype/ttgload.c (TT_Load_Glyph): For 'sbix' embedded bitmaps, apply + bbox offset and bearing values of the corresponding glyph in the 'glyf' + table if it exists and has a contour. + + * src/truetype/ttobjs.c (tt_face_init): Handle font with 'sbix' table. + + Fixes issue #998. + +2022-03-25 Werner Lemberg + + Add `FT_FACE_FLAG_SBIX` and `FT_HAS_SBIX`. + + Fonts with 'sbix' tables need special handling by the application. + + * include/freetype/freetype.h (FT_FACE_FLAG_SBIX, FT_HAS_SBIX): New macros. + + * src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_SBIX` if 'sbix' + table is present. + +2022-03-25 Werner Lemberg + + * include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): Tag macro as public. + +2022-03-24 Carlo Bramini + + [builds/windows] Fix WCE support. + + * builds/windows/ftsystem.c [_WIN32_WCE]: Include needed by + _alloca. + +2022-03-24 Steve Lhomme + + [build/windows] Improve UWP support. + + * builds/windows/ftsystem.c [UWP]: Wrap CreateFile2 into CreateFileA. + +2022-03-21 Werner Lemberg + + * src/sfnt/ttkern.c (tt_face_get_kerning): Exit early if no table. + + Fixes #1141. + +2022-03-20 Ben Wagner + + [woff2] Support overlap flag for simple glyphs. + + In the woff2 spec it has been proposed to allow the OVERLAP_SIMPLE flag + to be retained through the woff2 format [0]. + + [0] https://www.w3.org/TR/WOFF2/#glyf_table_format + + * src/sfnt/sfwoff2.h (GLYF_OVERLAP_SIMPLE): add glyf flag. + + * src/sfnt/sfwoff2.c (reconstruct_glyf): parse optionFlags and + overlapSimpleBitmap[]. (store_points): set OVERLAP_SIMPLE on first point's + flag if the overlap bit is set. + +2022-03-19 Werner Lemberg + + [cff] Synchronize `cff_slot_load` with `TT_Load_Glyph`. + + * src/cff/cffgload.c (IS_DEFAULT_INSTANCE): New macro. + (cff_slot_load): Use it. + +2022-03-19 Werner Lemberg + + * src/base/ftobjs.c (FT_Request_Size): Guard `face->size`. + + Fixes #1140. + +2022-03-19 Werner Lemberg + + * src/base/ftobjs.c (ft_open_face_internal): Thinko. + +2022-03-19 Ben Wagner + + [doc] FT_OUTLINE_OVERLAP was introduced in 2.10.3. + + * include/freetype/ftimage.h (FT_OUTLINE_OVERLAP): Document when added. + +2022-03-19 Werner Lemberg + + * src/base/ftobjs.c (ft_open_face_internal): Properly guard `face_index`. + + We must ensure that the cast to `FT_Int` doesn't change the sign. + + Fixes #1139. + +2022-03-17 Werner Lemberg + + [sfnt] Avoid invalid face index. + + Fixes #1138. + + * src/sfnt/sfobjs.c (sfnt_init_face), src/sfnt/sfwoff2.c (woff2_open_font): + Check `face_index` before decrementing. + +2022-03-07 Werner Lemberg + + Documentation, whitespace. + +2022-03-05 Anuj Verma + + [sdf] Fix corner checks and improve performance. + + * src/sdf/ftsdf.c (sdf_generate_bounding_box): Always check for a corner if + two distances (for different curves) are very close. + + (sdf_conic_to): Check whether the conic curve can be treated as a line + (which happens if the control point coincides with any end point). + +2022-03-05 Anuj Verma + + [sdf] Implement deviation-based splitting for Bezier curves. + + * src/sdf/ftsdf.c (split_sdf_cubic, split_sdf_shape): Add checks to figure + out the deviation of Bezier curves and stop splitting if the curve is flat + enough. + + * src/sdf/ftsdfcommon.h (ONE_PIXEL): New macro. + +2022-03-05 Anuj Verma + + * include/freetype/freetype.h: Improve SDF documentation. + +2022-03-03 Ben Wagner + + [sfnt] Fix bounds check in SVG. + + The `SVG_DOCUMENT_LIST_MINIMUM_SIZE` macro is non trivial and not + protected by parentheses. As a result, the expression + `table_size - SVG_DOCUMENT_LIST_MINIMUM_SIZE` expands to + `table_size - 2U + SVG_DOCUMENT_RECORD_SIZE` instead of the expected + `table_size - (2U + SVG_DOCUMENT_RECORD_SIZE)`. This causes an incorrect + bounds check which may lead to reading past the end of the `SVG ` table. + + * src/sfnt/ttsvg.c (tt_face_load_svg): wrap macro definitions in + parentheses. + + Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=45179 + +2022-02-23 Ben Wagner + + [psaux] Full bounds check for OtherSubr 19. + + It is possible for OtherSubr 19 to be invoked when `decoder->buildchar` is + NULL (so that `decoder->len_buildchar` is 0), the `blend` is non-NULL with + `blend->num_designs` set to 2, and the user supplied `idx` to be large (for + example 0xFFFFFFFE). Since these are all `FT_UInt32` the existing bounds + check overflows in a well defined manner, allowing for an invalid call to + `memcpy`. + + In addition, it is possible to call OtherSubr 19 with + `decoder->len_buildchar`, `blend->num_designs`, and `idx` all zero (implying + that `blend->weight_vector` and `decoder->buildchar` are NULL). This passes + the bounds check (it is logically always fine to copy nothing starting at + index zero) but may invoke undefined behavior in `ft_memcpy` if it is backed + by `memcpy`. Calling `memcpy` with either the `src` or `dst` NULL is + undefined behavior (even if `count` is zero). + + * src/psaux/psintrp.c (cf2_interpT2CharString): Correctly check that + `blend->num_designs` can be copied to `decoder->buildchar[idx]`. + Also avoid passing NULL to `ft_memcpy`. + + Bug: https://crbug.com/1299259 + +2022-02-21 suzuki toshiya + + [cmake] Drop the support of CMake 2.x. + + * CMakeLists.txt: Require CMake 3.0 (released on 2014) or newer. + + The issue #1059 reports the difficulty to support both of + CMake 2.x and newer one by single CMakeLists.txt without + the inflation of cmake_policy() workarounds. + + For better maintainability, the support of CMake 2.x is + dropped. + +2022-02-19 Werner Lemberg + + * src/bdf/README: Updated. + +2022-02-19 Werner Lemberg + + * builds/mac/ftmac.c, src/base/ftmac.c: s|FT_MAC_H||. + +2022-02-19 Werner Lemberg + + src/sfnt/ttkern.c (tt_face_load_kern): Micro-optimize. + + A kerning table can be handled by binary search if it has equal entries. + + Fixes #1132. + +2022-02-17 Steve Lhomme + Alexei Podtelezhnikov + + [builds/windows] Add support for legacy UWP builds. + + * builds/windows/ftsystem.c: Add neccessary macro substitutions to + enable strict UWP builds. + + See !141. + +2022-02-16 Werner Lemberg + + ftmm.h: Minor documentation improvement. + +2022-02-13 Alexei Podtelezhnikov + + [pshinter] Tune PSH_STRONG_THRESHOLD_MAXIMUM value. + + Before the change, the hinting engine frequently confused horizontal + stem and serif hints making some stems too thin and some serifs too + thick. The value was tuned using serif fonts from the URW+ base 35 + collection. + + * src/pshinter/pshalgo.c [PSH_STRONG_THRESHOLD_MAXIMUM]: s/30/12/. + +2022-02-12 Werner Lemberg + + t1tables.h: Documentation improvements. + +2022-02-12 Werner Lemberg + + t1tables.h: Whitespace. + +2022-02-11 Werner Lemberg + + [type42] Fix `FT_Get_PS_Font_Private` for this format. + + Since Type42 fonts don't have a 'Private' dictionary, the return value + should be `FT_Err_Invalid_Argument`. + + * src/type42/t42drivr.c (t42_ps_get_font_private): Removed. + (t42_service_ps_info): Updated. + +2022-02-09 Alexei Podtelezhnikov + + [pshinter] Clear reused mask. + + In PS hinter, memory allocations persist until the module is done. + Therefore, we have to clear reused masks. + + * src/pshinter/pshrec.c (ps_mask_table_alloc): Clear reused mask. + +2022-02-09 Alexei Podtelezhnikov + + [pshinter] Use unsigned indices. + + This reduces casting and eliminates some checks. + + * src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_table_merge, + ps_dimension_add_t1stem, ps_hints_t1stem3): Updated. + (ps_dimension_add_counter): Updated, unnecessary checks removed. + +2022-02-08 Alexei Podtelezhnikov + + [pshinter] Fix mask merging. + + We forgot to update the number of bits when merging a larger mask + into a smaller one. This fix might have rendering effects. + + * src/pshinter/pshrec.c (ps_mask_table_merge): Inherit the number + of bits from a larger mask. There is no need to zero unused bits, + already zeroed during allocation. + (ps_mask_clear_bit): Removed. + (ps_mask_ensure): Minor. + +2022-02-08 Alexei Podtelezhnikov + + [pshinter] Revise the hint table handling. + + * src/pshinter/pshrec.c (ps_hint_table_ensure): Remove redundant size + check; avoid array zeroing because it is fully initialized when used. + (ps_hint_table_alloc): Fix off-by-one comparison and remove another + zeroing of the array elements. + +2022-02-06 Werner Lemberg + + Various minor doc fixes. + +2022-02-06 Alexei Podtelezhnikov + + [builds/windows] Add SVG to to project files. + + * builds/windows/vc2010/freetype.vcxproj: Updated. + * builds/windows/vc2010/freetype.vcxproj.filters: Updated. + * builds/windows/visualc/freetype.vcproj: Updated. + +2022-02-03 Alexei Podtelezhnikov + + * src/winfonts/winfnt.c (fnt_face_get_dll_font): Trace font resources. + +2022-02-02 Eric Jing <@CPUcontrol> + + [cmake] Fix build on MacOS. + + * CMakeLists.txt (CMAKE_OSX_ARCHITECTURES): Update value to fix the building + of a framework on MacOS. + + * builds/mac/freetype-Info.plist (CFBundleExecutable): Make identifier + lowercase only. + + Fixes #1127. + +2022-02-02 Alexei Podtelezhnikov + + [psaux] Revise `PS_Table` handling. + + The old impleemntation was not using `FT_REALLOC`, buing too careful + with the offset rebasing. It shoudl be safe to rely on the base + movements. + + * src/psaux/psobjs.c (reallocate_t1_table, shift_elements): Combine + into... + (ps_table_realloc): ... this function based on `FT_REALLOC`. + (ps_table_done): Simplified. + (ps_table_add): Updated. + +2022-02-02 Alexei Podtelezhnikov + + * src/cache/ftcmru.c (FTC_MruList_New): Explain zeroing. + +2022-01-31 Alexei Podtelezhnikov + + [cache] Partially revert 9870b6c07e2c. + + Fix crashes reported by Werner. + + * src/cache/ftcmru.c (FTC_MruList_New): Use `FT_ALLOC` again. + +2022-01-31 Werner Lemberg + + freetype.h: Minor documentation improvement. + +2022-01-31 Alexei Podtelezhnikov + + [cache] Fix fallouts from edd4fedc5427. + + Reported by Werner. + + * src/cache/ftcimage.c (FTC_INode_New): Always initialize FT_Glyph. + * src/cache/ftcsbits.c (FTC_SNode_New): Always initialize FT_SBit. + +2022-01-31 Alexei Podtelezhnikov + + Clean-up - do not doubt FT_FREE. + + * src/base/ftobjs.c (memory_stream_close): Do not reassign zero + after `FT_FREE`. + * src/sfnt/sfwoff.c (sfnt_stream_close): Ditto. + * src/sfnt/sfwoff2.c (stream_close): Ditto. + * src/psaux/psobjs.c (ps_parser_load_field): Ditto. + * src/truetype/ttgxvar.c (ft_var_load_avar, tt_set_mm_blend, + tt_set_mm_blend): Ditto. + +2022-01-30 Werner Lemberg + + * CMakeLists.txt: Include 'FindPkgConfig' module. + + Older cmake versions don't provide `pkg_check_modules` by default. + + Fixes #1126. + +2022-01-30 Alexei Podtelezhnikov + + * src/psaux/psobjs.c (ps_parser_load_field): Reduce `string` scope. + +2022-01-29 suzuki toshiya + + [cmake] Check the availability of `bzip2.pc'. + + (CMakeLists.txt): Check the availability of `bzip2.pc'. + + * If `bzip2.pc' is available, Requires.private should include + bzip2, but Libs.private should not include -lbz2. + + * If `bzip2.pc' is unavailable, Requires.private cannot include + bzip2, but Libs.private should include -lbz2. + + Fix #897. + +2022-01-28 Werner Lemberg + + * unix/configure.raw: We need 'librsvg' version 2.46.0 or newer. + + Older versions don't have function `rsvg_handle_get_intrinsic_dimensions`. + +2022-01-28 Alexei Podtelezhnikov + + Minor clean-ups. + + * src/base/ftrfork.c (raccess_make_file_name): Do not set error. + * src/sfnt/sfdriver.c (get_win_string, get_apple_string): Ditto. + * src/cff/cffobjs.c (cff_strcpy): Do not confuse about error. + * src/psaux/psobjs.c (ps_table_done): Ditto. + * src/truetype/ttgxvar.c (ft_var_readpacked*, ft_var_load_avar): Ditto. + +2022-01-27 Ben Wagner + + Document `FT_Outline_Decompose` degenerate segments. + + `FT_Outline_Decompose` does not filter out and can return degenerate + segments in an outline. This can be surprising when attemping to + stroke such an outline. Clarify the existing documentation on this + matter to cover all forms of degeneracy (without specifying exactly + how they will be reported), why they might arise, and better explain in + what cases they may be an issue. + + * include/freetype/ftoutlin.h (FT_Outline_Decompose): update + documentation. + + Fixes #952. + +2022-01-27 Anuj Verma + + Fix sdf computation while `USE_SQUARED_DISTANCES`. + + Function `map_fixed_to_sdf` expects spread to be absolute + and not squared. + + * src/sdf/ftbsdf.c (finalize_sdf): Pass absolute spread + while `map_fixed_to_sdf`. + + * src/sdf/ftsdf.c (sdf_generate_bounding_box): Ditto. + +2022-01-27 Tapish Ojha + + [sfnt] Improve sRGB constants. + + * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use slightly + more precise values. + + Fixes #1018. + +2022-01-27 Werner Lemberg + + docs/release: Updated. + +2022-01-26 Alexei Podtelezhnikov + + * src/pfr/pfrload.c (pfr_phy_font_load): Use FT_QNEW_ARRAY. + +2022-01-26 Alexei Podtelezhnikov + + * src/sdf/ftsdf.c (sdf_*_new): Use standard macro. + +2022-01-26 Alexei Podtelezhnikov + + [pcf] Delay encoding allocation and avoid its zeroing. + + * src/pcf/pcfread.c (pcf_get_encodings): Refactor and use FT_QNEW_ARRAY. + +2022-01-25 Werner Lemberg + + Aarg, typo. + +2022-01-25 Werner Lemberg + + freetype.h: More updates to `FT_LOAD_COLOR` description. + +2022-01-25 Werner Lemberg + + * builds/unix/configure.raw (FT_DEMO_CFLAGS): Pass `-DHAVE-LIBRSVG`. + + This helps in decoupling library support from `pkg-config` for other + platforms. + +2022-01-25 Werner Lemberg + + Update documentation for `FT_LOAD_COLOR`. + +2022-01-24 Ben Wagner + + [pshinter] Ensure all point flags are initialized. + + Only off curve point flags were fully initialized. + + * src/pshinter/pshalgo.c (psh_glyph_init): always initialize flags. + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43930 + +2022-01-24 Werner Lemberg + + .mailmap: Typo. + +2022-01-23 Werner Lemberg + + * src/svg/ftsvg.c (ft_svg_property_set): Disallow NULL pointers. + +2022-01-23 Werner Lemberg + + .mailmap: Updated. + +2022-01-23 Werner Lemberg + + More documentation on handling OT-SVG. + +2022-01-23 Werner Lemberg + + * src/svg/ftsvg.c: Rename `svg_hooks` to `svg-hooks` for consistency. + +2022-01-22 Werner Lemberg + + [sfnt] Reject malformed SVG tables. + + * src/sfnt/ttsvg.c (SVG_TABLE_HEADER_SIZE, SVG_DOCUMENT_RECORD_SIZE, + SVG_DOCUMENT_LIST_MINIMUM_SIZE, SVG_MINIMUM_SIZE): New macros. + (tt_face_load_svg): Check offsets. + Check table and record sizes. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43918 + +2022-01-22 Alexei Podtelezhnikov + + * src/psaux/psobjs.c (ps_table_new): Revert to zeroing. + +2022-01-20 Alexei Podtelezhnikov + + [psaux, type1, type42] Avoid annecessary zeroing. + + * src/psaux/psobjs.c (ps_table_new): Use FT_QNEW_ARRAY. + * src/type1/t1load.c (parse_encoding): Ditto. + * src/type42/t42parse.c (t42_parse_encoding): Ditto. + +2022-01-20 Werner Lemberg + + [builds/unix] Handle 'librsvg' for demo programs. + + * builds/unix/configure.raw: Check for 'librsvg'. + (LIB_CLOCK_GETTIME): Don't call `AC_SUBST` on this but on... + (FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables. + + * builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): Replaced by... + (FT_DEMO_CFLAGS, FT_DEMO_LDFLAGS): ... these two new variables. + +2022-01-20 Moazin Khatti + + Add 'svg' module for OT-SVG rendering. + + * CMakeLists.txt (BASE_SRCS): Add svg module file. + * meson.build (ft2_public_headers): Add `otsvg.h`. + + * modules.cfg (RASTER_MODULES): Add `svg` module. + + * builds/meson/parse_modules_cfg.py: Add svg module. + + * include/freetype/config/ftmodule.h: Add `ft_svg_renderer_class`. + * include/freetype/fterrdef.h: Add `Invalid_SVG_Document` and + `Missing_SVG_Hooks` error codes. + * include/freetype/internal/fttrace.h: Add tracing for `otsvg`. + * include/freetype/internal/svginterface.h: New file. It adds an interface + to enable the presetting hook from the `base` module. + * include/freetype/otsvg.h (SVG_Lib_Init_Func, SVG_Lib_Free_Func, + SVG_Lib_Render_Func, SVG_Lib_Preset_Slot_Func): New hooks for SVG rendering. + (SVG_RendererHooks): New structure to access them. + + * src/base/ftobjs.c: Include `svginterface.h`. + (ft_glyphslot_preset_bitmap): Add code for presetting the slot for SVG + glyphs. + (ft_add_renderer): Updated. + + * src/svg/*: New files. + +2022-01-20 Moazin Khatti + + Add `FT_Glyph` support for OT-SVG glyphs. + + * include/freetype/ftglyph.h (FT_SvgGlyphRec, FT_SvgGlyph): New structure. + + * src/base/ftglyph.c: Include `otsvg.h`. + (ft_svg_glyph_init, ft_svg_glyph_done, ft_svg_glyph_copy, + ft_svg_glyph_transform, ft_svg_glyph_prepare): New function. + (ft_svg_glyph_class): New class. + (FT_New_Glyph, FT_Glyph_To_Bitmap): Updated to handle OT-SVG glyphs. + * src/base/ftglyph.h: Updated. + +2022-01-20 Moazin Khatti + + [truetype, cff] Add code to load SVG document. + + * src/cff/cffgload.c (cff_slot_load): Add code to load SVG doc. + * src/truetype/ttgload.c (TT_Load_Glyph): Add code to load SVG doc. + +2022-01-20 Moazin Khatti + + Add code to load OT-SVG glyph documents. + + * include/freetype/config/ftheader.h (FT_OTSVG_H): New macro. + * include/freetype/freetype.h (FT_FACE_FLAG_SVG, FT_HAS_SVG): New macros. + (FT_LOAD_SVG_ONLY): New internal macro. + * include/freetype/ftimage.h (FT_Glyph_Format): New enumeration value + `FT_GLYPH_FORMAT_SVG`. + * include/freetype/internal/ftobjs.h (FT_GLYPH_OWN_GZIP_SVG): New macro. + * include/freetype/internal/fttrace.h: Add `ttsvg` for `ttsvg.c`. + * include/freetype/internal/sfnt.h(load_svg, free_svg, load_svg_doc): New + functions. + * include/freetype/internal/tttypes.h (TT_FaceRec): Add `svg` for + the SVG table. + * include/freetype/otsvg.h (FT_SVG_DocumentRec): New structure to hold the + SVG document and other necessary information of an OT-SVG glyph in a glyph + slot. + * include/freetype/tttags.h (TTAG_SVG): New macro. + + * src/base/ftobjs.c: Include `otsvg.h`. + (ft_glyphslot_init): Allocate `FT_SVG_DocumentRec` in `slot->other` + if the SVG table exists. + (ft_glyphslot_clear): Free it upon clean-up if it is a GZIP compressed + glyph. + (ft_glyphslot_done): Free the document data if it is a GZIP compressed + glyph. + (FT_Load_Glyph): Don't auto-hint SVG documents. + + * src/cache/ftcbasic.c (ftc_basic_family_load_glyph): Add support for + FT_GLYPH_FORMAT_SVG. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttsvg.c`. + * src/sfnt/sfdriver.c: Include `ttsvg.h`. + (sfnt_interface): Add `tt_face_load_svg`, `tt_face_free_svg` and + `tt_face_load_svg_doc`. + * src/sfnt/sfnt.c: Include `ttsvg.c`. + * src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Add code to load and + free data of the the SVG table. + * src/sfnt/ttsvg.c: New file, implementing `tt_face_load_svg`, + `tt_face_free_svg` and `tt_face_load_svg_doc`. + * src/sfnt/ttsvg.h: Declarations of the SVG functions in + `ttsvg.c`. + +2022-01-20 Moazin Khatti + + Add flag `FT_CONFIG_OPTION_SVG`. + + This flag is going to be used to conditionally compile support for OT-SVG + glyphs. FreeType will do the parsing and rely on external hooks for + rendering of OT-SVG glyphs. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (FT_CONFIG_OPTION_SVG): New flag. + +2022-01-20 Alexei Podtelezhnikov + + [pshinter] Avoid unnecessary zeroing. + + * src/pshinter/pshalgo.c (psh_hint_table_init,psh_glyph_init, + psh_glyph_interpolate_normal_points): Use FT_QNEW_ARRAY. + +2022-01-20 Alexei Podtelezhnikov + + * include/freetype/freetype.h: Clarify `FT_Size` life cycle. + +2022-01-20 Alexei Podtelezhnikov + + [base] Undefined scale means no scale. + + It might be surprising that FreeType does not have default ppem and + the size has to be set explicitly or face undefined behavior with + undefined variables and errors. This offers an alternative to + missing or zero scale by simply setting FT_LOAD_NO_SCALE. Defined + behavior is bettr than undefined one. + + This is alternative to !132 and discussed in + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43708 + + * src/base/ftobjs.c (FT_Load_Glyph): Deal with zero scale. + * include/freetype/freetype.h: Document it. + +2022-01-18 Alexei Podtelezhnikov + + * src/autofit/afglobal.c (af_face_globals_new): Reduce zeroing. + + Everything in AF_FaceGlobals is initialized except metrics. Those + are zeroed here and initialized on demand later. + +2022-01-16 Alexei Podtelezhnikov + + [bdf,type1] Avoid unnecessary hash zeroing. + + * src/bdf/bdflib.c (_bdf_parse_start): Use `FT_QALLOC`. + * src/type1/t1load.c (parse_subrs): Use `FT_QNEW`. + +2022-01-16 Ozkan Sezer + + Add Watcom C/C++ calling. + + In the unlikely case the source is built with OpenWatcom's -ec? + switches to enforce a calling convention, the qsort() compare + function must still be set to __watcall. + + * include/freetype/internal/compiler-macros.h (FT_COMPARE_DEF): + Updated. + +2022-01-15 Ben Wagner + + [pshinter] Avoid accessing uninitialized zone. + + The `normal_top.count` may be 0, implying no `normal_top.zones` exist. + The code must not access these (non-existent) `normal_top.zones`. + + * src/pshinter/pshalgo.c (ps_hints_apply): Do not assume that + `normal_top.zones[0]` is initialized. Test `normal_top.count` + before using `normal_top.zones[0]`. Do not rescale if there are no + `zones`. + + Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43675 + +2022-01-15 Alexei Podtelezhnikov + + [cache] Avoid unnecessary zeroing. + + * src/cache/ftccmap.c (ftc_cmap_node_new): Use `FT_QNEW`. + * src/cache/ftcimage.c (FTC_INode_New): Ditto. + * src/cache/ftcsbits.c (FTC_SNode_New): Ditto. + +2022-01-15 Ozkan Sezer + + Add Watcom C/C++ support. + + * include/freetype/config/integer-types.h: Make sure `long long` is + used then available. + * include/freetype/internal/ftcalc.h (FT_MSB): Add Watcom C/C++ pragma. + +2022-01-15 Alexei Podtelezhnikov + + * src/sdf/ftbsdf.c (ED): s/near/prox/. + + This works around the Watcom C definition of `near` as restricted + __near. + +2022-01-15 Alexei Podtelezhnikov + + * include/freetype/internal/compiler-macros.h [FT_COMPARE_DEF]: Tighten. + + This works around Watcom C library using __watcall. + +2022-01-14 Alexei Podtelezhnikov + + * src/pshinter/pshglob.c (psh_globals_new): Avoid zeroing. + + This large allocation is followed by careful initialization. Whatever + is missed should be initialized manually. + +2022-01-14 Alexei Podtelezhnikov + + * src/base/fthash.c (hash_insert): Avoid unnecessary zeroing. + +2022-01-14 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (_bdf_parse_glyphs): Remove redundant assignment. + +2022-01-13 Alexei Podtelezhnikov + + * src/lzw/ftlzw.c (FT_Stream_OpenLZW): Avoid unnecessary zeroing. + +2022-01-13 Ben Wagner + + [bzip2] Reset bzip stream on any error. + + According to the bzip documentation it is undefined what will happen if + `BZ2_bzDecompress` is called on a `bz_stream` it has previously returned an + error against. If `BZ2_bzDecompress` returns anything other than `BZ_OK` + the only valid next action is `BZ2_bzDecompressEnd`. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43564 + + * src/bzip2/ftbzip2.c (FT_BZip2FileRec_): Add `reset` to track the need to + reset the stream. + (ft_bzip2_file_init): Initialize `reset` to 0. + (ft_bzip2_file_reset): Set `reset` to 0 after resetting. + (ft_bzip2_file_fill_output): Set `reset` to 1 when `BZ2_bzDecompress` + returns anything other than `BZ_OK`. + +2022-01-12 Werner Lemberg + + .gitlab-ci.yml: Minor comment cleanups. + +2022-01-12 Azamat H. Hackimov + + .gitlab-ci.yml: Add steps to `before_script` to ensure recent CA. + + Fetch current list of valid CAs from Windows Update and manually import them + to trusted datastore. This action is required to make downloads work from + sites that need recent Let's Encrypt ISRG Root X1 certificate. + +2022-01-11 Ben Wagner + + Revert "[bzip2] Avoid use of uninitialized memory." + + This reverts commit d276bcb7f0c02c20d3585b2e5626702df6d140a6. + + The original commit did avoid the use of uninitialized memory. However, + it appears that the original commit is no longer required. The + underlying issue was resolved by a change in freetype2-testing "Build + bzip2 correctly." [0]. Prior to [0] bzip2 was built without msan, so + bzip2 writes were not tracked or considered initialized. Clearing + `buffer` in the original commit allowed msan to see the `buffer` content + initialized once in FreeType code, but msan saw no writes into buffer + from bzip2. With bzip2 now built with msan, the bzip2 writes are + properly instrumented and msan sees the bzip2 writes into the buffer. As + a result the original commit can be safely reverted to allow for better + detection of other uninitialized data scenarios. + + * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Revert to using `FT_QNEW`. + + [0] https://github.com/freetype/freetype2-testing/commit/3c052a837a3c960709227a0d6ddd256e87b88853 + +2022-01-11 Ben Wagner + + [type42] Track how much type42 ttf data is available. + + Currently `T42_Open_Face` eagerly allocates 12 bytes for the ttf header + data which it expects `t42_parse_sfnts` to fill out from /sfnts data. + However, there is no guarantee that `t42_parse_sfnts` will actually be + called while parsing the type42 data as the /sfnts array may be missing + or very short. This is also confusing behavior as it means + `T42_Open_Face` is tightly coupled to the implementation of the very + distant `t42_parse_sfnts` code which requires at least 12 bytes to + already be reserved in `face->ttf_data`. + + `t42_parse_sfnts` itself eagerly updates `face->ttf_size` to track how + much space is reserved for ttf data instead of traking how much data has + actually been written into `face->ttf_data`. It will also act strangely + in the presense of multiple /sfnts arrays. + + * src/type42/t42objs.c (T42_Open_Face): ensure `ttf_data` is initialized + to NULL. Free `ttf_data` on error. + + * src/type42/t42parse.c (t42_parse_sfnts): delay setting `ttf_size` and + set it to the actual number of bytes read. Ensure `ttf_data` is freed + if there are multiple /sfnts arrays or there are any errors. + +2022-01-11 Dominik Röttsches + + [sfnt] Fix limit checks for `COLR` v1 ClipBoxes + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Fix off-by-one in + limit checks. + +2022-01-11 Werner Lemberg + + Update all copyright notices. + +2022-01-11 Werner Lemberg + + * src/sfnt/ttcolr.c (read_paint): Fix undefined left-shift operation. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43151 + +2022-01-11 Werner Lemberg + + * src/type42/t42objs.c (T42_Open_Face): Avoid use of uninitialized memory. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43508 + +2022-01-11 Werner Lemberg + + .gitlab-ci.yml: Fix typo in previous commit. + +2022-01-11 Werner Lemberg + + .gitlab-ci.yml: Update Windows image. + + The old image produced errors like + + ``` + Downloading zlib patch from + https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch + A fallback URL could be specified using patch_fallback_url key in the wrap file + WrapDB connection failed to + https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch + with error + + ``` + +2022-01-11 Werner Lemberg + + * subprojects/zlib.wrap: Update from upstream. + +2022-01-10 Werner Lemberg + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Add limit checks. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40716 + +2022-01-10 Werner Lemberg + + [zlib] Don't typedef `ptrdiff_t`. + + While using zlib in 'solo' mode (via the `Z_SOLO` macro), we actually + include some standard header files, making the typedef fail on systems where + the native `ptrdiff_t` type differs. + + Fixes #1124. + + * src/zlib/zutil.h: Comment out definition; it doesn't work on Windows. + + * src/zlib/patches/freetype-zlib.diff: Updated. + +2022-01-10 Werner Lemberg + + [zlib] Some organizational changes. + + We now first apply zlib's `zlib2ansi` script, then FreeType's patch file. + + * src/gzip/README.freetype: Updated. + + * patches/0001-zlib-Fix-zlib-sources-to-compile-for-FreeType.patch: Renamed + to... + * patches/freetype-zlib.diff: This. + Clean up description, then regenerate it as follows: + + - Copy unmodified files from `zlib` repository. + - Run `zlib2ansi` script. + - Run `git diff -R > patches/freetype-zlib.diff.new`. + - Insert patch description of old diff file, then replace old diff with + new diff file. + +2022-01-09 David Turner + + [gzip] Update sources to zlib 1.2.11 + + This can be tested by building with the Unix development build + + make setup devel + make + + or by building the freetype-demos programs with + + meson setup build -Dfreetype2:zlib=internal + meson compile -C out + + and trying to run `ftview` with a `.pcf.gz` font file. + + * src/gzip/ftgzip.c, src/gzip/rules.mk: Update for new zlib sources. Also + remove the temporary fix introduced in commit 6a431038 to work around the + fact that the internal sources were too old. + + * src/gzip/README.freetype: New file describing the origin of the sources + and how they were modified. + + * src/gzip/patches/*: Patch files applied to original sources. + + * src/gzip/*: Updated zlib sources with the patch file(s) from + `src/gzip/patches/` applied, followed by a conversion with zlib's + `zlib2ansi` script. + +2022-01-09 David Turner + + [meson] Change Zlib configuration option. + + * meson_options.txt, meson.build: Change the format of the 'zlib' meson + build configuration option to be a combo with the following choices: + + - none: Do not support gzip-compressed streams at all. + + - internal: Support gzip-compressed streams using the copy of the gzip + sources under `src/gzip/`; this should only be used during development + to ensure these work properly. + + - external: Support gzip-compressed streams using the 'zlib' Meson + subproject, linked as a static library. + + - system: Support gzip-compressed streams using a system-installed version + of zlib. + + - auto: Support gzip-compressed streams using a system-installed version + of zlib, if available, or using the 'zlib' subproject otherwise. This + is the default. + + - disabled: Backward-compatible alias for 'none'. + + - enabled: Backward-compatible alias for 'auto'. + +2022-01-09 Werner Lemberg + + [bzip2] Avoid use of uninitialized memory. + + * src/bzip2/ftbzip2.c (FT_Stream_OpenBzip2): Don't use `FT_QNEW` but + `FT_NEW` for setting up `zip` to avoid uninitialized memory access while + handling malformed PCF fonts later on. + + Fixes + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42800 + +2022-01-09 Alexei Podtelezhnikov + + [sfnt] Fix off-by-one error. + + The 0-base index is equal to the number of previosly parsed entries. + It is an error to adjust it by one to get the number truncated by + a stream error. This is probably inconsequential because valid + entries are correctly accounted for. + + * src/sfnt/ttload.c (check_table_dir): Do not adjust the truncated + number of tables. + +2022-01-08 Werner Lemberg + + [sfnt, type42] Correct previous commit. + + Really fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42773. + + * src/sfnt/ttload.c (check_table_dir): Revert change. + + * src/type42/t42.parse.c (t42_parse_sfnts): Don't use `FT_QREALLOC` but + `FT_REALLOC` for setting up `ttf_data` to avoid uninitialized memory access + while handling malformed TrueType fonts later on. + +2022-01-07 Werner Lemberg + + * src/sfnt/ttload.c (check_table_dir): Initialize `table`. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=42773 + +2022-01-07 Werner Lemberg + + [sfnt] Avoid 'runtime error: applying zero offset to null pointer'. + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_byte_aligned): Exit early if + `line` is NULL. + +2022-01-07 Werner Lemberg + + [autofit, pshinter] Use `FT_OFFSET`. + + This avoids + + ``` + runtime error: applying zero offset to null pointer + ``` + + warnings of clang's undefined behaviour sanitizer. + + * src/autofit/afcjk.c (af_cjk_hints_link_segments, + af_cjk_hints_compute_edges, af_cjk_hints_compute_blue_edges, + af_cjk_hint_edges, af_cjk_align_edge_points): Do it. + + * src/autofit/afhints.c (af_glyph_hints_align_edge_points, + af_glyph_hints_align_strong_points): Ditto. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths, + af_latin_hints_link_segments, af_latin_hints_compute_edges, + af_latin_hints_compute_blue_edges, af_latin_hint_edges): Ditto. + + * src/pshinter/pshalgo.c (psh_hint_table_init): Ditto. + +2022-01-06 Ben Wagner + + [truetype] Reset localpoints when varying cvt. + + When iterating over the cvt tuples and reading in the points it is necessary + to set all of `localpoints`, `points`, and `point_count` in all cases. The + existing code did not reset `localpoints` to `NULL` when there were no + private point numbers. If the previous tuple did have private point numbers + and set `localpoints` to `ALL_POINTS` this would not be cleared and the + wrong branch would be taken later, leading to possible heap buffer overflow. + + * src/truetype/ttgxvar.c (tt_face_vary_cvt): Reset `localpoints` to `NULL` + when it isn't valid. + + Fixes: https://crbug.com/1284742 + +2022-01-02 Werner Lemberg + + * builds/unix/configure.raw: Restore `SYSTEM_ZLIB` variable. + + This was accidentally removed with commit 93ebcbd0 almost eight years ago. + +2021-12-27 Alexander Borsuk + + Fix warnings for CMake Unity builds. + + * src/cache/ftcbasic.c (FT_COMPONENT): Undefine macro before redefinition. + * src/smooth/ftgrays.c (TRUNC, FRACT): Ditto. + +2021-12-18 Alexander Borsuk + + Clang-Tidy warning fixes. + + * src/base/ftobjs.c (FT_Get_Paint): Operator has equivalent nested operands. + * src/bdf/bdflib.c (_bdf_add_property): Value stored to `fp` is never read. + * src/sdf/ftbsdf.c (bsdf_init_distance_map): Value stored to `pixel` is + never read. + * src/sdf/ftsdf.c (split_sdf_shape): Value stored to `error` is never read. + +2021-12-17 Eli Schwartz + + * meson.build: Optimize lookup for `python3` program. + + The python module's `find_installation` method is intended to provide + routines for compiling and installing python modules into the + `site-packages` directory. It does a couple of slow things, including run + an introspection command to scrape sysconfig info from the detected + interpreter, which are not needed for the sole use case of invoking the + found installation as an executable. + + Furthermore, when invoked without the name or path of a python binary, it is + hardcoded to always look for `python3` corresponding to the interpreter + meson itself uses to run. So using `find_installation` did not even allow + detecting `python2` as a fallback. + + Instead, switch to a simple `find_program` lookup that finishes as soon as + the program is found. + +2021-12-17 Eli Schwartz + + * builds/meson/*.py: Fix name of python executable for auxiliary scripts. + + The previous change to check the return code of `run_command` invocations + caused the CI to fail. Although most scripts used `python_exe` as the + program command, the script to determine the project version did not. + + But, all scripts used `python` as the shebang, and this is not available on + all systems. Particularly Debian does not provide a `python` command, + though `python3` does exist. This meant that formerly the version number + was lacking, and now the build simply fails. + + Instead, rely on `python3` since it is guaranteed to exist when running + meson, and `python2` is end of life anyway. + +2021-12-17 Eli Schwartz + + * meson.build: Check the return value of `run_command`. + + By default, errors are not checked and a command that is somehow broken will + just capture incorrect output (likely an empty string). Current development + versions of meson now raise a warning for this implicit behavior, and advise + explicitly setting the `check:` keyword argumend to determine whether a + failing return code should be considered an error. + + Since none of the commands in this project are expected to fail, mark them + as required to succeed. + +2021-12-13 Alexei Podtelezhnikov + + [truetype] Upstream the hdmx binary search. + + * src/truetype/ttobjs.h (TT_SizeRec): Add `widthp` for the hdmx + widths. + * src/truetype/ttobjs.c (tt_size_reset): Initialize `widthp` even + though it might never be used by the interpreter. + * src/truetype/ttgload.c (tt_loader_init): Avoid repeated searches + in the hdmx table. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Reset the IUP-called flags for each subglyph. + + This fixes fall-out from 7809007a5b88b15, where the composite + accents were no longer hinted. + + * src/truetype/ttgload.c (ttloader_init): Move the IUP-called flag + initialization from here... + * src/truetype/ttinterp.c (TT_Run_Context): ... to here. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Binary search through the `hdmx` records. + + The `hdmx` table is supposed to be sorted by ppem size, which + enables binary search. We also drop the check for the sufficient + length of the record because it is now enforced when the table + is loaded. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Store the `hdmx` + record pointers sorted by ppem instead of ppem's themselves. + * src/truetype/ttpload.c (tt_face_load_hdmx): Prudently sort records. + (tt_face_get_device_metrics): Implement binary search to retrieve + advances. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Honor FT_LOAD_ADVANCE_ONLY if `hdmx` is usable. + + This simply shortcuts the glyph loading if FT_LOAD_ADVANCE_ONLY + is specified by FT_Get_Advances and the `hdmx` data are located. + Particularly, the classic v35 interpreter or "verified" ClearType + fonts might see 100x speed up in retrieving the hdmx cache. + + * src/truetype/ttgload.c (TT_Load_Glyph): Insert the shortcut. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Initialize the loader with `hdmx` data. + + The `hdmx` matching can be done before the glyph is loaded. + + * include/freetype/internal/tttypes.h (TT_LoaderRec): Add a field. + * src/truetype/ttgload.c (compute_glyph_metrics): Relocate the `hdmx` + code from here... + (tt_loader_init): ... to here, before the glyph is loaded. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Relocate subpixel flag setting. + + `TT_RunIns` is too busy to deal with subpixel flags. It is better + to set them in `tt_loader_init`, which is executed before each + glyph program. + + * src/truetype/ttinterp.c (TT_RunIns): Move the flag setting from + here... + * src/truetype/ttgload.c (tt_loader_init): ... to here. + +2021-12-12 Alexei Podtelezhnikov + + [truetype] Limit INSTCTRL appication within specs. + + * src/truetype/ttinterp.c (Ins_INSTCTRL): Limit its global effects + to the CVT program and local effects to the glyph program. + + This also fixes an Infinality buglet. The `ignore_x_mode` should be + locally unset by the glyph program. + +2021-12-09 Ben Wagner + + [bdf] Fix use of uninitialized value. + + In _bdf_readstream if the data contained no newline then the buffer + would continue to grow and uninitialized data read until either the + uninitialized data contained a newline or the buffer reached its + maxiumum size. The assumption was that the line was always too long and + the buffer had been filled, however this case can also happen when there + is not enough data to fill the buffer. + + Correct this by properly setting the cursor to the end of the available + data, which may be different from the end of the buffer. This may still + result in one extra allocation, but only on malformed fonts. + + * src/bdf/bdflib.c (_bfd_readstream): Correctly update cursor. Remove + unread set of `avail`. + + Bug: https://lists.nongnu.org/archive/html/freetype-devel/2021-12/msg00001.html + +2021-12-07 Alexei Podtelezhnikov + + [truetype] Reduce Infinality footprint again. + + * src/truetype/ttgload.c (compute_glyph_metrics): Streamline and + prioritize the Infinality checks to use `hdmx`. + +2021-12-07 Cameron Cawley + + [builds/windows] Guard some non-ancient API. + + We can support Windows 98 and NT 4.0 in principle... + + * builds/windows/ftdebug.c, builds/windows/ftsystem.c: Check for the + ancient SDK using _WIN32_WINDOWS, _WIN32_WCE, or _WIN32_WINNT. + +2021-12-07 Cameron Cawley + + * builds/windows/visualc/freetype.vcproj: Add missing file. + +2021-12-02 Werner Lemberg + + * Version 2.11.1 released. + ========================== + + Tag sources with `VER-2-11-1'. + + * docs/VERSION.TXT: Add entry for version 2.11.1. + * docs/CHANGES, docs/release: Updated. + + * README, src/base/ftver.rc, builds/windows/vc2010/index.html, + builds/windows/visualc/index.html, builds/windows/visualce/index.html, + builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html, + docs/freetype-config.1: s/2.11.0/2.11.1/, s/2110/2111/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + + * builds/unix/configure.raw (version_info): Set to 24:1:18. + * CMakeLists.txt (VERSION_PATCH): Set to 1. + + * builds/toplevel.mk (version_tag, CHANGELOG_SCRIPT): New variables. + (do-dist): Generate `ChangeLog` file with all commits since last release. + +2021-11-30 Alexei Podtelezhnikov + + [builds/windows] Improve debugging. + + * builds/windows/ftdebug.c (FT_Message, FT_Panic): Buffer output + and call `OutputDebugStringA` only if `IsDebuggerPresent`. + [_WIN32_WCE] (OutputDebugStringA): Implement the missing API. + +2021-11-29 Seigo Nonaka + + * src/base/ftobjs.c (FT_Request_Metrics): Fix build warning on Android. + + Use casts since `FT_USHORT_MAX` is unsigned short in bionic (libc used in + Android). + +2021-11-28 Alexei Podtelezhnikov + + * builds/windows/vc2010/freetype.vcxproj (DlgCopy): Minor tweak. + +2021-11-26 Alexei Podtelezhnikov + + * src/truetype/ttpload.c (tt_face_load_hdmx): Added comments. + +2021-11-26 Alexei Podtelezhnikov + + [truetype] Quietly reject out-of-spec `hdmx` tables. + + The `hdmx` table is optional and can be safely rejected without + an error if it does not follow specifications. The record size + must be equal to the number of glyphs + 2 + 32-bit padding. + + * src/truetype/ttpload.c (tt_face_load_hdmx): Thoroughly check + the record size and improve tracing. + +2021-11-23 Alexei Podtelezhnikov + + [truetype] Partly revert 5b626281. + + Fixes #1118. + + * src/truetype/ttpload.c (tt_face_load_hdmx): Do not assume that + `record_size` is rounded even though the records are padded. + +2021-11-23 Alexei Podtelezhnikov + + * builds/windows/vc2010/freetype.vcxproj (DlgCopy): Use transforms. + +2021-11-22 Werner Lemberg + + Update `CHANGES` files, other minor whitespace and documentation issues. + +2021-11-21 Werner Lemberg + + formats.txt: Add info about WOFF and WOFF2. + +2021-11-21 Werner Lemberg + + meson.build: Initialize `common_ldflags`. + +2021-11-21 Lukas Oberhuber <@lukaso> + + * meson.build: Fix compatibility version on MacOS. + + Fixes #1117. + +2021-11-21 Werner Lemberg + + * src/truetype/ttinterp.c (Ins_MD): Avoid `FT_ABS`. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38562 + +2021-11-20 Alexei Podtelezhnikov + + * include/freetype/fttypes.h (FT_MAKE_TAG): Remove the same casting. + +2021-11-20 Werner Lemberg + + [gxvalid] Fix minor compilation warning. + + * src/gxvalid/gxvmort5.c (gxv_mort_subtable_type5_subtable_setup): Declare + as static. + +2021-11-20 Werner Lemberg + + [smooth] Fix stand-alone compilation. + + * src/smooth/ftgrays.c (FT_Trace_Enable, FT_Trace_Disable)[STANDALONE_]: + Define. + +2021-11-20 Werner Lemberg + + Avoid undefined left-shifts. + + We really have to use double casts to avoid issues with C's and C++'s + signedness propagation rules in implicit casts. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41178 + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41182 + + * include/freetype/config/public-macros.h (FT_STATIC_CAST, + FT_REINTERPRET_CAST): Modify macro to take two arguments. + Update all callers. + (FT_STATIC_BYTE_CAST): New macro. + + * include/freetype/freetype.h (FT_ENC_TAG): Use `FT_STATIC_BYTE_CAST`. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. + * include/freetype/fttypes.h (FT_MAKE_TAG): Ditto. + Use `FT_Tag` for casting. + + * src/ftraster/ftmisc.h (FT_MAKE_TAG): Removed, no longer needed. + (FT_STATIC_BYTE_CAST): New macro. + + * src/smooth/ftgrays.c (FT_STATIC_CAST): Replace with... + (FT_STATIC_BYTE_CAST): ... this. + +2021-11-18 Werner Lemberg + + Provide C++ versions for public macros with casts. + + Many FreeType clients use C++. However `g++ -Wold-style-cast` warns for + macros with C-style casts even for system header files; this also affects + directories included with `-isystem`. While this could be seen as a problem + with g++, the problem is more a philosophical one: Over the time, C and C++ + diverged more and more, and some features of C are no longer the 'right' + solution in C++. + + * include/freetype/config/public-macros.h (FT_STATIC_CAST, + FT_REINTERPRET_CAST): New macros. + + * include/freetype/freetype.h (FT_ENC_TAG, FT_LOAD_TARGET_, + FT_LOAD_TARGET_MODE): Use `FT_STATIC_CAST`. + Correctly handle negative 'signed char' input. + * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. + * include/freetype/fttypes.h (FT_MAKE_TAG, FT_BOOL): Ditto. + * include/freetype/ftmodapi.h (FT_FACE_DRIVER_NAME): Use + `FT_REINTERPRET_CAST`. + + * src/smooth/ftgrays.c (FT_STATIC_CAST)[STANDALONE_]: New macro. + [!STANDALONE]: Include `FT_CONFIG_CONFIG_H`. + + Fixes #1116. + +2021-11-16 Werner Lemberg + + Fix clang++ warnings. + + * src/*: Initialize some variables to NULL. + +2021-11-16 Werner Lemberg + + [truetype] Updates for the forthcoming OpenType 1.9 standard (2/2). + + * src/truetype/ttgxvar.c (ft_var_load_item_variation_store): + s/shortDeltaCount/wordDeltaCount/ (as done in the specification, too). + Recognize new format and reject it for now. + +2021-11-16 Werner Lemberg + + [truetype] Updates for the forthcoming OpenType 1.9 standard (1/2). + + This is in preparation for implementing `DeltaSetIndexMap` format 1, which + is used by `COLR` v1 tables, and which allows 32bit indices. + + https://docs.microsoft.com/en-us/typography/opentype/otspec190/delta/otvarcommonformats_delta.html + + * src/truetype/ttgxvar.h (GX_DeltaSetIdxMapRec): Change type of `mapCount` + to `FT_ULong`. + + * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add argument + for passing the table size; update caller. + Implement new format. + +2021-11-14 Werner Lemberg + + Fix clang warnings. + + * src/gxvalid/gxvcmmn.h (GXV_SET_ERR_IF_PARANOID): Use 'do' block. + * src/gxvalid/gxvmod.c (GXV_TABLE_LOAD, GXV_TABLE_VALIDATE): Ditto. + + * src/smooth/ftgrays.c (gray_convert_glyph): Add cast. + + * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Remove cast. + * src/type1/t1load.c (read_binay_data): Use `FT_ULong` for `size` parameter. + (parse_subrs, parse_charstrings, parse_dict): Ditto; also add some casts. + +2021-11-13 Dominik Röttsches + + [sfnt] Avoid undefined shifts in `COLR` v1 paint parsing + + * src/sfnt/ttcolr.c (read_paint, tt_face_get_paint): Tighten shift + behavior by using multiplication, mostly using macros from ftcalc.h. + + Fixes: https://bugs.chromium.org/p/chromium/issues/detail?id=1269168 + +2021-11-13 Alexei Podtelezhnikov + + [builds/windows] Improve `DlgCopy` target. + + Fixes #1113. + + * builds/windows/vc2010/freetype.vcxproj: Run `DlgCopy` conditionally + and decouple it from `Build`. + +2021-11-12 Alexei Podtelezhnikov + + Explicitly define `FT_MSB` for Clang. + + * include/freetype/internal/ftcalc.h [__clang__] (FT_MSB): Updated. + +2021-11-10 Alexei Podtelezhnikov + + * src/truetype/ttgxvar.c (ft_var_to_normalized): Edge optimization. + +2021-11-10 Alexei Podtelezhnikov + + Additional `FT_MSB` macro definitions. + + Better macros for Windoes CE and ARM in general, based on !109 + from metarutaiga. + + * include/freetype/internal/ftcalc.h [_MSC_VER] (FT_MSB): Updated. + +2021-11-09 Alexei Podtelezhnikov + + [build/windows] Remove logging from default debug configurations. + + DLG is rather costly for performance and should be used judiciously. + This removes it from the default configurations but gives an example + how to enable it using the `UserDefines` property. + + * builds/windows/vc2010/freetype.vcxproj: Hide FT_DEBUG_LOGGING. + +2021-11-08 Werner Lemberg + + * src/sfnt/sfobjs.c (sfnt_open_font): Fix typo. + +2021-11-08 Werner Lemberg + + * src/gxvalid.*, src/otvalid.*: Fix `-Wformat` warnings. + +2021-11-08 Werner Lemberg + + [pshinter] Fix C++ compilation. + + * src/pshinter/pshalgo.c (psh_compute_dir): Fix type of `result`. + (psh_hint_table_find_strong_points): Add cast. + +2021-11-08 Werner Lemberg + + [sfnt] Reduce footprint if WOFF and WOFF2 support is not needed. + + Based on a patch from metarutaiga (MR !106). The gist of this commit is + that it doesn't make sense to support WOFF without compression (which would + be only possible in WOFF 1.0 anyway). + + * src/sfnt/sfobjs.c (sfnt_open_font): Guard WOFF code with + `FT_CONFIG_OPTION_USE_ZLIB` block. + Guard WOFF2 code with `FT_CONFIG_OPTION_USE_BROTLI` block. + + * src/sfnt/sfwoff.c, src/sfnt/sfwoff.h: Guard files with + `FT_CONFIG_OPTION_USE_ZLIB` blocks, not parts of the code. + + * src/sfnt/sfwoff2.c, src/sfnt/sfwoff2.h, src/sfnt/woff2tags.c, + src/sfnt/woff2tags.h: Guard files with `FT_CONFIG_OPTION_USE_BROTLI` blocks, + not parts of the code. + + Fixes #1111. + +2021-11-08 Werner Lemberg + + [truetype] Make trickyness checks depend on TT_USE_BYTECODE_INTERPRETER. + + Based on a patch from metarutaiga (MR !106). + + * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag, + tt_check_trickyness_family, tt_synth_sfnt_checksum, tt_get_sfnt_checksum, + tt_check_trickyness_sfnt_ids, tt_check_trickyness): Put functions into a + `TT_USE_BYTECODE_INTERPRETER` block. + (tt_face_init): Put trickyness checks into a `TT_USE_BYTECODE_INTERPRETER` + block. + + Fixes #1111. + +2021-11-08 Alexei Podtelezhnikov + + * src/sfnt/ttload.c (tt_face_load_gasp): Fix a type mismatch warning. + +2021-11-07 Alexei Podtelezhnikov + + [dlg] Define DLG_STATIC explicitly. + + DLG_STATIC is intended to disable Windows DLL linking attributes. + It does not hurt to define it explicitly when we wrap DLG code. + This fixes tons of LNK4286 and C4273 warnings from MSVC if we + forget to define DLG_STATIC as a compiler option. + + * builds/windows/vc2010/freetype.vcxproj: Remove DLG_STATIC option. + * src/dlg/dlgwrap.c [FT_DEBUG_LOGGING]: Define DLG_STATIC. + * include/freetype/internal/ftdebug.h [FT_DEBUG_LOGGING]: Ditto. + +2021-11-07 Alexei Podtelezhnikov + + [dlg] Lighten up the inclusions. + + The DLG wrapper needs to know if FT_DEBUG_LOGGING is defined in + `ftoption.h`. It does not need entire FreeType. + + * src/dlg/dlgwrap.c: Include FT_CONFIG_OPTIONS_H directly. + +2021-11-07 Alexei Podtelezhnikov + + [truetype] Avoid some memory zeroing in variations. + + * src/truetype/ttgxvar.c (ft_var_readpackeddeltas, ft_var_load_avar, + ft_var_load_item_variation_store, ft_var_load_gvar): Use FT_QNEW_ARRAY + if memory immediately initialized or discarded otherwise. + +2021-11-05 Jany Belluz + + [truetype] Fix handling of packed deltas in Variation Fonts. + + * src/truetype/ttgxvar (ft_var_readpackeddeltas): Don't expect the number of + bytes used to encode the deltas to be higher than the number of encoded + values. The specification allows a very compact encoding; for example, a + list of 200 zeros can be encoded with just a couple of bytes. + + We now count the consumed bytes to make sure to not read more than expected. + +2021-11-04 Jany Belluz + + [truetype] Fix CVAR handling of tuples for all points. + + * src/truetype/ttgxvar (tt_face_vary_cvt): Function + `ft_var_readpackedpoints`, when it returns `ALL_POINTS`, also sets + `point_count` to value 0. However, the CVAR code was incorrectly expecting + that `point_count` would be set to match the length of the CVT table. + +2021-11-04 Jany Belluz + + * src/truetype/ttgxvar.c: Fix typos in macros that guard CVAR code. + +2021-11-04 Alexei Podtelezhnikov + + * docs/INSTALL: Mention Meson and MSBuild more prominently. + +2021-11-03 Gabor Kertesz + + [libpng] Update Meson wrap for win-arm64 + + 1.6.37-5 released patches for win-arm64 to successfully build + libpng with Meson: + https://github.com/mesonbuild/wrapdb/pull/205 + https://github.com/mesonbuild/wrapdb/pull/216 + + Updated by the following command: + meson wrap update libpng + + Tested on win-arm64 and x64. + +2021-11-03 Dominik Röttsches + + [sfnt] Clarify `COLR` v1 FT_Paint* format representations + + * include/freetype/ftcolor.h (FT_PaintLinearGradient, + FT_PaintRadialGradient, FT_PaintSweepGradient, FT_PaintTransform, + FT_PaintTranslate, FT_PaintScale, FT_PaintRotate, FT_PaintSkew): Clarify + 16.16 fixed point representation of struct fields. + * src/sfnt/ttcolr.c (read_paint): Shift coordinates for + FT_PaintLinearGradient, FT_PaintRadialGradient, FT_PaintSweepGradient + accordingly. + + Fixes: https://gitlab.freedesktop.org/freetype/freetype/-/issues/1110 + +2021-11-03 Alexei Podtelezhnikov + + [builds/windows] Let MSBuild handle DLG copy. + + * builds/windows/vc2010/freetype.vcxproj: Specify DlgCopy target. + * builds/windows/vc2010/script.bat: Deleted. + +2021-10-29 Alexei Podtelezhnikov + + * src/truetype/ttgload.c (load_truetype_glyph): Fix MSVC warning C4312. + +2021-10-29 Alexei Podtelezhnikov + + [builds/windows] Separate MSVC linker and librarian. + + MSVC uses LIB for static and LINK for dynamic libraries. They are + related but the former has much smaller set of options. + + * builds/windows/vc2010/freetype.vcxproj: Updated. + +2021-10-29 Alexei Podtelezhnikov + + [builds/windows] Revise MSVC linking optimizations. + + * builds/windows/vc2010/freetype.vcxproj: Optimize DLL linking only. + * builds/windows/visualc/freetype.dsp: Ditto. + * builds/windows/visualc/freetype.vcproj: Ditto. + +2021-10-28 Alexei Podtelezhnikov + + [woff] Optimize table tagging. + + * include/freetype/internal/wofftypes.h (WOFF_TableRec): Use + 32-bit tag. + * src/sfnt/sfwoff.c (woff_open_font): Use 32-bit tag. + +2021-10-28 Alexei Podtelezhnikov + + [woff2] Optimize table tagging. + + Fixes #1107. + + * include/freetype/internal/wofftypes.h (WOFF2_TableRec): Use + 32-bit tag. + * src/sfnt/sfwoff2.c (compare_tags, find_table, woff2_open_font): + Use 32-bit tag. + * src/sfnt/woff2tags.[ch] (woff2_known_tags): Use static storage and + return 32-bit tag. + +2021-10-26 Werner Lemberg + + Formatting. + +2021-10-26 Ben Wagner + + [mm] Tolerate missing Blend dictionary entries + + In a Multiple Master font, the Blend dictionary must contain valid + Private, FontInfo, and FontBBox. The current code will error if any of + these are present and invalid, but will not error and will provide + uninitialized data if the Blend dictionary exists but does not contain + one of these entries. This change reverts to the older behavior of + treating any missing entries as containing all zero data and not + returning an error. + + In the future it may be best to keep track of when these are actually + initialized and error if they are not. + + * src/type1/t1load.c (t1_allocate_blend): Zero initiailize. + +2021-10-26 Alexei Podtelezhnikov + + [builds/windows] Add MSVC linker optimazations. + + We continue to build static libraries with statically linked C run- + time and add options to optimize references. + + * builds/windows/vc2010/freetype.vcxproj: Sort entries, add options. + +2021-10-23 Alexei Podtelezhnikov + + * builds/windows/vc2010/freetype.vcxproj: Use MachineARM64. + +2021-10-22 Alexei Podtelezhnikov + + [builds/windows] Prioritize x64. + + * builds/windows/vc2010/freetype.sln: Sort entries. + +2021-10-22 Gabor Kertesz + + [builds/windows] Add ARM64 platform. + + * builds/windows/vc2010/freetype.sln: Updated + * builds/windows/vc2010/freetype.vcxproj: Updated. + * builds/windows/vc2010/freetype.vcxproj.filters: Minor fix. + +2021-10-21 Ben Wagner + + [mm] Delay setting blend weight and design position. + + Previously the `blend->weight_vector`, `blend->default_weight_vector`, + and `blend->design_pos` were set early to allocated but uninitialized + memory under the assumption that the memory would eventually be + initialized. However, it is possible that some of the required + keywords may not actually be present, leaving the memory uninitialized. + This is different from a present but invalid table, which would produce + an error. + + Reported as + https://bugs.chromium.org/p/chromium/issues/detail?id=1261762 + + * src/type1/t1load.c (t1_allocate_blend): Remove early allocation and + initialization. + (parse_blend_design_positions, parse_weight_vector): Parse into local + and assign to blend if valid. + (T1_Open_Face): Check that if a blend exists that it has the weight + vector and design positions. + +2021-10-21 Ben Wagner + + [cff] Commit vstore data and regions on allocation. + + The vstore->regionCount and vstore->dataCount were read directly + from the data. However, vstore->varRegionList and vstore->varData + would still contain uninitialized entries with uninitialized + pointers in the event of an error, leading to issues when attempting + to clean up. + + Reportd as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40104 + + * src/cff/cffload.c (cff_vstore_load): Read the region and data counts + into locals and update the vstore counts immediately after each entry + becomes free-able. + +2021-10-20 Ben Wagner + + [sfnt] Delay setting gasp ranges and count until computed. + + Previously, the gasp.numRanges was set and gasp.gaspRanges was + allocated and assigned before a possible early exit if the frame could + not be entered. It is also possible that the gaspRanges allocation + could fail but the numRanges still be set to non-zero. In such cases + an error would be returned, but the face would have a gasp in an + inconsistent state which may still be accessed. + + Reported as + https://bugs.chromium.org/p/chromium/issues/detail?id=1261450 + + * src/sfnt/ttload.c (tt_face_load_gasp): Delay setting gasp.numRanges + and gasp.gaspRanges until after the ranges are initialized. + +2021-10-20 Ben Wagner + + [sfnt] Delay setting names and langTags until computed. + + Previously, the table->names and table->langTags fields were created + pointing to uninitialized memory and an early exit could happen if the + frame could not be entered. The caller would then be unable to properly + dispose of the memory as the string fields had not been initialized. + + Reported as + https://bugs.chromium.org/p/chromium/issues/detail?id=1261343 + + * src/sfnt/ttload.c (tt_face_load_name): delay setting table->langTags + and table->names until after the memory they will point to is fully + initialized. + +2021-10-20 Alexei Podtelezhnikov + + * tests/issue-1063/main.c: s/PATH_MAX/FILENAME_MAX/. + + Closes !97 for Windows by using a standard macro. + +2021-10-19 Werner Lemberg + + [bdf, cid, pfr, winfonts] Improve rejection of other font formats. + + This is mainly for better diagnostics of malformed fonts. + + * src/bdf/bdflib.c (_bfd_readstream): Stop font format testing if the first + input line is too long or doesn't end with `\r` or `\n`. + + * src/cid/cidparse.c (cid_parser_new): Don't handle too short input as an + error but as an unknown format. + + * src/pfr/pfrobjs.c (pfr_face_init): Ditto. + + * src/winfonts/winfnt.c (fnt_font_load, fnt_face_get_dll_font): Ditto. + +2021-10-19 Alexei Podtelezhnikov + + [pcf] Zero out the allocated properties. + + Fallout reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40033 + + * src/pcf/pcfread.c (pcf_get_properties): Use FT_NEW_ARRAY and zero + out `properties` in case of failure. + +2021-10-18 Werner Lemberg + + configure: Use string comparison for directory inodes. + + Inode values might be larger than integers supported by the shell. + + Fixes #1105. + +2021-10-17 Alexei Podtelezhnikov + + * src/sfnt/ttload.c (tt_face_load_name): NULL-initialize langTag. + + Another attempt to fix fallout reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40024 + +2021-10-17 Alexei Podtelezhnikov + + [bdf] Fix up user properties. + + Fallout reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40027 + + * src/bdf/bdflib.c (_bdf_add_property): Cosmetic NULL. + (bdf_create_property): Limit allocations to customary signed + FT_Long and NULL-initialize unused storage. + (bdf_free_font): Do not free unused storage. + +2021-10-17 Alexei Podtelezhnikov + + * src/sfnt/ttload.c (tt_face_load_name): Accounting fix. + + Fallout reported as + https://crbug.com/40024 + +2021-10-16 Ben Wagner + + Fix typos in memory macros. + + FT_QNEW_ARRAY and FT_QRENEW_ARRAY were using the non-Q + FT_MEM_NEW_ARRAY and FT_MEM_RENEW_ARRAY. Change these to use the Q + versions. Also fix the one issue discovered in tt_face_load_name + where table->names is created with FT_QNEW_ARRAY but the extra + string member is not initialized to NULL. + + * include/freetype/internal/ftmemory.h (FT_Q(RE)NEW_ARRAY): + Use FT_MEM_Q(RE)NEW_ARRAY as needed. + + * src/sfnt/ttload.c (tt_face_load_name): Initialize `entry->string`. + +2021-10-15 Ben Wagner + + [truetype] Reload context after re-executing `prep`. + + When a different hinting mode from the current is selected, the `prep` table + must be re-executed with the new mode. After this happens the context must + be re-loaded in preparation for the glyph program to be run. + + Fixes #1104. + + * truetype/ttgload.c (tt_loader_init): Add call to `TT_Load_Context`. + +2021-10-15 Werner Lemberg + + [truetype] Minor documentation improvements. + +2021-10-14 Anurag Thakur + + Add clang build to linux CI + +2021-10-12 Anurag Thakur + + CI: Add macOS CI, including a clang build + +2021-10-12 Alexei Podtelezhnikov + + * src/cid/cidload.c (parse_fd_array): Protect against trancation. + +2021-10-12 Alexei Podtelezhnikov + + [type1] Revert to signed size for binary data. + + Recently introduced and reported as + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39838 + + * src/type1/t1load.c (read_binary_data): Reject negative size. + (parse_subrs, parse_charstrings): Use customary signed size. + +2021-10-11 Alexei Podtelezhnikov + + [psaux] Signedness revisions. + + Unsigned indexes are easier to check. + + * src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Updated. + * src/psaux/psintrp.c (cf2_interpT2CharString): Ditto. + * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Ditto. + * src/type1/t1load.c (read_binary_data): Ditto. + +2021-10-11 Alexei Podtelezhnikov + + [cid] Signedness revisions. + + Unsigned checks are simpler. + + * include/freetype/t1tables.h (CID_FaceInfoRec): Change to unsignd + `num_dicts`. + * src/cid/cidparse.h (CID_Parser): Change to unsigned `num_dict`. + + * src/cid/cidgload.c (cid_load_glyph): Updated. + * src/cid/cidload.c (cid_load_keyword, parse_fd_array, + parse_expansion_factor, parse_font_name, cid_read_subrs, + cid_face_open): Updated. + * src/cid/cidobjs.c (cid_face_done): Updated. + * src/cid/cidparse.c (cid_parser_new): Updated. + +2021-10-09 Alexei Podtelezhnikov + + * src/cid/cidload.c (cid_face_open): Streamline CIDCount check. + +2021-10-08 Alexei Podtelezhnikov + + * src/cid/cidload.c (cid_face_open): Streamline SubrCount check. + +2021-10-08 Alexei Podtelezhnikov + + * src/cid/cidgload.c (cid_load_glyph): Fortify incremental loading. + +2021-10-08 Alexei Podtelezhnikov + + Signedness revisions. + + This eliminates explicit casting by switching to unsigned fields. + The revisions mostly impact the handling of CID fonts. + + * include/freetype/fttypes.h (FT_Data): Change to unsigned `length`. + * include/freetype/t1tables.h (CID_FaceDictRec): Ditto for `sd_bytes`. + (CID_FaceInfoRec): Ditto for `gd_bytes` and `gd_bytes`. + * include/freetype/internal/tttypes.h (TT_LoaderRec): Ditto for + `byte_len`. + + * src/cid/cidgload.c (cid_load_glyph): Updated. + * src/cid/cidload.h (cid_get_offset): Update argument. + * src/cid/cidload.c (cid_get_offset, cid_read_subrs, cid_face_open): + Updated. + * src/cff/cffgload.c (cff_get_glyph_data, cff_free_glyph_data): + Updated. + * src/psaux/psft.c (cf2_getT1SeacComponent): Updated. + * src/truetype/ttgload.c (TT_Process_Composite_Glyph, + load_truetype_glyph): Updated. + +2021-10-07 Jan Alexander Steffens (heftig) + + meson.build (gen_docs): Use `current_source_dir` instead of `source_root`. + + These two are not equal when FreeType is used as a subproject, such as in + `freetype-demos`. In that case, `source_root` points at the root project, + causing the docs build to fail. + +2021-10-05 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (FT_DIV_MOD): Limit the ARM workaround. + +2021-10-05 Alexei Podtelezhnikov + + [builds/unix, builds/vms] Standardize `mmap` failure. + + * builds/unix/ftsystem.c (FT_Stream_Open): Check for MAP_FAILED. + * builds/vms/ftsystem.c (FT_Stream_Open): Ditto. + + This should cover https://savannah.nongnu.org/patch/?5909 as well. + +2021-10-05 Hugh McMaster + + autogen.sh: Only copy submodules if building from a git branch. + + `autogen.sh` fails if building from a standard source tarball. Firstly, git + expects to be called in a git repository, then `copy_submodule_files` + blindly attempts to copy files. + + Debian, Ubuntu, Linux Mint, and other derivatives all run `autogen.sh` + before compiling to regenerate build files. + + This patch ensures that various git commands are only called and 'dlg' files + are only copied if `autogen.sh` is called from a git repository. + +2021-10-05 Alexei Podtelezhnikov + + * include/freetype/internal/ftgloadr.h: Add missing header. + + Noticed by Jouk Jansen. + +2021-10-05 Alexei Podtelezhnikov + + [pshinter] Additional clean-ups. + + * src/pshinter/pshalgo.h (psh_hint_table_find_strong_points): Streamline code. + * src/pshinter/pshalgo.h (PSH_Glyph): Remove unused fields. + +2021-10-04 Alexei Podtelezhnikov + + [pshinter] More convenient direction definition. + + It is easier to check directions using flags than integer values. + + * src/pshinter/pshalgo.h (PSH_Dir): Redefine directions. + (PSH_PointRec): Use them as an enum type. + + * src/pshinter/pshalgo.c (psh_compute_dir): Modify return type. + (psh_glyph_init, psh_hint_table_find_strong_points, + psh_glyph_find_blue_points): Update users. + +2021-10-04 Alexei Podtelezhnikov + + [pshinter] Remove unnecessary check. + + * src/pshinter/pshalgo.c (psh_hint_table_find_strong_points): Do not + check if direction is defined before checking how. + +2021-10-02 AnuthaDev + + CI: Hardcode meson version to fix build failure on windows + +2021-10-01 Alexei Podtelezhnikov + + Additional `FT_MSB` macro definitions. + + * include/freetype/internal/ftcalc.h [__DECC,_CRAYC]: Use builtins + and intrinsics. + +2021-10-01 Alexei Podtelezhnikov + + * src/autofit/afhints.c (af_glyph_hints_reload): Decrease casting. + +2021-09-30 Alexei Podtelezhnikov + + * src/tools/apinames.c: Facilitate OpenVMS linker options. + +2021-09-29 Alexei Podtelezhnikov + + * src/winfonts/winfnt.c (FNT_Face_Init): Correct reallocation. + +2021-09-25 Alexei Podtelezhnikov + + [builds/unix] Do not use autoconf SIZEOF. + + * builds/unix/ftconfig.h.in [FT_USE_AUTOCONF_SIZEOF_TYPES]: Removed. + * builds/unix/configure.raw: Remove AC_CHECK_SIZEOF and update. + + After this commit, autoconf builds will fully rely on + rather than falling back on it if AC_CHECK_SIZEOF failed for some + reason. There is a risk that misconfigured cross-compilation might + have wrong headers. Note that Meson and CMake builds always relied on + for sizes and availability of integer types. + +2021-09-25 Alexei Podtelezhnikov + + Propagate sign when reading OFF3. + + Signed 24-bit values are extremely rare. FreeType only reads them in + PFR fonts with bitmap strikes conditionally. They have not been seen + in the known fonts. That is why this bug could never be discovered. + `FT_FRAME_OFF3` propagates sign correctly. + + * include/freetype/internal/ftstream.h (FT_PEEK_OFF3, FT_PEEK_OFF3_LE): + Propagate sign into 32-bit value. + (FT_GET_OFF3, FT_READ_OFF3): Needed fixing but removed as unused. + +2021-09-25 Alexei Podtelezhnikov + + [bdf] Simplify comment collection or lack thereof. + + BDF comments are neither actually collected nor retrieved. There is + no need to be fancy with delimiters. + + * src/bdf/bdflib.c (_add_bdf_comment): Delimit comments with zeros... + (bdf_load_font): ...and do not null-terminate comments additionally. + (_bdf_parse_glyphs): Check if comments are kept, which they are not. + (_bdf_parse_start): Minor clean up. + +2021-09-24 Alexei Podtelezhnikov + + Use NULL for pointers only. + + * src/bdf/bdflib.c (*): Code changes. + * include/freetype/freetype.h: Comments only. + * src/cff/cffload.c, src/cff/cffobjs.c: Ditto. + * src/winfonts/winfnt.c: Ditto. + +2021-09-23 Werner Lemberg + + Minor documentation fixes and improvements. + +2021-09-23 Alexei Podtelezhnikov + + Reference `fopen` in the docs. + +2021-09-23 Alexei Podtelezhnikov + + [bdf, pcf] Minor optimization. + + * src/pcf/pcfread.c (pcf_load_font): Do not call `FT_MulDiv` for a + small job. + * src/bdf/bdfdrivr.c (BDF_Face_Init): Ditto. + * src/bdf/bdflib.c (_bdf_parse_glyphs): Fix a comment. + +2021-09-22 Alexei Podtelezhnikov + + [base] Initialize stream memory earlier. + + With Windows memory management tracking heap, it is important to use + it during the stream opening fallback. In Unix, the argument is + unused, but it is better to set it correctly. + + * src/base/ftobjs.c (FT_Stream_New): Set memory before calling + `FT_Stream_Open`. + * builds/windows/ftsystem.c, builds/unix/ftsystem.c (FT_Stream_Open, + ft_close_stream_by_free): Call `ft_alloc` and `ft_free` with proper + memory argumment. + +2021-09-22 Alexei Podtelezhnikov + + [builds/windows] Revert back to `CreateFileA` only. + + Calling `CreateFileW` without making sure that the patname is really + `wchar_t` is a bad idea and can lead to unpredictable overreads. For + Windows CE, we impelemnt the missing API. + + Fixes #1098 and !76 again. + + * builds/windows/ftsystem.c (FT_Stream_Open): Call `CreateFileA`. + [_WIN32_WCE] (CreateFileA, FileSizeEx): Implement missing interfaces. + +2021-09-21 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (_bdf_parse_{start,glyphs}): Use appropriate scanner. + +2021-09-21 Alexei Podtelezhnikov + + Minor. + +2021-09-20 Alexei Podtelezhnikov + + * src/cff/cffdrivr.c (cff_ps_get_font_{info,extra}): Use FT_QNEW. + +2021-09-18 Alexei Podtelezhnikov + + [cache] Minor clean-ups. + + * src/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): Remove parantheses. + * src/cache/ftccache.c (FTC_Cache_Lookup): Ditto. + (FTC_Cache_RemoveFaceID): Remove unnecessary variable. + +2021-09-17 Alexei Podtelezhnikov + + [builds/windows] Try both wide and narrow `CreateFile` + + Windows handles wchar_t* UTF-16 and char* ANSI (presently UTF-8) + filenames using alternative -A and -W API. We'll try them both + when opening a file. This means that you should not worry about + about conversions. + + Fixes #1098 and !76. + + * builds/windows/ftsystem.c (FT_Stream_Open): Call alternative + `CreateFile` in the case of failure. + +2021-09-17 Edwin Steiner + + [cff] Explicitly set StandardEncoding or ExpertEncoding offsets. + + Fixes #1097. + + * src/cff/cffload.c (cff_encoding_load): Set special offset values. + +2021-09-16 Alexei Podtelezhnikov + + [cache] Miscellaneous clean-ups. + + * src/cache/ftccache.c (ftc_get_top_node_for_hash, FTC_Cache_Clear): + Remove barely used variables. + (ftc_cache_add): Adjust casting. + * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Remove casting. + * src/cache/ftcsbits.c (ftc_snode_load): Remove casting. + +2021-09-16 Alexei Podtelezhnikov + + * src/cff/cffload.c (cff_fd_select_get): Remove casting. + +2021-09-16 Alexei Podtelezhnikov + + * src/pcf/pcfread.c (pcf_read_TOC): Remove casting. + +2021-09-15 Alexei Podtelezhnikov + + Minor type adjustments. + + * src/cff/cffobjs.c (cff_face_init): Reduce casting. + * src/truetype/ttobjs.c (tt_size_ready_bytecode): Ditto. + * src/type1/t1load.c (T1_Set_MM_Design): Ditto. + +2021-09-15 Alexei Podtelezhnikov + + Replace boolean allocation macros with MEM ones. + + * src/base/ftbitmap.c (FT_Bitmap_Copy): Use MEM-macro. + * src/base/ftobjs.c (ft_glyphslot_alloc_bitmap): Ditto. + * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Ditto. + * src/cache/ftccache.c (ftc_cache_init): Ditto + * src/gzip/ftgzip.c (ft_gzip_alloc): Ditto. + * src/psnames/psmodule.c (ps_unicodes_init): Ditto. + * src/sfnt/sfobjs.c (sfnt_load_face): Ditto. + * src/sfnt/ttload.c (tt_face_load_name): Ditto. + +2021-09-15 Alexei Podtelezhnikov + + [cache] Revert to some zeroing. + + * src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Zero + `buckets` again to fix some crashes. + +2021-09-14 Alexei Podtelezhnikov + + * src/pshinter/pshrec.c (ps_mask_table_merge_all): Tweak loops. + + Fixes fallout from 731d0b685685 reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38685 + +2021-09-13 Alexei Podtelezhnikov + + [cff, pshinter] Clean up unsigned counters. + + Loops with unsigned decrement can be reliably stopped when the counter + wraps around after reaching zero. + + * src/cff/cffload.c (cff_charset_compute_cids): Use unsigned counter. + * src/pshinter/pshalgo.c (psh_hint_table_activate_mask): Ditto. + * src/pshinter/pshrec.c (ps_mask_table_merge): Ditto. + +2021-09-13 Alexei Podtelezhnikov + + [bdf, psnames, sfnt] Avoid some memory zeroing. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Use Q-macro. + * src/sfnt/sfobjs.c (sfnt_load_face): Ditto. + * src/psnames/psmodule.c (src/psnames/psmodule.c): Remove zero. + +2021-09-13 Alexei Podtelezhnikov + + * src/base/ftobjs.c (FT_CMap_New): Revert to zeroing. + + Fixes fallout from c1fa7aa2bc96, reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38641 + +2021-09-13 Alexei Podtelezhnikov + + [truetype] Clean up `exec` initialization. + + * src/truetype/ttinterp.c (Init_Context): Absorbed into... + (TT_New_Context): ... this function. + +2021-09-13 Alexei Podtelezhnikov + + [truetype] Avoid some memory zeroing. + + * src/truetype/ttgload.c (load_truetype_glyph): Use Q-macro. + * src/truetype/ttinterp.c (Update_Max): Ditto. + * src/truetype/ttpload.c (src/truetype/ttpload.c): Ditto. + +2021-09-13 Alexei Podtelezhnikov + + [base] Avoid some memory zeroing. + + * src/base/ftobjs.c (FT_New_Size, FT_CMap_New, FT_CMap_Done, + ft_open_face_internal, ft_open_face_internal): Use Q-macros. + +2021-09-13 Alexei Podtelezhnikov + + [cache, psaux] Remove zeros. + + * src/cache/ftcmru.c (FTC_MruList_New): Remove initialization. + * src/psaux/psstack.c (cf2_stack_init): Ditto. + +2021-09-12 Alexei Podtelezhnikov + + [cache] Avoid some memory zeroing. + + * src/cache/ftcmru.c (FTC_MruList_New): Use Q-macro. + * src/cache/ftcmanag.c (FTC_Manager_RegisterCache): Ditto. + * src/cache/ftccache.c (ftc_cache_init, ftc_cache_resize): Ditto. + +2021-09-11 Alexei Podtelezhnikov + + * src/cache/ftcmanag.c (FTC_Manager_New): Add missing zero. + + Fixes fall out from a7b199d081e7. + +2021-09-10 Alexei Podtelezhnikov + + [truetype] Tweak `hdmx` checking. + + Fixes #1096. + + * src/truetype/ttpload.c (tt_face_load_hdmx): Account for padding. + +2021-09-10 Alexei Podtelezhnikov + + [truetype] Tweak `loca` clamping. + + Fixes #1095. + + * src/truetype/ttpload.c (tt_face_load_loca): Fix up clamping. + * include/freetype/internal/tttypes.h (TT_Face): Correct docs. + +2021-09-08 Alexei Podtelezhnikov + + Fortify memory debugging (cont'd). + + * src/base/ftdbgmem.c (FT_DumpMemory): Check for active debugger. + (ft_mem_table_destroy): Move `FT_DumpMemory` call from here... + (ft_mem_debug_done): ... to here. + +2021-09-08 Alexei Podtelezhnikov + + Fortify memory debugging. + + These changes are neccessary to properly recover `memory->user` that + holds the Windows heap handle now. + + * src/base/ftdbgmem.c (ft_mem_debug_init): Handle all table allocations, + initializations, and sizing instead of... + (ft_mem_table_new): ... this function removed. + (ft_mem_debug_done): Better check for the active debugger and free the + debugger table here instead of... + (ft_mem_table_destroy): ... here. + +2021-09-08 Werner Lemberg + + src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): Set to 600. + + This allows C99 compilation on Solaris. + + Problem reported by Mojca Miklavec. + +2021-09-07 Alexei Podtelezhnikov + + [builds/windows] Use native memory allocation API. + + * builds/windows/ftsystem.c (ft_alloc, ft_realloc, ft_free): + Wrap HeapAlloc, HeapReAlloc, and HeapFree. + (FT_New_Memory): Set the heap handle. + +2021-09-07 Werner Lemberg + + [dlg] Synchronize with upstream. + + * src/dlg/dlgwrap.c (_XOPEN_SOURCE): Set to 600. + + Fixes #1093. + +2021-09-04 Alexei Podtelezhnikov + + Cosmetic zeros. + +2021-09-03 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (_bdf_parse_start): Keep parser memory. + +2021-09-03 Werner Lemberg + + autogen.sh: Make it work with old Solaris 10 shell. + +2021-09-03 Alexei Podtelezhnikov + + [smooth, raster, sdf] Clean up initialization calls. + + * src/raster/ftraster.c (ft_black_init): Removed. + (ft_black_new): Clean up. + * src/sdf/ftbsdf.c (bsdf_raster_new): Ditto. + * src/sdf/ftsdf.c (sdf_raster_new): Ditto. + * src/smooth/ftgrays.c (gray_raster_new): Ditto. + +2021-09-03 Alexei Podtelezhnikov + + * src/cache/ftcmanag.c (FTC_Manager_New): Avoid some zeroing. + +2021-09-03 Alexei Podtelezhnikov + + * src/bdf/bdflib.c (bdf_load_font): Remove memory shuffling. + +2021-09-03 Alexei Podtelezhnikov + + Cosmetic zeros. + +2021-09-02 Alexei Podtelezhnikov + + [base] Clean up stream reading. + + * src/base/ftstream.c (FT_Stream_ReadUShort, FT_Stream_ReadUOffset, + FT_Stream_ReadULong and their LE variants): Remove unnecessary + initialization and slightly refactor. + (FT_Stream_GetByte, FT_Stream_ReadByte): Rename to return unsigned + value and align with sister functions. + + * include/freetype/internal/ftstream.h (FT_Stream_GetByte, + FT_Stream_ReadByte): Update prototypes and caller macros. + +2021-09-02 Alexei Podtelezhnikov + + s/0/NULL/ where appropriate. + +2021-08-30 Alexei Podtelezhnikov + + * builds/windows/ftsystem.c (FT_Stream_Open): Fix double-close. + +2021-08-30 Alexei Podtelezhnikov + + [smooth] Reduce shift in multiply-shift optimization. + + * src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): Reduce shift. + + Smaller shifts that keep the division operands of FT_UDIVPREP within + 32 bits result in slightly faster divisions, which is noticeable in + the overall performance. The loss of precision is tolerable until the + divisors (the components dx and dy) approach 32 - PIXEL_BITS. With + PIXEL_BITS = 8, this corresponds to 65,000 pixels or the bitmap size + that we refuse to render anyway. + + Using `ftbench -p -s60 -t5 -bc timesi.ttf`, + + Before: 8.52 us/op + After: 8.32 us/op + +2021-08-28 Werner Lemberg + + [truetype] Fix compilation if !TT_CONFIG_OPTION_BYTECODE_INTERPRETER. + + * src/truetype/ttgxvar.c (tt_cvt_ready_iterator): Compile function + conditionally. + (tt_face_vary_cvt) [!TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Add code. + + Fixes #1091. + +2021-08-27 Alexei Podtelezhnikov + + [builds/windows] Revise SSE2 settings. + + * builds/windows/vc2010/freetype.vcxproj [x64]: Remove explicit SSE2. + * builds/windows/visualc/freetype.vcproj [Win32]: Add explicit SSE2. + +2021-08-27 Ben Wagner + + [smooth] Detect SSE2 with MSVC for x86 + + MSVC does not set `__SSE2__`. Instead one must check whether `_M_IX86_FP` is + defined and greater than or equal to 2. + + * src/smooth/ftgrays.c (FT_SSE2): New macro. + Use it where appropriate. + +2021-08-26 Alexei Podtelezhnikov + + Expand comment (cont'd). + +2021-08-26 Alexei Podtelezhnikov + + Expand comment. + +2021-08-24 Alexei Podtelezhnikov + + * src/smooth/ftgrays.c (gray_render_conic): Refactor redundancy. + +2021-08-24 suzuki toshiya + + [truetype] Fix for the family name shorter than 8 characters. + + * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): + If the family name to be checked is shorter than 8 characters, + do not check its syntax. + +2021-08-24 suzuki toshiya + + [truetype] Simplify `trick_names'. + + * src/truetype/ttobjs.c (tt_check_trickyness_family): For the case + that the beginning part of a long tricky family name is already + registered as another tricky family name, no need to double-check + the longer one. Such long tricky family names are removed from + the `trick_names'. + +2021-08-24 suzuki toshiya + + [truetype] Add 2 tricky font names. + + Additional fix for the issue #1087. + + * src/truetype/ttobjs.c (tt_check_trickyness_family): Add 2 tricky + font names reported in #1087. + +2021-08-24 suzuki toshiya + + [truetype] New function to skip the randomization tag. + + * src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): + New function to skip the randomization tag in the names of the + fonts embedded in a PDF. It is used by tt_check_trickyness_family(), + to keep from mistaking "DLC" in the randomization tag as a + tricky font name. See discussion in: + + https://lists.nongnu.org/archive/html/freetype-devel/2021-02/msg00002.html + + For technical detail about the randomization tag, please find + PDF Reference 5.5.3 "Font Subsets". Thanks to Justyna Wawrzynska + for pointing out the issue caused by the randomization tag. + +2021-08-24 suzuki toshiya + + [truetype] Add checksums for 2 tricky fonts. + + Thanks to Ting717 for providing sample PDF. Fixes #1087. + + * src/truetype/ttobjs.c (tt_check_trickyness_sfnt_ids): Add + checksums for 2 tricky fonts `DFHei-Bd-WIN-HK-BF' and + `DFMing-Md-WIN-HK-BF'. + +2021-08-23 Alexei Podtelezhnikov + + Whitespace formatting. + +2021-08-22 Alexei Podtelezhnikov + + Decorate const arguments. + + * src/base/ftglyph.c (FT_Glyph_Transform, FT_Glyph_To_Bitmap): Do it. + * include/freetype/ftglyph.h (FT_Glyph_Transform, FT_Glyph_To_Bitmap): + Do it. + +2021-08-21 Alexei Podtelezhnikov + + [smooth] Clean up the null cell usage. + + Put the null cell at the end of the pool and store it explicitly so that + we can use it as both the limit and the dumpster. + + * src/smooth/ftgrays.c (gray_TWorker): Store the last `cell_null` and + remove unnecesary fields. + (NULL_CELL_PTR, CELL_IS_NULL): Remove in favor of explicit `cell_null`. + (gray_dump_cells, gray_set_cell, gray_sweep{,_direct}): Update callers. + (gray_convert_glyph_inner): Trace remaining cells (oh well). + (gray_convert_glyph): Set up `cell_null` and slightly improve the pool + management. + +2021-08-20 Alexei Podtelezhnikov + + [base] Restore quiet no-op rendering of bitmap glyphs. + + Fixes #1076. + + * src/base/ftobjs.c (FT_Render_Glyph_Internal): Discard an error when + rendering a bitmap glyph. + +2021-08-20 Alexei Podtelezhnikov + + [smooth] Fortify 64-bit algorithm. + + * src/smooth/ftgrays.c (FT_UDIVPREP, FT_UDIV): s/long/FT_Int64/ and + s/unsigned long/FT_UInt64/. + (gray_render_line): Adjust a critical variable type. + +2021-08-20 Carlo Bramini + + * builds/windows/ftsystem.c (FT_Stream_Open): Support legacy Windows. + +2021-08-20 Alexei Podtelezhnikov + + Determine `long long` availability based on its size. + + MSVC, for example, used `long long` even without full C99 support. + + * include/freetype/config/ftstdlib.h: Check if `long long` limits are + defined in . + * include/freetype/config/integer-types.h: Check `long long` size and + use it to typedef FT_Int64. + +2021-08-19 Dominik Röttsches + + [sfnt] Fix format expectation for `COLR` v1 ClipList + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Change ClipList + format expectation to 1 instead of 0 to make it compliant with the + latest spec. + +2021-08-19 Alexei Podtelezhnikov + + Readily use `long long` as a 64-bit type in C99 mode. + + * include/freetype/config/integer-types.h (FT_INT64): + FT_CONFIG_OPTION_FORCE_INT64 is no longer required to use `long long`. + +2021-08-19 Alexei Podtelezhnikov + + Use FT_INT64 instead of FT_LONG64. + + * include/freetype/config/integer-types.h: Remove synonymous FT_LONG64. + * include/freetype/internal/ftcalc.h: s/FT_LONG64/FT_INT64/. + * src/base/ftcalc.c: Ditto. + * src/base/fttrigon.c: Ditto. + * src/smooth/ftgrays.c: Ditto. + +2021-08-18 Alexei Podtelezhnikov + + [builds/windows] Do not set CharacterSet for VC++. + + * builds/windows/vc2010/freetype.vcxproj: s/Unicode/NotSet/. + * builds/windows/visualc/freetype.vcproj: s/"1"/"0"/. + +2021-08-18 Werner Lemberg + + * src/sdf/ftsdf.c (get_control_box): Fix compiler warning. + +2021-08-18 Werner Lemberg + + [base] Fix ppem size overflow. + + Fixes #1086. + + * src/base/ftobjs.c (FT_Request_Metrics): Add return value. + Check whether ppem values fit into unsigned short values. + (FT_Request_Size): Updated. + + * include/freetype/internal/ftobjs.h: Updated. + + * src/cff/cffobjs.c (cff_size_request), src/cid/cidobjs.c + (cid_size_request), src/truetype/ttdriver.c (tt_size_request), + src/type1/t1objs.c (T1_Size_Request): Updated. + +2021-08-18 Alexei Podtelezhnikov + + * builds/windows/ftsystem.c (FT_Stream_Open): Cast to remove warning. + +2021-08-18 Alexei Podtelezhnikov + + * builds/windows/ftsystem.c (FT_Stream_Open): Support UNICODE compilation. + +2021-08-09 Werner Lemberg + + * src/sfnt/ttcolr.c (tt_face_get_color_glyph_clipbox): Minor fix. + +2021-08-09 Dominik Röttsches + + [sfnt] Add missing blend mode 'plus' to 'COLR' v1. + + * include/freetype/ftcolor.h (FT_Composite_Mode): Add missing blend mode + 'plus' after it was added to the spec. + +2021-08-08 Werner Lemberg + + include/freetype/freetype.h (FT_Encoding): Improve documentation. + + Based on a suggestion by Antony Lee . + +2021-08-07 Werner Lemberg + + [smooth] Avoid integer overflow. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36243 + + * src/smooth/ftgrays.c(ADD_LONG, SUB_LONG, MUL_LONG, NEG_LONG) + [STANDALONE_]: Removed, unused. + (ADD_INT) [STANDALONE_]: New macro. + (FT_INTEGRATE): Use ADD_INT. + +2021-08-07 Dominik Röttsches + + [sfnt] Add API for retrieving a 'COLR' v1 'ClipBox' table. + + The optional 'COLR' v1 glyph-specific clip box helps upstream graphics + libraries allocate a sufficiently large bitmap for a glyph without having to + traverse the glyph graph for that. See + + https://github.com/googlefonts/colr-gradients-spec/issues/251 + + for background on the introduction of this specification change. + + * include/freetype/ftcolor.h (FT_ClipBox): New structure. + (FT_Get_Color_Glyph_ClipBox): New function declaration. + + * include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_ClipBox_Func): + New function type. + (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Use it. + + * src/base/ftobjs.c (FT_Get_Color_Glyph_ClipBox): New function to link API + with SFNT implementation. + + * src/sfnt/sfdriver.c (sfnt_interface): Updated. + * src/sfnt/ttcolr.c (Colr): New field `clip_list`. + (tt_face_load_colr): Parse global clip list offset. + (tt_face_get_color_glyph_clipbox): New function to find the clip box for a + glyph id from the clip list array. + * src/sfnt/ttcolr.h: Updated. + +2021-08-06 Werner Lemberg + + [smooth] Fix left shifts of negative numbers. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36241 + + * src/smooth/ftgrays.c (LEFT_SHIFT): New macro. + (gray_render_conic) [BEZIER_USE_DDA]: Use it. + +2021-08-02 Werner Lemberg + + * meson.build: Fix zlib support. + + This commit synchronizes zlib support with both autotools and cmake: If no + external zlib is found (or intentionally disabled on the command line), use + the internal zlib by undefining `FT_CONFIG_OPTION_SYSTEM_ZLIB` without + modifying `FT_CONFIG_OPTION_USE_ZLIB`. + + Also improve summary output. + + Problem reported by Moazin. + +2021-08-02 Anuj Verma + + [sdf] Fix out-of-range-access. + + * src/sdf/ftbsdf.c (first_pass, second_pass): Fix range during forward pass. + Otherwise the index goes out of range for the last column. + + Fixes issue #1077. + +2021-08-02 Anuj Verma + + Fix invalid memory access in `bsdf` rasterizer. + + Do not generate SDF from bitmap if the `FT_GLYPH_OWN_BITMAP` flag is not + set. In some cases the bitmap buffer is freed but still points to a valid + address; to handle those cases check the flag before accessing the memory. + + * src/sdf/ftsdfrend.c (ft_bsdf_render): Handle the above case. + Also, return an error message if the bitmap's rows/pitch is invalid, + otherwise `slot->buffer` might be assigned to some invalid memory location. + (ft_sdf_render): Same as above. + Plus, move the outline back to original state after rasterization and not if + any error occurs. + +2021-07-29 Heiko Becker + + * meson.build: Honor `--includedir` instead of hard-coding 'include'. + +2021-07-29 Werner Lemberg + + src/sfnt/ttcolr.c: Minor formatting. + +2021-07-29 Dominik Röttsches + + [sfnt] 'COLR' v1 PaintSweepGradient spec update + + * src/sfnt/ttcolr.c (read_paint): PaintSweepGradient follows other + spec changes and now has the angles specified as F2DOT14, reflect + that in the implementation. + * include/freetype/ftcolor.h (FT_PaintSweepGradient): Update + documentation. + +2021-07-29 Dominik Röttsches + + [sfnt] Retrieve affine matrix from offset in 'COLR' v1 parsing. + + * src/sfnt/ttcolr.c (read_paint): Implement spec change where + affine transform matrix is now referenced by offset instead of + being placed inline in the PaintTransform table. + +2021-07-29 Dominik Röttsches + + [sfnt] 'COLR' v1 PaintSkew related spec updates + + * src/sfnt/ttcolr.c (read_paint): Implement spec changes around + PaintSkew, PaintSkewAroundCenter. Update parsing to read shorter + values as changed in the spec. + * include/freetype/ftcolor.h (FT_PaintSkew): Update documentation. + +2021-07-29 Dominik Röttsches + + [sfnt] PaintRotate/PaintRotateAroundCenter spec updates + + * src/sfnt/ttcolr.c (read_paint): Implement spec change where + PaintRotate and PaintRotateAroundCenter were split for a more + compact format definition. Update parsing to read shorter values + as changed in the spec. + * include/freetype/ftcolor.h (FT_PaintRotate): Update documentation. + +2021-07-29 Dominik Röttsches + + [sfnt] 'COLR' v1 PaintTranslate and PaintScale precision + + * src/sfnt/ttcolr.c (read_paint): Implement spec changes in + PaintTranslate and PaintScale and friends. Update parsing to read + new shorter values. + +2021-07-29 AnuthaDev + + README.git: Add Code of Conduct. + +2021-07-25 Werner Lemberg + + ChangeLog housekeeping. + + Archive old `ChangeLog` file. + + We no longer write ChangeLog entries manually; instead, the file will be + created from commit messages (which should be formatted in GNU's ChangeLog + style) by a call to + + gitlog-to-changelog --format='%B%n' + + or something similar (this script is part of the 'gnulib' repository). + +2021-07-24 Werner Lemberg + + Fix some `cppcheck` warnings. + + * src/bzip2/ftbzip2.c (ft_bzip2_file_skip_output), src/gzip/ftgzip.c + (ft_gzip_file_skip_output): Reduce scope of `delta`. + + * src/psaux/psintrp.c, src/psaux/psintrp.h (cf2_interpT2CharString): Add + `const` to `buf` parameter. + + * src/raster/ftraster.c (DelOld): Add `const` to `profile` parameter. + (Vertical_Sweep_Span): Reduce scope of `target`. + (FT_Outline_Get_CBox): Reduce scope of `xMin`, `xMax`, `yMin`, `yMax`. + + * src/smooth/ftgrays.c (gray_render_conic): Reduce scope of `split`. + (gray_sweep, gray_sweep_direct): Reduce scope of `area`. + + * src/tools/apinames.c (names_dump) : Reduce scope of + `temp`. + +2021-07-24 AnuthaDev + + * .gitlab-ci.yml: Fixed cmake build, using correct options. + +2021-07-24 AnuthaDev + + * CMakeLists.txt: Make `cmake` handle disabled dependencies correctly. + + Include 'CMakeDependentOption'. + + Replace `FT_WITH_XXX` options with `FT_DISABLE_XXX` and `FT_REQUIRE_XXX` + pairs. Update option logic accordingly. + + Fixes #1066. + +2021-07-24 Ben Wagner + + [autofit] Split `afwrtsys.h`. + + The header file `afwrtsys.h` has two distinct functions: to include the + required writing system headers and also to generate code for each writing + system. At each current use site only one or the other is used, with + various macro trickery selecting one or the other. Split this header into + `afws-decl.h` for the required writing system declarations and `afws-iter.h` + for iterating over the writing systems to generate code. + + The motivation for this change is that the Visual C++ compiler treats the + standard include guard idiom like `#pragma once` 'if no non-comment code or + preprocessor directive comes before or after the standard form of the + idiom'. It appears to check this after macro expansion, so if + `WRITING_SYSTEM` expands to empty the bottom of `afwrtsys.h` is empty and + looks like the standard include guard idiom which is treated like `#pragma + once`, so subsequent inclusion of `afwrtsys.h` is elided. + + Fixes #1075. + + * src/autofit/afglobal.c (af_writing_system_classes), src/autofit/aftypes.h + (AF_WritingSystem), src/autofit/rules.mk (AUTOF_DRV_H): Updated. + + * src/autofit/afwrtsys.h: Split into... + * src/autofit/afws-decl.h, src/autofit/afws-iter.h: New files. diff --git a/local/recipes/libs/freetype2/source/LICENSE.TXT b/local/recipes/libs/freetype2/source/LICENSE.TXT new file mode 100644 index 0000000000..0f9df2177a --- /dev/null +++ b/local/recipes/libs/freetype2/source/LICENSE.TXT @@ -0,0 +1,47 @@ +FREETYPE LICENSES +----------------- + +The FreeType 2 font engine is copyrighted work and cannot be used +legally without a software license. In order to make this project +usable to a vast majority of developers, we distribute it under two +mutually exclusive open-source licenses. + +This means that *you* must choose *one* of the two licenses described +below, then obey all its terms and conditions when using FreeType 2 in +any of your projects or products. + + - The FreeType License, found in the file `docs/FTL.TXT`, which is + similar to the original BSD license *with* an advertising clause + that forces you to explicitly cite the FreeType project in your + product's documentation. All details are in the license file. + This license is suited to products which don't use the GNU General + Public License. + + Note that this license is compatible to the GNU General Public + License version 3, but not version 2. + + - The GNU General Public License version 2, found in + `docs/GPLv2.TXT` (any later version can be used also), for + programs which already use the GPL. Note that the FTL is + incompatible with GPLv2 due to its advertisement clause. + +The contributed BDF and PCF drivers come with a license similar to +that of the X Window System. It is compatible to the above two +licenses (see files `src/bdf/README` and `src/pcf/README`). The same +holds for the source code files `src/base/fthash.c` and +`include/freetype/internal/fthash.h`; they were part of the BDF driver +in earlier FreeType versions. + +The gzip module uses the zlib license (see `src/gzip/zlib.h`) which +too is compatible to the above two licenses. + +The files `src/autofit/ft-hb-ft.c`, `src/autofit/ft-hb-decls.h`, +`src/autofit/ft-hb-types.h`, and `src/autofit/hb-script-list.h` +contain code taken (almost) verbatim from the HarfBuzz library, which +uses the 'Old MIT' license compatible to the above two licenses. + +The MD5 checksum support (only used for debugging in development +builds) is in the public domain. + + +--- end of LICENSE.TXT --- diff --git a/local/recipes/libs/freetype2/source/MSBuild.rsp b/local/recipes/libs/freetype2/source/MSBuild.rsp new file mode 100644 index 0000000000..8401e60309 --- /dev/null +++ b/local/recipes/libs/freetype2/source/MSBuild.rsp @@ -0,0 +1,4 @@ +# MSBuild.rsp with default command-line switches +/clp:ForceConsoleColor +/p:Configuration=Release +#/p:WindowsTargetPlatformVersion=10.0.16299.0 diff --git a/local/recipes/libs/freetype2/source/MSBuild.sln b/local/recipes/libs/freetype2/source/MSBuild.sln new file mode 100644 index 0000000000..ba56ae2ef8 --- /dev/null +++ b/local/recipes/libs/freetype2/source/MSBuild.sln @@ -0,0 +1,66 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 or later +# +# You can build FreeType with MSBuild as follows +# +# MSBuild.exe -t:Rebuild +# -p:Configuration=Debug +# -p:Platform=x64 +# -p:UserDefines=FT_DEBUG_LOGGING +# MSBuild.sln +# +# or with different appropriate switches. The library file +# freetype.dll and/or freetype.lib should appear in the objs/ +# folder. A copy should be sent to ../freetype-demos/bin/ +# to be used with the demo programs. +# +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "builds\windows\vc2010\freetype.vcxproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|ARM64 = Debug|ARM64 + Debug|Win32 = Debug|Win32 + Debug Static|x64 = Debug Static|x64 + Debug Static|ARM64 = Debug Static|ARM64 + Debug Static|Win32 = Debug Static|Win32 + Release|x64 = Release|x64 + Release|ARM64 = Release|ARM64 + Release|Win32 = Release|Win32 + Release Static|x64 = Release Static|x64 + Release Static|ARM64 = Release Static|ARM64 + Release Static|Win32 = Release Static|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.ActiveCfg = Debug|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.Build.0 = Debug|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|ARM64.Build.0 = Debug|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|x64.ActiveCfg = Debug Static|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|x64.Build.0 = Debug Static|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|ARM64.ActiveCfg = Debug Static|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|ARM64.Build.0 = Debug Static|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.ActiveCfg = Debug Static|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.Build.0 = Debug Static|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = Release|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.Build.0 = Release|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|ARM64.ActiveCfg = Release|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|ARM64.Build.0 = Release|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|x64.ActiveCfg = Release Static|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|x64.Build.0 = Release Static|x64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|ARM64.ActiveCfg = Release Static|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|ARM64.Build.0 = Release Static|ARM64 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.ActiveCfg = Release Static|Win32 + {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.Build.0 = Release Static|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {90811697-0889-4381-80BC-C3FE8FA4931F} + EndGlobalSection +EndGlobal diff --git a/local/recipes/libs/freetype2/source/Makefile b/local/recipes/libs/freetype2/source/Makefile new file mode 100644 index 0000000000..03c0429837 --- /dev/null +++ b/local/recipes/libs/freetype2/source/Makefile @@ -0,0 +1,34 @@ +# +# FreeType 2 build system -- top-level Makefile +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Project names +# +PROJECT := freetype +PROJECT_TITLE := FreeType + +# The variable TOP_DIR holds the path to the topmost directory in the project +# engine source hierarchy. If it is not defined, default it to `.'. +# +TOP_DIR ?= . + +# The variable OBJ_DIR gives the location where object files and the +# FreeType library are built. +# +OBJ_DIR ?= $(TOP_DIR)/objs + + +include $(TOP_DIR)/builds/toplevel.mk + +# EOF diff --git a/local/recipes/libs/freetype2/source/README b/local/recipes/libs/freetype2/source/README new file mode 100644 index 0000000000..9e85fc8070 --- /dev/null +++ b/local/recipes/libs/freetype2/source/README @@ -0,0 +1,110 @@ +FreeType 2.14.3 +=============== + +Homepage: https://freetype.org + +FreeType is a freely available software library to render fonts. + +It is written in C, designed to be small, efficient, highly +customizable, and portable while capable of producing high-quality +output (glyph images) of most vector and bitmap font formats. + +Please read the `docs/CHANGES` file, it contains IMPORTANT +INFORMATION. + +Read the files `docs/INSTALL*` for installation instructions; see the +file `LICENSE.TXT` for the available licenses. + +For using FreeType's git repository instead of a distribution bundle, +please read file `README.git`. Note that you have to actually clone +the repository; using a snapshot will not work (in other words, don't +use gitlab's 'Download' button). + +The FreeType 2 API reference is located in directory `docs/reference`; +use the file `index.html` as the top entry point. [Please note that +currently the search function for locally installed documentation +doesn't work due to cross-site scripting issues.] + +Additional documentation is available as a separate package from our +sites. Go to + + https://download.savannah.gnu.org/releases/freetype/ + +and download one of the following files. + + freetype-doc-2.14.3.tar.xz + freetype-doc-2.14.3.tar.gz + ftdoc2143.zip + +To view the documentation online, go to + + https://freetype.org/freetype2/docs/ + + +Mailing Lists +------------- + +The preferred way of communication with the FreeType team is using +e-mail lists. + + general use and discussion: freetype@nongnu.org + engine internals, porting, etc.: freetype-devel@nongnu.org + announcements: freetype-announce@nongnu.org + git repository tracker: freetype-commit@nongnu.org + +The lists are moderated; see + + https://freetype.org/contact.html + +how to subscribe. + + +Bugs +---- + +Please submit bug reports at + + https://gitlab.freedesktop.org/freetype/freetype/-/issues + +This gitlab instance also supports confidential reports. + +Alternatively, but less preferable, you might report bugs by sending +an e-mail to the public mailing list `freetype-devel@nongnu.org`. +Don't forget to submit a detailed explanation of the problem -- there +is nothing worse than receiving a terse message that only says 'it +doesn't work'. + + +Patches +------- + +For larger changes please provide merge requests at + + https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests + +Alternatively, you can send patches to the `freetype-devel@nongnu.org` +mailing list -- and thank you in advance for your work on improving +FreeType! + +Details on the process can be found here: + + https://freetype.org/developer.html#patches + + +Enjoy! + + The FreeType Team + +---------------------------------------------------------------------- + +Copyright (C) 2006-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of README --- diff --git a/local/recipes/libs/freetype2/source/README.git b/local/recipes/libs/freetype2/source/README.git new file mode 100644 index 0000000000..16cf434dbf --- /dev/null +++ b/local/recipes/libs/freetype2/source/README.git @@ -0,0 +1,102 @@ +README.git +========== + + +repository issues +----------------- + +FreeType's official repository site is + + https://gitlab.freedesktop.org/freetype , + +from which the 'freetype.git' and 'freetype-demos.git' repositories +can be cloned in the usual way. + + git clone https://gitlab.freedesktop.org/freetype/freetype.git + git clone https://gitlab.freedesktop.org/freetype/freetype-demos.git + +If you want to use the Savannah mirror instead, you have to do a +slightly different incantation because the repository names contain +digit '2' for historical reasons. + + git clone \ + https://git.savannah.nongnu.org/git/freetype/freetype2.git \ + freetype + git clone \ + https://git.savannah.nongnu.org/git/freetype/freetype2-demos.git \ + freetype-demos + + +standard builds with `configure` +-------------------------------- + +The git repository doesn't contain pre-built configuration scripts for +UNIXish platforms. To generate them say + + sh autogen.sh + +which in turn depends on the following packages: + + automake (1.10.1) + libtool (2.2.4) + autoconf (2.62) + +The versions given in parentheses are known to work. Newer versions +should work too, of course. Note that `autogen.sh` also sets up +proper file permissions for the `configure` and auxiliary scripts. + +The `autogen.sh` script checks whether the versions of the above three +tools match the numbers above. Otherwise it will complain and suggest +either upgrading or using environment variables to point to more +recent versions of the required tools. + +Note that `aclocal` is provided by the 'automake' package on Linux, +and that `libtoolize` is called `glibtoolize` on Darwin (OS X). + + +alternative build methods +------------------------- + +For static builds that don't use platform-specific optimizations, no +configure script is necessary at all; saying + + make setup ansi + make + +should work on all platforms that have GNU `make` (or `makepp`). + +A build with `cmake` or `meson` can be done directly from the git +repository. However, if you want to use the `FT_DEBUG_LOGGING` macro +(see file `docs/DEBUG` for more information) it is currently mandatory +to execute `autogen.sh` in advance; this script clones the 'dlg' git +submodule and copies some files into FreeType's source tree. + + +Code of Conduct +--------------- + +Please note that this project is released with a Contributor Code of +Conduct (CoC). By participating in this project you agree to abide by +its terms, which you can find in the following link: + + https://www.freedesktop.org/wiki/CodeOfConduct + +CoC issues may be raised to the project maintainers at the following +address: + + wl@gnu.org + apodtele@gmail.com + +---------------------------------------------------------------------- + +Copyright (C) 2005-2026 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, +modified, and distributed under the terms of the FreeType project +license, LICENSE.TXT. By continuing to use, modify, or distribute +this file you indicate that you have read the license and understand +and accept it fully. + + +--- end of README.git --- diff --git a/local/recipes/libs/freetype2/source/autogen.sh b/local/recipes/libs/freetype2/source/autogen.sh new file mode 100755 index 0000000000..e6f1ebf234 --- /dev/null +++ b/local/recipes/libs/freetype2/source/autogen.sh @@ -0,0 +1,199 @@ +#!/bin/sh + +# Copyright (C) 2005-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +run () +{ + echo "running \`$*'" + eval $* + + if test $? != 0 ; then + echo "error while running \`$*'" + exit 1 + fi +} + +get_major_version () +{ + echo $1 | sed -e 's/\([0-9][0-9]*\)\..*/\1/g' +} + +get_minor_version () +{ + echo $1 | sed -e 's/[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g' +} + +get_patch_version () +{ + # tricky: some version numbers don't include a patch + # separated with a point, but something like 1.4-p6 + patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g'` + if test "$patch" = "$1"; then + patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\-p\([0-9][0-9]*\).*/\1/g'` + # if there isn't any patch number, default to 0 + if test "$patch" = "$1"; then + patch=0 + fi + fi + echo $patch +} + +# $1: version to check +# $2: minimum version + +compare_to_minimum_version () +{ + MAJOR1=`get_major_version $1` + MAJOR2=`get_major_version $2` + if test $MAJOR1 -lt $MAJOR2; then + echo 0 + return + else + if test $MAJOR1 -gt $MAJOR2; then + echo 1 + return + fi + fi + + MINOR1=`get_minor_version $1` + MINOR2=`get_minor_version $2` + if test $MINOR1 -lt $MINOR2; then + echo 0 + return + else + if test $MINOR1 -gt $MINOR2; then + echo 1 + return + fi + fi + + PATCH1=`get_patch_version $1` + PATCH2=`get_patch_version $2` + if test $PATCH1 -lt $PATCH2; then + echo 0 + else + echo 1 + fi +} + +# check the version of a given tool against a minimum version number +# +# $1: tool path +# $2: tool usual name (e.g. `aclocal') +# $3: tool variable (e.g. `ACLOCAL') +# $4: minimum version to check against +# $5: option field index used to extract the tool version from the +# output of --version + +check_tool_version () +{ + field=$5 + # assume the output of "[TOOL] --version" is "toolname (GNU toolname foo bar) version" + if test "$field"x = x; then + field=3 # default to 3 for all GNU autotools, after filtering enclosed string + fi + version=`$1 --version | sed -n '1s/([^)]*)/()/gp' | cut -d ' ' -f $field` + version_check=`compare_to_minimum_version $version $4` + if test "$version_check"x = 0x; then + echo "ERROR: Your version of the \`$2' tool is too old." + echo " Minimum version $4 is required (yours is version $version)." + echo " Please upgrade or use the $3 variable to point to a more recent one." + echo "" + exit 1 + fi +} + +# Solaris 10's shell doesn't like the `!` operator to negate the exit status. +if test -f ./builds/unix/configure.raw; then + : +else + echo "You must be in the same directory as \`autogen.sh'." + echo "Bootstrapping doesn't work if srcdir != builddir." + exit 1 +fi + +# On MacOS X, the GNU libtool is named `glibtool'. +HOSTOS=`uname` +if test "$LIBTOOLIZE"x != x; then + : +elif test "$HOSTOS"x = Darwinx; then + LIBTOOLIZE=glibtoolize +else + LIBTOOLIZE=libtoolize +fi + +if test "$ACLOCAL"x = x; then + ACLOCAL=aclocal +fi + +if test "$AUTOCONF"x = x; then + AUTOCONF=autoconf +fi + +check_tool_version $ACLOCAL aclocal ACLOCAL 1.10.1 +check_tool_version $LIBTOOLIZE libtoolize LIBTOOLIZE 2.2.4 +check_tool_version $AUTOCONF autoconf AUTOCONF 2.62 + +# This sets FREETYPE version. +eval `sed -n \ +-e 's/^#define *\(FREETYPE_MAJOR\) *\([0-9][0-9]*\).*/\1=\2/p' \ +-e 's/^#define *\(FREETYPE_MINOR\) *\([0-9][0-9]*\).*/\1=\2/p' \ +-e 's/^#define *\(FREETYPE_PATCH\) *\([0-9][0-9]*\).*/\1=\2/p' \ +include/freetype/freetype.h` + +if test "$FREETYPE_PATCH" = "0"; then + FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR +else + FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH +fi + +echo "FreeType $FREETYPE:" + +cd builds/unix + +echo "generating \`configure.ac'" +sed -e "s;@VERSION@;$FREETYPE;" \ + < configure.raw > configure.ac + +run aclocal -I . --force +run $LIBTOOLIZE --force --copy --install +run autoconf --force + +chmod +x install-sh + +cd ../.. + +chmod +x ./configure + +# Copy all necessary 'dlg' files. +copy_submodule_files () +{ + echo "Copying files from \`subprojects/dlg' to \`src/dlg' and \`include/dlg'" + mkdir include/dlg 2> /dev/null + cp $DLG_INC_DIR/output.h include/dlg + cp $DLG_INC_DIR/dlg.h include/dlg + cp $DLG_SRC_DIR/* src/dlg +} + +if test -d ".git" -o -h ".git"; then + DLG_INC_DIR=subprojects/dlg/include/dlg + DLG_SRC_DIR=subprojects/dlg/src/dlg + + if test -d "$DLG_INC_DIR"; then + : + else + echo "Checking out submodule in \`subprojects/dlg':" + git submodule update --init + fi + + copy_submodule_files +fi + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/amiga/README b/local/recipes/libs/freetype2/source/builds/amiga/README new file mode 100644 index 0000000000..afb06c3708 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/README @@ -0,0 +1,110 @@ + +README for the builds/amiga subdirectory. + +Copyright (C) 2005-2026 by +Werner Lemberg and Detlef Würkner. + +This file is part of the FreeType project, and may only be used, modified, +and distributed under the terms of the FreeType project license, +LICENSE.TXT. By continuing to use, modify, or distribute this file you +indicate that you have read the license and understand and accept it +fully. + + +The makefile.os4 is for the AmigaOS4 SDK. To use it, type +"make -f makefile.os4", it produces a link library libft2_ppc.a. + +The makefile is for ppc-morphos-gcc-2.95.3-bin.tgz (gcc 2.95.3 hosted on +68k-Amiga producing MorphOS-PPC-binaries from http://www.morphos.de). +To use it, type "make assign", then "make"; it produces a link library +libft2_ppc.a. + +The smakefile is a makefile for Amiga SAS/C 6.58 (no longer available, +latest sold version was 6.50, updates can be found in Aminet). It is +based on the version found in the sourcecode of ttf.library 0.83b for +FreeType 1.3.1 from Richard Griffith (ragriffi@sprynet.com, +http://ragriffi.home.sprynet.com). + +You will also need the latest include files and amiga.lib from the +Amiga web site (https://os.amigaworld.de/download.php?id=3) for +AmigaOS 3.9; the generated code should work under AmigaOS 2.04 and up. + +To use it, call "smake assign" and then "smake" from the builds/amiga +directory. The results are: + +- A link library "ft2_680x0.lib" (where x depends on the setting of + the CPU entry in the smakefile) containing all FreeType2 parts + except of the init code, debugging code, and the system interface + code. + +- ftsystem.o, an object module containing the standard version of the + system interface code which uses fopen() fclose() fread() fseek() + ftell() malloc() realloc() and free() from lib:sc.lib (not pure). + +- ftsystempure.o, an object module containing the pure version of the + system interface code which uses Open() Close() Read() Seek() + ExamineFH() AsmAllocPooled() AsmFreePooled() etc. This version can + be used in both normal programs and in Amiga run-time shared system + librarys (can be linked with lib:libinit.o, no copying of DATA and + BSS hunks for each OpenLibrary() necessary). Source code is in + src/base/ftsystem.c. + +- ftdebug.o, an object module containing the standard version of the + debugging code which uses vprintf() and exit() (not pure). + Debugging can be turned on in FT:include/freetype/config/ftoption.h + and with FT_SetTraceLevel(). + +- ftdebugpure.o, an object module containing the pure version of the + debugging code which uses KVPrintf() from lib:debug.lib and no + exit(). For debugging of Amiga run-time shared system libraries. + Source code is in src/base/ftdebug.c. + +- NO ftinit.o. Because linking with a link library should result in + linking only the needed object modules in it, but standard + ftsystem.o would force ALL FreeType2 modules to be linked to your + program, I decided to use a different scheme: You must #include + FT:src/base/ftinit.c in your sourcecode and specify with #define + statements which modules you need. See + include/freetype/config/ftmodule.h. + + +To use in your own programs: + +- Insert the #define and #include statements from top of + include/freetype/config/ftmodule.h in your source code and + uncomment the #define statements for the FreeType2 modules you need. + +- You can use either PARAMETERS=REGISTER or PARAMETERS=STACK for + calling the FreeType2 functions, because the link library and the + object files are compiled with PARAMETERS=BOTH. + +- "smake assign" (assign "FT:" to the FreeType2 main directory). + +- Compile your program. + +- Link with either ftsystem.o or ftsystempure.o, if debugging enabled + with either ftdebug.o or (ftdebugpure.o and lib:debug.lib), and with + ft2_680x0.lib as link library. + + +To adapt to other compilers: + +- The standard ANSI C maximum length of 31 significant characters in + identifiers is not enough for FreeType2. Check if your compiler has + a minimum length of 40 significant characters or can be switched to + it. "idlen=40" is the option for SAS/C. Setting #define + HAVE_LIMIT_ON_IDENTS in an include file may also work (not tested). + +- Make sure that the include directory in builds/amiga is searched + before the normal FreeType2 include directory, so you are able to + replace problematic include files with your own version (same may be + useful for the src directory). + +- An example of how to replace/workaround a problematic include file + is include/freetype/config/ftconfig.h; it changes a #define that + would prevent SAS/C from generating XDEF's where it should do that and + then includes the standard FreeType2 include file. + +Local Variables: +coding: latin-1 +End: diff --git a/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftconfig.h b/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftconfig.h new file mode 100644 index 0000000000..90ad5c853a --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftconfig.h @@ -0,0 +1,55 @@ +/***************************************************************************/ +/* */ +/* ftconfig.h */ +/* */ +/* Amiga-specific configuration file (specification only). */ +/* */ +/* Copyright (C) 2005-2026 by */ +/* Werner Lemberg and Detlef Würkner. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/* + * This is an example how to override the default FreeType2 header files + * with Amiga-specific changes. When the compiler searches this directory + * before the default directory, we can do some modifications. + * + * Here we must change FT_EXPORT_DEF so that SAS/C does + * generate the needed XDEFs. + */ + +#if 0 +#define FT_EXPORT_DEF( x ) extern x +#endif + +#undef FT_EXPORT_DEF +#define FT_EXPORT_DEF( x ) x + +/* Now include the original file */ +#ifndef __MORPHOS__ +#ifdef __SASC +#include "FT:include/freetype/config/ftconfig.h" +#else +#include "/FT/include/freetype/config/ftconfig.h" +#endif +#else +/* We must define that, it seems that + * lib/gcc-lib/ppc-morphos/2.95.3/include/syslimits.h is missing in + * ppc-morphos-gcc-2.95.3-bin.tgz (gcc for 68k producing MorphOS PPC elf + * binaries from http://www.morphos.de) + */ +#define _LIBC_LIMITS_H_ +#include "/FT/include/freetype/config/ftconfig.h" +#endif + +/* +Local Variables: +coding: latin-1 +End: +*/ diff --git a/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftmodule.h b/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftmodule.h new file mode 100644 index 0000000000..9f76b17a01 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/include/config/ftmodule.h @@ -0,0 +1,158 @@ +/***************************************************************************/ +/* */ +/* ftmodule.h */ +/* */ +/* Amiga-specific FreeType module selection. */ +/* */ +/* Copyright (C) 2005-2026 by */ +/* Werner Lemberg and Detlef Würkner. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + +/* + * To avoid that all your programs include all FreeType modules, + * you copy the following piece of source code into your own + * source file and specify which modules you really need in your + * application by uncommenting the appropriate lines. + */ +/* +//#define FT_USE_AUTOFIT // autofitter +//#define FT_USE_RASTER // monochrome rasterizer +//#define FT_USE_SMOOTH // anti-aliasing rasterizer +//#define FT_USE_TT // truetype font driver +//#define FT_USE_T1 // type1 font driver +//#define FT_USE_T42 // type42 font driver +//#define FT_USE_T1CID // cid-keyed type1 font driver // no cmap support +//#define FT_USE_CFF // opentype font driver +//#define FT_USE_BDF // bdf bitmap font driver +//#define FT_USE_PCF // pcf bitmap font driver +//#define FT_USE_PFR // pfr font driver +//#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver +//#define FT_USE_OTV // opentype validator +//#define FT_USE_GXV // truetype gx validator +#include "FT:src/base/ftinit.c" +*/ + +/* Make sure that the needed support modules are built in. + * Dependencies can be found by searching for FT_Get_Module. + */ + +#ifdef FT_USE_T42 +#define FT_USE_TT +#endif + +#ifdef FT_USE_TT +#define FT_USE_SFNT +#endif + +#ifdef FT_USE_CFF +#define FT_USE_SFNT +#define FT_USE_PSHINT +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_T1 +#define FT_USE_PSAUX +#define FT_USE_PSHINT +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_T1CID +#define FT_USE_PSAUX +#define FT_USE_PSHINT +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_PSAUX +#define FT_USE_PSNAMES +#endif + +#ifdef FT_USE_SFNT +#define FT_USE_PSNAMES +#endif + +/* Now include the modules */ + +#ifdef FT_USE_AUTOFIT +FT_USE_MODULE( FT_Module_Class, autofit_module_class ) +#endif + +#ifdef FT_USE_TT +FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) +#endif + +#ifdef FT_USE_T1 +FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) +#endif + +#ifdef FT_USE_CFF +FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) +#endif + +#ifdef FT_USE_T1CID +FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) +#endif + +#ifdef FT_USE_PFR +FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) +#endif + +#ifdef FT_USE_T42 +FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) +#endif + +#ifdef FT_USE_WINFNT +FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) +#endif + +#ifdef FT_USE_PCF +FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) +#endif + +#ifdef FT_USE_PSAUX +FT_USE_MODULE( FT_Module_Class, psaux_module_class ) +#endif + +#ifdef FT_USE_PSNAMES +FT_USE_MODULE( FT_Module_Class, psnames_module_class ) +#endif + +#ifdef FT_USE_PSHINT +FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) +#endif + +#ifdef FT_USE_RASTER +FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) +#endif + +#ifdef FT_USE_SFNT +FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) +#endif + +#ifdef FT_USE_SMOOTH +FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) +#endif + +#ifdef FT_USE_OTV +FT_USE_MODULE( FT_Module_Class, otv_module_class ) +#endif + +#ifdef FT_USE_BDF +FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) +#endif + +#ifdef FT_USE_GXV +FT_USE_MODULE( FT_Module_Class, gxv_module_class ) +#endif + +/* +Local Variables: +coding: latin-1 +End: +*/ diff --git a/local/recipes/libs/freetype2/source/builds/amiga/makefile b/local/recipes/libs/freetype2/source/builds/amiga/makefile new file mode 100644 index 0000000000..8b5a5c0b99 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/makefile @@ -0,0 +1,293 @@ +# +# Makefile for FreeType2 link library using ppc-morphos-gcc-2.95.3-bin.tgz +# (gcc 2.95.3 hosted on 68k-Amiga producing MorphOS-PPC-binaries from +# http://www.morphos.de) +# + + +# Copyright (C) 2005-2026 by +# Werner Lemberg and Detlef Würkner. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# +# to build from the builds/amiga directory call +# +# make assign +# make +# +# Your programs source code should start with this +# (uncomment the parts you do not need to keep the program small): +# ---8<--- +#define FT_USE_AUTOFIT // autofitter +#define FT_USE_RASTER // monochrome rasterizer +#define FT_USE_SMOOTH // anti-aliasing rasterizer +#define FT_USE_TT // truetype font driver +#define FT_USE_T1 // type1 font driver +#define FT_USE_T42 // type42 font driver +#define FT_USE_T1CID // cid-keyed type1 font driver +#define FT_USE_CFF // opentype font driver +#define FT_USE_BDF // bdf bitmap font driver +#define FT_USE_PCF // pcf bitmap font driver +#define FT_USE_PFR // pfr font driver +#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver +#define FT_USE_OTV // opentype validator +#define FT_USE_GXV // truetype gx validator +#include "FT:src/base/ftinit.c" +# ---8<--- +# +# link your programs with libft2_ppc.a and either ftsystem.ppc.o or ftsystempure.ppc.o +# (and either ftdebug.ppc.o or ftdebugpure.ppc.o if you enabled FT_DEBUG_LEVEL_ERROR or +# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). + +all: libft2_ppc.a ftsystem.ppc.o ftsystempure.ppc.o + +assign: + assign FT: // + +FTSRC = /FT/src + +CC = ppc-morphos-gcc +AR = ppc-morphos-ar rc +RANLIB = ppc-morphos-ranlib +LD = ppc-morphos-ld +CFLAGS = -DFT2_BUILD_LIBRARY -O2 -I/emu/emulinclude/includegcc -I/emu/include -Iinclude -I$(FTSRC) -I/FT/include + +# +# FreeType2 library base +# +ftbase.ppc.o: $(FTSRC)/base/ftbase.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftinit.ppc.o: $(FTSRC)/base/ftinit.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftsystem.ppc.o: $(FTSRC)/base/ftsystem.c + $(CC) -c $(CFLAGS) -o $@ $< + +# pure version for use in run-time library etc +ftsystempure.ppc.o: src/base/ftsystem.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftdebug.ppc.o: $(FTSRC)/base/ftdebug.c + $(CC) -c $(CFLAGS) -o $@ $< + +# pure version for use in run-time library etc +ftdebugpure.ppc.o: src/base/ftdebug.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library base extensions +# +ftbbox.ppc.o: $(FTSRC)/base/ftbbox.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftbdf.ppc.o: $(FTSRC)/base/ftbdf.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftbitmap.ppc.o: $(FTSRC)/base/ftbitmap.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftcid.ppc.o: $(FTSRC)/base/ftcid.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftfstype.ppc.o: $(FTSRC)/base/ftfstype.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftgasp.ppc.o: $(FTSRC)/base/ftgasp.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftglyph.ppc.o: $(FTSRC)/base/ftglyph.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftgxval.ppc.o: $(FTSRC)/base/ftgxval.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftmm.ppc.o: $(FTSRC)/base/ftmm.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftotval.ppc.o: $(FTSRC)/base/ftotval.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftpatent.ppc.o: $(FTSRC)/base/ftpatent.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftpfr.ppc.o: $(FTSRC)/base/ftpfr.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftstroke.ppc.o: $(FTSRC)/base/ftstroke.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftsynth.ppc.o: $(FTSRC)/base/ftsynth.c + $(CC) -c $(CFLAGS) -o $@ $< + +fttype1.ppc.o: $(FTSRC)/base/fttype1.c + $(CC) -c $(CFLAGS) -o $@ $< + +ftwinfnt.ppc.o: $(FTSRC)/base/ftwinfnt.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library autofitting module +# +autofit.ppc.o: $(FTSRC)/autofit/autofit.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library postscript hinting module +# +pshinter.ppc.o: $(FTSRC)/pshinter/pshinter.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library PS support module +# +psaux.ppc.o: $(FTSRC)/psaux/psaux.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library PS glyph names module +# +psnames.ppc.o: $(FTSRC)/psnames/psnames.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library monochrome raster module +# +raster.ppc.o: $(FTSRC)/raster/raster.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library anti-aliasing raster module +# +smooth.ppc.o: $(FTSRC)/smooth/smooth.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library 'sfnt' module +# +sfnt.ppc.o: $(FTSRC)/sfnt/sfnt.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library glyph and image caching system +# +ftcache.ppc.o: $(FTSRC)/cache/ftcache.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library OpenType font driver +# +cff.ppc.o: $(FTSRC)/cff/cff.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library TrueType font driver +# +truetype.ppc.o: $(FTSRC)/truetype/truetype.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library Type1 font driver +# +type1.ppc.o: $(FTSRC)/type1/type1.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library Type42 font driver +# +type42.ppc.o: $(FTSRC)/type42/type42.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library CID-keyed Type1 font driver +# +type1cid.ppc.o: $(FTSRC)/cid/type1cid.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library BDF bitmap font driver +# +bdf.ppc.o: $(FTSRC)/bdf/bdf.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library PCF bitmap font driver +# +pcf.ppc.o: $(FTSRC)/pcf/pcf.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library gzip support for compressed PCF bitmap fonts +# +gzip.ppc.o: $(FTSRC)/gzip/ftgzip.c + $(CC) -c $(CFLAGS) -o $@ $< + +# FreeType2 library bzip2 support for compressed PCF bitmap fonts +# +bzip2.ppc.o: $(FTSRC)/bzip2/ftbzip2.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library compress support for compressed PCF bitmap fonts +# +lzw.ppc.o: $(FTSRC)/lzw/ftlzw.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library PFR font driver +# +pfr.ppc.o: $(FTSRC)/pfr/pfr.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library Windows FNT/FON bitmap font driver +# +winfnt.ppc.o: $(FTSRC)/winfonts/winfnt.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library TrueTypeGX Validator +# +gxvalid.ppc.o: $(FTSRC)/gxvalid/gxvalid.c + $(CC) -c $(CFLAGS) -o $@ $< + +# +# FreeType2 library OpenType validator +# +otvalid.ppc.o: $(FTSRC)/otvalid/otvalid.c + $(CC) -c $(CFLAGS) -o $@ $< + +BASEPPC = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ + oftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o \ + ftgxval.ppc.o ftmm.ppc.o ftotval.ppc.o \ + ftpatent.ppc.o ftpfr.ppc.o ftstroke.ppc.o ftsynth.ppc.o \ + fttype1.ppc.o ftwinfnt.ppc.o + +DEBUGPPC = ftdebug.ppc.o ftdebugpure.ppc.o + +AFITPPC = autofit.ppc.o + +GXVPPC = gxvalid.ppc.o + +OTVPPC = otvalid.ppc.o + +PSPPC = psaux.ppc.o psnames.ppc.o pshinter.ppc.o + +RASTERPPC = raster.ppc.o smooth.ppc.o + +FONTDPPC = cff.ppc.o type1.ppc.o type42.ppc.o type1cid.ppc.o truetype.ppc.o\ + bdf.ppc.o pcf.ppc.o pfr.ppc.o winfnt.ppc.o + +libft2_ppc.a: $(BASEPPC) $(AFITPPC) $(GXVPPC) $(OTVPPC) $(PSPPC) $(RASTERPPC) sfnt.ppc.o ftcache.ppc.o $(FONTDPPC) gzip.ppc.o bzip2.ppc.o lzw.ppc.o + $(AR) $@ $(BASEPPC) $(AFITPPC) $(GXVPPC) $(OTVPPC) $(PSPPC) $(RASTERPPC) sfnt.ppc.o ftcache.ppc.o $(FONTDPPC) gzip.ppc.o bzip2.ppc.o lzw.ppc.o + -@ ($(RANLIB) $@ || true) >/dev/null 2>&1 + +#Local Variables: +#coding: latin-1 +#End: diff --git a/local/recipes/libs/freetype2/source/builds/amiga/makefile.os4 b/local/recipes/libs/freetype2/source/builds/amiga/makefile.os4 new file mode 100644 index 0000000000..88fe16f195 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/makefile.os4 @@ -0,0 +1,297 @@ +# +# Makefile for FreeType2 link library using gcc 4.0.3 from the +# AmigaOS4 SDK +# + + +# Copyright (C) 2005-2026 by +# Werner Lemberg and Detlef Würkner. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# to build from the builds/amiga directory call +# +# make -f makefile.os4 +# +# Your programs source code should start with this +# (uncomment the parts you do not need to keep the program small): +# ---8<--- +#define FT_USE_AUTOFIT // autofitter +#define FT_USE_RASTER // monochrome rasterizer +#define FT_USE_SMOOTH // anti-aliasing rasterizer +#define FT_USE_TT // truetype font driver +#define FT_USE_T1 // type1 font driver +#define FT_USE_T42 // type42 font driver +#define FT_USE_T1CID // cid-keyed type1 font driver +#define FT_USE_CFF // opentype font driver +#define FT_USE_BDF // bdf bitmap font driver +#define FT_USE_PCF // pcf bitmap font driver +#define FT_USE_PFR // pfr font driver +#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver +#define FT_USE_OTV // opentype validator +#define FT_USE_GXV // truetype gx validator +#include "FT:src/base/ftinit.c" +# ---8<--- +# +# link your programs with libft2_ppc.a and either ftsystem.ppc.o or ftsystempure.ppc.o +# (and either ftdebug.ppc.o or ftdebugpure.ppc.o if you enabled FT_DEBUG_LEVEL_ERROR or +# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). + +all: assign libft2_ppc.a ftsystem.ppc.o ftsystempure.ppc.o + +assign: + assign FT: // + +CC = ppc-amigaos-gcc +AR = ppc-amigaos-ar +RANLIB = ppc-amigaos-ranlib + +DIRFLAGS = -Iinclude -I/FT/src -I/FT/include -I/SDK/include + +WARNINGS = -Wall -W -Wundef -Wpointer-arith -Wbad-function-cast \ + -Waggregate-return -Wwrite-strings -Wshadow + +OPTIONS = -DFT2_BUILD_LIBRARY -DNDEBUG -fno-builtin +OPTIMIZE = -O2 -fomit-frame-pointer -fstrength-reduce -finline-functions + +CFLAGS = -mcrt=clib2 $(DIRFLAGS) $(WARNINGS) $(FT2FLAGS) $(OPTIONS) $(OPTIMIZE) + +# +# FreeType2 library base +# +ftbase.ppc.o: FT:src/base/ftbase.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbase.c + +ftinit.ppc.o: FT:src/base/ftinit.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftinit.c + +ftsystem.ppc.o: FT:src/base/ftsystem.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftsystem.c + +# pure version for use in run-time library etc +ftsystempure.ppc.o: src/base/ftsystem.c + $(CC) -c $(CFLAGS) -o $@ src/base/ftsystem.c + +# +# FreeType2 library base extensions +# +ftbbox.ppc.o: FT:src/base/ftbbox.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbbox.c + +ftbdf.ppc.o: FT:src/base/ftbdf.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbdf.c + +ftbitmap.ppc.o: FT:src/base/ftbitmap.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbitmap.c + +ftcid.ppc.o: FT:src/base/ftcid.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftcid.c + +ftdebug.ppc.o: FT:src/base/ftdebug.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftdebug.c + +# pure version for use in run-time library etc +ftdebugpure.ppc.o: src/base/ftdebug.c + $(CC) -c $(CFLAGS) -o $@ src/base/ftdebug.c + +ftfstype.ppc.o: FT:src/base/ftfstype.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftfstype.c + +ftgasp.ppc.o: FT:src/base/ftgasp.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftgasp.c + +ftglyph.ppc.o: FT:src/base/ftglyph.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftglyph.c + +ftgxval.ppc.o: FT:src/base/ftgxval.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftgxval.c + +ftmm.ppc.o: FT:src/base/ftmm.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftmm.c + +ftotval.ppc.o: FT:src/base/ftotval.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftotval.c + +ftpatent.ppc.o: FT:src/base/ftpatent.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftpatent.c + +ftpfr.ppc.o: FT:src/base/ftpfr.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftpfr.c + +ftstroke.ppc.o: FT:src/base/ftstroke.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftstroke.c + +ftsynth.ppc.o: FT:src/base/ftsynth.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftsynth.c + +fttype1.ppc.o: FT:src/base/fttype1.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/fttype1.c + +ftwinfnt.ppc.o: FT:src/base/ftwinfnt.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftwinfnt.c + +# +# FreeType2 library autofitting module +# +autofit.ppc.o: FT:src/autofit/autofit.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/autofit/autofit.c + +# +# FreeType2 library postscript hinting module +# +pshinter.ppc.o: FT:src/pshinter/pshinter.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/pshinter/pshinter.c + +# +# FreeType2 library PS support module +# +psaux.ppc.o: FT:src/psaux/psaux.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/psaux/psaux.c + +# +# FreeType2 library PS glyph names module +# +psnames.ppc.o: FT:src/psnames/psnames.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/psnames/psnames.c + +# +# FreeType2 library monochrome raster module +# +raster.ppc.o: FT:src/raster/raster.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/raster/raster.c + +# +# FreeType2 library anti-aliasing raster module +# +smooth.ppc.o: FT:src/smooth/smooth.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/smooth/smooth.c + +# +# FreeType2 library 'sfnt' module +# +sfnt.ppc.o: FT:src/sfnt/sfnt.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/sfnt/sfnt.c + +# +# FreeType2 library glyph and image caching system +# +ftcache.ppc.o: FT:src/cache/ftcache.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/cache/ftcache.c + +# +# FreeType2 library OpenType font driver +# +cff.ppc.o: FT:src/cff/cff.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/cff/cff.c + +# +# FreeType2 library TrueType font driver +# +truetype.ppc.o: FT:src/truetype/truetype.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/truetype/truetype.c + +# +# FreeType2 library Type1 font driver +# +type1.ppc.o: FT:src/type1/type1.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/type1/type1.c + +# +# FreeType2 library Type42 font driver +# +type42.ppc.o: FT:src/type42/type42.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/type42/type42.c + +# +# FreeType2 library CID-keyed Type1 font driver +# +type1cid.ppc.o: FT:src/cid/type1cid.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/cid/type1cid.c + +# +# FreeType2 library BDF bitmap font driver +# +bdf.ppc.o: FT:src/bdf/bdf.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/bdf/bdf.c + +# +# FreeType2 library PCF bitmap font driver +# +pcf.ppc.o: FT:src/pcf/pcf.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/pcf/pcf.c + +# +# FreeType2 library gzip support for compressed PCF bitmap fonts +# +gzip.ppc.o: FT:src/gzip/ftgzip.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/gzip/ftgzip.c + +# +# FreeType2 library bzip2 support for compressed PCF bitmap fonts +# +bzip2.ppc.o: FT:src/bzip2/ftbzip2.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/bzip2/ftbzip2.c + +# +# FreeType2 library compress support for compressed PCF bitmap fonts +# +lzw.ppc.o: FT:src/lzw/ftlzw.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/lzw/ftlzw.c + +# +# FreeType2 library PFR font driver +# +pfr.ppc.o: FT:src/pfr/pfr.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/pfr/pfr.c + +# +# FreeType2 library Windows FNT/FON bitmap font driver +# +winfnt.ppc.o: FT:src/winfonts/winfnt.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/winfonts/winfnt.c + +# +# FreeType2 library TrueTypeGX Validator +# +gxvalid.ppc.o: FT:src/gxvalid/gxvalid.c + $(CC) -c $(CFLAGS) -Wno-aggregate-return -o $@ /FT/src/gxvalid/gxvalid.c + +# +# FreeType2 library OpenType validator +# +otvalid.ppc.o: FT:src/otvalid/otvalid.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/otvalid/otvalid.c + +BASE = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ + ftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o \ + ftgxval.ppc.o ftmm.ppc.o ftotval.ppc.o \ + ftpatent.ppc.o ftpfr.ppc.o ftstroke.ppc.o ftsynth.ppc.o \ + fttype1.ppc.o ftwinfnt.ppc.o + +DEBUG = ftdebug.ppc.o ftdebugpure.ppc.o + +AFIT = autofit.ppc.o + +GXV = gxvalid.ppc.o + +OTV = otvalid.ppc.o + +PS = psaux.ppc.o psnames.ppc.o pshinter.ppc.o + +RASTER = raster.ppc.o smooth.ppc.o + +FONTD = cff.ppc.o type1.ppc.o type42.ppc.o type1cid.ppc.o truetype.ppc.o\ + bdf.ppc.o pcf.ppc.o pfr.ppc.o winfnt.ppc.o + +libft2_ppc.a: $(BASE) $(AFIT) $(GXV) $(OTV) $(PS) $(RASTER) sfnt.ppc.o ftcache.ppc.o $(FONTD) gzip.ppc.o lzw.ppc.o + $(AR) r $@ $(BASE) $(AFIT) $(GXV) $(OTV) $(PS) $(RASTER) sfnt.ppc.o ftcache.ppc.o $(FONTD) gzip.ppc.o lzw.ppc.o + $(RANLIB) $@ + +#Local Variables: +#coding: latin-1 +#End: diff --git a/local/recipes/libs/freetype2/source/builds/amiga/smakefile b/local/recipes/libs/freetype2/source/builds/amiga/smakefile new file mode 100644 index 0000000000..5edf4bec04 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/smakefile @@ -0,0 +1,299 @@ +# +# Makefile for FreeType2 link library using Amiga SAS/C 6.58 +# + + +# Copyright (C) 2005-2026 by +# Werner Lemberg and Detlef Würkner. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# to build from the builds/amiga directory call +# +# smake assign +# smake +# +# Your programs source code should start with this +# (uncomment the parts you do not need to keep the program small): +# ---8<--- +#define FT_USE_AUTOFIT // autofitter +#define FT_USE_RASTER // monochrome rasterizer +#define FT_USE_SMOOTH // anti-aliasing rasterizer +#define FT_USE_TT // truetype font driver +#define FT_USE_T1 // type1 font driver +#define FT_USE_T42 // type42 font driver +#define FT_USE_T1CID // cid-keyed type1 font driver +#define FT_USE_CFF // opentype font driver +#define FT_USE_BDF // bdf bitmap font driver +#define FT_USE_PCF // pcf bitmap font driver +#define FT_USE_PFR // pfr font driver +#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver +#define FT_USE_OTV // opentype validator +#define FT_USE_GXV // truetype gx validator +#include "FT:src/base/ftinit.c" +# ---8<--- +# +# link your programs with ft2_680x0.lib and either ftsystem.o or ftsystempure.o +# (and either ftdebug.o or ftdebugpure.o if you enabled FT_DEBUG_LEVEL_ERROR or +# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). + +OBJBASE = ftbase.o ftbbox.o ftbdf.o ftbitmap.o ftcid.o ftfstype.o \ + ftgasp.o ftglyph.o ftgxval.o ftmm.o ftotval.o \ + ftpatent.o ftpfr.o ftstroke.o ftsynth.o fttype1.o ftwinfnt.o + +OBJSYSTEM = ftsystem.o ftsystempure.o + +OBJDEBUG = ftdebug.o ftdebugpure.o + +OBJAFIT = autofit.o + +OBJGXV = gxvalid.o + +OBJOTV = otvalid.o + +OBJPS = psaux.o psnames.o pshinter.o + +OBJRASTER = raster.o smooth.o + +OBJSFNT = sfnt.o + +OBJCACHE = ftcache.o + +OBJFONTD = cff.o type1.o type42.o type1cid.o\ + truetype.o winfnt.o bdf.o pcf.o pfr.o + +CORE = FT:src/ + +CPU = 68000 +#CPU = 68020 +#CPU = 68030 +#CPU = 68040 +#CPU = 68060 + +OPTIMIZER = optinlocal + +SCFLAGS = optimize opttime optsched strmerge data=faronly idlen=50 cpu=$(CPU)\ + idir=include/ idir=$(CORE) idir=FT:include/ nostackcheck nochkabort\ + noicons ignore=79,85,110,306 parameters=both define=FT2_BUILD_LIBRARY + +LIB = ft2_$(CPU).lib + +# sample linker options +OPTS = link lib=$(LIB),lib:sc.lib,lib:amiga.lib,lib:debug.lib\ + smallcode smalldata noicons utillib + +# sample program entry +#myprog: myprog.c ftsystem.o $(LIB) +# sc $< programname=$@ ftsystem.o $(SCFLAGS) $(OPTS) + +all: $(LIB) $(OBJSYSTEM) $(OBJDEBUG) + +assign: + assign FT: // + +# uses separate object modules in lib to make for easier debugging +# also, can make smaller programs if entire engine is not used +ft2_$(CPU).lib: $(OBJBASE) $(OBJAFIT) $(OBJOTV) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) lzw.o gzip.o bzip2.o + oml $@ r $(OBJBASE) $(OBJAFIT) $(OBJOTV) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) lzw.o gzip.o bzip2.o + +clean: + -delete \#?.o + +realclean: clean + -delete ft2$(CPU).lib + +# +# freetype library base +# +ftbase.o: $(CORE)base/ftbase.c + sc $(SCFLAGS) objname=$@ $< +ftinit.o: $(CORE)base/ftinit.c + sc $(SCFLAGS) objname=$@ $< +ftsystem.o: $(CORE)base/ftsystem.c + sc $(SCFLAGS) objname=$@ $< +ftsystempure.o: src/base/ftsystem.c ## pure version for use in run-time library etc + sc $(SCFLAGS) objname=$@ $< +ftdebug.o: $(CORE)base/ftdebug.c + sc $(SCFLAGS) objname=$@ $< +ftdebugpure.o: src/base/ftdebug.c ## pure version for use in run-time library etc + sc $(SCFLAGS) objname=$@ $< +# +# freetype library base extensions +# +ftbbox.o: $(CORE)base/ftbbox.c + sc $(SCFLAGS) objname=$@ $< +ftbdf.o: $(CORE)base/ftbdf.c + sc $(SCFLAGS) objname=$@ $< +ftbitmap.o: $(CORE)base/ftbitmap.c + sc $(SCFLAGS) objname=$@ $< +ftcid.o: $(CORE)base/ftcid.c + sc $(SCFLAGS) objname=$@ $< +ftfstype.o: $(CORE)base/ftfstype.c + sc $(SCFLAGS) objname=$@ $< +ftgasp.o: $(CORE)base/ftgasp.c + sc $(SCFLAGS) objname=$@ $< +ftglyph.o: $(CORE)base/ftglyph.c + sc $(SCFLAGS) objname=$@ $< +ftgxval.o: $(CORE)base/ftgxval.c + sc $(SCFLAGS) objname=$@ $< +ftmm.o: $(CORE)base/ftmm.c + sc $(SCFLAGS) objname=$@ $< +ftotval.o: $(CORE)base/ftotval.c + sc $(SCFLAGS) objname=$@ $< +ftpatent.o: $(CORE)base/ftpatent.c + sc $(SCFLAGS) objname=$@ $< +ftpfr.o: $(CORE)base/ftpfr.c + sc $(SCFLAGS) objname=$@ $< +ftstroke.o: $(CORE)base/ftstroke.c + sc $(SCFLAGS) objname=$@ $< +ftsynth.o: $(CORE)base/ftsynth.c + sc $(SCFLAGS) objname=$@ $< +fttype1.o: $(CORE)base/fttype1.c + sc $(SCFLAGS) objname=$@ $< +ftwinfnt.o: $(CORE)base/ftwinfnt.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library autofitter module +# +autofit.o: $(CORE)autofit/autofit.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library PS hinting module +# +pshinter.o: $(CORE)pshinter/pshinter.c + sc $(SCFLAGS) objname=$@ $< +# +# freetype library PS support module +# +psaux.o: $(CORE)psaux/psaux.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library PS glyph names module +# +psnames.o: $(CORE)psnames/psnames.c + sc $(SCFLAGS) code=far objname=$@ $< + +# +# freetype library monochrome raster module +# +raster.o: $(CORE)raster/raster.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library anti-aliasing raster module +# +smooth.o: $(CORE)smooth/smooth.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library 'sfnt' module +# +sfnt.o: $(CORE)sfnt/sfnt.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library glyph and image caching system (still experimental) +# +ftcache.o: $(CORE)cache/ftcache.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library OpenType font driver +# +cff.o: $(CORE)cff/cff.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library TrueType font driver +# +truetype.o: $(CORE)truetype/truetype.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library Type1 font driver +# +type1.o: $(CORE)type1/type1.c + sc $(SCFLAGS) objname=$@ $< + +# +# FreeType2 library Type42 font driver +# +type42.o: $(CORE)type42/type42.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library CID-keyed Type1 font driver +# +type1cid.o: $(CORE)cid/type1cid.c + sc $(SCFLAGS) objname=$@ $< +# +# freetype library CID-keyed Type1 font driver extensions +# +#cidafm.o: $(CORE)cid/cidafm.c +# sc $(SCFLAGS) objname=$@ $< + +# +# freetype library BDF bitmap font driver +# +bdf.o: $(CORE)bdf/bdf.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library PCF bitmap font driver +# +pcf.o: $(CORE)pcf/pcf.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library gzip support for compressed PCF bitmap fonts +# +gzip.o: $(CORE)gzip/ftgzip.c + sc $(SCFLAGS) define FAR objname=$@ $< + +# +# freetype library bzip2 support for compressed PCF bitmap fonts +# +bzip2.o: $(CORE)bzip2/ftbzip2.c + sc $(SCFLAGS) define FAR objname=$@ $< + +# +# freetype library compress support for compressed PCF bitmap fonts +# +lzw.o: $(CORE)lzw/ftlzw.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library PFR font driver +# +pfr.o: $(CORE)pfr/pfr.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library Windows FNT/FON bitmap font driver +# +winfnt.o: $(CORE)winfonts/winfnt.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library TrueTypeGX validator +# +gxvalid.o: $(CORE)gxvalid/gxvalid.c + sc $(SCFLAGS) objname=$@ $< + +# +# freetype library OpenType validator +# +otvalid.o: $(CORE)otvalid/otvalid.c + sc $(SCFLAGS) objname=$@ $< + +#Local Variables: +#coding: latin-1 +#End: diff --git a/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftdebug.c b/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftdebug.c new file mode 100644 index 0000000000..a458bbad1a --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftdebug.c @@ -0,0 +1,348 @@ +/**************************************************************************** + * + * ftdebug.c + * + * Debugging and logging component for amiga (body). + * + * Copyright (C) 1996-2026 by + * David Turner, Robert Wilhelm, Werner Lemberg, and Detlef Wuerkner. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This component contains various macros and functions used to ease the + * debugging of the FreeType engine. Its main purpose is in assertion + * checking, tracing, and error detection. + * + * There are now three debugging modes: + * + * - trace mode + * + * Error and trace messages are sent to the log file (which can be the + * standard error output). + * + * - error mode + * + * Only error messages are generated. + * + * - release mode: + * + * No error message is sent or generated. The code is free from any + * debugging parts. + * + */ + + + /* + * Based on the default `ftdebug.c' file, + * replaced `vprintf' with `KVPrintF', + * commented out `exit', + * replaced `getenv' with `GetVar'. + */ + +#include +#include +#include +#include + +#define __NOLIBBASE__ +#define __NOLOBALIFACE__ +#define __USE_INLINE__ + +#include +#include + +#ifndef __amigaos4__ + extern struct Library* DOSBase; +#else + extern struct DOSIFace* IDOS; +#endif + + +#include +#include +#include + + +#ifdef FT_DEBUG_LEVEL_ERROR + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Message( const char* fmt, + ... ) + { + va_list ap; + + + va_start( ap, fmt ); + KVPrintF( fmt, ap ); + va_end( ap ); + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Panic( const char* fmt, + ... ) + { + va_list ap; + + + va_start( ap, fmt ); + KVPrintF( fmt, ap ); + va_end( ap ); + + /* exit( EXIT_FAILURE ); */ + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( int ) + FT_Throw( FT_Error error, + int line, + const char* file ) + { +#if 0 + /* activating the code in this block makes FreeType very chatty */ + fprintf( stderr, + "%s:%d: error 0x%02x: %s\n", + file, + line, + error, + FT_Error_String( error ) ); +#else + FT_UNUSED( error ); + FT_UNUSED( line ); + FT_UNUSED( file ); +#endif + + return 0; + } + +#endif /* FT_DEBUG_LEVEL_ERROR */ + + + +#ifdef FT_DEBUG_LEVEL_TRACE + + /* array of trace levels, initialized to 0; */ + /* this gets adjusted at run-time */ + static int ft_trace_levels_enabled[trace_count]; + + /* array of trace levels, always initialized to 0 */ + static int ft_trace_levels_disabled[trace_count]; + + /* a pointer to either `ft_trace_levels_enabled' */ + /* or `ft_trace_levels_disabled' */ + int* ft_trace_levels; + + /* define array of trace toggle names */ +#define FT_TRACE_DEF( x ) #x , + + static const char* ft_trace_toggles[trace_count + 1] = + { +#include + NULL + }; + +#undef FT_TRACE_DEF + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( FT_Int ) + FT_Trace_Get_Count( void ) + { + return trace_count; + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( const char * ) + FT_Trace_Get_Name( FT_Int idx ) + { + int max = FT_Trace_Get_Count(); + + + if ( idx < max ) + return ft_trace_toggles[idx]; + else + return NULL; + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Trace_Disable( void ) + { + ft_trace_levels = ft_trace_levels_disabled; + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Trace_Enable( void ) + { + ft_trace_levels = ft_trace_levels_enabled; + } + + + /************************************************************************** + * + * Initialize the tracing sub-system. This is done by retrieving the + * value of the `FT2_DEBUG' environment variable. It must be a list of + * toggles, separated by spaces, `;', or `,'. Example: + * + * export FT2_DEBUG="any:3 memory:7 stream:5" + * + * This requests that all levels be set to 3, except the trace level for + * the memory and stream components which are set to 7 and 5, + * respectively. + * + * See the file `include/freetype/internal/fttrace.h' for details of + * the available toggle names. + * + * The level must be between 0 and 7; 0 means quiet (except for serious + * runtime errors), and 7 means _very_ verbose. + */ + FT_BASE_DEF( void ) + ft_debug_init( void ) + { + /* const char* ft2_debug = ft_getenv( "FT2_DEBUG" ); */ + char buf[256]; + const char* ft2_debug = &buf[0]; + + + /* if ( ft2_debug ) */ + if ( GetVar( "FT2_DEBUG", (STRPTR)ft2_debug, 256, LV_VAR ) > 0 ) + { + const char* p = ft2_debug; + const char* q; + + + for ( ; *p; p++ ) + { + /* skip leading whitespace and separators */ + if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' ) + continue; + + /* read toggle name, followed by ':' */ + q = p; + while ( *p && *p != ':' ) + p++; + + if ( !*p ) + break; + + if ( *p == ':' && p > q ) + { + FT_Int n, i, len = (FT_Int)( p - q ); + FT_Int level = -1, found = -1; + + + for ( n = 0; n < trace_count; n++ ) + { + const char* toggle = ft_trace_toggles[n]; + + + for ( i = 0; i < len; i++ ) + { + if ( toggle[i] != q[i] ) + break; + } + + if ( i == len && toggle[i] == 0 ) + { + found = n; + break; + } + } + + /* read level */ + p++; + if ( *p ) + { + level = *p - '0'; + if ( level < 0 || level > 7 ) + level = -1; + } + + if ( found >= 0 && level >= 0 ) + { + if ( found == trace_any ) + { + /* special case for `any' */ + for ( n = 0; n < trace_count; n++ ) + ft_trace_levels_enabled[n] = level; + } + else + ft_trace_levels_enabled[found] = level; + } + } + } + } + + ft_trace_levels = ft_trace_levels_enabled; + } + + +#else /* !FT_DEBUG_LEVEL_TRACE */ + + + FT_BASE_DEF( void ) + ft_debug_init( void ) + { + /* nothing */ + } + + + FT_BASE_DEF( FT_Int ) + FT_Trace_Get_Count( void ) + { + return 0; + } + + + FT_BASE_DEF( const char * ) + FT_Trace_Get_Name( FT_Int idx ) + { + FT_UNUSED( idx ); + + return NULL; + } + + + FT_BASE_DEF( void ) + FT_Trace_Disable( void ) + { + /* nothing */ + } + + + /* documentation is in ftdebug.h */ + + FT_BASE_DEF( void ) + FT_Trace_Enable( void ) + { + /* nothing */ + } + + +#endif /* !FT_DEBUG_LEVEL_TRACE */ + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftsystem.c b/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftsystem.c new file mode 100644 index 0000000000..201ef0bde3 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/amiga/src/base/ftsystem.c @@ -0,0 +1,530 @@ +/***************************************************************************/ +/* */ +/* ftsystem.c */ +/* */ +/* Amiga-specific FreeType low-level system interface (body). */ +/* */ +/* Copyright (C) 1996-2026 by */ +/* David Turner, Robert Wilhelm, Werner Lemberg and Detlef Würkner. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + /*************************************************************************/ + /* */ + /* This file contains the Amiga interface used by FreeType to access */ + /* low-level, i.e. memory management, i/o access as well as thread */ + /* synchronisation. */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* Maintained by Detlef Würkner */ + /* */ + /* Based on the original ftsystem.c, */ + /* modified to avoid fopen(), fclose(), fread(), fseek(), ftell(), */ + /* malloc(), realloc(), and free(). */ + /* */ + /* Those C library functions are often not thread-safe or cant be */ + /* used in a shared Amiga library. If that's not a problem for you, */ + /* you can of course use the default ftsystem.c with C library calls */ + /* instead. */ + /* */ + /* This implementation needs exec V39+ because it uses AllocPooled() etc */ + /* */ + /*************************************************************************/ + +#define __NOLIBBASE__ +#define __NOGLOBALIFACE__ +#define __USE_INLINE__ +#include +#include +#include +#ifdef __amigaos4__ +extern struct ExecIFace *IExec; +extern struct DOSIFace *IDOS; +#else +extern struct Library *SysBase; +extern struct Library *DOSBase; +#endif + +#define IOBUF_SIZE 512 + +/* structure that helps us to avoid + * useless calls of Seek() and Read() + */ +struct SysFile +{ + BPTR file; + ULONG iobuf_start; + ULONG iobuf_end; + UBYTE iobuf[IOBUF_SIZE]; +}; + +#ifndef __amigaos4__ +/* C implementation of AllocVecPooled (see autodoc exec/AllocPooled) */ +APTR +Alloc_VecPooled( APTR poolHeader, + ULONG memSize ) +{ + ULONG newSize = memSize + sizeof ( ULONG ); + ULONG *mem = AllocPooled( poolHeader, newSize ); + + if ( !mem ) + return NULL; + *mem = newSize; + return mem + 1; +} + +/* C implementation of FreeVecPooled (see autodoc exec/AllocPooled) */ +void +Free_VecPooled( APTR poolHeader, + APTR memory ) +{ + ULONG *realmem = (ULONG *)memory - 1; + + FreePooled( poolHeader, realmem, *realmem ); +} +#endif + +#include +#include FT_CONFIG_CONFIG_H +#include +#include +#include +#include + +#include +#include +#include + + + /*************************************************************************/ + /* */ + /* MEMORY MANAGEMENT INTERFACE */ + /* */ + /*************************************************************************/ + + /*************************************************************************/ + /* */ + /* It is not necessary to do any error checking for the */ + /* allocation-related functions. This is done by the higher level */ + /* routines like ft_mem_alloc() or ft_mem_realloc(). */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* */ + /* ft_alloc */ + /* */ + /* */ + /* The memory allocation function. */ + /* */ + /* */ + /* memory :: A pointer to the memory object. */ + /* */ + /* size :: The requested size in bytes. */ + /* */ + /* */ + /* The address of newly allocated block. */ + /* */ + FT_CALLBACK_DEF( void* ) + ft_alloc( FT_Memory memory, + long size ) + { +#ifdef __amigaos4__ + return AllocVecPooled( memory->user, size ); +#else + return Alloc_VecPooled( memory->user, size ); +#endif + } + + + /*************************************************************************/ + /* */ + /* */ + /* ft_realloc */ + /* */ + /* */ + /* The memory reallocation function. */ + /* */ + /* */ + /* memory :: A pointer to the memory object. */ + /* */ + /* cur_size :: The current size of the allocated memory block. */ + /* */ + /* new_size :: The newly requested size in bytes. */ + /* */ + /* block :: The current address of the block in memory. */ + /* */ + /* */ + /* The address of the reallocated memory block. */ + /* */ + FT_CALLBACK_DEF( void* ) + ft_realloc( FT_Memory memory, + long cur_size, + long new_size, + void* block ) + { + void* new_block; + +#ifdef __amigaos4__ + new_block = AllocVecPooled ( memory->user, new_size ); +#else + new_block = Alloc_VecPooled ( memory->user, new_size ); +#endif + if ( new_block != NULL ) + { + CopyMem ( block, new_block, + ( new_size > cur_size ) ? cur_size : new_size ); +#ifdef __amigaos4__ + FreeVecPooled ( memory->user, block ); +#else + Free_VecPooled ( memory->user, block ); +#endif + } + return new_block; + } + + + /*************************************************************************/ + /* */ + /* */ + /* ft_free */ + /* */ + /* */ + /* The memory release function. */ + /* */ + /* */ + /* memory :: A pointer to the memory object. */ + /* */ + /* block :: The address of block in memory to be freed. */ + /* */ + FT_CALLBACK_DEF( void ) + ft_free( FT_Memory memory, + void* block ) + { +#ifdef __amigaos4__ + FreeVecPooled( memory->user, block ); +#else + Free_VecPooled( memory->user, block ); +#endif + } + + + /*************************************************************************/ + /* */ + /* RESOURCE MANAGEMENT INTERFACE */ + /* */ + /*************************************************************************/ + + + /*************************************************************************/ + /* */ + /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ + /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ + /* messages during execution. */ + /* */ +#undef FT_COMPONENT +#define FT_COMPONENT io + + /* We use the macro STREAM_FILE for convenience to extract the */ + /* system-specific stream handle from a given FreeType stream object */ +#define STREAM_FILE( stream ) ( (struct SysFile *)stream->descriptor.pointer ) + + + /*************************************************************************/ + /* */ + /* */ + /* ft_amiga_stream_close */ + /* */ + /* */ + /* The function to close a stream. */ + /* */ + /* */ + /* stream :: A pointer to the stream object. */ + /* */ + FT_CALLBACK_DEF( void ) + ft_amiga_stream_close( FT_Stream stream ) + { + struct SysFile* sysfile; + + sysfile = STREAM_FILE( stream ); + Close ( sysfile->file ); + FreeMem ( sysfile, sizeof ( struct SysFile )); + + stream->descriptor.pointer = NULL; + stream->size = 0; + stream->base = NULL; + } + + + /*************************************************************************/ + /* */ + /* */ + /* ft_amiga_stream_io */ + /* */ + /* */ + /* The function to open a stream. */ + /* */ + /* */ + /* stream :: A pointer to the stream object. */ + /* */ + /* offset :: The position in the data stream to start reading. */ + /* */ + /* buffer :: The address of buffer to store the read data. */ + /* */ + /* count :: The number of bytes to read from the stream. */ + /* */ + /* */ + /* The number of bytes actually read. */ + /* */ + FT_CALLBACK_DEF( unsigned long ) + ft_amiga_stream_io( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ) + { + struct SysFile* sysfile; + unsigned long read_bytes; + + if ( count != 0 ) + { + sysfile = STREAM_FILE( stream ); + + /* handle the seek */ + if ( (offset < sysfile->iobuf_start) || (offset + count > sysfile->iobuf_end) ) + { + /* requested offset implies we need a buffer refill */ + if ( !sysfile->iobuf_end || offset != sysfile->iobuf_end ) + { + /* a physical seek is necessary */ + Seek( sysfile->file, offset, OFFSET_BEGINNING ); + } + sysfile->iobuf_start = offset; + sysfile->iobuf_end = 0; /* trigger a buffer refill */ + } + + /* handle the read */ + if ( offset + count <= sysfile->iobuf_end ) + { + /* we have buffer and requested bytes are all inside our buffer */ + CopyMem( &sysfile->iobuf[offset - sysfile->iobuf_start], buffer, count ); + read_bytes = count; + } + else + { + /* (re)fill buffer */ + if ( count <= IOBUF_SIZE ) + { + /* requested bytes is a subset of the buffer */ + read_bytes = Read( sysfile->file, sysfile->iobuf, IOBUF_SIZE ); + if ( read_bytes == -1UL ) + { + /* error */ + read_bytes = 0; + } + else + { + sysfile->iobuf_end = offset + read_bytes; + CopyMem( sysfile->iobuf, buffer, count ); + if ( read_bytes > count ) + { + read_bytes = count; + } + } + } + else + { + /* we actually need more than our buffer can hold, so we decide + ** to do a single big read, and then copy the last IOBUF_SIZE + ** bytes of that to our internal buffer for later use */ + read_bytes = Read( sysfile->file, buffer, count ); + if ( read_bytes == -1UL ) + { + /* error */ + read_bytes = 0; + } + else + { + ULONG bufsize; + + bufsize = ( read_bytes > IOBUF_SIZE ) ? IOBUF_SIZE : read_bytes; + sysfile->iobuf_end = offset + read_bytes; + sysfile->iobuf_start = sysfile->iobuf_end - bufsize; + CopyMem( &buffer[read_bytes - bufsize] , sysfile->iobuf, bufsize ); + } + } + } + } + else + { + read_bytes = 0; + } + + return read_bytes; + } + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( FT_Error ) + FT_Stream_Open( FT_Stream stream, + const char* filepathname ) + { + struct FileInfoBlock* fib; + struct SysFile* sysfile; + + + if ( !stream ) + return FT_THROW( Invalid_Stream_Handle ); + +#ifdef __amigaos4__ + sysfile = AllocMem ( sizeof (struct SysFile ), MEMF_SHARED ); +#else + sysfile = AllocMem ( sizeof (struct SysFile ), MEMF_PUBLIC ); +#endif + if ( !sysfile ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + + return FT_THROW( Cannot_Open_Resource ); + } + sysfile->file = Open( (STRPTR)filepathname, MODE_OLDFILE ); + if ( !sysfile->file ) + { + FreeMem ( sysfile, sizeof ( struct SysFile )); + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + + return FT_THROW( Cannot_Open_Resource ); + } + + fib = AllocDosObject( DOS_FIB, NULL ); + if ( !fib ) + { + Close ( sysfile->file ); + FreeMem ( sysfile, sizeof ( struct SysFile )); + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + + return FT_THROW( Cannot_Open_Resource ); + } + if ( !( ExamineFH( sysfile->file, fib ) ) ) + { + FreeDosObject( DOS_FIB, fib ); + Close ( sysfile->file ); + FreeMem ( sysfile, sizeof ( struct SysFile )); + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + + return FT_THROW( Cannot_Open_Resource ); + } + stream->size = fib->fib_Size; + FreeDosObject( DOS_FIB, fib ); + + stream->descriptor.pointer = (void *)sysfile; + stream->pathname.pointer = (char*)filepathname; + sysfile->iobuf_start = 0; + sysfile->iobuf_end = 0; + stream->pos = 0; + + stream->read = ft_amiga_stream_io; + stream->close = ft_amiga_stream_close; + + if ( !stream->size ) + { + ft_amiga_stream_close( stream ); + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " opened `%s' but zero-sized\n", filepathname )); + return FT_THROW( Cannot_Open_Stream ); + } + + FT_TRACE1(( "FT_Stream_Open:" )); + FT_TRACE1(( " opened `%s' (%ld bytes) successfully\n", + filepathname, stream->size )); + + return FT_Err_Ok; + } + + +#ifdef FT_DEBUG_MEMORY + + extern FT_Int + ft_mem_debug_init( FT_Memory memory ); + + extern void + ft_mem_debug_done( FT_Memory memory ); + +#endif + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( FT_Memory ) + FT_New_Memory( void ) + { + FT_Memory memory; + + +#ifdef __amigaos4__ + memory = (FT_Memory)AllocVec( sizeof ( *memory ), MEMF_SHARED ); +#else + memory = (FT_Memory)AllocVec( sizeof ( *memory ), MEMF_PUBLIC ); +#endif + if ( memory ) + { +#ifdef __amigaos4__ + memory->user = CreatePool( MEMF_SHARED, 16384, 16384 ); +#else + memory->user = CreatePool( MEMF_PUBLIC, 16384, 16384 ); +#endif + if ( memory->user == NULL ) + { + FreeVec( memory ); + memory = NULL; + } + else + { + memory->alloc = ft_alloc; + memory->realloc = ft_realloc; + memory->free = ft_free; +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_init( memory ); +#endif + } + } + + return memory; + } + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( void ) + FT_Done_Memory( FT_Memory memory ) + { +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_done( memory ); +#endif + + DeletePool( memory->user ); + FreeVec( memory ); + } + +/* +Local Variables: +coding: latin-1 +End: +*/ +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/ansi/ansi-def.mk b/local/recipes/libs/freetype2/source/builds/ansi/ansi-def.mk new file mode 100644 index 0000000000..7b4564a667 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/ansi/ansi-def.mk @@ -0,0 +1,77 @@ +# +# FreeType 2 configuration rules for a `normal' ANSI system +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DELETE := rm -f +CAT := cat +SEP := / +PLATFORM_DIR := $(TOP_DIR)/builds/ansi +PLATFORM := ansi + +# This is used for `make refdoc' and `make refdoc-venv' +# +BIN := bin + +# The directory where all library files are placed. +# +# By default, this is the same as $(OBJ_DIR); however, this can be changed +# to suit particular needs. +# +LIB_DIR := $(OBJ_DIR) + + +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. +# +LIBRARY := lib$(PROJECT) + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/ansi/ansi.mk b/local/recipes/libs/freetype2/source/builds/ansi/ansi.mk new file mode 100644 index 0000000000..31a60469d8 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/ansi/ansi.mk @@ -0,0 +1,21 @@ +# +# FreeType 2 configuration rules for a `normal' pseudo ANSI compiler/system +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +include $(TOP_DIR)/builds/ansi/ansi-def.mk +include $(TOP_DIR)/builds/compiler/ansi-cc.mk +include $(TOP_DIR)/builds/link_std.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/atari/ATARI.H b/local/recipes/libs/freetype2/source/builds/atari/ATARI.H new file mode 100644 index 0000000000..4ddd2eb2eb --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/ATARI.H @@ -0,0 +1,20 @@ +#if defined( GXVALID_H_ ) +#pragma warn -aus /* too many unevaluated variables in gxvalid */ +#endif + +#ifndef ATARI_H +#define ATARI_H + +#pragma warn -stu + +/* PureC doesn't like 32bit enumerations */ + +#ifndef FT_IMAGE_TAG +#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value +#endif /* FT_IMAGE_TAG */ + +#ifndef FT_ENC_TAG +#define FT_ENC_TAG( value, a, b, c, d ) value +#endif /* FT_ENC_TAG */ + +#endif /* ATARI_H */ diff --git a/local/recipes/libs/freetype2/source/builds/atari/FNames.SIC b/local/recipes/libs/freetype2/source/builds/atari/FNames.SIC new file mode 100644 index 0000000000..f3657179d9 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/FNames.SIC @@ -0,0 +1,37 @@ +/* the following changes file names for PureC projects */ + +if (argc > 0) +{ + ordner = argv[0]; + if (basename(ordner) == "") /* ist Ordner */ + { + ChangeFilenames(ordner); + } +} + +proc ChangeFilenames(folder) +local i,entries,directory,file; +{ + entries = filelist(directory,folder); + for (i = 0; i < entries; ++i) + { + file = directory[i,0]; + if ((directory[i,3]&16) > 0) /* subdirectory */ + { + ChangeFilenames(folder+file+"\\"); + } + else + { + if ((stricmp(suffix(file),".h")==0)|(stricmp(suffix(file),".c")==0)) + ChangeFilename(folder,file); + } + } +} + +proc ChangeFilename(path,datei) +local newfile,err; +{ + newfile=datei; + newfile[0]=(newfile[0] | 32) ^ 32; + err=files.rename("-q",path+datei,newfile); +} diff --git a/local/recipes/libs/freetype2/source/builds/atari/FREETYPE.PRJ b/local/recipes/libs/freetype2/source/builds/atari/FREETYPE.PRJ new file mode 100644 index 0000000000..4776a5bc69 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/FREETYPE.PRJ @@ -0,0 +1,32 @@ +;FreeType project file + +FREETYPE.LIB + +.C [-K -P -R -A] +.L [-J -V] +.S + += + +..\..\src\base\ftsystem.c +..\..\src\base\ftdebug.c + +..\..\src\base\ftinit.c +..\..\src\base\ftglyph.c +..\..\src\base\ftmm +..\..\src\base\ftbbox + +..\..\src\base\ftbase.c +..\..\src\autohint\autohint.c +;..\..\src\cache\ftcache.c +..\..\src\cff\cff.c +..\..\src\cid\type1cid.c +..\..\src\psaux\psaux.c +..\..\src\pshinter\pshinter.c +..\..\src\psnames\psnames.c +..\..\src\raster\raster.c +..\..\src\sfnt\sfnt.c +..\..\src\smooth\smooth.c +..\..\src\truetype\truetype.c +..\..\src\type1\type1.c +..\..\src\type42\type42.c diff --git a/local/recipes/libs/freetype2/source/builds/atari/README.TXT b/local/recipes/libs/freetype2/source/builds/atari/README.TXT new file mode 100644 index 0000000000..1300817b26 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/README.TXT @@ -0,0 +1,51 @@ +Compiling FreeType 2 with PureC compiler +======================================== + +[See below for a German version.] + +To compile FreeType 2 as a library the following changes must be applied: + +- All *.c files must start with an uppercase letter. + (In case GEMSCRIPT is available: + Simply drag the whole FreeType 2 directory to the file `FNames.SIC'.) + +- You have to change the INCLUDE directory in PureC's compiler options + to contain both the `INCLUDE' and `freetype2\include' directory. + Example: + + INCLUDE;E:\freetype2\include + +- The file `freetype/include/Ft2build.h' must be patched as follows to + include ATARI.H: + + #ifndef FT2_BUILD_GENERIC_H_ + #define FT2_BUILD_GENERIC_H_ + + #include "ATARI.H" + + + +Compilieren von FreeType 2 mit PureC +==================================== + +Um FreeType 2 als eine Bibliothek (library) zu compilieren, muss folgendes +ge„ndert werden: + +- Alle *.c-files mssen mit einem GROSSBUCHSTABEN beginnen. + (Falls GEMSCRIPT zur Verfgung steht: + Den kompletten Ordner freetype2 auf die Datei `FNames.SIC' draggen.) + +- In den Compiler-Optionen von PureC muss das INCLUDE directory auf INCLUDE + und freetype2\include verweisen. Z.B.: + + INCLUDE;E:\freetype2\include + +- In der Datei freetype/include/Ft2build.h muss zu Beginn + ein #include "ATARI.H" wie folgt eingefgt werden: + + #ifndef FT2_BUILD_GENERIC_H_ + #define FT2_BUILD_GENERIC_H_ + + #include "ATARI.H" + +--- end of README.TXT --- diff --git a/local/recipes/libs/freetype2/source/builds/atari/deflinejoiner.awk b/local/recipes/libs/freetype2/source/builds/atari/deflinejoiner.awk new file mode 100644 index 0000000000..16d9e6dd93 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/deflinejoiner.awk @@ -0,0 +1,181 @@ +#!/usr/bin/env awk + + +function shift( array, \ + junk, elm0, l ) +{ + elm0 = array[0] + for ( l = 0; l < asorti( array, junk ) - 1; l++ ) + array[l] = array[l+1]; + delete array[l] + return elm0 +} + + +function init_cpp_src_line() +{ + logical_line = "" + delete break_pos +} + + +function shift_valid_bp( array, \ + junk, elm ) +{ + elm = -1 + + if ( 0 < asorti( array, junk ) ) + do { + elm = shift( array ) + } while ( 0 > elm ); + + return elm +} + + +function check_cpp_src_line_break_pos( \ + i, junk ) +{ + printf( "break_pos:" ) + for ( i = 0; i < asorti( break_pos, junk ); i++ ) + printf( " %d", break_pos[i] ); + printf( "\n" ) +} + + +function check_cpp_src_line() +{ + printf( "logical_line[%s]\n", logical_line ) + check_cpp_src_line_break_pos() +} + + +function append_line( phys_line, \ + filt_line, bp_len ) +{ + filt_line = phys_line + sub( /\\$/, " ", filt_line ) + logical_line = logical_line filt_line + bp_len = asorti( break_pos, junk ) + break_pos[bp_len] = length( logical_line ) - 1 +} + + +function print_line( \ + c0, c1, i, junk, part_str ) +{ + c0 = 0 + + while( asorti( break_pos, junk ) > 1 ) + { + if ( ( c1 = shift_valid_bp( break_pos ) ) < 1 ) + { + part_str = substr( logical_line, c0 + 1 ) + printf( "%s\n", part_str ) + return + } + + part_str = substr( logical_line, c0 + 1, c1 - c0 + 1 ) + gsub( / $/, "\\", part_str ) + printf( "%s\n", part_str ) + c0 = c1 + 1 + } + + part_str = substr( logical_line, c0 + 1 ) + printf( "%s\n", part_str ) +} + + +function shrink_spaces( pos, \ + tail, removed_length, k ) +{ + tail = substr( logical_line, pos ) + sub( /^[ \t]+/, " ", tail ) + removed_length = length( logical_line ) - pos - length( tail ) + 1 + logical_line = substr( logical_line, 0, pos - 1 ) tail + + + for ( k = 0; k < asorti( break_pos, junk ); k++ ) + if ( ( pos + removed_length ) <= break_pos[k] ) + break_pos[k] = break_pos[k] - removed_length; + else if ( pos <= break_pos[k] ) + break_pos[k] = -1; + + return removed_length +} + + +function shrink_spaces_to_linebreak( pos, \ + junk, part_str, removed_length, i ) +{ + for ( i = 0; i < asorti( break_pos, junk ) && break_pos[i] < pos ; i++ ) + ; + + if ( break_pos[i] < 1 ) + return; + + part_str = substr( logical_line, pos, break_pos[i] - pos + 1 ) + sub( /^[ \t]+/, " ", part_str ) + removed_length = ( break_pos[i] - pos + 1 ) - length( part_str ) + + tail = substr( logical_line, pos + removed_length ) + logical_line = substr( logical_line, 0, pos - 1 ) tail + + for ( ; i < asorti( break_pos, junk ); i++ ) + break_pos[i] -= removed_length; + + return removed_length +} + + +function delete_linebreaks_in_2nd_token( \ + tail, paren_depth, junk, i, j, k, l ) +{ + if ( logical_line ~ /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+\(/ ) + { + tail = logical_line + sub( /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+/, "", tail ) + + paren_depth = 0 + l = 0 + i = length( logical_line ) - length( tail ) + 1 # seek to the 1st op paren + j = i + do { + if ( substr( logical_line, j, 2 ) ~ /[ \t][ \t]/ ) + l = shrink_spaces( j ); + else if ( substr( logical_line, j, 1 ) == "(" ) + paren_depth += 1; + else if ( substr( logical_line, j, 1 ) == ")" ) + paren_depth -= 1; + j += 1 + } while ( j < length( logical_line ) && paren_depth != 0 ) + + for ( k = 0; k < asorti( break_pos, junk ); k++ ) + if ( i <= break_pos[k] && break_pos[k] < j ) + break_pos[k] = -1; + + if ( l > 0 ) + shrink_spaces_to_linebreak( j ); + } +} + + +BEGIN{ + init_cpp_src_line() +} +{ + append_line( $0 ) + if ( $0 !~ /\\$/ ) + { + delete_linebreaks_in_2nd_token() + print_line() + init_cpp_src_line() + } +} +END{ + if ( 0 < length( logical_line ) ) + { + delete_linebreaks_in_2nd_token() + print_line() + } +} diff --git a/local/recipes/libs/freetype2/source/builds/atari/gen-purec-patch.sh b/local/recipes/libs/freetype2/source/builds/atari/gen-purec-patch.sh new file mode 100755 index 0000000000..1ec050c11f --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/atari/gen-purec-patch.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +TOP_DIR=. +OBJ_DIR=. + +for x in "$@" +do + case x"$x" in + x--srcdir=* | x--topdir=* ) + TOP_DIR=`echo $x | sed 's/^--[a-z]*dir=//'` + ;; + x--builddir=* | x--objdir=* ) + OBJ_DIR=`echo $x | sed 's/^--[a-z]*dir=//'` + ;; + esac +done + +mkdir -p ${OBJ_DIR}/builds/atari/tmp/orig + +( cd ${TOP_DIR} && find . -name '*.[CHch]' -type f | fgrep -v builds/atari/tmp | cpio -o ) | \ +( cd ${OBJ_DIR}/builds/atari/tmp/orig && cpio -idum ) +cp ${TOP_DIR}/builds/atari/deflinejoiner.awk ${OBJ_DIR}/builds/atari/tmp + +pushd ${OBJ_DIR}/builds/atari/tmp + + cp -pr orig purec + for f in `cd orig && find . -type f` + do + echo filter $f + env LANG=C awk -f deflinejoiner.awk < orig/$f > purec/$f + done + + echo '#define FT2_BUILD_LIBRARY' > purec/include/ft2build.h + echo '#include "ATARI.H"' >> purec/include/ft2build.h + env LANG=C awk -f deflinejoiner.awk < orig/include/ft2build.h >> purec/include/ft2build.h + + env LANG=C diff -ur orig purec > ../purec.diff + +popd +rm -rf ${OBJ_DIR}/builds/atari/tmp diff --git a/local/recipes/libs/freetype2/source/builds/beos/beos-def.mk b/local/recipes/libs/freetype2/source/builds/beos/beos-def.mk new file mode 100644 index 0000000000..55e61eb88c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/beos/beos-def.mk @@ -0,0 +1,79 @@ +# +# FreeType 2 configuration rules for a BeOS system +# +# this is similar to the "ansi-def.mk" file, except for BUILD and PLATFORM +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DELETE := rm -f +CAT := cat +SEP := / +PLATFORM_DIR := $(TOP_DIR)/builds/beos +PLATFORM := beos + +# This is used for `make refdoc' and `make refdoc-venv' +# +BIN := bin + +# The directory where all library files are placed. +# +# By default, this is the same as $(OBJ_DIR); however, this can be changed +# to suit particular needs. +# +LIB_DIR := $(OBJ_DIR) + + +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. +# +LIBRARY := lib$(PROJECT) + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/beos/beos.mk b/local/recipes/libs/freetype2/source/builds/beos/beos.mk new file mode 100644 index 0000000000..7579b187d7 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/beos/beos.mk @@ -0,0 +1,19 @@ +# +# FreeType 2 configuration rules for a BeOS system +# + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +include $(TOP_DIR)/builds/beos/beos-def.mk +include $(TOP_DIR)/builds/compiler/ansi-cc.mk +include $(TOP_DIR)/builds/link_std.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/beos/detect.mk b/local/recipes/libs/freetype2/source/builds/beos/detect.mk new file mode 100644 index 0000000000..a045e5ffe0 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/beos/detect.mk @@ -0,0 +1,41 @@ +# +# FreeType 2 configuration file to detect an BeOS host platform. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +.PHONY: setup + + +ifeq ($(PLATFORM),ansi) + + ifdef BE_HOST_CPU + + PLATFORM := beos + + endif # test MACHTYPE beos +endif + +ifeq ($(PLATFORM),beos) + + DELETE := rm -f + CAT := cat + SEP := / + PLATFORM_DIR := $(TOP_DIR)/builds/beos + CONFIG_FILE := beos.mk + + setup: std_setup + +endif # test PLATFORM beos + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/cmake/FindBrotliDec.cmake b/local/recipes/libs/freetype2/source/builds/cmake/FindBrotliDec.cmake new file mode 100644 index 0000000000..97efb8867c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/cmake/FindBrotliDec.cmake @@ -0,0 +1,52 @@ +# FindBrotliDec.cmake +# +# Copyright (C) 2019-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# Written by Werner Lemberg +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. +# +# +# Try to find libbrotlidec include and library directories. +# +# If found, the following variables are set. +# +# BROTLIDEC_INCLUDE_DIRS +# BROTLIDEC_LIBRARIES + +find_package(PkgConfig QUIET) + +pkg_check_modules(PC_BROTLIDEC QUIET libbrotlidec) + +if (PC_BROTLIDEC_VERSION) + set(BROTLIDEC_VERSION "${PC_BROTLIDEC_VERSION}") +endif () + + +find_path(BROTLIDEC_INCLUDE_DIRS + NAMES brotli/decode.h + HINTS ${PC_BROTLIDEC_INCLUDEDIR} + ${PC_BROTLIDEC_INCLUDE_DIRS} + PATH_SUFFIXES brotli) + +find_library(BROTLIDEC_LIBRARIES + NAMES brotlidec + HINTS ${PC_BROTLIDEC_LIBDIR} + ${PC_BROTLIDEC_LIBRARY_DIRS}) + + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( + BrotliDec + REQUIRED_VARS BROTLIDEC_INCLUDE_DIRS BROTLIDEC_LIBRARIES + FOUND_VAR BROTLIDEC_FOUND + VERSION_VAR BROTLIDEC_VERSION) + +mark_as_advanced( + BROTLIDEC_INCLUDE_DIRS + BROTLIDEC_LIBRARIES) diff --git a/local/recipes/libs/freetype2/source/builds/cmake/FindHarfBuzz.cmake b/local/recipes/libs/freetype2/source/builds/cmake/FindHarfBuzz.cmake new file mode 100644 index 0000000000..0f0e33a1a1 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/cmake/FindHarfBuzz.cmake @@ -0,0 +1,203 @@ +# Copyright (c) 2012, Intel Corporation +# Copyright (c) 2019 Sony Interactive Entertainment Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contributors may +# be used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +# Try to find Harfbuzz include and library directories. +# +# After successful discovery, this will set for inclusion where needed: +# HarfBuzz_INCLUDE_DIRS - containing the HarfBuzz headers +# HarfBuzz_LIBRARIES - containing the HarfBuzz library + +#[=======================================================================[.rst: +FindHarfBuzz +-------------- + +Find HarfBuzz headers and libraries. + +Imported Targets +^^^^^^^^^^^^^^^^ + +``HarfBuzz::HarfBuzz`` + The HarfBuzz library, if found. + +``HarfBuzz::ICU`` + The HarfBuzz ICU library, if found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This will define the following variables in your project: + +``HarfBuzz_FOUND`` + true if (the requested version of) HarfBuzz is available. +``HarfBuzz_VERSION`` + the version of HarfBuzz. +``HarfBuzz_LIBRARIES`` + the libraries to link against to use HarfBuzz. +``HarfBuzz_INCLUDE_DIRS`` + where to find the HarfBuzz headers. +``HarfBuzz_COMPILE_OPTIONS`` + this should be passed to target_compile_options(), if the + target is not used for linking + +#]=======================================================================] + +find_package(PkgConfig QUIET) +pkg_check_modules(PC_HARFBUZZ QUIET harfbuzz) +set(HarfBuzz_COMPILE_OPTIONS ${PC_HARFBUZZ_CFLAGS_OTHER}) +set(HarfBuzz_VERSION ${PC_HARFBUZZ_CFLAGS_VERSION}) + +find_path(HarfBuzz_INCLUDE_DIR + NAMES hb.h + HINTS ${PC_HARFBUZZ_INCLUDEDIR} ${PC_HARFBUZZ_INCLUDE_DIRS} + PATH_SUFFIXES harfbuzz +) + +find_library(HarfBuzz_LIBRARY + NAMES ${HarfBuzz_NAMES} harfbuzz + HINTS ${PC_HARFBUZZ_LIBDIR} ${PC_HARFBUZZ_LIBRARY_DIRS} +) + +if (HarfBuzz_INCLUDE_DIR AND NOT HarfBuzz_VERSION) + if (EXISTS "${HarfBuzz_INCLUDE_DIR}/hb-version.h") + file(READ "${HarfBuzz_INCLUDE_DIR}/hb-version.h" _harfbuzz_version_content) + + string(REGEX MATCH "#define +HB_VERSION_STRING +\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" _dummy "${_harfbuzz_version_content}") + set(HarfBuzz_VERSION "${CMAKE_MATCH_1}") + endif () +endif () + +if ("${HarfBuzz_FIND_VERSION}" VERSION_GREATER "${HarfBuzz_VERSION}") + if (HarfBuzz_FIND_REQUIRED) + message(FATAL_ERROR + "Required version (" ${HarfBuzz_FIND_VERSION} ")" + " is higher than found version (" ${HarfBuzz_VERSION} ")") + else () + message(WARNING + "Required version (" ${HarfBuzz_FIND_VERSION} ")" + " is higher than found version (" ${HarfBuzz_VERSION} ")") + unset(HarfBuzz_VERSION) + unset(HarfBuzz_INCLUDE_DIRS) + unset(HarfBuzz_LIBRARIES) + return () + endif () +endif () + +# Find components +if (HarfBuzz_INCLUDE_DIR AND HarfBuzz_LIBRARY) + set(_HarfBuzz_REQUIRED_LIBS_FOUND ON) + set(HarfBuzz_LIBS_FOUND "HarfBuzz (required): ${HarfBuzz_LIBRARY}") +else () + set(_HarfBuzz_REQUIRED_LIBS_FOUND OFF) + set(HarfBuzz_LIBS_NOT_FOUND "HarfBuzz (required)") +endif () + +if (NOT CMAKE_VERSION VERSION_LESS 3.3) + if ("ICU" IN_LIST HarfBuzz_FIND_COMPONENTS) + pkg_check_modules(PC_HARFBUZZ_ICU QUIET harfbuzz-icu) + set(HarfBuzz_ICU_COMPILE_OPTIONS ${PC_HARFBUZZ_ICU_CFLAGS_OTHER}) + + find_path(HarfBuzz_ICU_INCLUDE_DIR + NAMES hb-icu.h + HINTS ${PC_HARFBUZZ_ICU_INCLUDEDIR} ${PC_HARFBUZZ_ICU_INCLUDE_DIRS} + PATH_SUFFIXES harfbuzz + ) + + find_library(HarfBuzz_ICU_LIBRARY + NAMES ${HarfBuzz_ICU_NAMES} harfbuzz-icu + HINTS ${PC_HARFBUZZ_ICU_LIBDIR} ${PC_HARFBUZZ_ICU_LIBRARY_DIRS} + ) + + if (HarfBuzz_ICU_LIBRARY) + if (HarfBuzz_FIND_REQUIRED_ICU) + list(APPEND HarfBuzz_LIBS_FOUND "ICU (required): ${HarfBuzz_ICU_LIBRARY}") + else () + list(APPEND HarfBuzz_LIBS_FOUND "ICU (optional): ${HarfBuzz_ICU_LIBRARY}") + endif () + else () + if (HarfBuzz_FIND_REQUIRED_ICU) + set(_HarfBuzz_REQUIRED_LIBS_FOUND OFF) + list(APPEND HarfBuzz_LIBS_NOT_FOUND "ICU (required)") + else () + list(APPEND HarfBuzz_LIBS_NOT_FOUND "ICU (optional)") + endif () + endif () + endif () +endif () + +if (NOT HarfBuzz_FIND_QUIETLY) + if (HarfBuzz_LIBS_FOUND) + message(STATUS "Found the following HarfBuzz libraries:") + foreach (found ${HarfBuzz_LIBS_FOUND}) + message(STATUS " ${found}") + endforeach () + endif () + if (HarfBuzz_LIBS_NOT_FOUND) + message(STATUS "The following HarfBuzz libraries were not found:") + foreach (found ${HarfBuzz_LIBS_NOT_FOUND}) + message(STATUS " ${found}") + endforeach () + endif () +endif () + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(HarfBuzz + FOUND_VAR HarfBuzz_FOUND + REQUIRED_VARS HarfBuzz_INCLUDE_DIR HarfBuzz_LIBRARY _HarfBuzz_REQUIRED_LIBS_FOUND + VERSION_VAR HarfBuzz_VERSION +) + +if (NOT CMAKE_VERSION VERSION_LESS 3.1) + if (HarfBuzz_LIBRARY AND NOT TARGET HarfBuzz::HarfBuzz) + add_library(HarfBuzz::HarfBuzz UNKNOWN IMPORTED GLOBAL) + set_target_properties(HarfBuzz::HarfBuzz PROPERTIES + IMPORTED_LOCATION "${HarfBuzz_LIBRARY}" + INTERFACE_COMPILE_OPTIONS "${HarfBuzz_COMPILE_OPTIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${HarfBuzz_INCLUDE_DIR}" + ) + endif () + + if (HarfBuzz_ICU_LIBRARY AND NOT TARGET HarfBuzz::ICU) + add_library(HarfBuzz::ICU UNKNOWN IMPORTED GLOBAL) + set_target_properties(HarfBuzz::ICU PROPERTIES + IMPORTED_LOCATION "${HarfBuzz_ICU_LIBRARY}" + INTERFACE_COMPILE_OPTIONS "${HarfBuzz_ICU_COMPILE_OPTIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${HarfBuzz_ICU_INCLUDE_DIR}" + ) + endif () +endif () + +mark_as_advanced( + HarfBuzz_INCLUDE_DIR + HarfBuzz_ICU_INCLUDE_DIR + HarfBuzz_LIBRARY + HarfBuzz_ICU_LIBRARY +) + +if (HarfBuzz_FOUND) + set(HarfBuzz_LIBRARIES ${HarfBuzz_LIBRARY} ${HarfBuzz_ICU_LIBRARY}) + set(HarfBuzz_INCLUDE_DIRS ${HarfBuzz_INCLUDE_DIR} ${HarfBuzz_ICU_INCLUDE_DIR}) +endif () diff --git a/local/recipes/libs/freetype2/source/builds/cmake/iOS.cmake b/local/recipes/libs/freetype2/source/builds/cmake/iOS.cmake new file mode 100644 index 0000000000..8f82d61d34 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/cmake/iOS.cmake @@ -0,0 +1,270 @@ +# iOS.cmake +# +# Copyright (C) 2014-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# Written by David Wimsey +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. +# +# +# This file is derived from the files `Platform/Darwin.cmake' and +# `Platform/UnixPaths.cmake', which are part of CMake 2.8.4. It has been +# altered for iOS development. + + +# Options +# ------- +# +# IOS_PLATFORM = OS | SIMULATOR +# +# This decides whether SDKS are selected from the `iPhoneOS.platform' or +# `iPhoneSimulator.platform' folders. +# +# OS - the default, used to build for iPhone and iPad physical devices, +# which have an ARM architecture. +# SIMULATOR - used to build for the Simulator platforms, which have an +# x86 architecture. +# +# CMAKE_IOS_DEVELOPER_ROOT = /path/to/platform/Developer folder +# +# By default, this location is automatically chosen based on the +# IOS_PLATFORM value above. If you manually set this variable, it +# overrides the default location and forces the use of a particular +# Developer Platform. +# +# CMAKE_IOS_SDK_ROOT = /path/to/platform/Developer/SDKs/SDK folder +# +# By default, this location is automatically chosen based on the +# CMAKE_IOS_DEVELOPER_ROOT value. In this case it is always the most +# up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path. If you +# manually set this variable, it forces the use of a specific SDK +# version. +# +# +# Macros +# ------ +# +# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE) +# +# A convenience macro for setting Xcode specific properties on targets. +# +# Example: +# +# set_xcode_property(myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1") +# +# find_host_package (PROGRAM ARGS) +# +# A macro to find executable programs on the host system, not within the +# iOS environment. Thanks to the `android-cmake' project for providing +# the command. + + +# standard settings +set(CMAKE_SYSTEM_NAME Darwin) +set(CMAKE_SYSTEM_VERSION 1) +set(UNIX True) +set(APPLE True) +set(IOS True) + +# required as of cmake 2.8.10 +set(CMAKE_OSX_DEPLOYMENT_TARGET "" + CACHE STRING "Force unset of the deployment target for iOS" FORCE +) + +# determine the cmake host system version so we know where to find the iOS +# SDKs +find_program(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin) +if (CMAKE_UNAME) + exec_program(uname ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION) + string(REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" + DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}") +endif (CMAKE_UNAME) + +# skip the platform compiler checks for cross compiling +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_C_COMPILER_WORKS TRUE) + +# all iOS/Darwin specific settings - some may be redundant +set(CMAKE_SHARED_LIBRARY_PREFIX "lib") +set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") +set(CMAKE_SHARED_MODULE_PREFIX "lib") +set(CMAKE_SHARED_MODULE_SUFFIX ".so") +set(CMAKE_MODULE_EXISTS 1) +set(CMAKE_DL_LIBS "") + +set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG + "-compatibility_version ") +set(CMAKE_C_OSX_CURRENT_VERSION_FLAG + "-current_version ") +set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG + "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") +set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG + "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") + +# hidden visibility is required for cxx on iOS +set(CMAKE_C_FLAGS_INIT "") +set(CMAKE_CXX_FLAGS_INIT + "-headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden") + +set(CMAKE_C_LINK_FLAGS + "-Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}") +set(CMAKE_CXX_LINK_FLAGS + "-Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}") + +set(CMAKE_PLATFORM_HAS_INSTALLNAME 1) +set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS + "-dynamiclib -headerpad_max_install_names") +set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS + "-bundle -headerpad_max_install_names") +set(CMAKE_SHARED_MODULE_LOADER_C_FLAG + "-Wl,-bundle_loader,") +set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG + "-Wl,-bundle_loader,") +set(CMAKE_FIND_LIBRARY_SUFFIXES + ".dylib" ".so" ".a") + +# hack: If a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old +# build tree (where `install_name_tool' was hardcoded), and where +# CMAKE_INSTALL_NAME_TOOL isn't in the cache and still cmake didn't +# fail in `CMakeFindBinUtils.cmake' (because it isn't rerun), hardcode +# CMAKE_INSTALL_NAME_TOOL here to `install_name_tool' so it behaves as +# it did before. +if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL) + find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool) +endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL) + +# set up iOS platform unless specified manually with IOS_PLATFORM +if (NOT DEFINED IOS_PLATFORM) + set(IOS_PLATFORM "OS") +endif (NOT DEFINED IOS_PLATFORM) + +set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform") + +# check the platform selection and setup for developer root +if (${IOS_PLATFORM} STREQUAL "OS") + set(IOS_PLATFORM_LOCATION "iPhoneOS.platform") + + # this causes the installers to properly locate the output libraries + set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos") + +elseif (${IOS_PLATFORM} STREQUAL "SIMULATOR") + set(IOS_PLATFORM_LOCATION "iPhoneSimulator.platform") + + # this causes the installers to properly locate the output libraries + set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphonesimulator") + +else (${IOS_PLATFORM} STREQUAL "OS") + message(FATAL_ERROR + "Unsupported IOS_PLATFORM value selected. Please choose OS or SIMULATOR.") + +endif (${IOS_PLATFORM} STREQUAL "OS") + +# set up iOS developer location unless specified manually with +# CMAKE_IOS_DEVELOPER_ROOT -- +# note that Xcode 4.3 changed the installation location; choose the most +# recent one available +set(XCODE_POST_43_ROOT + "/Applications/Xcode.app/Contents/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") +set(XCODE_PRE_43_ROOT + "/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") + +if (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) + if (EXISTS ${XCODE_POST_43_ROOT}) + set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_POST_43_ROOT}) + elseif (EXISTS ${XCODE_PRE_43_ROOT}) + set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_PRE_43_ROOT}) + endif (EXISTS ${XCODE_POST_43_ROOT}) +endif (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) + +set(CMAKE_IOS_DEVELOPER_ROOT ${CMAKE_IOS_DEVELOPER_ROOT} + CACHE PATH "Location of iOS Platform" +) + +# find and use the most recent iOS SDK unless specified manually with +# CMAKE_IOS_SDK_ROOT +if (NOT DEFINED CMAKE_IOS_SDK_ROOT) + file(GLOB _CMAKE_IOS_SDKS "${CMAKE_IOS_DEVELOPER_ROOT}/SDKs/*") + if (_CMAKE_IOS_SDKS) + list(SORT _CMAKE_IOS_SDKS) + list(REVERSE _CMAKE_IOS_SDKS) + list(GET _CMAKE_IOS_SDKS 0 CMAKE_IOS_SDK_ROOT) + else (_CMAKE_IOS_SDKS) + message(FATAL_ERROR + "No iOS SDK's found in default search path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.") + endif (_CMAKE_IOS_SDKS) + + message(STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}") +endif (NOT DEFINED CMAKE_IOS_SDK_ROOT) + +set(CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} + CACHE PATH "Location of the selected iOS SDK" +) + +# set the sysroot default to the most recent SDK +set(CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} + CACHE PATH "Sysroot used for iOS support" +) + +# set the architecture for iOS -- +# note that currently both ARCHS_STANDARD_32_BIT and +# ARCHS_UNIVERSAL_IPHONE_OS set armv7 only, so set both manually +if (${IOS_PLATFORM} STREQUAL "OS") + set(IOS_ARCH $(ARCHS_STANDARD_32_64_BIT)) +else (${IOS_PLATFORM} STREQUAL "OS") + set(IOS_ARCH i386) +endif (${IOS_PLATFORM} STREQUAL "OS") + +set(CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} + CACHE string "Build architecture for iOS" +) + +# set the find root to the iOS developer roots and to user defined paths +set(CMAKE_FIND_ROOT_PATH + ${CMAKE_IOS_DEVELOPER_ROOT} + ${CMAKE_IOS_SDK_ROOT} + ${CMAKE_PREFIX_PATH} + CACHE string "iOS find search path root" +) + +# default to searching for frameworks first +set(CMAKE_FIND_FRAMEWORK FIRST) + +# set up the default search directories for frameworks +set(CMAKE_SYSTEM_FRAMEWORK_PATH + ${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks + ${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks + ${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks +) + +# only search the iOS SDKs, not the remainder of the host filesystem +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +# this little macro lets you set any Xcode specific property +macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE) + set_property(TARGET ${TARGET} + PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE}) +endmacro(set_xcode_property) + +# this macro lets you find executable programs on the host system +macro(find_host_package) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) + set(IOS FALSE) + + find_package(${ARGN}) + + set(IOS TRUE) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endmacro(find_host_package) + +# eof diff --git a/local/recipes/libs/freetype2/source/builds/cmake/testbuild.sh b/local/recipes/libs/freetype2/source/builds/cmake/testbuild.sh new file mode 100755 index 0000000000..6d1661386b --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/cmake/testbuild.sh @@ -0,0 +1,157 @@ +#!/bin/sh -e + +# Copyright (C) 2015-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# This script tests the CMake build. Simply run +# +# builds/cmake/testbuild.sh +# +# or +# +# BUILD_SHARED_LIBS=1 builds/cmake/testbuild.sh +# +# The script: +# +# - builds the main CMakeLists.txt +# - builds and runs a small test app in a separate build tree so +# the config-module is tested, too +# +# Options (environment variables): +# +# - The variable BUILD_SHARED_LIBS will be forwarded to the CMake project +# that builds the library. +# + + +# prepare temporary dir + +cd `dirname $0`/../.. +ftdir=`pwd` +tmpdir=/tmp/freetype-cmake-testbuild +rm -rf $tmpdir +mkdir -p $tmpdir + + +# build and install freetype + +if test -n "$BUILD_SHARED_LIBS"; then + bsl=-DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS +else + bsl=-UBUILD_SHARED_LIBS +fi + +build_opts="-DWITH_ZLIB=0 \ + -DWITH_BZip2=0 \ + -DWITH_PNG=0 \ + -DWITH_HarfBuzz=0 \ + $bsl \ + -DCMAKE_INSTALL_PREFIX=$tmpdir/out" + +(set -x; cmake -H$ftdir \ + -B$tmpdir/ftb \ + -DCMAKE_BUILD_TYPE=Debug \ + $build_opts) +(set -x; cmake --build $tmpdir/ftb \ + --config Debug \ + --target install) + +(set -x; cmake $tmpdir/ftb \ + -DCMAKE_BUILD_TYPE=Release) +(set -x; cmake --build $tmpdir/ftb \ + --config Release \ + --target install \ + --clean-first) + + +# create test project CMakeLists.txt + +cat >$tmpdir/CMakeLists.txt << END +cmake_minimum_required(VERSION 2.6) +project(freetype-cmake-testbuild) + +find_package(Freetype REQUIRED CONFIG) + +add_executable(freetype-cmake-test main.c) +target_link_libraries(freetype-cmake-test freetype) + +enable_testing() +add_test(freetype-cmake-test freetype-cmake-test) +END + + +# create test project main.c + +cat >$tmpdir/main.c << END +#include +#include + +#include +#include + + +FT_Library library; + + +int main(int argc, + char*argv[]) +{ + FT_Error error; + FT_Int major = 0; + FT_Int minor = 0; + FT_Int patch = 0; + + error = FT_Init_FreeType(&library); + if (error) + return EXIT_FAILURE; + + FT_Library_Version(library, &major, &minor, &patch); + if (major != FREETYPE_MAJOR + || minor != FREETYPE_MINOR + || patch != FREETYPE_PATCH) + return EXIT_FAILURE; + + printf("FT_Library_Version: %d.%d.%d\n", major, minor, patch); + + error = FT_Done_FreeType(library); + if (error) + return EXIT_FAILURE; + + return EXIT_SUCCESS; +} +END + + +# build and test + +mkdir -p $tmpdir/tb +cd $tmpdir/tb + +LD_LIBRARY_PATH=$tmpdir/out/lib:$LD_LIBRARY_PATH +DYLD_LIBRARY_PATH=$tmpdir/out/lib:$DYLD_LIBRARY_PATH +export LD_LIBRARY_PATH +export DYLD_LIBRARY_PATH + +(set -x; cmake $tmpdir \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_PREFIX_PATH=$tmpdir/out) +(set -x; cmake --build . \ + --config Debug) +(set -x; ctest -V -C Debug) + +(set -x; cmake . \ + -DCMAKE_BUILD_TYPE=Release) +(set -x; cmake --build . \ + --config Release \ + --clean-first) +(set -x; ctest -V -C Release) + +rm -rf $tmpdir + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/ansi-cc.mk b/local/recipes/libs/freetype2/source/builds/compiler/ansi-cc.mk new file mode 100644 index 0000000000..9fd5b0eb2a --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/ansi-cc.mk @@ -0,0 +1,80 @@ +# +# FreeType 2 generic pseudo ANSI compiler +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := cc +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := o +SO := o + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := a +SA := a + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +# we assume the compiler is already strictly ANSI +# +ANSIFLAGS ?= + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = $(AR) -r $@ $(subst /,$(COMPILER_SEP),$(OBJECTS_LIST)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/bcc-dev.mk b/local/recipes/libs/freetype2/source/builds/compiler/bcc-dev.mk new file mode 100644 index 0000000000..f03d16c779 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/bcc-dev.mk @@ -0,0 +1,86 @@ +# +# FreeType 2 Borland C++-specific with NO OPTIMIZATIONS + DEBUGGING +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := bcc32 +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := + + +# Target flag -- no trailing space. +# +T := -o +TE := -e + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -q -c -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= -A + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = tlib /u /P128 $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%)) + + +# Borland C++ specific temporary files +# +CLEAN += \ + $(subst /,$(SEP),$(TOP_DIR)/apinames.$(O)) \ + $(subst /,$(SEP),$(OBJ_DIR)/apinames.tds) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/bcc.mk b/local/recipes/libs/freetype2/source/builds/compiler/bcc.mk new file mode 100644 index 0000000000..24d56e0267 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/bcc.mk @@ -0,0 +1,86 @@ +# +# FreeType 2 Borland C++-specific rules +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := bcc32 +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := + + +# Target flag -- no trailing space. +# +T := -o +TE := -e + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c -q -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= -A + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = tlib /u /P128 $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%)) + + +# Borland C++ specific temporary files +# +CLEAN += \ + $(subst /,$(SEP),$(TOP_DIR)/apinames.$(O)) \ + $(subst /,$(SEP),$(OBJ_DIR)/apinames.tds) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/emx.mk b/local/recipes/libs/freetype2/source/builds/compiler/emx.mk new file mode 100644 index 0000000000..e5c3fdc70d --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/emx.mk @@ -0,0 +1,77 @@ +# +# FreeType 2 emx-specific definitions +# + + +# Copyright (C) 2003-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := set GCCOPT="-ansi -pedantic"; gcc +COMPILER_SEP := / + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := o +SO := o + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := a +SA := a + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c -g -O6 -Wall + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = $(foreach m,$(OBJECTS_LIST),$(AR) -r $@ $(m);) echo > nul + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/gcc-dev.mk b/local/recipes/libs/freetype2/source/builds/compiler/gcc-dev.mk new file mode 100644 index 0000000000..691bceb29e --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/gcc-dev.mk @@ -0,0 +1,97 @@ +# +# FreeType 2 gcc-specific with NO OPTIMIZATIONS + DEBUGGING +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := gcc +COMPILER_SEP := / + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := o +SO := o + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := a +SA := a + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +ifndef CFLAGS + ifeq ($(findstring g++,$(CC)),) + nested_externs := -Wnested-externs + strict_prototypes := -Wstrict-prototypes + endif + + CFLAGS := -c -g -O0 \ + -Wall \ + -W \ + -Wundef \ + -Wshadow \ + -Wpointer-arith \ + -Wwrite-strings \ + -Wredundant-decls \ + -Wno-format-extra-args \ + -Wno-long-long \ + $(nested_externs) \ + $(strict_prototypes) +endif + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# You can override this on the command line. +# +ANSIFLAGS ?= -std=c99 -pedantic + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/gcc.mk b/local/recipes/libs/freetype2/source/builds/compiler/gcc.mk new file mode 100644 index 0000000000..ab8c55ffab --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/gcc.mk @@ -0,0 +1,77 @@ +# +# FreeType 2 gcc-specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := gcc +COMPILER_SEP := / + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := o +SO := o + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := a +SA := a + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c -g -O3 -Wall + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= -std=c99 -pedantic + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/intelc.mk b/local/recipes/libs/freetype2/source/builds/compiler/intelc.mk new file mode 100644 index 0000000000..1fd53c2d88 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/intelc.mk @@ -0,0 +1,85 @@ +# +# FreeType 2 Intel C/C++ definitions (VC++ compatibility mode) +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# compiler command line name +# +CC := icl +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := /I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := /D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := /Fl + + +# Target flag. +# +T := /Fo +TE := /Fe + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +# Note that the Intel C/C++ compiler version 4.5 complains about +# the use of FT_FIELD_OFFSET with "value must be arithmetic type"! +# This really looks like a bug in the compiler because the macro +# _does_ compute an arithmetic value, so we disable this warning +# with "/Qwd32". +# +CFLAGS ?= /nologo /c /Ox /G5 /W3 /Qwd32 + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= /Qansi_alias /Za + +# Library linking +# +#CLEAN_LIBRARY = +LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/unix-lcc.mk b/local/recipes/libs/freetype2/source/builds/compiler/unix-lcc.mk new file mode 100644 index 0000000000..b8b1fbc063 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/unix-lcc.mk @@ -0,0 +1,83 @@ +# +# FreeType 2 Unix LCC specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Command line name +# +CC := lcc +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := o +SO := o + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := a +SA := a + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -o$(space) + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c -g + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +# LCC is pure ANSI anyway! +# +# the "-A" flag simply increments verbosity about non ANSI code +# +ANSIFLAGS ?= -A + + +# library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(PROJECT_LIBRARY) +LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/visualage.mk b/local/recipes/libs/freetype2/source/builds/compiler/visualage.mk new file mode 100644 index 0000000000..8c1dcdb65c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/visualage.mk @@ -0,0 +1,76 @@ +# +# FreeType 2 Visual Age C++ specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# command line compiler name +# +CC := icc +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := /I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := /D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := /Fl + + +# Target flag. +# +T := /Fo + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +CFLAGS ?= /Q- /Gd+ /O2 /G5 /W3 /C + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSI_FLAGS := /Sa + + +# Library linking +# +#CLEAN_LIBRARY := +LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/visualc.mk b/local/recipes/libs/freetype2/source/builds/compiler/visualc.mk new file mode 100644 index 0000000000..4754c0e97c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/visualc.mk @@ -0,0 +1,82 @@ +# +# FreeType 2 Visual C++ definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# compiler command line name +# +CC := cl +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := /I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := /D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := /Fl + + +# Target flag. +# +T := /Fo + +# Target executable flag +# +TE := /Fe + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= /nologo /c /Ox /W3 /WX + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= /Za /D_CRT_SECURE_NO_DEPRECATE + + +# Library linking +# +#CLEAN_LIBRARY = +LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/watcom.mk b/local/recipes/libs/freetype2/source/builds/compiler/watcom.mk new file mode 100644 index 0000000000..d6d24a49f1 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/watcom.mk @@ -0,0 +1,81 @@ +# +# FreeType 2 Watcom-specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Compiler command line name +# +CC := wcc386 +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I= + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -l + + +# Target flag. +# +T := -FO= + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -zq + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +ANSIFLAGS ?= -za + + +# Library linking +# +CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) +LINK_LIBRARY = $(subst /,$(COMPILER_SEP), \ + wlib -q -n $@; \ + $(foreach m, $(OBJECTS_LIST), wlib -q $@ +$(m);) \ + echo > nul) + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/compiler/win-lcc.mk b/local/recipes/libs/freetype2/source/builds/compiler/win-lcc.mk new file mode 100644 index 0000000000..06b1644a66 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/compiler/win-lcc.mk @@ -0,0 +1,81 @@ +# +# FreeType 2 Win32-LCC specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# Command line name +# +CC := lcc +COMPILER_SEP := $(SEP) + + +# The object file extension (for standard and static libraries). This can be +# .o, .tco, .obj, etc., depending on the platform. +# +O := obj +SO := obj + + +# The library file extension (for standard and static libraries). This can +# be .a, .lib, etc., depending on the platform. +# +A := lib +SA := lib + + +# Path inclusion flag. Some compilers use a different flag than `-I' to +# specify an additional include path. Examples are `/i=' or `-J'. +# +I := -I + + +# C flag used to define a macro before the compilation of a given source +# object. Usually it is `-D' like in `-DDEBUG'. +# +D := -D + + +# The link flag used to specify a given library file on link. Note that +# this is only used to compile the demo programs, not the library itself. +# +L := -Fl + + +# Target flag. +# +T := -Fo + + +# C flags +# +# These should concern: debug output, optimization & warnings. +# +# Use the ANSIFLAGS variable to define the compiler flags used to enforce +# ANSI compliance. +# +CFLAGS ?= -c -g2 -O + +# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. +# +# LCC is pure ANSI anyway! +# +ANSIFLAGS ?= + + +# library linking +# +#CLEAN_LIBRARY := +LINK_LIBRARY = lcclib /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/detect.mk b/local/recipes/libs/freetype2/source/builds/detect.mk new file mode 100644 index 0000000000..7c5b97389b --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/detect.mk @@ -0,0 +1,128 @@ +# +# FreeType 2 host platform detection rules +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# This sub-Makefile is in charge of detecting the current platform. It sets +# the following variables: +# +# PLATFORM_DIR The configuration and system-specific directory. Usually +# `builds/$(PLATFORM)' but can be different for custom builds +# of the library. +# +# The following variables must be defined in system specific `detect.mk' +# files: +# +# PLATFORM The detected platform. This will default to `ansi' if +# auto-detection fails. +# CONFIG_FILE The configuration sub-makefile to use. This usually depends +# on the compiler defined in the `CC' environment variable. +# DELETE The shell command used to remove a given file. +# COPY The shell command used to copy one file. +# SEP The platform-specific directory separator. +# COMPILER_SEP The separator used in arguments of the compilation tools. +# CC The compiler to use. +# +# You need to set the following variable(s) before calling it: +# +# TOP_DIR The top-most directory in the FreeType library source +# hierarchy. If not defined, it will default to `.'. + +# Set auto-detection default to `ansi' resp. UNIX-like operating systems. +# +PLATFORM := ansi +DELETE := $(RM) +COPY := cp +CAT := cat +SEP := / + +BUILD_CONFIG := $(TOP_DIR)/builds + +# These two assignments must be delayed. +PLATFORM_DIR = $(BUILD_CONFIG)/$(PLATFORM) +CONFIG_RULES = $(PLATFORM_DIR)/$(CONFIG_FILE) + +# We define the BACKSLASH variable to hold a single back-slash character. +# This is needed because a line like +# +# SEP := \ +# +# does not work with GNU Make (the backslash is interpreted as a line +# continuation). While a line like +# +# SEP := \\ +# +# really defines $(SEP) as `\' on Unix, and `\\' on Dos and Windows! +# +BACKSLASH := $(strip \ ) + +# Find all auto-detectable platforms. +# +PLATFORMS := $(notdir $(subst /detect.mk,,$(wildcard $(BUILD_CONFIG)/*/detect.mk))) +.PHONY: $(PLATFORMS) ansi + +# Filter out platform specified as setup target. +# +PLATFORM := $(firstword $(filter $(MAKECMDGOALS),$(PLATFORMS))) + +# If no setup target platform was specified, enable auto-detection/ +# default platform. +# +ifeq ($(PLATFORM),) + PLATFORM := ansi +endif + +# If the user has explicitly asked for `ansi' on the command line, +# disable auto-detection. +# +ifeq ($(findstring ansi,$(MAKECMDGOALS)),) + # Now, include all detection rule files found in the `builds/' + # directories. Note that the calling order of the various `detect.mk' + # files isn't predictable. + # + include $(wildcard $(BUILD_CONFIG)/*/detect.mk) +endif + +# In case no detection rule file was successful, use the default. +# +ifndef CONFIG_FILE + CONFIG_FILE := ansi.mk + setup: std_setup + .PHONY: setup +endif + +# Flash out and copy rules. +# +.PHONY: std_setup + +std_setup: + $(info ) + $(info $(PROJECT_TITLE) build system -- automatic system detection) + $(info ) + $(info The following settings are used:) + $(info ) + $(info $(empty) platform $(PLATFORM)) + $(info $(empty) compiler $(CC)) + $(info $(empty) configuration directory $(subst /,$(SEP),$(PLATFORM_DIR))) + $(info $(empty) configuration rules $(subst /,$(SEP),$(CONFIG_RULES))) + $(info ) + $(info If this does not correspond to your system or settings please remove the file) + $(info `$(CONFIG_MK)' from this directory then read the INSTALL file for help.) + $(info ) + $(info Otherwise, simply type `$(MAKE)' again to build the library,) + $(info or `$(MAKE) refdoc' to build the API reference (this needs Python >= 3.5).) + $(info ) + @$(COPY) $(subst /,$(SEP),$(CONFIG_RULES) $(CONFIG_MK)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/dos/detect.mk b/local/recipes/libs/freetype2/source/builds/dos/detect.mk new file mode 100644 index 0000000000..1d181240aa --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/dos/detect.mk @@ -0,0 +1,152 @@ +# +# FreeType 2 configuration file to detect a DOS host platform. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +.PHONY: setup + + +ifeq ($(PLATFORM),ansi) + + # Test for DJGPP by checking the DJGPP environment variable, which must be + # set in order to use the system (ie. it will always be present when the + # `make' utility is run). + # + # We test for the COMSPEC environment variable, then run the `ver' + # command-line program to see if its output contains the word `Dos' or + # `DOS'. + # + # If this is true, we are running a Dos-ish platform (or an emulation). + # + ifdef DJGPP + PLATFORM := dos + else + ifdef COMSPEC + is_dos := $(findstring DOS,$(subst Dos,DOS,$(shell ver))) + + # We try to recognize a Dos session under OS/2. The `ver' command + # returns `Operating System/2 ...' there, so `is_dos' should be empty. + # + # To recognize a Dos session under OS/2, we check COMSPEC for the + # substring `MDOS\COMMAND' + # + ifeq ($(is_dos),) + is_dos := $(findstring MDOS\COMMAND,$(COMSPEC)) + endif + + # We also try to recognize Dos 7.x without Windows 9X launched. + # See builds/windows/detect.mk for explanations about the logic. + # + ifeq ($(is_dos),) + ifdef winbootdir +#ifneq ($(OS),Windows_NT) + # If windows is available, do not trigger this test. + ifndef windir + is_dos := $(findstring Windows,$(strip $(shell ver))) + endif +#endif + endif + endif + + endif # test COMSPEC + + ifneq ($(is_dos),) + + PLATFORM := dos + + endif # test Dos + endif # test DJGPP +endif # test PLATFORM ansi + +ifeq ($(PLATFORM),dos) + + # Use DJGPP (i.e. gcc) by default. + # + CONFIG_FILE := dos-gcc.mk + CC ?= gcc + + # additionally, we provide hooks for various other compilers + # + ifneq ($(findstring emx,$(MAKECMDGOALS)),) # EMX gcc + CONFIG_FILE := dos-emx.mk + CC := gcc + + .PHONY: emx + emx: setup + @cd . + endif + + ifneq ($(findstring turboc,$(MAKECMDGOALS)),) # Turbo C + CONFIG_FILE := dos-tcc.mk + CC := tcc + + .PHONY: turboc + turboc: setup + @cd . + endif + + ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ + CONFIG_FILE := dos-wat.mk + CC := wcc386 + + .PHONY: watcom + watcom: setup + @cd . + endif + + ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32-bit + CONFIG_FILE := dos-bcc.mk + CC := bcc32 + + .PHONY: borlandc + borlandc: setup + @cd . + endif + + ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16-bit + CONFIG_FILE := dos-bcc.mk + CC := bcc + + .PHONY: borlandc16 + borlandc16: setup + @cd . + endif + + ifneq ($(findstring bash,$(SHELL)),) # check for bash + SEP := / + DELETE := rm + COPY := cp + CAT := cat + setup: std_setup + else + SEP := $(BACKSLASH) + DELETE := del + CAT := type + + # Setting COPY is a bit trickier. We can be running DJGPP on some + # Windows NT derivatives, like XP. See builds/windows/detect.mk for + # explanations why we need hacking here. + # + ifeq ($(OS),Windows_NT) + COPY := cmd.exe /c copy + else + COPY := copy + endif # test NT + + setup: std_setup + endif + +endif # test PLATFORM dos + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/dos/dos-def.mk b/local/recipes/libs/freetype2/source/builds/dos/dos-def.mk new file mode 100644 index 0000000000..88f70167fc --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/dos/dos-def.mk @@ -0,0 +1,48 @@ +# +# FreeType 2 DOS specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DELETE := del +CAT := type +SEP := $(strip \ ) +PLATFORM_DIR := $(TOP_DIR)/builds/dos +PLATFORM := dos + +# This is used for `make refdoc' and `make refdoc-venv' +# +BIN := Scripts + +# The executable file extension (for tools), *with* leading dot. +# +E := .exe + +# The directory where all library files are placed. +# +# By default, this is the same as $(OBJ_DIR); however, this can be changed +# to suit particular needs. +# +LIB_DIR := $(OBJ_DIR) + +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. +# +LIBRARY := $(PROJECT) + + +# The NO_OUTPUT macro is used to ignore the output of commands. +# +NO_OUTPUT = > nul + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/dos/dos-emx.mk b/local/recipes/libs/freetype2/source/builds/dos/dos-emx.mk new file mode 100644 index 0000000000..f1bc35954c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/dos/dos-emx.mk @@ -0,0 +1,21 @@ +# +# FreeType 2 configuration rules for the EMX gcc compiler +# + + +# Copyright (C) 2003-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +include $(TOP_DIR)/builds/dos/dos-def.mk +include $(TOP_DIR)/builds/compiler/emx.mk +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/dos/dos-gcc.mk b/local/recipes/libs/freetype2/source/builds/dos/dos-gcc.mk new file mode 100644 index 0000000000..f7bc5551e3 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/dos/dos-gcc.mk @@ -0,0 +1,21 @@ +# +# FreeType 2 configuration rules for the DJGPP compiler +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +include $(TOP_DIR)/builds/dos/dos-def.mk +include $(TOP_DIR)/builds/compiler/gcc.mk +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/dos/dos-wat.mk b/local/recipes/libs/freetype2/source/builds/dos/dos-wat.mk new file mode 100644 index 0000000000..6e096e6493 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/dos/dos-wat.mk @@ -0,0 +1,20 @@ +# +# FreeType 2 configuration rules for the Watcom C/C++ compiler +# + + +# Copyright (C) 2003-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +include $(TOP_DIR)/builds/dos/dos-def.mk +include $(TOP_DIR)/builds/compiler/watcom.mk +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/exports.mk b/local/recipes/libs/freetype2/source/builds/exports.mk new file mode 100644 index 0000000000..1df4010d28 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/exports.mk @@ -0,0 +1,80 @@ +# +# FreeType 2 exports sub-Makefile +# + + +# Copyright (C) 2005-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY +# OTHER MAKEFILES. + + +# This sub-Makefile is used to compute the list of exported symbols whenever +# the EXPORTS_LIST variable is defined by one of the platform or compiler +# specific build files. +# +# EXPORTS_LIST contains the name of the `list' file, for example a Windows +# .DEF file. +# +ifneq ($(EXPORTS_LIST),) + + # CCexe is the compiler used to compile the `apinames' tool program + # on the host machine. This isn't necessarily the same as the compiler + # which can be a cross-compiler for a different architecture, for example. + # + ifeq ($(CCexe),) + CCexe := $(CC) + endif + + # TE acts like T, but for executables instead of object files. + ifeq ($(TE),) + TE := $T + endif + + # The list of public headers we're going to parse. + PUBLIC_HEADERS := $(filter-out $(PUBLIC_DIR)/ftmac.h, \ + $(wildcard $(PUBLIC_DIR)/*.h)) + ifneq ($(ftmac_c),) + PUBLIC_HEADERS += $(PUBLIC_DIR)/ftmac.h + endif + + # The `apinames' source and executable. We use $E_BUILD as the host + # executable suffix, which *includes* the final dot. + # + # Note that $(APINAMES_OPTIONS) is empty, except for Windows compilers. + # + APINAMES_SRC := $(subst /,$(SEP),$(TOP_DIR)/src/tools/apinames.c) + APINAMES_EXE := $(subst /,$(SEP),$(OBJ_DIR)/apinames$(E_BUILD)) + + $(APINAMES_EXE): $(APINAMES_SRC) + $(CCexe) $(CCexe_CFLAGS) $(TE)$@ $< $(CCexe_LDFLAGS) + + .PHONY: symbols_list + + symbols_list: $(EXPORTS_LIST) + + # We manually add TT_New_Context and TT_RunIns, which are needed by TT + # debuggers, to the EXPORTS_LIST. + # + $(EXPORTS_LIST): $(APINAMES_EXE) $(PUBLIC_HEADERS) + $(subst /,$(SEP),$(APINAMES_EXE)) -o$@ $(APINAMES_OPTIONS) $(PUBLIC_HEADERS) + @echo TT_New_Context >> $(EXPORTS_LIST) + @echo TT_RunIns >> $(EXPORTS_LIST) + + $(PROJECT_LIBRARY): $(EXPORTS_LIST) + + CLEAN += $(EXPORTS_LIST) \ + $(APINAMES_EXE) + +endif + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/freetype.mk b/local/recipes/libs/freetype2/source/builds/freetype.mk new file mode 100644 index 0000000000..b6ff865b74 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/freetype.mk @@ -0,0 +1,385 @@ +# +# FreeType 2 library sub-Makefile +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY +# OTHER MAKEFILES. + + +# The following variables (set by other Makefile components, in the +# environment, or on the command line) are used: +# +# PLATFORM_DIR The architecture-dependent directory, +# e.g., `$(TOP_DIR)/builds/unix'. Added to INCLUDES also. +# +# OBJ_DIR The directory in which object files are created. +# +# LIB_DIR The directory in which the library is created. +# +# DOC_DIR The directory in which the API reference is created. +# +# INCLUDES A list of directories to be included additionally. +# +# DEVEL_DIR Development directory which is added to the INCLUDES +# variable before the standard include directories. +# +# CFLAGS Compilation flags. This overrides the default settings +# in the platform-specific configuration files. +# +# FTSYS_SRC If set, its value is used as the name of a replacement +# file for `src/base/ftsystem.c'. +# +# FTDEBUG_SRC If set, its value is used as the name of a replacement +# file for `src/base/ftdebug.c'. [For a normal build, this +# file does nothing.] +# +# FTMODULE_H The file which contains the list of module classes for +# the current build. Usually, this is automatically +# created by `modules.mk'. +# +# BASE_OBJ_S +# BASE_OBJ_M A list of base objects (for single object and multiple +# object builds, respectively). Set up in +# `src/base/rules.mk'. +# +# BASE_EXT_OBJ A list of base extension objects. Set up in +# `src/base/rules.mk'. +# +# DRV_OBJ_S +# DRV_OBJ_M A list of driver objects (for single object and multiple +# object builds, respectively). Set up cumulatively in +# `src//rules.mk'. +# +# CLEAN +# DISTCLEAN The sub-makefiles can append additional stuff to these two +# variables which is to be removed for the `clean' resp. +# `distclean' target. +# +# TOP_DIR, SEP, +# COMPILER_SEP, +# LIBRARY, CC, +# A, I, O, T Check `config.mk' for details. + + +# The targets `objects' and `library' are defined at the end of this +# Makefile after all other rules have been included. +# +.PHONY: single multi objects library refdoc refdoc-venv + +# default target -- build single objects and library +# +single: objects library + +# `multi' target -- build multiple objects and library +# +multi: objects library + + +# The FreeType source directory, usually `./src'. +# +SRC_DIR := $(TOP_DIR)/src + +# The directory where the base layer components are placed, usually +# `./src/base'. +# +BASE_DIR := $(SRC_DIR)/base + +# Other derived directories. +# +PUBLIC_DIR := $(TOP_DIR)/include/freetype +INTERNAL_DIR := $(PUBLIC_DIR)/internal +SERVICES_DIR := $(INTERNAL_DIR)/services +CONFIG_DIR := $(PUBLIC_DIR)/config + +# The documentation directory. +# +DOC_DIR ?= $(TOP_DIR)/docs + +# The final name of the library file. +# +PROJECT_LIBRARY := $(LIB_DIR)/$(LIBRARY).$A + + +# include paths +# +# IMPORTANT NOTE: The architecture-dependent directory must ALWAYS be placed +# before the standard include list. Porters are then able to +# put their own version of some of the FreeType components +# in the `builds/' directory, as these files will +# override the default sources. +# +INCLUDES := $(subst /,$(COMPILER_SEP),$(OBJ_DIR) \ + $(DEVEL_DIR) \ + $(PLATFORM_DIR) \ + $(TOP_DIR)/include) + +INCLUDE_FLAGS := $(INCLUDES:%=$I%) + +# For a development build, we assume that the external library dependencies +# defined in `ftoption.h' are fulfilled, so we directly access the necessary +# include directory information using `pkg-config'. +# +ifdef DEVEL_DIR + INCLUDE_FLAGS += $(shell pkg-config --cflags libpng) + INCLUDE_FLAGS += $(shell pkg-config --cflags harfbuzz) + INCLUDE_FLAGS += $(shell pkg-config --cflags libbrotlidec) +endif + + +# C flags used for the compilation of an object file. This must include at +# least the paths for the `base' and `builds/' directories; +# debug/optimization/warning flags + ansi compliance if needed. +# +# $(INCLUDE_FLAGS) should come before $(CFLAGS) to avoid problems with +# old FreeType versions. +# +# Note what we also define the macro FT2_BUILD_LIBRARY when building +# FreeType. This is required to let our sources include the internal +# headers (something forbidden by clients). +# +# `CPPFLAGS' might be specified by the user in the environment. +# +FT_CFLAGS = $(CPPFLAGS) \ + $(CFLAGS) \ + $DFT2_BUILD_LIBRARY + +FT_COMPILE := $(CC) $(ANSIFLAGS) $(INCLUDE_FLAGS) $(FT_CFLAGS) + + +# Include the `exports' rules file. +# +include $(TOP_DIR)/builds/exports.mk + + +# Initialize the list of objects. +# +OBJECTS_LIST := + + +# Define $(PUBLIC_H) as the list of all public header files located in +# `$(TOP_DIR)/include/freetype'. $(INTERNAL_H), and $(CONFIG_H) are defined +# similarly. $(FTOPTION_H) is the option file used in the compilation. +# +# This is used to simplify the dependency rules -- if one of these files +# changes, the whole library is recompiled. +# +ifneq ($(wildcard $(OBJ_DIR)/ftoption.h),) + FTOPTION_H := $(OBJ_DIR)/ftoption.h +else ifneq ($(wildcard $(PLATFORM_DIR)/ftoption.h),) + FTOPTION_H := $(PLATFORM_DIR)/ftoption.h +endif + +PUBLIC_H := $(wildcard $(PUBLIC_DIR)/*.h) +INTERNAL_H := $(wildcard $(INTERNAL_DIR)/*.h) \ + $(wildcard $(SERVICES_DIR)/*.h) +CONFIG_H := $(wildcard $(CONFIG_DIR)/*.h) \ + $(wildcard $(PLATFORM_DIR)/config/*.h) \ + $(FTMODULE_H) \ + $(FTOPTION_H) +DEVEL_H := $(wildcard $(TOP_DIR)/devel/*.h) + +FREETYPE_H := $(PUBLIC_H) $(INTERNAL_H) $(CONFIG_H) $(DEVEL_H) + + +# ftsystem component +# +FTSYS_SRC ?= $(BASE_DIR)/ftsystem.c + +FTSYS_OBJ := $(OBJ_DIR)/ftsystem.$O + +OBJECTS_LIST += $(FTSYS_OBJ) + +$(FTSYS_OBJ): $(FTSYS_SRC) $(FREETYPE_H) + $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) + + +# ftdebug component +# +FTDEBUG_SRC ?= $(BASE_DIR)/ftdebug.c + +FTDEBUG_OBJ := $(OBJ_DIR)/ftdebug.$O + +OBJECTS_LIST += $(FTDEBUG_OBJ) + +$(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(FREETYPE_H) + $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) + + +# Include all rule files from FreeType components. +# +include $(SRC_DIR)/base/rules.mk +include $(patsubst %,$(SRC_DIR)/%/rules.mk,$(MODULES)) +include $(SRC_DIR)/dlg/rules.mk + + +# ftinit component +# +# The C source `ftinit.c' contains the FreeType initialization routines. +# It is able to automatically register one or more drivers when the API +# function FT_Init_FreeType() is called. +# +# The set of initial drivers is determined by the driver Makefiles +# includes above. Each driver Makefile updates the FTINIT_xxx lists +# which contain additional include paths and macros used to compile the +# single `ftinit.c' source. +# +FTINIT_SRC := $(BASE_DIR)/ftinit.c +FTINIT_OBJ := $(OBJ_DIR)/ftinit.$O + +OBJECTS_LIST += $(FTINIT_OBJ) + +$(FTINIT_OBJ): $(FTINIT_SRC) $(FREETYPE_H) + $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) + + +# ftver component +# +# The VERSIONINFO resource `ftver.rc' contains version and copyright +# to be compiled by windres and tagged into DLL usually. +# +ifneq ($(RC),) + FTVER_SRC := $(BASE_DIR)/ftver.rc + FTVER_OBJ := $(OBJ_DIR)/ftver.$O + + OBJECTS_LIST += $(FTVER_OBJ) + + $(FTVER_OBJ): $(FTVER_SRC) + $(RC) -o $@ $< +endif + + +# All FreeType library objects. +# +OBJ_M := $(BASE_OBJ_M) $(BASE_EXT_OBJ) $(DRV_OBJS_M) $(DLG_OBJS_M) +OBJ_S := $(BASE_OBJ_S) $(BASE_EXT_OBJ) $(DRV_OBJS_S) $(DLG_OBJS_S) + + +# The target `multi' on the Make command line indicates that we want to +# compile each source file independently. +# +# Otherwise, each module/driver is compiled in a single object file through +# source file inclusion (see `src/base/ftbase.c' or +# `src/truetype/truetype.c' for examples). +# +BASE_OBJECTS := $(OBJECTS_LIST) + +ifneq ($(findstring multi,$(MAKECMDGOALS)),) + OBJECTS_LIST += $(OBJ_M) +else + OBJECTS_LIST += $(OBJ_S) +endif + +objects: $(OBJECTS_LIST) + +library: $(PROJECT_LIBRARY) + +# Run `docwriter' in the current Python environment. +# +PYTHON ?= python + +refdoc: + @echo Running docwriter... + $(PYTHON) -m docwriter \ + --prefix=ft2 \ + --title=FreeType-$(version) \ + --site=reference \ + --output=$(DOC_DIR) \ + $(PUBLIC_DIR)/*.h \ + $(PUBLIC_DIR)/config/*.h \ + $(PUBLIC_DIR)/cache/*.h + @echo Building static site... + cd $(DOC_DIR) && $(PYTHON) -m mkdocs build + @echo Done. + +# Variables for running `refdoc' with Python's `virtualenv'. The +# environment is created in `DOC_DIR/env' and is gitignored. +# +# We still need to cd into `DOC_DIR' to build `mkdocs' because paths in +# `mkdocs.yml' are relative to the current working directory. +# +VENV_NAME := env +VENV_DIR := $(DOC_DIR)$(SEP)$(VENV_NAME) +ENV_PYTHON := $(VENV_DIR)$(SEP)$(BIN)$(SEP)$(PYTHON) + +refdoc-venv: + @echo Setting up virtualenv for Python... + virtualenv --python=$(PYTHON) $(VENV_DIR) + @echo Installing docwriter... + $(ENV_PYTHON) -m pip install docwriter + @echo Running docwriter... + $(ENV_PYTHON) -m docwriter \ + --prefix=ft2 \ + --title=FreeType-$(version) \ + --site=reference \ + --output=$(DOC_DIR) \ + $(PUBLIC_DIR)/*.h \ + $(PUBLIC_DIR)/config/*.h \ + $(PUBLIC_DIR)/cache/*.h + @echo Building static site... + cd $(DOC_DIR) && $(VENV_NAME)$(SEP)$(BIN)$(SEP)python -m mkdocs build + @echo Done. + +.PHONY: clean_project_std distclean_project_std + +# Standard cleaning and distclean rules. These are not accepted +# on all systems though. +# +clean_project_std: + -$(DELETE) $(BASE_OBJECTS) $(OBJ_M) $(OBJ_S) $(CLEAN) + +distclean_project_std: clean_project_std + -$(DELETE) $(PROJECT_LIBRARY) + -$(DELETE) *.orig *~ core *.core $(DISTCLEAN) + + +.PHONY: clean_project_dos distclean_project_dos + +# The Dos command shell does not support very long list of arguments, so +# we are stuck with wildcards. +# +# Don't break the command lines with \; this prevents the "del" command from +# working correctly on Win9x. +# +clean_project_dos: + -$(DELETE) $(subst /,$(SEP),$(OBJ_DIR)/*.$O $(CLEAN) $(NO_OUTPUT)) + +distclean_project_dos: clean_project_dos + -$(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY) $(DISTCLEAN) $(NO_OUTPUT)) + + +.PHONY: remove_config_mk remove_ftmodule_h + +# Remove configuration file (used for distclean). +# +remove_config_mk: + -$(DELETE) $(subst /,$(SEP),$(CONFIG_MK) $(NO_OUTPUT)) + +# Remove module list (used for distclean). +# +remove_ftmodule_h: + -$(DELETE) $(subst /,$(SEP),$(FTMODULE_H) $(NO_OUTPUT)) + + +.PHONY: clean distclean + +# The `config.mk' file must define `clean_project' and `distclean_project'. +# Implementations may use to relay these to either the `std' or `dos' +# versions from above, or simply provide their own implementation. +# +clean: clean_project +distclean: distclean_project remove_config_mk remove_ftmodule_h + -$(DELETE) $(subst /,$(SEP),$(DOC_DIR)/*.html $(NO_OUTPUT)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/link_dos.mk b/local/recipes/libs/freetype2/source/builds/link_dos.mk new file mode 100644 index 0000000000..923639d489 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/link_dos.mk @@ -0,0 +1,42 @@ +# +# Link instructions for Dos-like systems (Dos, Win32, OS/2) +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +ifdef BUILD_PROJECT + + .PHONY: clean_project distclean_project + + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP_DIR)/builds/$(PROJECT).mk + + # The cleanup targets. + # + clean_project: clean_project_dos + distclean_project: distclean_project_dos + + # This final rule is used to link all object files into a single library. + # this is compiler-specific + # + $(PROJECT_LIBRARY): $(OBJECTS_LIST) + ifdef CLEAN_LIBRARY + -$(CLEAN_LIBRARY) $(NO_OUTPUT) + endif + $(LINK_LIBRARY) + +endif + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/link_std.mk b/local/recipes/libs/freetype2/source/builds/link_std.mk new file mode 100644 index 0000000000..008de5170c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/link_std.mk @@ -0,0 +1,42 @@ +# +# Link instructions for standard systems +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +ifdef BUILD_PROJECT + + .PHONY: clean_project distclean_project + + # Now include the main sub-makefile. It contains all the rules used to + # build the library with the previous variables defined. + # + include $(TOP_DIR)/builds/$(PROJECT).mk + + # The cleanup targets. + # + clean_project: clean_project_std + distclean_project: distclean_project_std + + # This final rule is used to link all object files into a single library. + # this is compiler-specific + # + $(PROJECT_LIBRARY): $(OBJECTS_LIST) + ifdef CLEAN_LIBRARY + -$(CLEAN_LIBRARY) $(NO_OUTPUT) + endif + $(LINK_LIBRARY) + +endif + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_cfm.make.txt b/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_cfm.make.txt new file mode 100644 index 0000000000..b74565f107 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_cfm.make.txt @@ -0,0 +1,209 @@ +# File: FreeType.m68k_cfm.make +# Target: FreeType.m68k_cfm +# Created: Thursday, October 27, 2005 09:23:25 PM + + +MAKEFILE = FreeType.m68k_cfm.make +\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified + +ObjDir = :objs: +Includes = \xB6 + -ansi strict \xB6 + -includes unix \xB6 + -i :include: \xB6 + -i :src: \xB6 + -i :include:freetype:config: + +Sym-68K = -sym off + +COptions = \xB6 + -d FT_MACINTOSH=1 \xB6 + -d HAVE_FSSPEC=1 \xB6 + -d HAVE_FSREF=0 \xB6 + -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 + -d HAVE_QUICKDRAW_CARBON=0 \xB6 + -d HAVE_ATS=0 \xB6 + -d FT2_BUILD_LIBRARY \xB6 + -d FT_CONFIG_CONFIG_H="" \xB6 + -d FT_CONFIG_MODULES_H="" \xB6 + {Includes} {Sym-68K} -model cfmseg + + +### Source Files ### + +SrcFiles = \xB6 + :src:autofit:autofit.c \xB6 + :builds:mac:ftbase.c \xB6 + :src:base:ftbbox.c \xB6 + :src:base:ftbdf.c \xB6 + :src:base:ftbitmap.c \xB6 + :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 + :src:base:ftglyph.c \xB6 + :src:base:ftgxval.c \xB6 + :src:base:ftinit.c \xB6 + :src:base:ftmm.c \xB6 + :src:base:ftotval.c \xB6 + :src:base:ftpfr.c \xB6 + :src:base:ftstroke.c \xB6 + :src:base:ftsynth.c \xB6 + :src:base:ftsystem.c \xB6 + :src:base:fttype1.c \xB6 + :src:base:ftwinfnt.c \xB6 + :src:cache:ftcache.c \xB6 + :src:bdf:bdf.c \xB6 + :src:cff:cff.c \xB6 + :src:cid:type1cid.c \xB6 +# :src:gxvalid:gxvalid.c \xB6 + :src:gzip:ftgzip.c \xB6 + :src:bzip2:ftbzip2.c \xB6 + :src:lzw:ftlzw.c \xB6 + :src:otvalid:otvalid.c \xB6 + :src:pcf:pcf.c \xB6 + :src:pfr:pfr.c \xB6 + :src:psaux:psaux.c \xB6 + :src:pshinter:pshinter.c \xB6 + :src:psnames:psmodule.c \xB6 + :src:raster:raster.c \xB6 + :src:sfnt:sfnt.c \xB6 + :src:smooth:smooth.c \xB6 + :src:truetype:truetype.c \xB6 + :src:type1:type1.c \xB6 + :src:type42:type42.c \xB6 + :src:winfonts:winfnt.c + + +### Object Files ### + +ObjFiles-68K = \xB6 + "{ObjDir}autofit.c.o" \xB6 + "{ObjDir}ftbase.c.o" \xB6 + "{ObjDir}ftbbox.c.o" \xB6 + "{ObjDir}ftbdf.c.o" \xB6 + "{ObjDir}ftbitmap.c.o" \xB6 + "{ObjDir}ftdebug.c.o" \xB6 + "{ObjDir}ftfstype.c.o" \xB6 + "{ObjDir}ftglyph.c.o" \xB6 + "{ObjDir}ftgxval.c.o" \xB6 + "{ObjDir}ftinit.c.o" \xB6 + "{ObjDir}ftmm.c.o" \xB6 + "{ObjDir}ftotval.c.o" \xB6 + "{ObjDir}ftpfr.c.o" \xB6 + "{ObjDir}ftstroke.c.o" \xB6 + "{ObjDir}ftsynth.c.o" \xB6 + "{ObjDir}ftsystem.c.o" \xB6 + "{ObjDir}fttype1.c.o" \xB6 + "{ObjDir}ftwinfnt.c.o" \xB6 + "{ObjDir}ftcache.c.o" \xB6 + "{ObjDir}bdf.c.o" \xB6 + "{ObjDir}cff.c.o" \xB6 + "{ObjDir}type1cid.c.o" \xB6 +# "{ObjDir}gxvalid.c.o" \xB6 + "{ObjDir}ftgzip.c.o" \xB6 + "{ObjDir}ftbzip2.c.o" \xB6 + "{ObjDir}ftlzw.c.o" \xB6 + "{ObjDir}otvalid.c.o" \xB6 + "{ObjDir}pcf.c.o" \xB6 + "{ObjDir}pfr.c.o" \xB6 + "{ObjDir}psaux.c.o" \xB6 + "{ObjDir}pshinter.c.o" \xB6 + "{ObjDir}psmodule.c.o" \xB6 + "{ObjDir}raster.c.o" \xB6 + "{ObjDir}sfnt.c.o" \xB6 + "{ObjDir}smooth.c.o" \xB6 + "{ObjDir}truetype.c.o" \xB6 + "{ObjDir}type1.c.o" \xB6 + "{ObjDir}type42.c.o" \xB6 + "{ObjDir}winfnt.c.o" + + +### Libraries ### + +LibFiles-68K = + + +### Default Rules ### + +.c.o \xC4 .c {\xA5MondoBuild\xA5} + {C} {depDir}{default}.c -o {targDir}{default}.c.o {COptions} + + +### Build Rules ### + +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.o" \xC4\xC4 :builds:mac:ftbase.c + {C} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.o" \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {COptions} + +FreeType.m68k_cfm \xC4\xC4 FreeType.m68k_cfm.o + +FreeType.m68k_cfm.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5} + Lib \xB6 + -o {Targ} \xB6 + {ObjFiles-68K} \xB6 + {LibFiles-68K} \xB6 + {Sym-68K} \xB6 + -mf -d + + + +### Required Dependencies ### + +"{ObjDir}autofit.c.o" \xC4 :src:autofit:autofit.c +# "{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c +"{ObjDir}ftbbox.c.o" \xC4 :src:base:ftbbox.c +"{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c +"{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c +"{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c +"{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c +"{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c +"{ObjDir}ftinit.c.o" \xC4 :src:base:ftinit.c +"{ObjDir}ftmm.c.o" \xC4 :src:base:ftmm.c +"{ObjDir}ftotval.c.o" \xC4 :src:base:ftotval.c +"{ObjDir}ftpfr.c.o" \xC4 :src:base:ftpfr.c +"{ObjDir}ftstroke.c.o" \xC4 :src:base:ftstroke.c +"{ObjDir}ftsynth.c.o" \xC4 :src:base:ftsynth.c +"{ObjDir}ftsystem.c.o" \xC4 :src:base:ftsystem.c +"{ObjDir}fttype1.c.o" \xC4 :src:base:fttype1.c +"{ObjDir}ftwinfnt.c.o" \xC4 :src:base:ftwinfnt.c +"{ObjDir}ftcache.c.o" \xC4 :src:cache:ftcache.c +"{ObjDir}bdf.c.o" \xC4 :src:bdf:bdf.c +"{ObjDir}cff.c.o" \xC4 :src:cff:cff.c +"{ObjDir}type1cid.c.o" \xC4 :src:cid:type1cid.c +# "{ObjDir}gxvalid.c.o" \xC4 :src:gxvalid:gxvalid.c +"{ObjDir}ftgzip.c.o" \xC4 :src:gzip:ftgzip.c +"{ObjDir}ftbzip2.c.o" \xC4 :src:bzip2:ftbzip2.c +"{ObjDir}ftlzw.c.o" \xC4 :src:lzw:ftlzw.c +"{ObjDir}otvalid.c.o" \xC4 :src:otvalid:otvalid.c +"{ObjDir}pcf.c.o" \xC4 :src:pcf:pcf.c +"{ObjDir}pfr.c.o" \xC4 :src:pfr:pfr.c +"{ObjDir}psaux.c.o" \xC4 :src:psaux:psaux.c +"{ObjDir}pshinter.c.o" \xC4 :src:pshinter:pshinter.c +"{ObjDir}psmodule.c.o" \xC4 :src:psnames:psmodule.c +"{ObjDir}raster.c.o" \xC4 :src:raster:raster.c +"{ObjDir}sfnt.c.o" \xC4 :src:sfnt:sfnt.c +"{ObjDir}smooth.c.o" \xC4 :src:smooth:smooth.c +"{ObjDir}truetype.c.o" \xC4 :src:truetype:truetype.c +"{ObjDir}type1.c.o" \xC4 :src:type1:type1.c +"{ObjDir}type42.c.o" \xC4 :src:type42:type42.c +"{ObjDir}winfnt.c.o" \xC4 :src:winfonts:winfnt.c + + +### Optional Dependencies ### +### Build this target to generate "include file" dependencies. ### + +Dependencies \xC4 $OutOfDate + MakeDepend \xB6 + -append {MAKEFILE} \xB6 + -ignore "{CIncludes}" \xB6 + -objdir "{ObjDir}" \xB6 + -objext .o \xB6 + {Includes} \xB6 + {SrcFiles} + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_far.make.txt b/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_far.make.txt new file mode 100644 index 0000000000..d880ddbb7c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/FreeType.m68k_far.make.txt @@ -0,0 +1,208 @@ +# File: FreeType.m68k_far.make +# Target: FreeType.m68k_far +# Created: Tuesday, October 25, 2005 03:34:05 PM + + +MAKEFILE = FreeType.m68k_far.make +\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified + +ObjDir = :objs: +Includes = \xB6 + -includes unix \xB6 + -i :include: \xB6 + -i :src: \xB6 + -i :include:freetype:config: + +Sym-68K = -sym off + +COptions = \xB6 + -d FT_MACINTOSH=1 \xB6 + -d HAVE_FSSPEC=1 \xB6 + -d HAVE_FSREF=0 \xB6 + -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 + -d HAVE_QUICKDRAW_CARBON=0 \xB6 + -d HAVE_ATS=0 \xB6 + -d FT2_BUILD_LIBRARY \xB6 + -d FT_CONFIG_CONFIG_H="" \xB6 + -d FT_CONFIG_MODULES_H="" \xB6 + {Includes} {Sym-68K} -model far + + +### Source Files ### + +SrcFiles = \xB6 + :src:autofit:autofit.c \xB6 + :builds:mac:ftbase.c \xB6 + :src:base:ftbbox.c \xB6 + :src:base:ftbdf.c \xB6 + :src:base:ftbitmap.c \xB6 + :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 + :src:base:ftglyph.c \xB6 + :src:base:ftgxval.c \xB6 + :src:base:ftinit.c \xB6 + :src:base:ftmm.c \xB6 + :src:base:ftotval.c \xB6 + :src:base:ftpfr.c \xB6 + :src:base:ftstroke.c \xB6 + :src:base:ftsynth.c \xB6 + :src:base:ftsystem.c \xB6 + :src:base:fttype1.c \xB6 + :src:base:ftwinfnt.c \xB6 + :src:cache:ftcache.c \xB6 + :src:bdf:bdf.c \xB6 + :src:cff:cff.c \xB6 + :src:cid:type1cid.c \xB6 + :src:gxvalid:gxvalid.c \xB6 + :src:gzip:ftgzip.c \xB6 + :src:bzip2:ftbzip2.c \xB6 + :src:lzw:ftlzw.c \xB6 + :src:otvalid:otvalid.c \xB6 + :src:pcf:pcf.c \xB6 + :src:pfr:pfr.c \xB6 + :src:psaux:psaux.c \xB6 + :src:pshinter:pshinter.c \xB6 + :src:psnames:psmodule.c \xB6 + :src:raster:raster.c \xB6 + :src:sfnt:sfnt.c \xB6 + :src:smooth:smooth.c \xB6 + :src:truetype:truetype.c \xB6 + :src:type1:type1.c \xB6 + :src:type42:type42.c \xB6 + :src:winfonts:winfnt.c + + +### Object Files ### + +ObjFiles-68K = \xB6 + "{ObjDir}autofit.c.o" \xB6 + "{ObjDir}ftbase.c.o" \xB6 + "{ObjDir}ftbbox.c.o" \xB6 + "{ObjDir}ftbdf.c.o" \xB6 + "{ObjDir}ftbitmap.c.o" \xB6 + "{ObjDir}ftdebug.c.o" \xB6 + "{ObjDir}ftfstype.c.o" \xB6 + "{ObjDir}ftglyph.c.o" \xB6 + "{ObjDir}ftgxval.c.o" \xB6 + "{ObjDir}ftinit.c.o" \xB6 + "{ObjDir}ftmm.c.o" \xB6 + "{ObjDir}ftotval.c.o" \xB6 + "{ObjDir}ftpfr.c.o" \xB6 + "{ObjDir}ftstroke.c.o" \xB6 + "{ObjDir}ftsynth.c.o" \xB6 + "{ObjDir}ftsystem.c.o" \xB6 + "{ObjDir}fttype1.c.o" \xB6 + "{ObjDir}ftwinfnt.c.o" \xB6 + "{ObjDir}ftcache.c.o" \xB6 + "{ObjDir}bdf.c.o" \xB6 + "{ObjDir}cff.c.o" \xB6 + "{ObjDir}type1cid.c.o" \xB6 + "{ObjDir}gxvalid.c.o" \xB6 + "{ObjDir}ftgzip.c.o" \xB6 + "{ObjDir}ftbzip2.c.o" \xB6 + "{ObjDir}ftlzw.c.o" \xB6 + "{ObjDir}otvalid.c.o" \xB6 + "{ObjDir}pcf.c.o" \xB6 + "{ObjDir}pfr.c.o" \xB6 + "{ObjDir}psaux.c.o" \xB6 + "{ObjDir}pshinter.c.o" \xB6 + "{ObjDir}psmodule.c.o" \xB6 + "{ObjDir}raster.c.o" \xB6 + "{ObjDir}sfnt.c.o" \xB6 + "{ObjDir}smooth.c.o" \xB6 + "{ObjDir}truetype.c.o" \xB6 + "{ObjDir}type1.c.o" \xB6 + "{ObjDir}type42.c.o" \xB6 + "{ObjDir}winfnt.c.o" + + +### Libraries ### + +LibFiles-68K = + + +### Default Rules ### + +.c.o \xC4 .c {\xA5MondoBuild\xA5} + {C} {depDir}{default}.c -o {targDir}{default}.c.o {COptions} \xB6 + -ansi strict + +### Build Rules ### + +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.o" \xC4\xC4 :builds:mac:ftbase.c + {C} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.o" \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {COptions} + +FreeType.m68k_far \xC4\xC4 FreeType.m68k_far.o + +FreeType.m68k_far.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5} + Lib \xB6 + -o {Targ} \xB6 + {ObjFiles-68K} \xB6 + {LibFiles-68K} \xB6 + {Sym-68K} \xB6 + -mf -d + + + +### Required Dependencies ### + +"{ObjDir}autofit.c.o" \xC4 :src:autofit:autofit.c +# "{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c +"{ObjDir}ftbbox.c.o" \xC4 :src:base:ftbbox.c +"{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c +"{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c +"{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c +"{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c +"{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c +"{ObjDir}ftinit.c.o" \xC4 :src:base:ftinit.c +"{ObjDir}ftmm.c.o" \xC4 :src:base:ftmm.c +"{ObjDir}ftotval.c.o" \xC4 :src:base:ftotval.c +"{ObjDir}ftpfr.c.o" \xC4 :src:base:ftpfr.c +"{ObjDir}ftstroke.c.o" \xC4 :src:base:ftstroke.c +"{ObjDir}ftsynth.c.o" \xC4 :src:base:ftsynth.c +"{ObjDir}ftsystem.c.o" \xC4 :src:base:ftsystem.c +"{ObjDir}fttype1.c.o" \xC4 :src:base:fttype1.c +"{ObjDir}ftwinfnt.c.o" \xC4 :src:base:ftwinfnt.c +"{ObjDir}ftcache.c.o" \xC4 :src:cache:ftcache.c +"{ObjDir}bdf.c.o" \xC4 :src:bdf:bdf.c +"{ObjDir}cff.c.o" \xC4 :src:cff:cff.c +"{ObjDir}type1cid.c.o" \xC4 :src:cid:type1cid.c +"{ObjDir}gxvalid.c.o" \xC4 :src:gxvalid:gxvalid.c +"{ObjDir}ftgzip.c.o" \xC4 :src:gzip:ftgzip.c +"{ObjDir}ftbzip2.c.o" \xC4 :src:bzip2:ftbzip2.c +"{ObjDir}ftlzw.c.o" \xC4 :src:lzw:ftlzw.c +"{ObjDir}otvalid.c.o" \xC4 :src:otvalid:otvalid.c +"{ObjDir}pcf.c.o" \xC4 :src:pcf:pcf.c +"{ObjDir}pfr.c.o" \xC4 :src:pfr:pfr.c +"{ObjDir}psaux.c.o" \xC4 :src:psaux:psaux.c +"{ObjDir}pshinter.c.o" \xC4 :src:pshinter:pshinter.c +"{ObjDir}psmodule.c.o" \xC4 :src:psnames:psmodule.c +"{ObjDir}raster.c.o" \xC4 :src:raster:raster.c +"{ObjDir}sfnt.c.o" \xC4 :src:sfnt:sfnt.c +"{ObjDir}smooth.c.o" \xC4 :src:smooth:smooth.c +"{ObjDir}truetype.c.o" \xC4 :src:truetype:truetype.c +"{ObjDir}type1.c.o" \xC4 :src:type1:type1.c +"{ObjDir}type42.c.o" \xC4 :src:type42:type42.c +"{ObjDir}winfnt.c.o" \xC4 :src:winfonts:winfnt.c + + +### Optional Dependencies ### +### Build this target to generate "include file" dependencies. ### + +Dependencies \xC4 $OutOfDate + MakeDepend \xB6 + -append {MAKEFILE} \xB6 + -ignore "{CIncludes}" \xB6 + -objdir "{ObjDir}" \xB6 + -objext .o \xB6 + {Includes} \xB6 + {SrcFiles} + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_carbon.make.txt b/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_carbon.make.txt new file mode 100644 index 0000000000..1fa8c30760 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_carbon.make.txt @@ -0,0 +1,212 @@ +# File: FreeType.ppc_carbon.make +# Target: FreeType.ppc_carbon +# Created: Friday, October 28, 2005 03:40:06 PM + + +MAKEFILE = FreeType.ppc_carbon.make +\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified + +ObjDir = :objs: +Includes = \xB6 + -ansi strict \xB6 + -includes unix \xB6 + -i :include: \xB6 + -i :src: \xB6 + -i :include:freetype:config: + +Sym-PPC = -sym off + +PPCCOptions = \xB6 + -d FT_MACINTOSH=1 \xB6 + -d HAVE_FSSPEC=1 \xB6 + -d HAVE_FSREF=1 \xB6 + -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 + -d HAVE_QUICKDRAW_CARBON=1 \xB6 + -d HAVE_ATS=0 \xB6 + -d FT2_BUILD_LIBRARY \xB6 + -d FT_CONFIG_CONFIG_H="" \xB6 + -d FT_CONFIG_MODULES_H="" \xB6 + {Includes} {Sym-PPC} -d TARGET_API_MAC_CARBON=1 + + +### Source Files ### + +SrcFiles = \xB6 + :src:autofit:autofit.c \xB6 + :builds:mac:ftbase.c \xB6 + :src:base:ftbbox.c \xB6 + :src:base:ftbdf.c \xB6 + :src:base:ftbitmap.c \xB6 + :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 + :src:base:ftglyph.c \xB6 + :src:base:ftgxval.c \xB6 + :src:base:ftinit.c \xB6 + :src:base:ftmm.c \xB6 + :src:base:ftotval.c \xB6 + :src:base:ftpfr.c \xB6 + :src:base:ftstroke.c \xB6 + :src:base:ftsynth.c \xB6 + :src:base:ftsystem.c \xB6 + :src:base:fttype1.c \xB6 + :src:base:ftwinfnt.c \xB6 + :src:cache:ftcache.c \xB6 + :src:bdf:bdf.c \xB6 + :src:cff:cff.c \xB6 + :src:cid:type1cid.c \xB6 + :src:gxvalid:gxvalid.c \xB6 + :src:gzip:ftgzip.c \xB6 + :src:bzip2:ftbzip2.c \xB6 + :src:lzw:ftlzw.c \xB6 + :src:otvalid:otvalid.c \xB6 + :src:pcf:pcf.c \xB6 + :src:pfr:pfr.c \xB6 + :src:psaux:psaux.c \xB6 + :src:pshinter:pshinter.c \xB6 + :src:psnames:psmodule.c \xB6 + :src:raster:raster.c \xB6 + :src:sfnt:sfnt.c \xB6 + :src:smooth:smooth.c \xB6 + :src:truetype:truetype.c \xB6 + :src:type1:type1.c \xB6 + :src:type42:type42.c \xB6 + :src:winfonts:winfnt.c + + +### Object Files ### + +ObjFiles-PPC = \xB6 + "{ObjDir}autofit.c.x" \xB6 + "{ObjDir}ftbase.c.x" \xB6 + "{ObjDir}ftbbox.c.x" \xB6 + "{ObjDir}ftbdf.c.x" \xB6 + "{ObjDir}ftbitmap.c.x" \xB6 + "{ObjDir}ftdebug.c.x" \xB6 + "{ObjDir}ftfstype.c.x" \xB6 + "{ObjDir}ftglyph.c.x" \xB6 + "{ObjDir}ftgxval.c.x" \xB6 + "{ObjDir}ftinit.c.x" \xB6 + "{ObjDir}ftmm.c.x" \xB6 + "{ObjDir}ftotval.c.x" \xB6 + "{ObjDir}ftpfr.c.x" \xB6 + "{ObjDir}ftstroke.c.x" \xB6 + "{ObjDir}ftsynth.c.x" \xB6 + "{ObjDir}ftsystem.c.x" \xB6 + "{ObjDir}fttype1.c.x" \xB6 + "{ObjDir}ftwinfnt.c.x" \xB6 + "{ObjDir}ftcache.c.x" \xB6 + "{ObjDir}bdf.c.x" \xB6 + "{ObjDir}cff.c.x" \xB6 + "{ObjDir}type1cid.c.x" \xB6 + "{ObjDir}gxvalid.c.x" \xB6 + "{ObjDir}ftgzip.c.x" \xB6 + "{ObjDir}ftbzip2.c.x" \xB6 + "{ObjDir}ftlzw.c.x" \xB6 + "{ObjDir}otvalid.c.x" \xB6 + "{ObjDir}pcf.c.x" \xB6 + "{ObjDir}pfr.c.x" \xB6 + "{ObjDir}psaux.c.x" \xB6 + "{ObjDir}pshinter.c.x" \xB6 + "{ObjDir}psmodule.c.x" \xB6 + "{ObjDir}raster.c.x" \xB6 + "{ObjDir}sfnt.c.x" \xB6 + "{ObjDir}smooth.c.x" \xB6 + "{ObjDir}truetype.c.x" \xB6 + "{ObjDir}type1.c.x" \xB6 + "{ObjDir}type42.c.x" \xB6 + "{ObjDir}winfnt.c.x" + + +### Libraries ### + +LibFiles-PPC = + + +### Default Rules ### + +.c.x \xC4 .c {\xA5MondoBuild\xA5} + {PPCC} {depDir}{default}.c -o {targDir}{default}.c.x {PPCCOptions} + + +### Build Rules ### + +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.x" \xC4\xC4 :builds:mac:ftbase.c + {PPCC} :builds:mac:ftbase.c -o {ObjDir}ftbase.c.x \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {PPCCOptions} + +FreeType.ppc_carbon \xC4\xC4 FreeType.ppc_carbon.o + +FreeType.ppc_carbon.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\xA5} + PPCLink \xB6 + -o {Targ} \xB6 + {ObjFiles-PPC} \xB6 + {LibFiles-PPC} \xB6 + {Sym-PPC} \xB6 + -mf -d \xB6 + -t 'XCOF' \xB6 + -c 'MPS ' \xB6 + -xm l + + + +### Required Dependencies ### + +"{ObjDir}autofit.c.x" \xC4 :src:autofit:autofit.c +# "{ObjDir}ftbase.c.x" \xC4 :builds:mac:ftbase.c +"{ObjDir}ftbbox.c.x" \xC4 :src:base:ftbbox.c +"{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c +"{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c +"{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c +"{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c +"{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c +"{ObjDir}ftinit.c.x" \xC4 :src:base:ftinit.c +"{ObjDir}ftmm.c.x" \xC4 :src:base:ftmm.c +"{ObjDir}ftotval.c.x" \xC4 :src:base:ftotval.c +"{ObjDir}ftpfr.c.x" \xC4 :src:base:ftpfr.c +"{ObjDir}ftstroke.c.x" \xC4 :src:base:ftstroke.c +"{ObjDir}ftsynth.c.x" \xC4 :src:base:ftsynth.c +"{ObjDir}ftsystem.c.x" \xC4 :src:base:ftsystem.c +"{ObjDir}fttype1.c.x" \xC4 :src:base:fttype1.c +"{ObjDir}ftwinfnt.c.x" \xC4 :src:base:ftwinfnt.c +"{ObjDir}ftcache.c.x" \xC4 :src:cache:ftcache.c +"{ObjDir}bdf.c.x" \xC4 :src:bdf:bdf.c +"{ObjDir}cff.c.x" \xC4 :src:cff:cff.c +"{ObjDir}type1cid.c.x" \xC4 :src:cid:type1cid.c +"{ObjDir}gxvalid.c.x" \xC4 :src:gxvalid:gxvalid.c +"{ObjDir}ftgzip.c.x" \xC4 :src:gzip:ftgzip.c +"{ObjDir}ftbzip2.c.x" \xC4 :src:bzip2:ftbzip2.c +"{ObjDir}ftlzw.c.x" \xC4 :src:lzw:ftlzw.c +"{ObjDir}otvalid.c.x" \xC4 :src:otvalid:otvalid.c +"{ObjDir}pcf.c.x" \xC4 :src:pcf:pcf.c +"{ObjDir}pfr.c.x" \xC4 :src:pfr:pfr.c +"{ObjDir}psaux.c.x" \xC4 :src:psaux:psaux.c +"{ObjDir}pshinter.c.x" \xC4 :src:pshinter:pshinter.c +"{ObjDir}psmodule.c.x" \xC4 :src:psnames:psmodule.c +"{ObjDir}raster.c.x" \xC4 :src:raster:raster.c +"{ObjDir}sfnt.c.x" \xC4 :src:sfnt:sfnt.c +"{ObjDir}smooth.c.x" \xC4 :src:smooth:smooth.c +"{ObjDir}truetype.c.x" \xC4 :src:truetype:truetype.c +"{ObjDir}type1.c.x" \xC4 :src:type1:type1.c +"{ObjDir}type42.c.x" \xC4 :src:type42:type42.c +"{ObjDir}winfnt.c.x" \xC4 :src:winfonts:winfnt.c + + +### Optional Dependencies ### +### Build this target to generate "include file" dependencies. ### + +Dependencies \xC4 $OutOfDate + MakeDepend \xB6 + -append {MAKEFILE} \xB6 + -ignore "{CIncludes}" \xB6 + -objdir "{ObjDir}" \xB6 + -objext .x \xB6 + {Includes} \xB6 + {SrcFiles} + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_classic.make.txt b/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_classic.make.txt new file mode 100644 index 0000000000..2550190cbf --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/FreeType.ppc_classic.make.txt @@ -0,0 +1,213 @@ +# File: FreeType.ppc_classic.make +# Target: FreeType.ppc_classic +# Created: Thursday, October 27, 2005 07:42:43 PM + + +MAKEFILE = FreeType.ppc_classic.make +\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified + +ObjDir = :objs: +Includes = \xB6 + -ansi strict \xB6 + -includes unix \xB6 + -i :include: \xB6 + -i :src: \xB6 + -i :include:freetype:config: + +Sym-PPC = -sym off + +PPCCOptions = \xB6 + -d FT_MACINTOSH=1 \xB6 + -d HAVE_FSSPEC=1 \xB6 + -d HAVE_FSREF=0 \xB6 + -d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 + -d HAVE_QUICKDRAW_CARBON=0 \xB6 + -d HAVE_ATS=0 \xB6 + -d FT2_BUILD_LIBRARY \xB6 + -d FT_CONFIG_CONFIG_H="" \xB6 + -d FT_CONFIG_MODULES_H="" \xB6 + {Includes} {Sym-PPC} + + +### Source Files ### + +SrcFiles = \xB6 + :src:autofit:autofit.c \xB6 + :builds:mac:ftbase.c \xB6 + :src:base:ftbbox.c \xB6 + :src:base:ftbdf.c \xB6 + :src:base:ftbitmap.c \xB6 + :src:base:ftdebug.c \xB6 + :src:base:ftfstype.c \xB6 + :src:base:ftglyph.c \xB6 + :src:base:ftgxval.c \xB6 + :src:base:ftinit.c \xB6 + :src:base:ftmm.c \xB6 + :src:base:ftotval.c \xB6 + :src:base:ftpfr.c \xB6 + :src:base:ftstroke.c \xB6 + :src:base:ftsynth.c \xB6 + :src:base:ftsystem.c \xB6 + :src:base:fttype1.c \xB6 + :src:base:ftwinfnt.c \xB6 + :src:cache:ftcache.c \xB6 + :src:bdf:bdf.c \xB6 + :src:cff:cff.c \xB6 + :src:cid:type1cid.c \xB6 + :src:gxvalid:gxvalid.c \xB6 + :src:gzip:ftgzip.c \xB6 + :src:bzip2:ftbzip2.c \xB6 + :src:lzw:ftlzw.c \xB6 + :src:otvalid:otvalid.c \xB6 + :src:pcf:pcf.c \xB6 + :src:pfr:pfr.c \xB6 + :src:psaux:psaux.c \xB6 + :src:pshinter:pshinter.c \xB6 + :src:psnames:psmodule.c \xB6 + :src:raster:raster.c \xB6 + :src:sfnt:sfnt.c \xB6 + :src:smooth:smooth.c \xB6 + :src:truetype:truetype.c \xB6 + :src:type1:type1.c \xB6 + :src:type42:type42.c \xB6 + :src:winfonts:winfnt.c + + +### Object Files ### + +ObjFiles-PPC = \xB6 + "{ObjDir}autofit.c.x" \xB6 + "{ObjDir}ftbase.c.x" \xB6 + "{ObjDir}ftbbox.c.x" \xB6 + "{ObjDir}ftbdf.c.x" \xB6 + "{ObjDir}ftbitmap.c.x" \xB6 + "{ObjDir}ftdebug.c.x" \xB6 + "{ObjDir}ftfstype.c.x" \xB6 + "{ObjDir}ftglyph.c.x" \xB6 + "{ObjDir}ftgxval.c.x" \xB6 + "{ObjDir}ftinit.c.x" \xB6 + "{ObjDir}ftmm.c.x" \xB6 + "{ObjDir}ftotval.c.x" \xB6 + "{ObjDir}ftpfr.c.x" \xB6 + "{ObjDir}ftstroke.c.x" \xB6 + "{ObjDir}ftsynth.c.x" \xB6 + "{ObjDir}ftsystem.c.x" \xB6 + "{ObjDir}fttype1.c.x" \xB6 + "{ObjDir}ftwinfnt.c.x" \xB6 + "{ObjDir}ftcache.c.x" \xB6 + "{ObjDir}bdf.c.x" \xB6 + "{ObjDir}cff.c.x" \xB6 + "{ObjDir}type1cid.c.x" \xB6 + "{ObjDir}gxvalid.c.x" \xB6 + "{ObjDir}ftgzip.c.x" \xB6 + "{ObjDir}ftbzip2.c.x" \xB6 + "{ObjDir}ftlzw.c.x" \xB6 + "{ObjDir}otvalid.c.x" \xB6 + "{ObjDir}pcf.c.x" \xB6 + "{ObjDir}pfr.c.x" \xB6 + "{ObjDir}psaux.c.x" \xB6 + "{ObjDir}pshinter.c.x" \xB6 + "{ObjDir}psmodule.c.x" \xB6 + "{ObjDir}raster.c.x" \xB6 + "{ObjDir}sfnt.c.x" \xB6 + "{ObjDir}smooth.c.x" \xB6 + "{ObjDir}truetype.c.x" \xB6 + "{ObjDir}type1.c.x" \xB6 + "{ObjDir}type42.c.x" \xB6 + "{ObjDir}winfnt.c.x" + + +### Libraries ### + +LibFiles-PPC = + + +### Default Rules ### + +.c.x \xC4 .c {\xA5MondoBuild\xA5} + {PPCC} {depDir}{default}.c -o {targDir}{default}.c.x {PPCCOptions} + + +### Build Rules ### + +:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c + Duplicate :src:base:ftbase.c :builds:mac:ftbase.c + +"{ObjDir}ftbase.c.x" \xC4\xC4 :builds:mac:ftbase.c + {PPCC} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.x" \xB6 + -i :builds:mac: \xB6 + -i :src:base: \xB6 + {PPCCOptions} + +FreeType.ppc_classic \xC4\xC4 FreeType.ppc_classic.o + +FreeType.ppc_classic.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\xA5} + PPCLink \xB6 + -o {Targ} \xB6 + {ObjFiles-PPC} \xB6 + {LibFiles-PPC} \xB6 + {Sym-PPC} \xB6 + -mf -d \xB6 + -t 'XCOF' \xB6 + -c 'MPS ' \xB6 + -xm l + + + +### Required Dependencies ### + +"{ObjDir}autofit.c.x" \xC4 :src:autofit:autofit.c +# "{ObjDir}ftbase.c.x" \xC4 :builds:mac:ftbase.c +"{ObjDir}ftbbox.c.x" \xC4 :src:base:ftbbox.c +"{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c +"{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c +"{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c +"{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c +"{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c +"{ObjDir}ftinit.c.x" \xC4 :src:base:ftinit.c +"{ObjDir}ftmm.c.x" \xC4 :src:base:ftmm.c +"{ObjDir}ftotval.c.x" \xC4 :src:base:ftotval.c +"{ObjDir}ftpfr.c.x" \xC4 :src:base:ftpfr.c +"{ObjDir}ftstroke.c.x" \xC4 :src:base:ftstroke.c +"{ObjDir}ftsynth.c.x" \xC4 :src:base:ftsynth.c +"{ObjDir}ftsystem.c.x" \xC4 :src:base:ftsystem.c +"{ObjDir}fttype1.c.x" \xC4 :src:base:fttype1.c +"{ObjDir}ftwinfnt.c.x" \xC4 :src:base:ftwinfnt.c +"{ObjDir}ftcache.c.x" \xC4 :src:cache:ftcache.c +"{ObjDir}bdf.c.x" \xC4 :src:bdf:bdf.c +"{ObjDir}cff.c.x" \xC4 :src:cff:cff.c +"{ObjDir}type1cid.c.x" \xC4 :src:cid:type1cid.c +"{ObjDir}gxvalid.c.x" \xC4 :src:gxvalid:gxvalid.c +"{ObjDir}ftgzip.c.x" \xC4 :src:gzip:ftgzip.c +"{ObjDir}ftbzip2.c.x" \xC4 :src:bzip2:ftbzip2.c +"{ObjDir}ftlzw.c.x" \xC4 :src:lzw:ftlzw.c +"{ObjDir}otvalid.c.x" \xC4 :src:otvalid:otvalid.c +"{ObjDir}pcf.c.x" \xC4 :src:pcf:pcf.c +"{ObjDir}pfr.c.x" \xC4 :src:pfr:pfr.c +"{ObjDir}psaux.c.x" \xC4 :src:psaux:psaux.c +"{ObjDir}pshinter.c.x" \xC4 :src:pshinter:pshinter.c +"{ObjDir}psmodule.c.x" \xC4 :src:psnames:psmodule.c +"{ObjDir}raster.c.x" \xC4 :src:raster:raster.c +"{ObjDir}sfnt.c.x" \xC4 :src:sfnt:sfnt.c +"{ObjDir}smooth.c.x" \xC4 :src:smooth:smooth.c +"{ObjDir}truetype.c.x" \xC4 :src:truetype:truetype.c +"{ObjDir}type1.c.x" \xC4 :src:type1:type1.c +"{ObjDir}type42.c.x" \xC4 :src:type42:type42.c +"{ObjDir}winfnt.c.x" \xC4 :src:winfonts:winfnt.c + + + +### Optional Dependencies ### +### Build this target to generate "include file" dependencies. ### + +Dependencies \xC4 $OutOfDate + MakeDepend \xB6 + -append {MAKEFILE} \xB6 + -ignore "{CIncludes}" \xB6 + -objdir "{ObjDir}" \xB6 + -objext .x \xB6 + {Includes} \xB6 + {SrcFiles} + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/README b/local/recipes/libs/freetype2/source/builds/mac/README new file mode 100644 index 0000000000..06e3d51da8 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/README @@ -0,0 +1,393 @@ +This folder contains + + * Makefile skeletons for Apple MPW (Macintosh's Programmer's Workshop) + + * Python script to generate MPW makefile from skeleton + + * Metrowerks CodeWarrior 9.0 project file in XML format + +------------------------------------------------------------ + +1. What is this +--------------- + +Files in this directory are designed to build FreeType +running on classic MacOS. To build FreeType running on +Mac OS X, build as the system is UNIX. + +However, Mac OS X is most useful to manipulate files in +vanilla FreeType to fit classic MacOS. + +The information about MacOS specific API is written in +appendix of this document. + +2. Requirement +-------------- + +You can use MPW: a free-charged developer environment +by Apple, or CodeWarrior: a commercial developer +environment by Metrowerks. GCC for MPW and Symantec +"Think C" are not tested at present. + + + 2-1. Apple MPW + -------------- + + Following C compilers are tested: + + m68k target: Apple SC 8.9.0d3e1 + ppc target: Apple MrC 5.0.0d3c1 + + The final MPW-GM (official release on 1999/Dec) is too + old and cannot compile FreeType, because bundled C + compilers cannot search header files in sub directories. + Updating by the final MPW-PR (pre-release on 2001/Feb) + is required. + + Required files are downloadable from: + + http://macintoshgarden.org/apps/macintosh-programmers-workshop + + Also you can find documents how to update by MPW-PR. + + Python is required to restore MPW makefiles from the + skeletons. Python bundled to Mac OS X is enough. For + classic MacOS, MacPython is available: + + https://homepages.cwi.nl/~jack/macpython/ + + MPW requires all files are typed by resource fork. + ResEdit bundled to MPW is enough. In Mac OS X, + /Developer/Tools/SetFile of DevTool is useful to + manipulate from commandline. + + 2-2. Metrowerks CodeWarrior + --------------------------- + + XML project file is generated and tested by + CodeWarrior 9.0. Older versions are not tested + at all. At present, static library for ppc target + is available in the project file. + + +3. How to build +--------------- + + 3-1. Apple MPW + -------------- + Detailed building procedure by Apple MPW is + described in following. + + 3-1-1. Generate MPW makefiles from the skeletons + ------------------------------------------------ + + Here are 4 skeletons for following targets are + included. + + - FreeType.m68k_far.make.txt + Ancient 32bit binary executable format for + m68k MacOS: System 6, with 32bit addressing + mode (far-pointer-model) So-called "Toolbox" + API is used. + + - FreeType.m68k_cfm.make.txt + CFM binary executable format for m68k MacOS: + System 7. So-called "Toolbox" API is used. + + - FreeType.ppc_classic.make.txt + CFM binary executable format for ppc MacOS: + System 7, MacOS 8, MacOS 9. So-called "Toolbox" + API is used. + + - FreeType.ppc_carbon.make.txt + CFM binary executable format for ppc MacOS: + MacOS 9. Carbon API is used. + + At present, static library is only supported, + although targets except of m68k_far are capable + to use shared library. + + MPW makefile syntax uses 8bit characters. To keep + from violating them during version control, here + we store skeletons in pure ASCII format. You must + generate MPW makefile by Python script ascii2mpw.py. + + In Mac OS X terminal, you can convert as: + + python builds/mac/ascii2mpw.py \ + < builds/mac/FreeType.m68k_far.make.txt \ + > FreeType.m68k_far.make + + The skeletons are designed to use in the top + directory where there are builds, include, src etc. + You must name the generated MPW makefile by removing + ".txt" from source skeleton name. + + 3-1-2. Add resource forks to related files + ------------------------------------------ + + MPW's Make and C compilers cannot recognize files + without resource fork. You have to add resource + fork to the files that MPW uses. In Mac OS X + terminal of the system, you can do as: + + find . -name '*.[ch]' -exec \ + /Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \; + + find . -name '*.make' -exec \ + /Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \; + + + 3-1-3. Open MPW shell and build + ------------------------------- + + Open MPW shell and go to the top directory that + FreeType sources are extracted (MPW makefile must + be located in there), from "Set Directory" in + "Directory" menu. + + Choose "Build" from "Build" menu, and type the + name of project by removing ".make" from MPW + makefile, as: FreeType.m68k_far + + If building is successfully finished, you can find + built library in objs/ directory. + + + 3-2. Metrowerks CodeWarrior + --------------------------- + + Detailed building procedure by Metrowerks + CodeWarrior (CW) 9.0 is described in following. + + 3-2-1. Import XML project file + ------------------------------ + + CW XML project file is not ready for double- + click. Start CodeWarrior IDE, and choose + "Import project" in "File" menu. Choose XML + project file: builds/mac/ftlib.prj.xml. + In next, you will be asked where to save CW + native project file: you must choose + "builds/mac/ftlib.prj". The project file is + designed with relative path from there. After + CW native project file is generated, it is + automatically loaded, small project window + titled "ftlib.prj" is displayed. + + 3-2-2. Building + --------------- + Choose "Make" from "Project" menu. If building + is successfully finished, you can find built + library at objs/FreeTypeLib. + +4. TODO +------- + + 4-1. All modules should be included + ----------------------------------- + + At present, MPW makefiles and CW project file are + just updated versions of these by Leonard. Some + modules are added after the last maintenance, they + are not included. + + 4-2. Working test with ftdemos + ------------------------------ + + At present, MPW makefiles and CW project file can + build FreeType for classic MacOS. But their working + behaviours are not tested at all. Building ftdemos + for classic MacOS and working test is required. + + +APPENDIX I +---------- + + A-1. Framework dependencies + --------------------------- + + src/base/ftmac.c adds two Mac-specific features to + FreeType. These features are based on MacOS libraries. + + * accessing resource-fork font + The fonts for classic MacOS store their graphical data + in resource forks which cannot be accessed via ANSI C + functions. FreeType2 provides functions to handle such + resource fork fonts, they are based on File Manager + framework of MacOS. In addition, HFS and HFS+ file + system driver of Linux is supported. Following + functions are for this purpose. + + FT_New_Face_From_Resource() + FT_New_Face_From_FSSpec() + FT_New_Face_From_FSRef() + + * resolving font name to font file + The font menu of MacOS application prefers font name + written in FOND resource than sfnt resource. FreeType2 + provides functions to find font file by name in MacOS + application, they are based on QuickDraw Font Manager + and Apple Type Service framework of MacOS. + + FT_GetFile_From_Mac_Name() + FT_GetFile_From_Mac_ATS_Name() + + Working functions for each MacOS are summarized as + following. + + upto MacOS 6: + not tested (you have to obtain MPW 2.x) + + MacOS 7.x, 8.x, 9.x (without CarbonLib): + FT_GetFile_From_Mac_Name() + FT_New_Face_From_Resource() + FT_New_Face_From_FSSpec() + + MacOS 9.x (with CarbonLib): + FT_GetFile_From_Mac_Name() + FT_New_Face_From_Resource() + FT_New_Face_From_FSSpec() + FT_New_Face_From_FSRef() + + Mac OS X upto 10.4.x: + FT_GetFile_From_Mac_Name() deprecated + FT_New_Face_From_FSSpec() deprecated + FT_GetFile_From_Mac_ATS_Name() deprecated? + FT_New_Face_From_FSRef() + + A-2. Deprecated Functions + ------------------------- + + A-2-1. FileManager + ------------------ + + For convenience to write MacOS application, ftmac.c + provides functions to specify a file by FSSpec and FSRef, + because the file identification pathname had ever been + unrecommended method in MacOS programming. + + Toward to MacOS X 10.4 & 5, Carbon functions using FSSpec + datatype is noticed as deprecated, and recommended to + migrate to FSRef datatype. The big differences of FSRef + against FSSpec are explained in Apple TechNotes 2078. + + https://developer.apple.com/library/archive/technotes/tn2078/ + + - filename length: the max length of file + name of FSRef is 255 chars (it is limit of HFS+), + that of FSSpec is 31 chars (it is limit of HFS). + + - filename encoding: FSSpec is localized by + legacy encoding for each language system, + FSRef is Unicode enabled. + + A-2-2. FontManager + ------------------ + + Following functions receive QuickDraw fontname: + + FT_GetFile_From_Mac_Name() + + QuickDraw is deprecated and replaced by Quartz + since Mac OS X 10.4. They are still kept for + backward compatibility. By undefinition of + HAVE_QUICKDRAW in building, you can change these + functions to return FT_Err_Unimplemented always. + + Replacement functions are added for migration. + + FT_GetFile_From_Mac_ATS_Name() + + They are usable on Mac OS X only. On older systems, + these functions return FT_Err_Unimplemented always. + + The detailed incompatibilities and possibility + of FontManager emulation without QuickDraw is + explained in + + http://gyvern.ipc.hiroshima-u.ac.jp/~mpsuzuki/ats_benchmark.html + + A-3. Framework Availabilities + ----------------------------- + + The framework of MacOS are often revised, especially + when new format of binary executable is introduced. + Following table is the minimum version of frameworks + to use functions used in FreeType2. The table is + extracted from MPW header files for assembly language. + + *** NOTE *** + The conditional definition of available data type + in MPW compiler is insufficient. You can compile + program using FSRef data type for older systems + (MacOS 7, 8) that don't know FSRef data type. + + + +-------------------+-----------------------------+ + CPU | mc680x0 | PowerPC | + +---------+---------+---------+---------+---------+ + Binary Executable Format | Classic | 68K-CFM | CFM | CFM | Mach-O | + +---------+---------+---------+---------+---------+ + Framework API | Toolbox | Toolbox | Toolbox | Carbon | Carbon | + +---------+---------+---------+---------+---------+ + + +---------+---------+---------+---------+---------+ + | ?(*) |Interface|Interface|CarbonLib|Mac OS X | + | |Lib |Lib | | | +* Files.h +---------+---------+---------+---------+---------+ +PBGetFCBInfoSync() | o | 7.1- | 7.1- | 1.0- | o | +FSMakeFSSpec() | o | 7.1- | 7.1- | 1.0- | o | +FSGetForkCBInfo() | o | (**) | 9.0- | 1.0- | o | +FSpMakeFSRef() | o | (**) | 9.0- | 1.0- | o | +FSGetCatalogInfo() | o | (**) | 9.0- | 1.0- | -10.3 | +FSPathMakeRef() | x | x | x | 1.1- | -10.3 | + +---------+---------+---------+---------+---------+ + + +---------+---------+---------+---------+---------+ + | ?(*) |Font |Font |CarbonLib|Mac OS X | + | |Manager |Manager | | | +* Fonts.h +---------+---------+---------+---------+---------+ +FMCreateFontFamilyIterator() | x | x | 9.0- | 1.0- | -10.3 | +FMDisposeFontFamilyIterator() | x | x | 9.0- | 1.0- | -10.3 | +FMGetNextFontFamily() | x | x | 9.0- | 1.0- | -10.3 | +FMGetFontFamilyName() | x | x | 9.0- | 1.0- | -10.3 | +FMCreateFontFamilyInstanceIterator() | x | x | 9.0- | 1.0- | -10.3 | +FMDisposeFontFamilyInstanceIterator() | x | x | 9.0- | 1.0- | -10.3 | +FMGetNextFontFamilyInstance() | x | x | 9.0- | 1.0- | -10.3 | + +---------+---------+---------+---------+---------+ + + +---------+---------+---------+---------+---------+ + | - | - | - |CarbonLib|Mac OS X | +* ATSFont.h (***) +---------+---------+---------+---------+---------+ +ATSFontFindFromName() | x | x | x | x | o | +ATSFontGetFileSpecification() | x | x | x | x | o | + +---------+---------+---------+---------+---------+ + + (*) + In the "Classic": the original binary executable + format, these framework functions are directly + transformed to MacOS system call. Therefore, the + exact availability should be checked by running + system. + + (**) + InterfaceLib is bundled to MacOS and its version + is usually equal to MacOS. There's no separate + update for InterfaceLib. It is supposed that + there's no InterfaceLib 9.x for m68k platforms. + In fact, these functions are FSRef dependent. + + (***) + ATSUI framework is available on ATSUnicode 8.5 on + ppc Toolbox CFM, CarbonLib 1.0 too. But its base: + ATS font manager is not published in these versions. + +------------------------------------------------------------ +Last update: 2013-Nov-03. + +Currently maintained by + suzuki toshiya, +Originally prepared by + Leonard Rosenthol, + Just van Rossum, diff --git a/local/recipes/libs/freetype2/source/builds/mac/ascii2mpw.py b/local/recipes/libs/freetype2/source/builds/mac/ascii2mpw.py new file mode 100755 index 0000000000..ad32b21977 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/ascii2mpw.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +import sys +import string + +if len( sys.argv ) == 1 : + for asc_line in sys.stdin.readlines(): + mpw_line = string.replace(asc_line, "\\xA5", "\245") + mpw_line = string.replace(mpw_line, "\\xB6", "\266") + mpw_line = string.replace(mpw_line, "\\xC4", "\304") + mpw_line = string.replace(mpw_line, "\\xC5", "\305") + mpw_line = string.replace(mpw_line, "\\xFF", "\377") + mpw_line = string.replace(mpw_line, "\n", "\r") + mpw_line = string.replace(mpw_line, "\\n", "\n") + sys.stdout.write(mpw_line) +elif sys.argv[1] == "-r" : + for mpw_line in sys.stdin.readlines(): + asc_line = string.replace(mpw_line, "\n", "\\n") + asc_line = string.replace(asc_line, "\r", "\n") + asc_line = string.replace(asc_line, "\245", "\\xA5") + asc_line = string.replace(asc_line, "\266", "\\xB6") + asc_line = string.replace(asc_line, "\304", "\\xC4") + asc_line = string.replace(asc_line, "\305", "\\xC5") + asc_line = string.replace(asc_line, "\377", "\\xFF") + sys.stdout.write(asc_line) diff --git a/local/recipes/libs/freetype2/source/builds/mac/freetype-Info.plist b/local/recipes/libs/freetype2/source/builds/mac/freetype-Info.plist new file mode 100644 index 0000000000..344e5ac0b3 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/freetype-Info.plist @@ -0,0 +1,36 @@ + + + + + + + CFBundleDevelopmentRegion + English + + CFBundleExecutable + freetype + + CFBundleGetInfoString + FreeType ${PROJECT_VERSION} + + CFBundleInfoDictionaryVersion + 6.0 + + CFBundleName + FreeType + + CFBundlePackageType + FMWK + + CFBundleShortVersionString + ${PROJECT_VERSION} + + CFBundleSignature + ???? + + CFBundleVersion + ${PROJECT_VERSION} + + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/ftlib.prj.xml b/local/recipes/libs/freetype2/source/builds/mac/ftlib.prj.xml new file mode 100644 index 0000000000..cbbc45ee55 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/ftlib.prj.xml @@ -0,0 +1,1194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + + FreeTypeLib + + + + UserSourceTrees + + + AlwaysSearchUserPathstrue + InterpretDOSAndUnixPathstrue + RequireFrameworkStyleIncludesfalse + SourceRelativeIncludesfalse + UserSearchPaths + + SearchPath + Path: + PathFormatMacOS + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:::include: + PathFormatMacOS + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:::src: + PathFormatMacOS + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:: + PathFormatMacOS + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SystemSearchPaths + + SearchPath + Path: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + + + MWRuntimeSettings_WorkingDirectory + MWRuntimeSettings_CommandLine + MWRuntimeSettings_HostApplication + Path + PathFormatGeneric + PathRootAbsolute + + MWRuntimeSettings_EnvVars + + + LinkerMacOS PPC Linker + PreLinker + PostLinker + TargetnameFreeTypeLib + OutputDirectory + Path:::objs: + PathFormatMacOS + PathRootProject + + SaveEntriesUsingRelativePathsfalse + + + FileMappings + + FileTypeAPPL + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypeAppl + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypeMMLB + FileExtension + CompilerLib Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeMPLF + FileExtension + CompilerLib Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeMWCD + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypeRSRC + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.bh + CompilerBalloon Help + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.c + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.c++ + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cc + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cp + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cpp + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.exp + Compiler + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.h + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMaketrue + + + FileTypeTEXT + FileExtension.p + CompilerMW Pascal PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pas + CompilerMW Pascal PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pch + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pch++ + CompilerMW C/C++ PPC + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.ppu + CompilerMW Pascal PPC + EditLanguage + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.r + CompilerRez + EditLanguageRez + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.s + CompilerPPCAsm + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeXCOF + FileExtension + CompilerXCOFF Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypedocu + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypersrc + FileExtension + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileTypeshlb + FileExtension + CompilerPEF Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypestub + FileExtension + CompilerPEF Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.doc + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFilefalse + IgnoredByMaketrue + + + FileExtension.o + CompilerXCOFF Import PPC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.ppob + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + FileExtension.rsrc + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFiletrue + IgnoredByMakefalse + + + + + CacheModDatestrue + DumpBrowserInfofalse + CacheSubprojectstrue + UseThirdPartyDebuggerfalse + BrowserGenerator1 + DebuggerAppPath + Path + PathFormatGeneric + PathRootAbsolute + + DebuggerCmdLineArgs + DebuggerWorkingDir + Path + PathFormatGeneric + PathRootAbsolute + + CodeCompletionPrefixFileNameMacHeaders.c + CodeCompletionMacroFileNameMacOS_Carbon_C++_Macros.h + + + ConsoleEncoding0 + LogSystemMessagestrue + AutoTargetDLLsfalse + StopAtWatchpointstrue + PauseWhileRunningfalse + PauseInterval5 + PauseUIFlags0 + AltExePath + Path + PathFormatGeneric + PathRootAbsolute + + StopAtTempBPOnLaunchtrue + CacheSymbolicstrue + TempBPFunctionNamemain + TempBPType0 + + + Enabledfalse + ConnectionName + DownloadPath + LaunchRemoteAppfalse + RemoteAppPath + CoreID0 + JTAGClockSpeed8000 + IsMultiCorefalse + OSDownloadfalse + UseGlobalOSDownloadfalse + OSDownloadConnectionName + OSDownloadPath + AltDownloadfalse + AltDownloadConnectionName + + + OtherExecutables + + + AnalyzerConnectionName + + + CustomColor1 + Red0 + Green32767 + Blue0 + + CustomColor2 + Red0 + Green32767 + Blue0 + + CustomColor3 + Red0 + Green32767 + Blue0 + + CustomColor4 + Red0 + Green32767 + Blue0 + + + + MWFrontEnd_C_cplusplus0 + MWFrontEnd_C_checkprotos1 + MWFrontEnd_C_arm0 + MWFrontEnd_C_trigraphs0 + MWFrontEnd_C_onlystdkeywords0 + MWFrontEnd_C_enumsalwaysint0 + MWFrontEnd_C_ansistrict1 + MWFrontEnd_C_wchar_type1 + MWFrontEnd_C_enableexceptions1 + MWFrontEnd_C_dontreusestrings0 + MWFrontEnd_C_poolstrings0 + MWFrontEnd_C_dontinline0 + MWFrontEnd_C_useRTTI1 + MWFrontEnd_C_unsignedchars0 + MWFrontEnd_C_autoinline0 + MWFrontEnd_C_booltruefalse1 + MWFrontEnd_C_inlinelevel0 + MWFrontEnd_C_ecplusplus0 + MWFrontEnd_C_defer_codegen0 + MWFrontEnd_C_templateparser0 + MWFrontEnd_C_c990 + MWFrontEnd_C_bottomupinline1 + MWFrontEnd_C_gcc_extensions0 + MWFrontEnd_C_instance_manager0 + + + C_CPP_Preprocessor_EmitFiletrue + C_CPP_Preprocessor_EmitLinefalse + C_CPP_Preprocessor_EmitFullPathfalse + C_CPP_Preprocessor_KeepCommentsfalse + C_CPP_Preprocessor_PCHUsesPrefixTextfalse + C_CPP_Preprocessor_EmitPragmastrue + C_CPP_Preprocessor_KeepWhiteSpacefalse + C_CPP_Preprocessor_MultiByteEncodingencASCII_Unicode + C_CPP_Preprocessor_PrefixText/* settings imported from old "C/C++ Language" panel */ + +#if !__option(precompile) +#include "ftoption.h" /* was "Prefix file" */ +#endif + + + + MWWarning_C_warn_illpragma0 + MWWarning_C_warn_emptydecl0 + MWWarning_C_warn_possunwant0 + MWWarning_C_warn_unusedvar1 + MWWarning_C_warn_unusedarg1 + MWWarning_C_warn_extracomma0 + MWWarning_C_pedantic0 + MWWarning_C_warningerrors0 + MWWarning_C_warn_hidevirtual0 + MWWarning_C_warn_implicitconv0 + MWWarning_C_warn_notinlined0 + MWWarning_C_warn_structclass0 + MWWarning_C_warn_missingreturn0 + MWWarning_C_warn_no_side_effect0 + MWWarning_C_warn_resultnotused0 + MWWarning_C_warn_padding0 + MWWarning_C_warn_impl_i2f_conv0 + MWWarning_C_warn_impl_f2i_conv0 + MWWarning_C_warn_impl_s2u_conv0 + MWWarning_C_warn_illtokenpasting0 + MWWarning_C_warn_filenamecaps0 + MWWarning_C_warn_filenamecapssystem0 + MWWarning_C_warn_undefmacro0 + MWWarning_C_warn_ptrintconv0 + + + MWMerge_MacOS_projectTypeApplication + MWMerge_MacOS_outputNameMerge Out + MWMerge_MacOS_outputCreator???? + MWMerge_MacOS_outputTypeAPPL + MWMerge_MacOS_suppressWarning0 + MWMerge_MacOS_copyFragments1 + MWMerge_MacOS_copyResources1 + MWMerge_MacOS_flattenResource0 + MWMerge_MacOS_flatFileNamea.rsrc + MWMerge_MacOS_flatFileOutputPath + Path: + PathFormatMacOS + PathRootProject + + MWMerge_MacOS_skipResources + DLGX + ckid + Proj + WSPC + + + + FileLockedfalse + ResourcesMapIsReadOnlyfalse + PrinterDriverIsMultiFinderCompatiblefalse + Invisiblefalse + HasBundlefalse + NameLockedfalse + Stationeryfalse + HasCustomIconfalse + Sharedfalse + HasBeenInitedfalse + Label0 + Comments + HasCustomBadgefalse + HasRoutingInfofalse + + + MWCodeGen_PPC_structalignmentPPC_mw + MWCodeGen_PPC_tracebacktablesNone + MWCodeGen_PPC_processorGeneric + MWCodeGen_PPC_function_align4 + MWCodeGen_PPC_tocdata1 + MWCodeGen_PPC_largetoc0 + MWCodeGen_PPC_profiler0 + MWCodeGen_PPC_vectortocdata0 + MWCodeGen_PPC_poolconst0 + MWCodeGen_PPC_peephole0 + MWCodeGen_PPC_readonlystrings0 + MWCodeGen_PPC_linkerpoolsstrings0 + MWCodeGen_PPC_volatileasm0 + MWCodeGen_PPC_schedule0 + MWCodeGen_PPC_altivec0 + MWCodeGen_PPC_altivec_move_block0 + MWCodeGen_PPC_strictIEEEfp0 + MWCodeGen_PPC_fpcontract1 + MWCodeGen_PPC_genfsel0 + MWCodeGen_PPC_orderedfpcmp0 + + + MWCodeGen_MachO_structalignmentPPC_mw + MWCodeGen_MachO_profiler_enumOff + MWCodeGen_MachO_processorGeneric + MWCodeGen_MachO_function_align4 + MWCodeGen_MachO_common0 + MWCodeGen_MachO_boolisint0 + MWCodeGen_MachO_peephole1 + MWCodeGen_MachO_readonlystrings0 + MWCodeGen_MachO_linkerpoolsstrings1 + MWCodeGen_MachO_volatileasm0 + MWCodeGen_MachO_schedule0 + MWCodeGen_MachO_altivec0 + MWCodeGen_MachO_vecmove0 + MWCodeGen_MachO_fp_ieee_strict0 + MWCodeGen_MachO_fpcontract1 + MWCodeGen_MachO_genfsel0 + MWCodeGen_MachO_fp_cmps_ordered0 + + + MWDisassembler_PPC_showcode1 + MWDisassembler_PPC_extended1 + MWDisassembler_PPC_mix0 + MWDisassembler_PPC_nohex0 + MWDisassembler_PPC_showdata1 + MWDisassembler_PPC_showexceptions1 + MWDisassembler_PPC_showsym0 + MWDisassembler_PPC_shownames1 + + + GlobalOptimizer_PPC_optimizationlevelLevel0 + GlobalOptimizer_PPC_optforSpeed + + + MWLinker_PPC_linksym1 + MWLinker_PPC_symfullpath1 + MWLinker_PPC_linkmap0 + MWLinker_PPC_nolinkwarnings0 + MWLinker_PPC_dontdeadstripinitcode0 + MWLinker_PPC_permitmultdefs0 + MWLinker_PPC_linkmodeFast + MWLinker_PPC_code_foldingNone + MWLinker_PPC_initname + MWLinker_PPC_mainname + MWLinker_PPC_termname + + + MWLinker_MacOSX_linksym1 + MWLinker_MacOSX_symfullpath0 + MWLinker_MacOSX_nolinkwarnings0 + MWLinker_MacOSX_linkmap0 + MWLinker_MacOSX_dontdeadstripinitcode0 + MWLinker_MacOSX_permitmultdefs0 + MWLinker_MacOSX_use_objectivec_semantics0 + MWLinker_MacOSX_strip_debug_symbols0 + MWLinker_MacOSX_split_segs0 + MWLinker_MacOSX_report_msl_overloads0 + MWLinker_MacOSX_objects_follow_linkorder0 + MWLinker_MacOSX_linkmodeNormal + MWLinker_MacOSX_exportsReferencedGlobals + MWLinker_MacOSX_sortcodeNone + MWLinker_MacOSX_mainname + MWLinker_MacOSX_initname + MWLinker_MacOSX_code_foldingNone + MWLinker_MacOSX_stabsgenNone + + + MWProject_MacOSX_typeExecutable + MWProject_MacOSX_outfile + MWProject_MacOSX_filecreator???? + MWProject_MacOSX_filetypeMEXE + MWProject_MacOSX_vmaddress4096 + MWProject_MacOSX_usedefaultvmaddr1 + MWProject_MacOSX_flatrsrc0 + MWProject_MacOSX_flatrsrcfilename + MWProject_MacOSX_flatrsrcoutputdir + Path: + PathFormatMacOS + PathRootProject + + MWProject_MacOSX_installpath./ + MWProject_MacOSX_dont_prebind0 + MWProject_MacOSX_flat_namespace0 + MWProject_MacOSX_frameworkversionA + MWProject_MacOSX_currentversion0 + MWProject_MacOSX_flat_oldimpversion0 + MWProject_MacOSX_AddrMode1 + + + MWPEF_exportsNone + MWPEF_libfolder0 + MWPEF_sortcodeNone + MWPEF_expandbss0 + MWPEF_sharedata0 + MWPEF_olddefversion0 + MWPEF_oldimpversion0 + MWPEF_currentversion0 + MWPEF_fragmentname + MWPEF_collapsereloads0 + + + MWProject_PPC_typeLibrary + MWProject_PPC_outfileFreeTypeLib + MWProject_PPC_filecreator???? + MWProject_PPC_filetype???? + MWProject_PPC_size0 + MWProject_PPC_minsize0 + MWProject_PPC_stacksize0 + MWProject_PPC_flags0 + MWProject_PPC_symfilename + MWProject_PPC_rsrcname + MWProject_PPC_rsrcheaderNative + MWProject_PPC_rsrctype???? + MWProject_PPC_rsrcid0 + MWProject_PPC_rsrcflags0 + MWProject_PPC_rsrcstore0 + MWProject_PPC_rsrcmerge0 + MWProject_PPC_flatrsrc0 + MWProject_PPC_flatrsrcoutputdir + Path: + PathFormatMacOS + PathRootProject + + MWProject_PPC_flatrsrcfilename + + + MWAssembler_PPC_auxheader0 + MWAssembler_PPC_symmodeMac + MWAssembler_PPC_dialectPPC + MWAssembler_PPC_prefixfile + MWAssembler_PPC_typecheck0 + MWAssembler_PPC_warnings0 + MWAssembler_PPC_casesensitive0 + + + PList_OutputTypeFile + PList_OutputEncodingUTF-8 + PList_PListVersion1.0 + PList_Prefix + PList_FileFilenameInfo.plist + PList_FileDirectory + Path: + PathFormatMacOS + PathRootProject + + PList_ResourceTypeplst + PList_ResourceID0 + PList_ResourceName + + + MWRez_Language_maxwidth80 + MWRez_Language_scriptRoman + MWRez_Language_alignmentAlign1 + MWRez_Language_filtermodeFilterSkip + MWRez_Language_suppresswarnings0 + MWRez_Language_escapecontrolchars1 + MWRez_Language_prefixname + MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' + + + + Name + ftsystem.c + MacOS + Text + Debug + + + Name + ftbase.c + MacOS + Text + Debug + + + Name + ftinit.c + MacOS + Text + Debug + + + Name + sfnt.c + MacOS + Text + Debug + + + Name + psnames.c + MacOS + Text + Debug + + + Name + ftdebug.c + MacOS + Text + Debug + + + Name + type1cid.c + MacOS + Text + Debug + + + Name + cff.c + MacOS + Text + Debug + + + Name + smooth.c + MacOS + Text + Debug + + + Name + winfnt.c + MacOS + Text + Debug + + + Name + truetype.c + MacOS + Text + Debug + + + Name + ftmac.c + MacOS + Text + Debug + + + Name + psaux.c + MacOS + Text + + + + Name + ftcache.c + MacOS + Text + + + + Name + ftglyph.c + MacOS + Text + + + + Name + type1.c + MacOS + Text + Debug + + + Name + pshinter.c + MacOS + Text + Debug + + + Name + pcf.c + MacOS + Text + Debug + + + Name + ftraster.c + MacOS + Text + Debug + + + Name + ftrend1.c + MacOS + Text + Debug + + + + + Name + ftsystem.c + MacOS + + + Name + ftbase.c + MacOS + + + Name + ftinit.c + MacOS + + + Name + sfnt.c + MacOS + + + Name + psnames.c + MacOS + + + Name + ftdebug.c + MacOS + + + Name + type1cid.c + MacOS + + + Name + cff.c + MacOS + + + Name + smooth.c + MacOS + + + Name + winfnt.c + MacOS + + + Name + truetype.c + MacOS + + + Name + ftmac.c + MacOS + + + Name + psaux.c + MacOS + + + Name + ftcache.c + MacOS + + + Name + ftglyph.c + MacOS + + + Name + type1.c + MacOS + + + Name + pshinter.c + MacOS + + + Name + pcf.c + MacOS + + + Name + ftraster.c + MacOS + + + Name + ftrend1.c + MacOS + + + + + + + FreeTypeLib + + + + base + + FreeTypeLib + Name + ftbase.c + MacOS + + + FreeTypeLib + Name + ftdebug.c + MacOS + + + FreeTypeLib + Name + ftglyph.c + MacOS + + + FreeTypeLib + Name + ftinit.c + MacOS + + + FreeTypeLib + Name + ftsystem.c + MacOS + + + FreeTypeLib + Name + ftmac.c + MacOS + + + ftmodules + + FreeTypeLib + Name + cff.c + MacOS + + + FreeTypeLib + Name + ftcache.c + MacOS + + + FreeTypeLib + Name + psaux.c + MacOS + + + FreeTypeLib + Name + psnames.c + MacOS + + + FreeTypeLib + Name + sfnt.c + MacOS + + + FreeTypeLib + Name + smooth.c + MacOS + + + FreeTypeLib + Name + truetype.c + MacOS + + + FreeTypeLib + Name + type1cid.c + MacOS + + + FreeTypeLib + Name + winfnt.c + MacOS + + + FreeTypeLib + Name + type1.c + MacOS + + + FreeTypeLib + Name + pshinter.c + MacOS + + + FreeTypeLib + Name + pcf.c + MacOS + + + FreeTypeLib + Name + ftraster.c + MacOS + + + FreeTypeLib + Name + ftrend1.c + MacOS + + + + + diff --git a/local/recipes/libs/freetype2/source/builds/mac/ftmac.c b/local/recipes/libs/freetype2/source/builds/mac/ftmac.c new file mode 100644 index 0000000000..77eb874389 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/mac/ftmac.c @@ -0,0 +1,1542 @@ +/***************************************************************************/ +/* */ +/* ftmac.c */ +/* */ +/* Mac FOND support. Written by just@letterror.com. */ +/* Heavily Fixed by mpsuzuki, George Williams and Sean McBride */ +/* */ +/* Copyright (C) 1996-2026 by */ +/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ +/* */ +/* This file is part of the FreeType project, and may only be used, */ +/* modified, and distributed under the terms of the FreeType project */ +/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ +/* this file you indicate that you have read the license and */ +/* understand and accept it fully. */ +/* */ +/***************************************************************************/ + + + /* + Notes + + Mac suitcase files can (and often do!) contain multiple fonts. To + support this I use the face_index argument of FT_(Open|New)_Face() + functions, and pretend the suitcase file is a collection. + + Warning: fbit and NFNT bitmap resources are not supported yet. In old + sfnt fonts, bitmap glyph data for each size is stored in each `NFNT' + resources instead of the `bdat' table in the sfnt resource. Therefore, + face->num_fixed_sizes is set to 0, because bitmap data in `NFNT' + resource is unavailable at present. + + The Mac FOND support works roughly like this: + + - Check whether the offered stream points to a Mac suitcase file. This + is done by checking the file type: it has to be 'FFIL' or 'tfil'. The + stream that gets passed to our init_face() routine is a stdio stream, + which isn't usable for us, since the FOND resources live in the + resource fork. So we just grab the stream->pathname field. + + - Read the FOND resource into memory, then check whether there is a + TrueType font and/or(!) a Type 1 font available. + + - If there is a Type 1 font available (as a separate `LWFN' file), read + its data into memory, massage it slightly so it becomes PFB data, wrap + it into a memory stream, load the Type 1 driver and delegate the rest + of the work to it by calling FT_Open_Face(). (XXX TODO: after this + has been done, the kerning data from the FOND resource should be + appended to the face: On the Mac there are usually no AFM files + available. However, this is tricky since we need to map Mac char + codes to ps glyph names to glyph ID's...) + + - If there is a TrueType font (an `sfnt' resource), read it into memory, + wrap it into a memory stream, load the TrueType driver and delegate + the rest of the work to it, by calling FT_Open_Face(). + + - Some suitcase fonts (notably Onyx) might point the `LWFN' file to + itself, even though it doesn't contains `POST' resources. To handle + this special case without opening the file an extra time, we just + ignore errors from the `LWFN' and fallback to the `sfnt' if both are + available. + */ + + +#include +#include +#include +#include "ftbase.h" + +#if defined( __GNUC__ ) || defined( __IBMC__ ) + /* This is for Mac OS X. Without redefinition, OS_INLINE */ + /* expands to `static inline' which doesn't survive the */ + /* -ansi compilation flag of GCC. */ +#if !HAVE_ANSI_OS_INLINE +#undef OS_INLINE +#define OS_INLINE static __inline__ +#endif +#include +#include +#include /* PATH_MAX */ +#else +#include +#include +#include +#include +#include +#include +#endif + +#ifndef PATH_MAX +#define PATH_MAX 1024 /* same with Mac OS X's syslimits.h */ +#endif + +#if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO +#include +#endif + +#define FT_DEPRECATED_ATTRIBUTE + +#include + + /* undefine blocking-macros in ftmac.h */ +#undef FT_GetFile_From_Mac_Name +#undef FT_GetFile_From_Mac_ATS_Name +#undef FT_New_Face_From_FOND +#undef FT_New_Face_From_FSSpec +#undef FT_New_Face_From_FSRef + + + /* FSSpec functions are deprecated since Mac OS X 10.4 */ +#ifndef HAVE_FSSPEC +#if TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON +#define HAVE_FSSPEC 1 +#else +#define HAVE_FSSPEC 0 +#endif +#endif + + /* most FSRef functions were introduced since Mac OS 9 */ +#ifndef HAVE_FSREF +#if TARGET_API_MAC_OSX +#define HAVE_FSREF 1 +#else +#define HAVE_FSREF 0 +#endif +#endif + + /* QuickDraw is deprecated since Mac OS X 10.4 */ +#ifndef HAVE_QUICKDRAW_CARBON +#if TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON +#define HAVE_QUICKDRAW_CARBON 1 +#else +#define HAVE_QUICKDRAW_CARBON 0 +#endif +#endif + + /* AppleTypeService is available since Mac OS X */ +#ifndef HAVE_ATS +#if TARGET_API_MAC_OSX +#define HAVE_ATS 1 +#ifndef kATSOptionFlagsUnRestrictedScope /* since Mac OS X 10.1 */ +#define kATSOptionFlagsUnRestrictedScope kATSOptionFlagsDefault +#endif +#else +#define HAVE_ATS 0 +#endif +#endif + + /* `configure' checks the availability of `ResourceIndex' strictly */ + /* and sets HAVE_TYPE_RESOURCE_INDEX to 1 or 0 always. If it is */ + /* not set (e.g., a build without `configure'), the availability */ + /* is guessed from the SDK version. */ +#ifndef HAVE_TYPE_RESOURCE_INDEX +#if !defined( MAC_OS_X_VERSION_10_5 ) || \ + ( MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5 ) +#define HAVE_TYPE_RESOURCE_INDEX 0 +#else +#define HAVE_TYPE_RESOURCE_INDEX 1 +#endif +#endif /* !HAVE_TYPE_RESOURCE_INDEX */ + +#if ( HAVE_TYPE_RESOURCE_INDEX == 0 ) +typedef short ResourceIndex; +#endif + + /* Set PREFER_LWFN to 1 if LWFN (Type 1) is preferred over + TrueType in case *both* are available (this is not common, + but it *is* possible). */ +#ifndef PREFER_LWFN +#define PREFER_LWFN 1 +#endif + +#ifdef FT_MACINTOSH + +#if !HAVE_QUICKDRAW_CARBON /* QuickDraw is deprecated since Mac OS X 10.4 */ + + FT_EXPORT_DEF( FT_Error ) + FT_GetFile_From_Mac_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + { + FT_UNUSED( fontName ); + FT_UNUSED( pathSpec ); + FT_UNUSED( face_index ); + + return FT_THROW( Unimplemented_Feature ); + } + +#else + + FT_EXPORT_DEF( FT_Error ) + FT_GetFile_From_Mac_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + { + OptionBits options = kFMUseGlobalScopeOption; + + FMFontFamilyIterator famIter; + OSStatus status = FMCreateFontFamilyIterator( NULL, NULL, + options, + &famIter ); + FMFont the_font = 0; + FMFontFamily family = 0; + + + if ( !fontName || !face_index ) + return FT_THROW( Invalid_Argument ); + + *face_index = 0; + while ( status == 0 && !the_font ) + { + status = FMGetNextFontFamily( &famIter, &family ); + if ( status == 0 ) + { + int stat2; + FMFontFamilyInstanceIterator instIter; + Str255 famNameStr; + char famName[256]; + + + /* get the family name */ + FMGetFontFamilyName( family, famNameStr ); + CopyPascalStringToC( famNameStr, famName ); + + /* iterate through the styles */ + FMCreateFontFamilyInstanceIterator( family, &instIter ); + + *face_index = 0; + stat2 = 0; + + while ( stat2 == 0 && !the_font ) + { + FMFontStyle style; + FMFontSize size; + FMFont font; + + + stat2 = FMGetNextFontFamilyInstance( &instIter, &font, + &style, &size ); + if ( stat2 == 0 && size == 0 ) + { + char fullName[256]; + + + /* build up a complete face name */ + ft_strcpy( fullName, famName ); + if ( style & bold ) + ft_strcat( fullName, " Bold" ); + if ( style & italic ) + ft_strcat( fullName, " Italic" ); + + /* compare with the name we are looking for */ + if ( ft_strcmp( fullName, fontName ) == 0 ) + { + /* found it! */ + the_font = font; + } + else + ++(*face_index); + } + } + + FMDisposeFontFamilyInstanceIterator( &instIter ); + } + } + + FMDisposeFontFamilyIterator( &famIter ); + + if ( the_font ) + { + FMGetFontContainer( the_font, pathSpec ); + return FT_Err_Ok; + } + else + return FT_THROW( Unknown_File_Format ); + } + +#endif /* HAVE_QUICKDRAW_CARBON */ + + +#if HAVE_ATS + + /* Private function. */ + /* The FSSpec type has been discouraged for a long time, */ + /* unfortunately an FSRef replacement API for */ + /* ATSFontGetFileSpecification() is only available in */ + /* Mac OS X 10.5 and later. */ + static OSStatus + FT_ATSFontGetFileReference( ATSFontRef ats_font_id, + FSRef* ats_font_ref ) + { + OSStatus err; + +#if !defined( MAC_OS_X_VERSION_10_5 ) || \ + MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 + FSSpec spec; + + + err = ATSFontGetFileSpecification( ats_font_id, &spec ); + if ( noErr == err ) + err = FSpMakeFSRef( &spec, ats_font_ref ); +#else + err = ATSFontGetFileReference( ats_font_id, ats_font_ref ); +#endif + + return err; + } + + + static FT_Error + FT_GetFileRef_From_Mac_ATS_Name( const char* fontName, + FSRef* ats_font_ref, + FT_Long* face_index ) + { + CFStringRef cf_fontName; + ATSFontRef ats_font_id; + + + *face_index = 0; + + cf_fontName = CFStringCreateWithCString( NULL, fontName, + kCFStringEncodingMacRoman ); + ats_font_id = ATSFontFindFromName( cf_fontName, + kATSOptionFlagsUnRestrictedScope ); + CFRelease( cf_fontName ); + + if ( ats_font_id == 0 || ats_font_id == 0xFFFFFFFFUL ) + return FT_THROW( Unknown_File_Format ); + + if ( noErr != FT_ATSFontGetFileReference( ats_font_id, ats_font_ref ) ) + return FT_THROW( Unknown_File_Format ); + + /* face_index calculation by searching preceding fontIDs */ + /* with same FSRef */ + { + ATSFontRef id2 = ats_font_id - 1; + FSRef ref2; + + + while ( id2 > 0 ) + { + if ( noErr != FT_ATSFontGetFileReference( id2, &ref2 ) ) + break; + if ( noErr != FSCompareFSRefs( ats_font_ref, &ref2 ) ) + break; + + id2--; + } + *face_index = ats_font_id - ( id2 + 1 ); + } + + return FT_Err_Ok; + } + +#endif + +#if !HAVE_ATS + + FT_EXPORT_DEF( FT_Error ) + FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, + UInt8* path, + UInt32 maxPathSize, + FT_Long* face_index ) + { + FT_UNUSED( fontName ); + FT_UNUSED( path ); + FT_UNUSED( maxPathSize ); + FT_UNUSED( face_index ); + + return FT_THROW( Unimplemented_Feature ); + } + +#else + + FT_EXPORT_DEF( FT_Error ) + FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, + UInt8* path, + UInt32 maxPathSize, + FT_Long* face_index ) + { + FSRef ref; + FT_Error err; + + + err = FT_GetFileRef_From_Mac_ATS_Name( fontName, &ref, face_index ); + if ( err ) + return err; + + if ( noErr != FSRefMakePath( &ref, path, maxPathSize ) ) + return FT_THROW( Unknown_File_Format ); + + return FT_Err_Ok; + } + +#endif /* HAVE_ATS */ + + +#if !HAVE_FSSPEC || !HAVE_ATS + + FT_EXPORT_DEF( FT_Error ) + FT_GetFile_From_Mac_ATS_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + { + FT_UNUSED( fontName ); + FT_UNUSED( pathSpec ); + FT_UNUSED( face_index ); + + return FT_THROW( Unimplemented_Feature ); + } + +#else + + /* This function is deprecated because FSSpec is deprecated in Mac OS X. */ + FT_EXPORT_DEF( FT_Error ) + FT_GetFile_From_Mac_ATS_Name( const char* fontName, + FSSpec* pathSpec, + FT_Long* face_index ) + { + FSRef ref; + FT_Error err; + + + err = FT_GetFileRef_From_Mac_ATS_Name( fontName, &ref, face_index ); + if ( err ) + return err; + + if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, NULL, NULL, + pathSpec, NULL ) ) + return FT_THROW( Unknown_File_Format ); + + return FT_Err_Ok; + } + +#endif + + +#if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO + +#define STREAM_FILE( stream ) ( (FT_FILE*)stream->descriptor.pointer ) + + + FT_CALLBACK_DEF( void ) + ft_FSp_stream_close( FT_Stream stream ) + { + ft_fclose( STREAM_FILE( stream ) ); + + stream->descriptor.pointer = NULL; + stream->size = 0; + stream->base = NULL; + } + + + FT_CALLBACK_DEF( unsigned long ) + ft_FSp_stream_io( FT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count ) + { + FT_FILE* file; + + + file = STREAM_FILE( stream ); + + ft_fseek( file, offset, SEEK_SET ); + + return (unsigned long)ft_fread( buffer, 1, count, file ); + } + +#endif /* __MWERKS__ && !TARGET_RT_MAC_MACHO */ + + +#if HAVE_FSSPEC && !HAVE_FSREF + + /* isDirectory is a dummy to synchronize API with FSPathMakeRef() */ + static OSErr + FT_FSPathMakeSpec( const UInt8* pathname, + FSSpec* spec_p, + Boolean isDirectory ) + { + const char *p, *q; + short vRefNum; + long dirID; + Str255 nodeName; + OSErr err; + FT_UNUSED( isDirectory ); + + + p = q = (const char *)pathname; + dirID = 0; + vRefNum = 0; + + while ( 1 ) + { + int len = ft_strlen( p ); + + + if ( len > 255 ) + len = 255; + + q = p + len; + + if ( q == p ) + return 0; + + if ( 255 < ft_strlen( (char *)pathname ) ) + { + while ( p < q && *q != ':' ) + q--; + } + + if ( p < q ) + *(char *)nodeName = q - p; + else if ( ft_strlen( p ) < 256 ) + *(char *)nodeName = ft_strlen( p ); + else + return errFSNameTooLong; + + ft_strncpy( (char *)nodeName + 1, (char *)p, *(char *)nodeName ); + err = FSMakeFSSpec( vRefNum, dirID, nodeName, spec_p ); + if ( err || '\0' == *q ) + return err; + + vRefNum = spec_p->vRefNum; + dirID = spec_p->parID; + + p = q; + } + } + + + static OSErr + FT_FSpMakePath( const FSSpec* spec_p, + UInt8* path, + UInt32 maxPathSize ) + { + OSErr err; + FSSpec spec = *spec_p; + short vRefNum; + long dirID; + Str255 parDir_name; + + + FT_MEM_SET( path, 0, maxPathSize ); + while ( 1 ) + { + int child_namelen = ft_strlen( (char *)path ); + unsigned char node_namelen = spec.name[0]; + unsigned char* node_name = spec.name + 1; + + + if ( node_namelen + child_namelen > maxPathSize ) + return errFSNameTooLong; + + FT_MEM_MOVE( path + node_namelen + 1, path, child_namelen ); + FT_MEM_COPY( path, node_name, node_namelen ); + if ( child_namelen > 0 ) + path[node_namelen] = ':'; + + vRefNum = spec.vRefNum; + dirID = spec.parID; + parDir_name[0] = '\0'; + err = FSMakeFSSpec( vRefNum, dirID, parDir_name, &spec ); + if ( noErr != err || dirID == spec.parID ) + break; + } + return noErr; + } + +#endif /* HAVE_FSSPEC && !HAVE_FSREF */ + + + static OSErr + FT_FSPathMakeRes( const UInt8* pathname, + ResFileRefNum* res ) + { + +#if HAVE_FSREF + + OSErr err; + FSRef ref; + + + if ( noErr != FSPathMakeRef( pathname, &ref, FALSE ) ) + return FT_THROW( Cannot_Open_Resource ); + + /* at present, no support for dfont format */ + err = FSOpenResourceFile( &ref, 0, NULL, fsRdPerm, res ); + if ( noErr == err ) + return err; + + /* fallback to original resource-fork font */ + *res = FSOpenResFile( &ref, fsRdPerm ); + err = ResError(); + +#else + + OSErr err; + FSSpec spec; + + + if ( noErr != FT_FSPathMakeSpec( pathname, &spec, FALSE ) ) + return FT_THROW( Cannot_Open_Resource ); + + /* at present, no support for dfont format without FSRef */ + /* (see above), try original resource-fork font */ + *res = FSpOpenResFile( &spec, fsRdPerm ); + err = ResError(); + +#endif /* HAVE_FSREF */ + + return err; + } + + + /* Return the file type for given pathname */ + static OSType + get_file_type_from_path( const UInt8* pathname ) + { + +#if HAVE_FSREF + + FSRef ref; + FSCatalogInfo info; + + + if ( noErr != FSPathMakeRef( pathname, &ref, FALSE ) ) + return ( OSType ) 0; + + if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoFinderInfo, &info, + NULL, NULL, NULL ) ) + return ( OSType ) 0; + + return ((FInfo *)(info.finderInfo))->fdType; + +#else + + FSSpec spec; + FInfo finfo; + + + if ( noErr != FT_FSPathMakeSpec( pathname, &spec, FALSE ) ) + return ( OSType ) 0; + + if ( noErr != FSpGetFInfo( &spec, &finfo ) ) + return ( OSType ) 0; + + return finfo.fdType; + +#endif /* HAVE_FSREF */ + + } + + + /* Given a PostScript font name, create the Macintosh LWFN file name. */ + static void + create_lwfn_name( char* ps_name, + Str255 lwfn_file_name ) + { + int max = 5, count = 0; + FT_Byte* p = lwfn_file_name; + FT_Byte* q = (FT_Byte*)ps_name; + + + lwfn_file_name[0] = 0; + + while ( *q ) + { + if ( ft_isupper( *q ) ) + { + if ( count ) + max = 3; + count = 0; + } + if ( count < max && ( ft_isalnum( *q ) || *q == '_' ) ) + { + *++p = *q; + lwfn_file_name[0]++; + count++; + } + q++; + } + } + + + static short + count_faces_sfnt( char* fond_data ) + { + /* The count is 1 greater than the value in the FOND. */ + /* Isn't that cute? :-) */ + + return EndianS16_BtoN( *( (short*)( fond_data + + sizeof ( FamRec ) ) ) ) + 1; + } + + + static short + count_faces_scalable( char* fond_data ) + { + AsscEntry* assoc; + short i, face, face_all; + + + face_all = EndianS16_BtoN( *( (short *)( fond_data + + sizeof ( FamRec ) ) ) ) + 1; + assoc = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 ); + face = 0; + + for ( i = 0; i < face_all; i++ ) + { + if ( 0 == EndianS16_BtoN( assoc[i].fontSize ) ) + face++; + } + return face; + } + + + /* Look inside the FOND data, answer whether there should be an SFNT + resource, and answer the name of a possible LWFN Type 1 file. + + Thanks to Paul Miller (paulm@profoundeffects.com) for the fix + to load a face OTHER than the first one in the FOND! + */ + + static void + parse_fond( char* fond_data, + short* have_sfnt, + ResID* sfnt_id, + Str255 lwfn_file_name, + short face_index ) + { + AsscEntry* assoc; + AsscEntry* base_assoc; + FamRec* fond; + + + *sfnt_id = 0; + *have_sfnt = 0; + lwfn_file_name[0] = 0; + + fond = (FamRec*)fond_data; + assoc = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 ); + base_assoc = assoc; + + /* the maximum faces in a FOND is 48, size of StyleTable.indexes[] */ + if ( 47 < face_index ) + return; + + /* Let's do a little range checking before we get too excited here */ + if ( face_index < count_faces_sfnt( fond_data ) ) + { + assoc += face_index; /* add on the face_index! */ + + /* if the face at this index is not scalable, + fall back to the first one (old behavior) */ + if ( EndianS16_BtoN( assoc->fontSize ) == 0 ) + { + *have_sfnt = 1; + *sfnt_id = EndianS16_BtoN( assoc->fontID ); + } + else if ( base_assoc->fontSize == 0 ) + { + *have_sfnt = 1; + *sfnt_id = EndianS16_BtoN( base_assoc->fontID ); + } + } + + if ( EndianS32_BtoN( fond->ffStylOff ) ) + { + unsigned char* p = (unsigned char*)fond_data; + StyleTable* style; + unsigned short string_count; + char ps_name[256]; + unsigned char* names[64]; + int i; + + + p += EndianS32_BtoN( fond->ffStylOff ); + style = (StyleTable*)p; + p += sizeof ( StyleTable ); + string_count = EndianS16_BtoN( *(short*)(p) ); + string_count = FT_MIN( 64, string_count ); + p += sizeof ( short ); + + for ( i = 0; i < string_count; i++ ) + { + names[i] = p; + p += names[i][0]; + p++; + } + + { + size_t ps_name_len = (size_t)names[0][0]; + + + if ( ps_name_len != 0 ) + { + ft_memcpy(ps_name, names[0] + 1, ps_name_len); + ps_name[ps_name_len] = 0; + } + if ( style->indexes[face_index] > 1 && + style->indexes[face_index] <= string_count ) + { + unsigned char* suffixes = names[style->indexes[face_index] - 1]; + + + for ( i = 1; i <= suffixes[0]; i++ ) + { + unsigned char* s; + size_t j = suffixes[i] - 1; + + + if ( j < string_count && ( s = names[j] ) != NULL ) + { + size_t s_len = (size_t)s[0]; + + + if ( s_len != 0 && ps_name_len + s_len < sizeof ( ps_name ) ) + { + ft_memcpy( ps_name + ps_name_len, s + 1, s_len ); + ps_name_len += s_len; + ps_name[ps_name_len] = 0; + } + } + } + } + } + + create_lwfn_name( ps_name, lwfn_file_name ); + } + } + + + static FT_Error + lookup_lwfn_by_fond( const UInt8* path_fond, + ConstStr255Param base_lwfn, + UInt8* path_lwfn, + int path_size ) + { + +#if HAVE_FSREF + + FSRef ref, par_ref; + int dirname_len; + + + /* Pathname for FSRef can be in various formats: HFS, HFS+, and POSIX. */ + /* We should not extract parent directory by string manipulation. */ + + if ( noErr != FSPathMakeRef( path_fond, &ref, FALSE ) ) + return FT_THROW( Invalid_Argument ); + + if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, + NULL, NULL, NULL, &par_ref ) ) + return FT_THROW( Invalid_Argument ); + + if ( noErr != FSRefMakePath( &par_ref, path_lwfn, path_size ) ) + return FT_THROW( Invalid_Argument ); + + if ( ft_strlen( (char *)path_lwfn ) + 1 + base_lwfn[0] > path_size ) + return FT_THROW( Invalid_Argument ); + + /* now we have absolute dirname in path_lwfn */ + if ( path_lwfn[0] == '/' ) + ft_strcat( (char *)path_lwfn, "/" ); + else + ft_strcat( (char *)path_lwfn, ":" ); + + dirname_len = ft_strlen( (char *)path_lwfn ); + ft_strcat( (char *)path_lwfn, (char *)base_lwfn + 1 ); + path_lwfn[dirname_len + base_lwfn[0]] = '\0'; + + if ( noErr != FSPathMakeRef( path_lwfn, &ref, FALSE ) ) + return FT_THROW( Cannot_Open_Resource ); + + if ( noErr != FSGetCatalogInfo( &ref, kFSCatInfoNone, + NULL, NULL, NULL, NULL ) ) + return FT_THROW( Cannot_Open_Resource ); + + return FT_Err_Ok; + +#else + + int i; + FSSpec spec; + + + /* pathname for FSSpec is always HFS format */ + if ( ft_strlen( (char *)path_fond ) > path_size ) + return FT_THROW( Invalid_Argument ); + + ft_strcpy( (char *)path_lwfn, (char *)path_fond ); + + i = ft_strlen( (char *)path_lwfn ) - 1; + while ( i > 0 && ':' != path_lwfn[i] ) + i--; + + if ( i + 1 + base_lwfn[0] > path_size ) + return FT_THROW( Invalid_Argument ); + + if ( ':' == path_lwfn[i] ) + { + ft_strcpy( (char *)path_lwfn + i + 1, (char *)base_lwfn + 1 ); + path_lwfn[i + 1 + base_lwfn[0]] = '\0'; + } + else + { + ft_strcpy( (char *)path_lwfn, (char *)base_lwfn + 1 ); + path_lwfn[base_lwfn[0]] = '\0'; + } + + if ( noErr != FT_FSPathMakeSpec( path_lwfn, &spec, FALSE ) ) + return FT_THROW( Cannot_Open_Resource ); + + return FT_Err_Ok; + +#endif /* HAVE_FSREF */ + + } + + + static short + count_faces( Handle fond, + const UInt8* pathname ) + { + ResID sfnt_id; + short have_sfnt, have_lwfn; + Str255 lwfn_file_name; + UInt8 buff[PATH_MAX]; + FT_Error err; + short num_faces; + + + have_sfnt = have_lwfn = 0; + + HLock( fond ); + parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, 0 ); + + if ( lwfn_file_name[0] ) + { + err = lookup_lwfn_by_fond( pathname, lwfn_file_name, + buff, sizeof ( buff ) ); + if ( !err ) + have_lwfn = 1; + } + + if ( have_lwfn && ( !have_sfnt || PREFER_LWFN ) ) + num_faces = 1; + else + num_faces = count_faces_scalable( *fond ); + + HUnlock( fond ); + return num_faces; + } + + + /* Read Type 1 data from the POST resources inside the LWFN file, + return a PFB buffer. This is somewhat convoluted because the FT2 + PFB parser wants the ASCII header as one chunk, and the LWFN + chunks are often not organized that way, so we glue chunks + of the same type together. */ + static FT_Error + read_lwfn( FT_Memory memory, + ResFileRefNum res, + FT_Byte** pfb_data, + FT_ULong* size ) + { + FT_Error error = FT_Err_Ok; + ResID res_id; + unsigned char *buffer, *p, *size_p = NULL; + FT_ULong total_size = 0; + FT_ULong old_total_size = 0; + FT_ULong post_size, pfb_chunk_size; + Handle post_data; + char code, last_code; + + + UseResFile( res ); + + /* First pass: load all POST resources, and determine the size of */ + /* the output buffer. */ + res_id = 501; + last_code = -1; + + for (;;) + { + post_data = Get1Resource( TTAG_POST, res_id++ ); + if ( post_data == NULL ) + break; /* we are done */ + + code = (*post_data)[0]; + + if ( code != last_code ) + { + if ( code == 5 ) + total_size += 2; /* just the end code */ + else + total_size += 6; /* code + 4 bytes chunk length */ + } + + total_size += GetHandleSize( post_data ) - 2; + last_code = code; + + /* detect integer overflows */ + if ( total_size < old_total_size ) + { + error = FT_ERR( Array_Too_Large ); + goto Error; + } + + old_total_size = total_size; + } + + if ( FT_QALLOC( buffer, (FT_Long)total_size ) ) + goto Error; + + /* Second pass: append all POST data to the buffer, add PFB fields. */ + /* Glue all consecutive chunks of the same type together. */ + p = buffer; + res_id = 501; + last_code = -1; + pfb_chunk_size = 0; + + for (;;) + { + post_data = Get1Resource( TTAG_POST, res_id++ ); + if ( post_data == NULL ) + break; /* we are done */ + + post_size = (FT_ULong)GetHandleSize( post_data ) - 2; + code = (*post_data)[0]; + + if ( code != last_code ) + { + if ( last_code != -1 ) + { + /* we are done adding a chunk, fill in the size field */ + if ( size_p != NULL ) + { + *size_p++ = (FT_Byte)( pfb_chunk_size & 0xFF ); + *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 8 ) & 0xFF ); + *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 16 ) & 0xFF ); + *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 24 ) & 0xFF ); + } + pfb_chunk_size = 0; + } + + *p++ = 0x80; + if ( code == 5 ) + *p++ = 0x03; /* the end */ + else if ( code == 2 ) + *p++ = 0x02; /* binary segment */ + else + *p++ = 0x01; /* ASCII segment */ + + if ( code != 5 ) + { + size_p = p; /* save for later */ + p += 4; /* make space for size field */ + } + } + + ft_memcpy( p, *post_data + 2, post_size ); + pfb_chunk_size += post_size; + p += post_size; + last_code = code; + } + + *pfb_data = buffer; + *size = total_size; + + Error: + CloseResFile( res ); + return error; + } + + + /* Create a new FT_Face from a file spec to an LWFN file. */ + static FT_Error + FT_New_Face_From_LWFN( FT_Library library, + const UInt8* pathname, + FT_Long face_index, + FT_Face* aface ) + { + FT_Byte* pfb_data; + FT_ULong pfb_size; + FT_Error error; + ResFileRefNum res; + + + if ( noErr != FT_FSPathMakeRes( pathname, &res ) ) + return FT_THROW( Cannot_Open_Resource ); + + pfb_data = NULL; + pfb_size = 0; + error = read_lwfn( library->memory, res, &pfb_data, &pfb_size ); + CloseResFile( res ); /* PFB is already loaded, useless anymore */ + if ( error ) + return error; + + return open_face_from_buffer( library, + pfb_data, + pfb_size, + face_index, + "type1", + aface ); + } + + + /* Create a new FT_Face from an SFNT resource, specified by res ID. */ + static FT_Error + FT_New_Face_From_SFNT( FT_Library library, + ResID sfnt_id, + FT_Long face_index, + FT_Face* aface ) + { + Handle sfnt = NULL; + FT_Byte* sfnt_data; + size_t sfnt_size; + FT_Error error = FT_Err_Ok; + FT_Memory memory = library->memory; + int is_cff, is_sfnt_ps; + + + sfnt = GetResource( TTAG_sfnt, sfnt_id ); + if ( sfnt == NULL ) + return FT_THROW( Invalid_Handle ); + + sfnt_size = (FT_ULong)GetHandleSize( sfnt ); + if ( FT_QALLOC( sfnt_data, (FT_Long)sfnt_size ) ) + { + ReleaseResource( sfnt ); + return error; + } + + HLock( sfnt ); + ft_memcpy( sfnt_data, *sfnt, sfnt_size ); + HUnlock( sfnt ); + ReleaseResource( sfnt ); + + is_cff = sfnt_size > 4 && !ft_memcmp( sfnt_data, "OTTO", 4 ); + is_sfnt_ps = sfnt_size > 4 && !ft_memcmp( sfnt_data, "typ1", 4 ); + + if ( is_sfnt_ps ) + { + FT_Stream stream; + + + if ( FT_NEW( stream ) ) + goto Try_OpenType; + + FT_Stream_OpenMemory( stream, sfnt_data, sfnt_size ); + if ( !open_face_PS_from_sfnt_stream( library, + stream, + face_index, + 0, NULL, + aface ) ) + { + FT_Stream_Close( stream ); + FT_FREE( stream ); + FT_FREE( sfnt_data ); + goto Exit; + } + + FT_FREE( stream ); + } + Try_OpenType: + error = open_face_from_buffer( library, + sfnt_data, + sfnt_size, + face_index, + is_cff ? "cff" : "truetype", + aface ); + Exit: + return error; + } + + + /* Create a new FT_Face from a file spec to a suitcase file. */ + static FT_Error + FT_New_Face_From_Suitcase( FT_Library library, + const UInt8* pathname, + FT_Long face_index, + FT_Face* aface ) + { + FT_Error error = FT_ERR( Cannot_Open_Resource ); + ResFileRefNum res_ref; + ResourceIndex res_index; + Handle fond; + short num_faces_in_res; + + + if ( noErr != FT_FSPathMakeRes( pathname, &res_ref ) ) + return FT_THROW( Cannot_Open_Resource ); + + UseResFile( res_ref ); + if ( ResError() ) + return FT_THROW( Cannot_Open_Resource ); + + num_faces_in_res = 0; + for ( res_index = 1; ; ++res_index ) + { + short num_faces_in_fond; + + + fond = Get1IndResource( TTAG_FOND, res_index ); + if ( ResError() ) + break; + + num_faces_in_fond = count_faces( fond, pathname ); + num_faces_in_res += num_faces_in_fond; + + if ( 0 <= face_index && face_index < num_faces_in_fond && error ) + error = FT_New_Face_From_FOND( library, fond, face_index, aface ); + + face_index -= num_faces_in_fond; + } + + CloseResFile( res_ref ); + if ( !error && aface ) + (*aface)->num_faces = num_faces_in_res; + return error; + } + + + /* documentation is in ftmac.h */ + + FT_EXPORT_DEF( FT_Error ) + FT_New_Face_From_FOND( FT_Library library, + Handle fond, + FT_Long face_index, + FT_Face* aface ) + { + short have_sfnt, have_lwfn = 0; + ResID sfnt_id, fond_id; + OSType fond_type; + Str255 fond_name; + Str255 lwfn_file_name; + UInt8 path_lwfn[PATH_MAX]; + OSErr err; + FT_Error error = FT_Err_Ok; + + + /* test for valid `aface' and `library' delayed to */ + /* `FT_New_Face_From_XXX' */ + + GetResInfo( fond, &fond_id, &fond_type, fond_name ); + if ( ResError() != noErr || fond_type != TTAG_FOND ) + return FT_THROW( Invalid_File_Format ); + + HLock( fond ); + parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, face_index ); + HUnlock( fond ); + + if ( lwfn_file_name[0] ) + { + ResFileRefNum res; + + + res = HomeResFile( fond ); + if ( noErr != ResError() ) + goto found_no_lwfn_file; + +#if HAVE_FSREF + + { + UInt8 path_fond[PATH_MAX]; + FSRef ref; + + + err = FSGetForkCBInfo( res, kFSInvalidVolumeRefNum, + NULL, NULL, NULL, &ref, NULL ); + if ( noErr != err ) + goto found_no_lwfn_file; + + err = FSRefMakePath( &ref, path_fond, sizeof ( path_fond ) ); + if ( noErr != err ) + goto found_no_lwfn_file; + + error = lookup_lwfn_by_fond( path_fond, lwfn_file_name, + path_lwfn, sizeof ( path_lwfn ) ); + if ( !error ) + have_lwfn = 1; + } + +#elif HAVE_FSSPEC + + { + UInt8 path_fond[PATH_MAX]; + FCBPBRec pb; + Str255 fond_file_name; + FSSpec spec; + + + FT_MEM_SET( &spec, 0, sizeof ( FSSpec ) ); + FT_MEM_SET( &pb, 0, sizeof ( FCBPBRec ) ); + + pb.ioNamePtr = fond_file_name; + pb.ioVRefNum = 0; + pb.ioRefNum = res; + pb.ioFCBIndx = 0; + + err = PBGetFCBInfoSync( &pb ); + if ( noErr != err ) + goto found_no_lwfn_file; + + err = FSMakeFSSpec( pb.ioFCBVRefNum, pb.ioFCBParID, + fond_file_name, &spec ); + if ( noErr != err ) + goto found_no_lwfn_file; + + err = FT_FSpMakePath( &spec, path_fond, sizeof ( path_fond ) ); + if ( noErr != err ) + goto found_no_lwfn_file; + + error = lookup_lwfn_by_fond( path_fond, lwfn_file_name, + path_lwfn, sizeof ( path_lwfn ) ); + if ( !error ) + have_lwfn = 1; + } + +#endif /* HAVE_FSREF, HAVE_FSSPEC */ + + } + + if ( have_lwfn && ( !have_sfnt || PREFER_LWFN ) ) + error = FT_New_Face_From_LWFN( library, + path_lwfn, + face_index, + aface ); + else + error = FT_ERR( Unknown_File_Format ); + + found_no_lwfn_file: + if ( have_sfnt && error ) + error = FT_New_Face_From_SFNT( library, + sfnt_id, + face_index, + aface ); + + return error; + } + + + /* Common function to load a new FT_Face from a resource file. */ + static FT_Error + FT_New_Face_From_Resource( FT_Library library, + const UInt8* pathname, + FT_Long face_index, + FT_Face* aface ) + { + OSType file_type; + FT_Error error; + + + /* LWFN is a (very) specific file format, check for it explicitly */ + file_type = get_file_type_from_path( pathname ); + if ( file_type == TTAG_LWFN ) + return FT_New_Face_From_LWFN( library, pathname, face_index, aface ); + + /* Otherwise the file type doesn't matter (there are more than */ + /* `FFIL' and `tfil'). Just try opening it as a font suitcase; */ + /* if it works, fine. */ + + error = FT_New_Face_From_Suitcase( library, pathname, face_index, aface ); + if ( !error ) + return error; + + /* let it fall through to normal loader (.ttf, .otf, etc.); */ + /* we signal this by returning no error and no FT_Face */ + *aface = NULL; + return 0; + } + + + /*************************************************************************/ + /* */ + /* */ + /* FT_New_Face */ + /* */ + /* */ + /* This is the Mac-specific implementation of FT_New_Face. In */ + /* addition to the standard FT_New_Face() functionality, it also */ + /* accepts pathnames to Mac suitcase files. For further */ + /* documentation see the original FT_New_Face() in freetype.h. */ + /* */ + FT_EXPORT_DEF( FT_Error ) + FT_New_Face( FT_Library library, + const char* pathname, + FT_Long face_index, + FT_Face* aface ) + { + FT_Open_Args args; + FT_Error error; + + + /* test for valid `library' and `aface' delayed to FT_Open_Face() */ + if ( !pathname ) + return FT_THROW( Invalid_Argument ); + + *aface = NULL; + + /* try resourcefork based font: LWFN, FFIL */ + error = FT_New_Face_From_Resource( library, (UInt8 *)pathname, + face_index, aface ); + if ( error || *aface ) + return error; + + /* let it fall through to normal loader (.ttf, .otf, etc.) */ + args.flags = FT_OPEN_PATHNAME; + args.pathname = (char*)pathname; + return FT_Open_Face( library, &args, face_index, aface ); + } + + + /*************************************************************************/ + /* */ + /* */ + /* FT_New_Face_From_FSRef */ + /* */ + /* */ + /* FT_New_Face_From_FSRef is identical to FT_New_Face except it */ + /* accepts an FSRef instead of a path. */ + /* */ + /* This function is deprecated because Carbon data types (FSRef) */ + /* are not cross-platform, and thus not suitable for the FreeType API. */ + FT_EXPORT_DEF( FT_Error ) + FT_New_Face_From_FSRef( FT_Library library, + const FSRef* ref, + FT_Long face_index, + FT_Face* aface ) + { + +#if !HAVE_FSREF + + FT_UNUSED( library ); + FT_UNUSED( ref ); + FT_UNUSED( face_index ); + FT_UNUSED( aface ); + + return FT_THROW( Unimplemented_Feature ); + +#else + + FT_Error error; + FT_Open_Args args; + OSErr err; + UInt8 pathname[PATH_MAX]; + + + /* test for valid `library' and `aface' delayed to `FT_Open_Face' */ + + if ( !ref ) + return FT_THROW( Invalid_Argument ); + + err = FSRefMakePath( ref, pathname, sizeof ( pathname ) ); + if ( err ) + error = FT_ERR( Cannot_Open_Resource ); + + error = FT_New_Face_From_Resource( library, pathname, face_index, aface ); + if ( error || *aface ) + return error; + + /* fallback to datafork font */ + args.flags = FT_OPEN_PATHNAME; + args.pathname = (char*)pathname; + return FT_Open_Face( library, &args, face_index, aface ); + +#endif /* HAVE_FSREF */ + + } + + + /*************************************************************************/ + /* */ + /* */ + /* FT_New_Face_From_FSSpec */ + /* */ + /* */ + /* FT_New_Face_From_FSSpec is identical to FT_New_Face except it */ + /* accepts an FSSpec instead of a path. */ + /* */ + /* This function is deprecated because Carbon data types (FSSpec) */ + /* are not cross-platform, and thus not suitable for the FreeType API. */ + FT_EXPORT_DEF( FT_Error ) + FT_New_Face_From_FSSpec( FT_Library library, + const FSSpec* spec, + FT_Long face_index, + FT_Face* aface ) + { + +#if HAVE_FSREF + + FSRef ref; + + + if ( !spec || FSpMakeFSRef( spec, &ref ) != noErr ) + return FT_THROW( Invalid_Argument ); + else + return FT_New_Face_From_FSRef( library, &ref, face_index, aface ); + +#elif HAVE_FSSPEC + + FT_Error error; + FT_Open_Args args; + OSErr err; + UInt8 pathname[PATH_MAX]; + + + if ( !spec ) + return FT_THROW( Invalid_Argument ); + + err = FT_FSpMakePath( spec, pathname, sizeof ( pathname ) ); + if ( err ) + error = FT_ERR( Cannot_Open_Resource ); + + error = FT_New_Face_From_Resource( library, pathname, face_index, aface ); + if ( error || *aface ) + return error; + + /* fallback to datafork font */ + args.flags = FT_OPEN_PATHNAME; + args.pathname = (char*)pathname; + return FT_Open_Face( library, &args, face_index, aface ); + +#else + + FT_UNUSED( library ); + FT_UNUSED( spec ); + FT_UNUSED( face_index ); + FT_UNUSED( aface ); + + return FT_THROW( Unimplemented_Feature ); + +#endif /* HAVE_FSREF, HAVE_FSSPEC */ + + } + +#endif /* FT_MACINTOSH */ + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/meson/extract_freetype_version.py b/local/recipes/libs/freetype2/source/builds/meson/extract_freetype_version.py new file mode 100644 index 0000000000..2388962039 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/meson/extract_freetype_version.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +"""Extract the FreeType version numbers from ``. + +This script parses the header to extract the version number defined there. +By default, the full dotted version number is printed, but `--major`, +`--minor` or `--patch` can be used to only print one of these values +instead. +""" + +from __future__ import print_function + +import argparse +import os +import re +import sys + +# Expected input: +# +# ... +# #define FREETYPE_MAJOR 2 +# #define FREETYPE_MINOR 10 +# #define FREETYPE_PATCH 2 +# ... + +RE_MAJOR = re.compile(r"^ \#define \s+ FREETYPE_MAJOR \s+ (.*) $", re.X) +RE_MINOR = re.compile(r"^ \#define \s+ FREETYPE_MINOR \s+ (.*) $", re.X) +RE_PATCH = re.compile(r"^ \#define \s+ FREETYPE_PATCH \s+ (.*) $", re.X) + + +def parse_freetype_header(header): + major = None + minor = None + patch = None + + for line in header.splitlines(): + line = line.rstrip() + m = RE_MAJOR.match(line) + if m: + assert major == None, "FREETYPE_MAJOR appears more than once!" + major = m.group(1) + continue + + m = RE_MINOR.match(line) + if m: + assert minor == None, "FREETYPE_MINOR appears more than once!" + minor = m.group(1) + continue + + m = RE_PATCH.match(line) + if m: + assert patch == None, "FREETYPE_PATCH appears more than once!" + patch = m.group(1) + continue + + assert ( + major and minor and patch + ), "This header is missing one of FREETYPE_MAJOR, FREETYPE_MINOR or FREETYPE_PATCH!" + + return (major, minor, patch) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + group = parser.add_mutually_exclusive_group() + group.add_argument( + "--major", + action="store_true", + help="Only print the major version number.", + ) + group.add_argument( + "--minor", + action="store_true", + help="Only print the minor version number.", + ) + group.add_argument( + "--patch", + action="store_true", + help="Only print the patch version number.", + ) + + parser.add_argument( + "input", + metavar="FREETYPE_H", + help="The input freetype.h header to parse.", + ) + + args = parser.parse_args() + with open(args.input) as f: + header = f.read() + + version = parse_freetype_header(header) + + if args.major: + print(version[0]) + elif args.minor: + print(version[1]) + elif args.patch: + print(version[2]) + else: + print("%s.%s.%s" % version) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/local/recipes/libs/freetype2/source/builds/meson/extract_libtool_version.py b/local/recipes/libs/freetype2/source/builds/meson/extract_libtool_version.py new file mode 100644 index 0000000000..4ffdb1a0b6 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/meson/extract_libtool_version.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +"""Extract the libtool version from `configure.raw`. + +This script parses the `configure.raw` file to extract the libtool version +number. By default, the full dotted version number is printed, but +`--major`, `--minor` or `--patch` can be used to only print one of these +values instead. +""" + +from __future__ import print_function + +import argparse +import os +import re +import sys + +# Expected input: +# +# ... +# version_info='23:2:17' +# ... + +RE_VERSION_INFO = re.compile(r"^version_info='(\d+):(\d+):(\d+)'") + + +def parse_configure_raw(header): + major = None + minor = None + patch = None + + for line in header.splitlines(): + line = line.rstrip() + m = RE_VERSION_INFO.match(line) + if m: + assert major == None, "version_info appears more than once!" + major = m.group(1) + minor = m.group(2) + patch = m.group(3) + continue + + assert ( + major and minor and patch + ), "This input file is missing a version_info definition!" + + return (major, minor, patch) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + group = parser.add_mutually_exclusive_group() + group.add_argument( + "--major", + action="store_true", + help="Only print the major version number.", + ) + group.add_argument( + "--minor", + action="store_true", + help="Only print the minor version number.", + ) + group.add_argument( + "--patch", + action="store_true", + help="Only print the patch version number.", + ) + group.add_argument( + "--soversion", + action="store_true", + help="Only print the libtool library suffix.", + ) + + parser.add_argument( + "input", + metavar="CONFIGURE_RAW", + help="The input configure.raw file to parse.", + ) + + args = parser.parse_args() + with open(args.input) as f: + raw_file = f.read() + + version = parse_configure_raw(raw_file) + + if args.major: + print(version[0]) + elif args.minor: + print(version[1]) + elif args.patch: + print(version[2]) + elif args.soversion: + # Convert libtool version_info to the library suffix. + # (current,revision, age) -> (current - age, age, revision) + print( + "%d.%s.%s" + % (int(version[0]) - int(version[2]), version[2], version[1]) + ) + else: + print("%s.%s.%s" % version) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/local/recipes/libs/freetype2/source/builds/meson/generate_reference_docs.py b/local/recipes/libs/freetype2/source/builds/meson/generate_reference_docs.py new file mode 100644 index 0000000000..3022e0758c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/meson/generate_reference_docs.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +"""Generate FreeType reference documentation.""" + +from __future__ import print_function + +import argparse +import glob +import os +import subprocess +import sys + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + parser.add_argument( + "--input-dir", + required=True, + help="Top-level FreeType source directory.", + ) + + parser.add_argument( + "--version", required=True, help='FreeType version (e.g. "2.x.y").' + ) + + parser.add_argument( + "--output-dir", required=True, help="Output directory." + ) + + args = parser.parse_args() + + # Get the list of input files of interest. + include_dir = os.path.join(args.input_dir, "include") + include_config_dir = os.path.join(include_dir, "config") + include_cache_dir = os.path.join(include_dir, "cache") + + all_headers = ( + glob.glob(os.path.join(args.input_dir, "include", "freetype", "*.h")) + + glob.glob( + os.path.join( + args.input_dir, "include", "freetype", "config", "*.h" + ) + ) + + glob.glob( + os.path.join( + args.input_dir, "include", "freetype", "cache", "*.h" + ) + ) + ) + + if not os.path.exists(args.output_dir): + os.makedirs(args.output_dir) + else: + assert os.path.isdir(args.output_dir), ( + "Not a directory: " + args.output_dir + ) + + cmds = [ + sys.executable, + "-m", + "docwriter", + "--prefix=ft2", + "--title=FreeType-" + args.version, + "--site=reference", + "--output=" + args.output_dir, + ] + all_headers + + print("Running docwriter...") + subprocess.check_call(cmds) + + print("Building static site...") + subprocess.check_call( + [sys.executable, "-m", "mkdocs", "build"], cwd=args.output_dir + ) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/local/recipes/libs/freetype2/source/builds/meson/parse_modules_cfg.py b/local/recipes/libs/freetype2/source/builds/meson/parse_modules_cfg.py new file mode 100644 index 0000000000..40d30323ba --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/meson/parse_modules_cfg.py @@ -0,0 +1,177 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +"""Parse modules.cfg and dump its output either as ftmodule.h or a list of +base extensions. +""" + +from __future__ import print_function + +import argparse +import os +import re +import sys + +# Expected input: +# +# ... +# FONT_MODULES += +# HINTING_MODULES += +# RASTER_MODULES += +# AUX_MODULES += +# BASE_EXTENSIONS += +# ... + + +def parse_modules_cfg(input_file): + + lists = { + "FONT_MODULES": [], + "HINTING_MODULES": [], + "RASTER_MODULES": [], + "AUX_MODULES": [], + "BASE_EXTENSIONS": [], + } + + for line in input_file.splitlines(): + line = line.rstrip() + # Ignore empty lines and those that start with a comment. + if not line or line[0] == "#": + continue + + items = line.split() + assert len(items) == 3 and items[1] == "+=", ( + "Unexpected input line [%s]" % line + ) + assert items[0] in lists, ( + "Unexpected configuration variable name " + items[0] + ) + + lists[items[0]].append(items[2]) + + return lists + + +def generate_ftmodule(lists): + result = "/* This is a generated file. */\n" + for driver in lists["FONT_MODULES"]: + if driver == "sfnt": # Special case for the sfnt 'driver'. + result += "FT_USE_MODULE( FT_Module_Class, sfnt_module_class )\n" + continue + + name = { + "truetype": "tt", + "type1": "t1", + "cid": "t1cid", + "type42": "t42", + "winfonts": "winfnt", + }.get(driver, driver) + result += ( + "FT_USE_MODULE( FT_Driver_ClassRec, %s_driver_class )\n" % name + ) + + for module in lists["HINTING_MODULES"]: + result += ( + "FT_USE_MODULE( FT_Module_Class, %s_module_class )\n" % module + ) + + for module in lists["RASTER_MODULES"]: + names = { + "raster": ("ft_raster1",), + "smooth": ("ft_smooth",), + "svg": ("ft_svg",), + "sdf": ("ft_sdf", "ft_bitmap_sdf"), + }.get(module) + for name in names: + result += ( + "FT_USE_MODULE( FT_Renderer_Class, %s_renderer_class )\n" % name + ) + + for module in lists["AUX_MODULES"]: + if module in ("psaux", "psnames", "otvalid", "gxvalid"): + name = { + "gxvalid": "gxv", + "otvalid": "otv", + }.get(module, module) + result += ( + "FT_USE_MODULE( FT_Module_Class, %s_module_class )\n" % name + ) + + result += "/* EOF */\n" + return result + + +def generate_main_modules(lists): + return "\n".join( + lists["FONT_MODULES"] + + lists["HINTING_MODULES"] + + lists["RASTER_MODULES"] + ) + + +def generate_aux_modules(lists): + return "\n".join(lists["AUX_MODULES"]) + + +def generate_base_extensions(lists): + return "\n".join(lists["BASE_EXTENSIONS"]) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + parser.add_argument( + "--format", + required=True, + choices=( + "ftmodule.h", + "main-modules", + "aux-modules", + "base-extensions-list", + ), + help="Select output format.", + ) + + parser.add_argument( + "input", + metavar="CONFIGURE_RAW", + help="The input configure.raw file to parse.", + ) + + parser.add_argument("--output", help="Output file (default is stdout).") + + args = parser.parse_args() + with open(args.input) as f: + input_data = f.read() + + lists = parse_modules_cfg(input_data) + + if args.format == "ftmodule.h": + result = generate_ftmodule(lists) + elif args.format == "main-modules": + result = generate_main_modules(lists) + elif args.format == "aux-modules": + result = generate_aux_modules(lists) + elif args.format == "base-extensions-list": + result = generate_base_extensions(lists) + else: + assert False, "Invalid output format!" + + if args.output: + with open(args.output, "w") as f: + f.write(result) + else: + print(result) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/local/recipes/libs/freetype2/source/builds/meson/process_ftoption_h.py b/local/recipes/libs/freetype2/source/builds/meson/process_ftoption_h.py new file mode 100644 index 0000000000..d5a217268f --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/meson/process_ftoption_h.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +"""Toggle settings in `ftoption.h` file based on command-line arguments. + +This script takes an `ftoption.h` file as input and rewrites +`#define`/`#undef` lines in it based on `--enable=CONFIG_VARNAME` or +`--disable=CONFIG_VARNAME` arguments passed to it, where `CONFIG_VARNAME` is +configuration variable name, such as `FT_CONFIG_OPTION_USE_LZW`, that may +appear in the file. + +Note that if one of `CONFIG_VARNAME` is not found in the input file, this +script exits with an error message listing the missing variable names. +""" + +import argparse +import os +import re +import sys + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + + parser.add_argument( + "input", metavar="FTOPTION_H", help="Path to input ftoption.h file." + ) + + parser.add_argument("--output", help="Output to file instead of stdout.") + + parser.add_argument( + "--enable", + action="append", + default=[], + help="Enable a given build option (e.g. FT_CONFIG_OPTION_USE_LZW).", + ) + + parser.add_argument( + "--disable", + action="append", + default=[], + help="Disable a given build option.", + ) + + args = parser.parse_args() + + common_options = set(args.enable) & set(args.disable) + if common_options: + parser.error( + "Options cannot be both enabled and disabled: %s" + % sorted(common_options) + ) + return 1 + + with open(args.input) as f: + input_file = f.read() + + options_seen = set() + + new_lines = [] + for line in input_file.splitlines(): + # Expected formats: + # #define + # /* #define */ + # #undef + line = line.rstrip() + if line.startswith("/* #define ") and line.endswith(" */"): + option_name = line[11:-3].strip() + option_enabled = False + elif line.startswith("#define "): + option_name = line[8:].strip() + option_enabled = True + elif line.startswith("#undef "): + option_name = line[7:].strip() + option_enabled = False + else: + new_lines.append(line) + continue + + options_seen.add(option_name) + if option_enabled and option_name in args.disable: + line = "#undef " + option_name + elif not option_enabled and option_name in args.enable: + line = "#define " + option_name + new_lines.append(line) + + result = "\n".join(new_lines) + "\n" + + # Sanity check that all command-line options were actually processed. + cmdline_options = set(args.enable) | set(args.disable) + assert cmdline_options.issubset( + options_seen + ), "Could not find options in input file: " + ", ".join( + sorted(cmdline_options - options_seen) + ) + + if args.output: + with open(args.output, "w") as f: + f.write(result) + else: + print(result) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/local/recipes/libs/freetype2/source/builds/modules.mk b/local/recipes/libs/freetype2/source/builds/modules.mk new file mode 100644 index 0000000000..bcc61f09f9 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/modules.mk @@ -0,0 +1,79 @@ +# +# FreeType 2 modules sub-Makefile +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY +# OTHER MAKEFILES. + + +# This file is in charge of handling the generation of the modules list +# file. + + +# Build the modules list. +# +$(FTMODULE_H): $(MODULES_CFG) + $(FTMODULE_H_INIT) + $(FTMODULE_H_CREATE) + $(FTMODULE_H_DONE) + +ifneq ($(findstring $(PLATFORM),dos windows os2),) + OPEN_MODULE := @echo$(space) + CLOSE_MODULE := >> $(subst /,$(SEP),$(FTMODULE_H)) + REMOVE_MODULE := @-$(DELETE) $(subst /,$(SEP),$(FTMODULE_H)) +else + OPEN_MODULE := @echo " + CLOSE_MODULE := " >> $(FTMODULE_H) + REMOVE_MODULE := @-$(DELETE) $(FTMODULE_H) +endif + + +define FTMODULE_H_INIT +$(REMOVE_MODULE) +$(info Generating modules list in $(FTMODULE_H)...) +$(OPEN_MODULE)/* This is a generated file. */$(CLOSE_MODULE) +endef + +# It is no mistake that the final closing parenthesis is on the +# next line -- it produces proper newlines during the expansion +# of `foreach'. +# +define FTMODULE_H_CREATE +$(foreach COMMAND,$(FTMODULE_H_COMMANDS),$($(COMMAND)) +) +endef + +define FTMODULE_H_DONE +$(OPEN_MODULE)/* EOF */$(CLOSE_MODULE) +$(info done.) +endef + + +# $(OPEN_DRIVER) & $(CLOSE_DRIVER) are used to specify a given font driver +# in the `module.mk' rules file. +# +OPEN_DRIVER := $(OPEN_MODULE)FT_USE_MODULE( +CLOSE_DRIVER := )$(CLOSE_MODULE) + +ECHO_DRIVER := @echo "* module:$(space) +ECHO_DRIVER_DESC := ( +ECHO_DRIVER_DONE := )" + +# Each `module.mk' in the `src/*' subdirectories adds a variable with +# commands to $(FTMODULE_H_COMMANDS). Note that we can't use SRC_DIR here. +# +-include $(patsubst %,$(TOP_DIR)/src/%/module.mk,$(MODULES)) + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/os2/detect.mk b/local/recipes/libs/freetype2/source/builds/os2/detect.mk new file mode 100644 index 0000000000..dfd1534456 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/os2/detect.mk @@ -0,0 +1,81 @@ +# +# FreeType 2 configuration file to detect an OS/2 host platform. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +.PHONY: setup + + +ifeq ($(PLATFORM),ansi) + + ifdef OS2_SHELL + + PLATFORM := os2 + + endif # test OS2_SHELL +endif + +ifeq ($(PLATFORM),os2) + + COPY := copy + DELETE := del + CAT := type + SEP := $(BACKSLASH) + + # gcc-emx by default + CONFIG_FILE := os2-gcc.mk + + # additionally, we provide hooks for various other compilers + # + ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ + CONFIG_FILE := os2-icc.mk + CC := icc + + .PHONY: visualage + visualage: setup + @cd . + endif + + ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ + CONFIG_FILE := os2-wat.mk + CC := wcc386 + + .PHONY: watcom + watcom: setup + @cd . + endif + + ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C++ 32-bit + CONFIG_FILE := os2-bcc.mk + CC := bcc32 + + .PHONY: borlandc + borlandc: setup + @cd . + endif + + ifneq ($(findstring devel,$(MAKECMDGOALS)),) # development target + CONFIG_FILE := os2-dev.mk + CC := gcc + + .PHONY: devel + devel: setup + @cd . + endif + + setup: std_setup + +endif # test PLATFORM os2 + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/os2/os2-def.mk b/local/recipes/libs/freetype2/source/builds/os2/os2-def.mk new file mode 100644 index 0000000000..8f7b7d49d9 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/os2/os2-def.mk @@ -0,0 +1,48 @@ +# +# FreeType 2 OS/2 specific definitions +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DELETE := del +CAT := type +SEP := $(strip \ ) +PLATFORM_DIR := $(TOP_DIR)/builds/os2 +PLATFORM := os2 + +# This is used for `make refdoc' and `make refdoc-venv' +# +BIN := Scripts + +# The executable file extension (for tools), *with* leading dot. +# +E := .exe + +# The directory where all library files are placed. +# +# By default, this is the same as $(OBJ_DIR); however, this can be changed +# to suit particular needs. +# +LIB_DIR := $(OBJ_DIR) + +# The name of the final library file. Note that the DOS-specific Makefile +# uses a shorter (8.3) name. +# +LIBRARY := $(PROJECT) + + +# The NO_OUTPUT macro is used to ignore the output of commands. +# +NO_OUTPUT = 2> nul + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/os2/os2-dev.mk b/local/recipes/libs/freetype2/source/builds/os2/os2-dev.mk new file mode 100644 index 0000000000..de5d4c9067 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/os2/os2-dev.mk @@ -0,0 +1,30 @@ +# +# FreeType 2 configuration rules for OS/2 + GCC +# +# Development version without optimizations. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +DEVEL_DIR := $(TOP_DIR)/devel + +# include OS/2-specific definitions +include $(TOP_DIR)/builds/os2/os2-def.mk + +# include gcc-specific definitions +include $(TOP_DIR)/builds/compiler/gcc-dev.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/os2/os2-gcc.mk b/local/recipes/libs/freetype2/source/builds/os2/os2-gcc.mk new file mode 100644 index 0000000000..db681adbfe --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/os2/os2-gcc.mk @@ -0,0 +1,26 @@ +# +# FreeType 2 configuration rules for the OS/2 + gcc +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# include OS/2-specific definitions +include $(TOP_DIR)/builds/os2/os2-def.mk + +# include gcc-specific definitions +include $(TOP_DIR)/builds/compiler/gcc.mk + +# include linking instructions +include $(TOP_DIR)/builds/link_dos.mk + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/symbian/bld.inf b/local/recipes/libs/freetype2/source/builds/symbian/bld.inf new file mode 100644 index 0000000000..2f28097e4c --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/symbian/bld.inf @@ -0,0 +1,72 @@ +// +// FreeType 2 project for the symbian platform +// + +// Copyright (C) 2008-2026 by +// David Turner, Robert Wilhelm, and Werner Lemberg. +// +// This file is part of the FreeType project, and may only be used, modified, +// and distributed under the terms of the FreeType project license, +// LICENSE.TXT. By continuing to use, modify, or distribute this file you +// indicate that you have read the license and understand and accept it +// fully. + +PRJ_PLATFORMS +DEFAULT + +PRJ_MMPFILES +freetype.mmp + +PRJ_EXPORTS +../../include/freetype/ft2build.h +../../include/freetype/config/ftconfig.h config/ftconfig.h +../../include/freetype/config/ftheader.h config/ftheader.h +../../include/freetype/config/ftmodule.h config/ftmodule.h +../../include/freetype/config/ftoption.h config/ftoption.h +../../include/freetype/config/ftstdlib.h config/ftstdlib.h +../../include/freetype/freetype.h freetype.h +../../include/freetype/ftadvanc.h ftadvanc.h +../../include/freetype/ftautoh.h ftautoh.h +../../include/freetype/ftbbox.h ftbbox.h +../../include/freetype/ftbdf.h ftbdf.h +../../include/freetype/ftbitmap.h ftbitmap.h +../../include/freetype/ftbzip2.h ftbzip2.h +../../include/freetype/ftcache.h ftcache.h +../../include/freetype/ftcffdrv.h ftcffdrv.h +../../include/freetype/ftcid.h ftcid.h +../../include/freetype/fterrdef.h fterrdef.h +../../include/freetype/fterrors.h fterrors.h +../../include/freetype/ftfntfmt.h ftfntfmt.h +../../include/freetype/ftgasp.h ftgasp.h +../../include/freetype/ftglyph.h ftglyph.h +../../include/freetype/ftgxval.h ftgxval.h +../../include/freetype/ftgzip.h ftgzip.h +../../include/freetype/ftimage.h ftimage.h +../../include/freetype/ftincrem.h ftincrem.h +../../include/freetype/ftlcdfil.h ftlcdfil.h +../../include/freetype/ftlist.h ftlist.h +../../include/freetype/ftlzw.h ftlzw.h +../../include/freetype/ftmac.h ftmac.h +../../include/freetype/ftmm.h ftmm.h +../../include/freetype/ftmodapi.h ftmodapi.h +../../include/freetype/ftmoderr.h ftmoderr.h +../../include/freetype/ftotval.h ftotval.h +../../include/freetype/ftoutln.h ftoutln.h +../../include/freetype/ftparams.h ftparams.h +../../include/freetype/ftpcfdrv.h ftpcfdrv.h +../../include/freetype/ftpfr.h ftpfr.h +../../include/freetype/ftrender.h ftrender.h +../../include/freetype/ftsizes.h ftsizes.h +../../include/freetype/ftsnames.h ftsnames.h +../../include/freetype/ftstroke.h ftstroke.h +../../include/freetype/ftsynth.h ftsynth.h +../../include/freetype/ftsystem.h ftsystem.h +../../include/freetype/ftt1drv.h ftt1drv.h +../../include/freetype/fttrigon.h fttrigon.h +../../include/freetype/ftttdrv.h ftttdrv.h +../../include/freetype/fttypes.h fttypes.h +../../include/freetype/ftwinfnt.h ftwinfnt.h +../../include/freetype/t1tables.h t1tables.h +../../include/freetype/ttnameid.h ttnameid.h +../../include/freetype/tttables.h tttables.h +../../include/freetype/tttags.h tttags.h diff --git a/local/recipes/libs/freetype2/source/builds/symbian/freetype.mmp b/local/recipes/libs/freetype2/source/builds/symbian/freetype.mmp new file mode 100644 index 0000000000..03490acada --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/symbian/freetype.mmp @@ -0,0 +1,146 @@ +// +// FreeType 2 makefile for the symbian platform +// + +// Copyright (C) 2008-2026 by +// David Turner, Robert Wilhelm, and Werner Lemberg. +// +// This file is part of the FreeType project, and may only be used, modified, +// and distributed under the terms of the FreeType project license, +// LICENSE.TXT. By continuing to use, modify, or distribute this file you +// indicate that you have read the license and understand and accept it +// fully. + +target freetype.lib +targettype lib + +macro NDEBUG +macro FT2_BUILD_LIBRARY + +sourcepath ..\..\src\autofit + +source autofit.c + +sourcepath ..\..\src\base + +source ftbase.c +source ftbbox.c +source ftbdf.c +source ftbitmap.c +source ftcid.c +source ftfstype.c +source ftgasp.c +source ftglyph.c +source ftgxval.c +source ftinit.c +source ftmm.c +source ftotval.c +source ftpatent.c +source ftpfr.c +source ftstroke.c +source ftsynth.c +source ftsystem.c +source fttype1.c +source ftwinfnt.c + +sourcepath ..\..\src\bdf + +source bdf.c + +sourcepath ..\..\src\bzip2 + +source ftbzip2.c + +sourcepath ..\..\src\cache + +source ftcache.c + +sourcepath ..\..\src\cff + +source cff.c + +sourcepath ..\..\src\cid + +source type1cid.c + +sourcepath ..\..\src\gzip + +source ftgzip.c + +sourcepath ..\..\src\lzw + +source ftlzw.c + +sourcepath ..\..\src\pcf + +source pcf.c + +sourcepath ..\..\src\pfr + +source pfr.c + +sourcepath ..\..\src\psaux + +source psaux.c + +sourcepath ..\..\src\pshinter + +source pshinter.c + +sourcepath ..\..\src\psnames + +source psmodule.c + +sourcepath ..\..\src\raster + +source raster.c + +sourcepath ..\..\src\sfnt + +source sfnt.c + +sourcepath ..\..\src\smooth + +source smooth.c + +sourcepath ..\..\src\truetype + +source truetype.c + +sourcepath ..\..\src\type1 + +source type1.c + +sourcepath ..\..\src\type42 + +source type42.c + +sourcepath ..\..\src\winfonts + +source winfnt.c + + +systeminclude ..\..\include +systeminclude \epoc32\include\stdapis +userinclude ..\..\src\autofit +userinclude ..\..\src\bdf +userinclude ..\..\src\bzip2 +userinclude ..\..\src\cache +userinclude ..\..\src\cff +userinclude ..\..\src\cid +userinclude ..\..\src\gxvalid +userinclude ..\..\src\gzip +userinclude ..\..\src\lzw +userinclude ..\..\src\otvalid +userinclude ..\..\src\pcf +userinclude ..\..\src\pfr +userinclude ..\..\src\psaux +userinclude ..\..\src\pshinter +userinclude ..\..\src\psnames +userinclude ..\..\src\raster +userinclude ..\..\src\sfnt +userinclude ..\..\src\smooth +userinclude ..\..\src\truetype +userinclude ..\..\src\type1 +userinclude ..\..\src\type42 +userinclude ..\..\src\winfonts diff --git a/local/recipes/libs/freetype2/source/builds/toplevel.mk b/local/recipes/libs/freetype2/source/builds/toplevel.mk new file mode 100644 index 0000000000..aaace59206 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/toplevel.mk @@ -0,0 +1,319 @@ +# +# FreeType build system -- top-level sub-Makefile +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + + +# This file is designed for GNU Make, do not use it with another Make tool! +# +# It works as follows: +# +# - When invoked for the first time, this Makefile includes the rules found +# in `PROJECT/builds/detect.mk'. They are in charge of detecting the +# current platform. +# +# A summary of the detection is displayed, and the file `config.mk' is +# created in the current directory. +# +# - When invoked later, this Makefile includes the rules found in +# `config.mk'. This sub-Makefile defines some system-specific variables +# (like compiler, compilation flags, object suffix, etc.), then includes +# the rules found in `PROJECT/builds/PROJECT.mk', used to build the +# library. +# +# See the comments in `builds/detect.mk' and `builds/PROJECT.mk' for more +# details on host platform detection and library builds. + + +# First of all, check whether we have `$(value ...)'. We do this by testing +# for `$(eval ...)' which has been introduced in the same GNU make version. + +eval_available := +$(eval eval_available := T) +ifneq ($(eval_available),T) + $(error FreeType's build system needs a Make program which supports $$(value)) +endif + + +.PHONY: all dist distclean modules setup + + +# The `space' variable is used to avoid trailing spaces in defining the +# `T' variable later. +# +empty := +space := $(empty) $(empty) + + +# The main configuration file, defining the `XXX_MODULES' variables. We +# prefer a `modules.cfg' file in OBJ_DIR over TOP_DIR. +# +ifndef MODULES_CFG + MODULES_CFG := $(TOP_DIR)/modules.cfg + ifneq ($(wildcard $(OBJ_DIR)/modules.cfg),) + MODULES_CFG := $(OBJ_DIR)/modules.cfg + endif +endif + + +# FTMODULE_H, as its name suggests, indicates where the FreeType module +# class file resides. +# +FTMODULE_H ?= $(OBJ_DIR)/ftmodule.h + + +include $(MODULES_CFG) + + +# The list of modules we are using. +# +MODULES := $(FONT_MODULES) \ + $(HINTING_MODULES) \ + $(RASTER_MODULES) \ + $(AUX_MODULES) + + +CONFIG_MK ?= config.mk + +# If no configuration sub-makefile is present, or if `setup' is the target +# to be built, run the auto-detection rules to figure out which +# configuration rules file to use. +# +# Note that the configuration file is put in the current directory, which is +# not necessarily $(TOP_DIR). + +# If `config.mk' is not present, set `check_platform'. +# +ifeq ($(wildcard $(CONFIG_MK)),) + check_platform := 1 +endif + +# If `setup' is one of the targets requested, set `check_platform'. +# +ifneq ($(findstring setup,$(MAKECMDGOALS)),) + check_platform := 1 +endif + + +# Include the automatic host platform detection rules when we need to +# check the platform. +# +ifdef check_platform + + all modules: setup + + include $(TOP_DIR)/builds/detect.mk + + # For builds directly from the git repository we need to copy files + # from `subprojects/dlg' to `src/dlg' and `include/dlg'. + # + ifeq ($(wildcard $(TOP_DIR)/src/dlg/dlg.*),) + ifeq ($(wildcard $(TOP_DIR)/subprojects/dlg/*),) + copy_submodule: check_out_submodule + endif + + setup: copy_submodule + endif + + # This rule makes sense for Unix only to remove files created by a run of + # the configure script which hasn't been successful (so that no + # `config.mk' has been created). It uses the built-in $(RM) command of + # GNU make. Similarly, `nul' is created if e.g. `make setup windows' has + # been erroneously used. + # + # Note: This test is duplicated in `builds/unix/detect.mk'. + # + is_unix := $(strip $(wildcard /sbin/init) \ + $(wildcard /usr/sbin/init) \ + $(wildcard /dev/null) \ + $(wildcard /hurd/auth)) + ifneq ($(is_unix),) + + distclean: + $(RM) $(TOP_DIR)/builds/unix/config.cache + $(RM) $(TOP_DIR)/builds/unix/config.log + $(RM) $(TOP_DIR)/builds/unix/config.status + $(RM) $(TOP_DIR)/builds/unix/unix-def.mk + $(RM) $(TOP_DIR)/builds/unix/unix-cc.mk + $(RM) $(TOP_DIR)/builds/unix/freetype2.pc + $(RM) nul + + endif # test is_unix + + # IMPORTANT: + # + # `setup' must be defined by the host platform detection rules to create + # the `config.mk' file in the current directory. + +else + + # A configuration sub-Makefile is present -- simply run it. + # + all: single + + BUILD_PROJECT := yes + include $(CONFIG_MK) + +endif # test check_platform + + +.PHONY: check_out_submodule copy_submodule + +check_out_submodule: + $(info Checking out submodule in `subprojects/dlg') + git -C $(TOP_DIR) submodule update --init + +copy_submodule: + $(info Copying files from `subprojects/dlg' to `src/dlg' and `include/dlg') + ifeq ($(wildcard $(TOP_DIR)/include/dlg),) + mkdir $(subst /,$(SEP),$(TOP_DIR)/include/dlg) + endif + $(COPY) $(subst /,$(SEP),$(TOP_DIR)/subprojects/dlg/include/dlg/output.h $(TOP_DIR)/include/dlg) + $(COPY) $(subst /,$(SEP),$(TOP_DIR)/subprojects/dlg/include/dlg/dlg.h $(TOP_DIR)/include/dlg) + $(COPY) $(subst /,$(SEP),$(TOP_DIR)/subprojects/dlg/src/dlg/dlg.c $(TOP_DIR)/src/dlg) + + +# We always need the list of modules in ftmodule.h. +# +all setup: $(FTMODULE_H) + + +# The `modules' target unconditionally rebuilds the module list. +# +modules: + $(FTMODULE_H_INIT) + $(FTMODULE_H_CREATE) + $(FTMODULE_H_DONE) + +include $(TOP_DIR)/builds/modules.mk + + +# get FreeType version string using built-in string functions +# +hash := \# + +work := $(strip $(shell $(CAT) \ + $(subst /,$(SEP),$(TOP_DIR)/include/freetype/freetype.h))) + +work := $(subst $(hash)define$(space)FREETYPE_MAJOR$(space),MAjOR=,$(work)) +work := $(subst $(hash)define$(space)FREETYPE_MINOR$(space),MInOR=,$(work)) +work := $(subst $(hash)define$(space)FREETYPE_PATCH$(space),PAtCH=,$(work)) + +major := $(subst MAjOR=,,$(filter MAjOR=%,$(work))) +minor := $(subst MInOR=,,$(filter MInOR=%,$(work))) +patch := $(subst PAtCH=,,$(filter PAtCH=%,$(work))) + +work := + +# ifneq ($(findstring x0x,x$(patch)x),) +# version := $(major).$(minor) +# winversion := $(major)$(minor) +# else + version := $(major).$(minor).$(patch) + winversion := $(major)$(minor)$(patch) + version_tag := VER-$(major)-$(minor)-$(patch) +# endif + + +# This target builds the tarballs. +# +# Not to be run by a normal user -- there are no attempts to make it +# generic. + +dist: + -rm -rf tmp + rm -f freetype-$(version).tar.gz + rm -f freetype-$(version).tar.xz + rm -f ft$(winversion).zip + + find . -name .git -prune \ + -o -name tmp -prune \ + -o -type d -exec mkdir -p tmp/{} \; + + currdir=`pwd` ; \ + find . -name .git -prune \ + -o -name tmp -prune \ + -o -name .gitattributes \ + -o -name .gitignore \ + -o -name .gitlab-ci.yml \ + -o -name .gitmodules \ + -o -name .mailmap \ + -o -type f -exec ln -s $$currdir/{} tmp/{} \; + + cd tmp ; \ + $(MAKE) devel ; \ + $(MAKE) do-dist + + mv tmp freetype-$(version) + + tar --format=ustar -chf - freetype-$(version) \ + | gzip -9 -c > freetype-$(version).tar.gz + tar --format=ustar -chf - freetype-$(version) \ + | xz -c > freetype-$(version).tar.xz + + @# Use CR/LF for zip files. + zip -lr9 ft$(winversion).zip freetype-$(version) + + rm -fr freetype-$(version) + + +# The locations of the latest `config.guess' and `config.sub' versions (from +# GNU `config' git repository), relative to the `tmp' directory used during +# `make dist'. +# +# GNU_CONFIG_GIT_URL = git://git.savannah.gnu.org/config.git +GNU_CONFIG_GIT_URL = https://git.savannah.gnu.org/git/config.git +GNU_CONFIG_DESTDIR = $(TOP_DIR)/subprojects/gnu-config + +CONFIG_GUESS = $(GNU_CONFIG_DESTDIR)/config.guess +CONFIG_SUB = $(GNU_CONFIG_DESTDIR)/config.sub + +# We also use this repository to access the gnulib script that converts git +# commit messages to a ChangeLog file. +CHANGELOG_SCRIPT = $(GNU_CONFIG_DESTDIR)/gitlog-to-changelog + + +# Don't say `make do-dist'. Always use `make dist' instead. +# +.PHONY: do-dist + +do-dist: distclean refdoc + @# Without removing the files, `autoconf' and friends follow links. + rm -f $(TOP_DIR)/builds/unix/aclocal.m4 + rm -f $(TOP_DIR)/builds/unix/configure.ac + rm -f $(TOP_DIR)/builds/unix/configure + + sh autogen.sh + rm -rf $(TOP_DIR)/builds/unix/autom4te.cache + + rm -rf $(GNU_CONFIG_DESTDIR) + git clone --depth=1 $(GNU_CONFIG_GIT_URL) $(GNU_CONFIG_DESTDIR) + cp $(CONFIG_GUESS) $(TOP_DIR)/builds/unix + cp $(CONFIG_SUB) $(TOP_DIR)/builds/unix + + @# Generate `ChangeLog' file with commits since release 2.11.0 + @# (when we stopped creating this file manually). + $(CHANGELOG_SCRIPT) \ + --format='%B%n' \ + --no-cluster \ + -- VER-2-11-0..$(version_tag) \ + > ChangeLog + + @# Remove intermediate files created by the `refdoc' target. + rm -rf $(TOP_DIR)/docs/markdown + rm -f $(TOP_DIR)/docs/mkdocs.yml + + @# Remove more stuff related to git. + rm -rf $(TOP_DIR)/subprojects/dlg + rm -rf $(TOP_DIR)/subprojects/gnu-config + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/unix/aclocal.m4 b/local/recipes/libs/freetype2/source/builds/unix/aclocal.m4 new file mode 100644 index 0000000000..d5d09ed409 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/aclocal.m4 @@ -0,0 +1,9200 @@ +# generated automatically by aclocal 1.16.90 -*- Autoconf -*- + +# Copyright (C) 1996-2024 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. + +# 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. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2019, 2021-2024 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2024 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. + +# GNU Libtool is free software; you can redistribute 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT 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 . +]) + +# serial 63 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.64])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_DECL_FILECMD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC and +# ICC, which need '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), in case it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2024 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + $SED '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + # Feature test to disable chained fixups since it is not + # compatible with '-undefined dynamic_lookup' + AC_CACHE_CHECK([for -no_fixup_chains linker flag], + [lt_cv_support_no_fixup_chains], + [ save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([],[])], + lt_cv_support_no_fixup_chains=yes, + lt_cv_support_no_fixup_chains=no + ) + LDFLAGS=$save_LDFLAGS + ] + ) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main(void) { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) + case $MACOSX_DEPLOYMENT_TARGET,$host in + 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + *) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' + if test yes = "$lt_cv_support_no_fixup_chains"; then + AS_VAR_APPEND([_lt_dar_allow_undefined], [' $wl-no_fixup_chains']) + fi + ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + _lt_dar_needs_single_mod=no + case $host_os in + rhapsody* | darwin1.*) + _lt_dar_needs_single_mod=yes ;; + darwin*) + # When targeting Mac OS X 10.4 (darwin 8) or later, + # -single_module is the default and -multi_module is unsupported. + # The toolchain on macOS 10.14 (darwin 18) and later cannot + # target any OS version that needs -single_module. + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*-darwin[[567]].*|10.[[0-3]],*-darwin[[5-9]].*|10.[[0-3]],*-darwin1[[0-7]].*) + _lt_dar_needs_single_mod=yes ;; + esac + ;; + esac + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes = "$_lt_dar_needs_single_mod" -a yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[m4_require([_LT_DECL_SED])dnl +AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + # Trim trailing / since we'll always append absolute paths and we want + # to avoid //, if only for less confusing output for the user. + lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `$FILECMD conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `$FILECMD conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*|x86_64-gnu*) + case `$FILECMD conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*|x86_64-gnu*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `$FILECMD conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +_LT_DECL([], [AR], [1], [The archiver]) + +# Use ARFLAGS variable as AR's operation code to sync the variable naming with +# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have +# higher priority because that's what people were doing historically (setting +# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS +# variable obsoleted/removed. + +test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} +lt_ar_flags=$AR_FLAGS +_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) + +# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override +# by AR_FLAGS because that was never working and AR_FLAGS is about to die. +_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], + [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_REQUIRE([AC_PROG_RANLIB]) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu* | ironclad*) + # Under GNU Hurd and Ironclad, this test is not required because there + # is no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | windows* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord (void) __attribute__((visibility("default"))); +#endif + +int fnord (void) { return 42; } +int main (void) +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | windows* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -z "$STRIP"; then + AC_MSG_RESULT([no]) +else + if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + case $host_os in + darwin*) + # FIXME - insert some real tests, host_os isn't really good enough + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + ;; + freebsd*) + if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac + fi +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | windows* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + # If user builds GCC with multilib enabled, + # it should just install on $(libdir) + # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. + if test xyes = x"$multilib"; then + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + $install_prog $dir/$dlname $destdir/$dlname~ + chmod a+x $destdir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib $destdir/$dlname'\'' || exit \$?; + fi' + else + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + fi + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | windows* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl* | *,icl*) + # Native MSVC or ICC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw* | windows*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC and ICC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly* | midnightbsd*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + case $host_cpu in + powerpc64) + # On FreeBSD bi-arch platforms, a different variable is used for 32-bit + # binaries. See . + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[int test_pointer_size[sizeof (void *) - 5]; + ]])], + [shlibpath_var=LD_LIBRARY_PATH], + [shlibpath_var=LD_32_LIBRARY_PATH]) + ;; + *) + shlibpath_var=LD_LIBRARY_PATH + ;; + esac + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' + sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' + hardcode_into_libs=no + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # -rpath works at least for libraries that are not overridden by + # libraries installed in system locations. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directories which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +*-mlibc) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='mlibc ld.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +serenity*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + dynamic_linker='SerenityOS LibELF' + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +emscripten*) + version_type=none + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + dynamic_linker="Emscripten linker" + _LT_COMPILER_PIC($1)='-fPIC' + _LT_TAGVAR(archive_cmds, $1)='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(no_undefined_flag, $1)= + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw* | *-*-windows*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='$FILECMD -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | windows* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly* | midnightbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=$FILECMD + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +*-mlibc) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +serenity*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | windows* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw* | windows*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | windows* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_manifest_tool], + [lt_cv_path_manifest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_manifest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_manifest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-mingw* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | windows* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BCDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw* | windows*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++ or ICC, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(void){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | windows* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly* | midnightbsd*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *-mlibc) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + serenity*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *flang* | ftn | f18* | f95*) + # Flang compiler. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *-mlibc) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + serenity*) + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | windows* | cegcc*) + case $cc_basename in + cl* | icl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | windows* | pw32* | cegcc*) + # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) + with_gnu_ld=yes + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # 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. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | windows* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + _LT_TAGVAR(file_list_spec, $1)='@' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + *-mlibc) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | windows* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl* | icl*) + # Native MSVC or ICC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC and ICC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly* | midnightbsd*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + esac + ;; + + *-mlibc) + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + serenity*) + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e. impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(void){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | windows* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl* | ,icl* | no,icl*) + # Native MSVC or ICC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly* | midnightbsd*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " [[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + *-mlibc) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + serenity*) + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " [[-]]L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R,l}" and the path. + # Remove the space. + if test x-L = x"$p" || + test x-R = x"$p" || + test x-l = x"$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_FILECMD +# ---------------- +# Check for a file(cmd) program that can be used to detect file type and magic +m4_defun([_LT_DECL_FILECMD], +[AC_CHECK_PROG([FILECMD], [file], [file], [:]) +_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) +])# _LD_DECL_FILECMD + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* | *-*-windows* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS + +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2024 Free +# Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# 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 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --enable-aix-soname configure option, and support the +# `aix-soname=aix' and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. +# DEFAULT is either `aix', `both', or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_ENABLE([aix-soname], + [AS_HELP_STRING([--enable-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $enableval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --enable-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$enable_aix_soname], + [_AC_ENABLE_IF([with], [aix-soname], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)]) + enable_aix_soname=$lt_cv_with_aix_soname]) + with_aix_soname=$enable_aix_soname + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --enable-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_ENABLE([pic], + [AS_HELP_STRING([--enable-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $enableval in + yes|no) pic_mode=$enableval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [dnl Continue to support --with-pic and --without-pic, for backward + dnl compatibility. + _AC_ENABLE_IF([with], [pic], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])])] + ) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) + +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2024 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# 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 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) + +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2019, 2021-2024 Free Software Foundation, +# Inc. +# Written by Scott James Remnant, 2004 +# +# 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. + +# @configure_input@ + +# serial 4441 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.5.4]) +m4_define([LT_PACKAGE_REVISION], [2.5.4]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.5.4' +macro_revision='2.5.4' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) + +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2024 Free +# Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# 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 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) + +m4_include([ax_compare_version.m4]) +m4_include([ax_prog_python_version.m4]) +m4_include([ax_pthread.m4]) +m4_include([ft-munmap.m4]) +m4_include([pkg.m4]) diff --git a/local/recipes/libs/freetype2/source/builds/unix/ax_compare_version.m4 b/local/recipes/libs/freetype2/source/builds/unix/ax_compare_version.m4 new file mode 100644 index 0000000000..ffb4997e8b --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ax_compare_version.m4 @@ -0,0 +1,177 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_compare_version.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_COMPARE_VERSION(VERSION_A, OP, VERSION_B, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# +# DESCRIPTION +# +# This macro compares two version strings. Due to the various number of +# minor-version numbers that can exist, and the fact that string +# comparisons are not compatible with numeric comparisons, this is not +# necessarily trivial to do in a autoconf script. This macro makes doing +# these comparisons easy. +# +# The six basic comparisons are available, as well as checking equality +# limited to a certain number of minor-version levels. +# +# The operator OP determines what type of comparison to do, and can be one +# of: +# +# eq - equal (test A == B) +# ne - not equal (test A != B) +# le - less than or equal (test A <= B) +# ge - greater than or equal (test A >= B) +# lt - less than (test A < B) +# gt - greater than (test A > B) +# +# Additionally, the eq and ne operator can have a number after it to limit +# the test to that number of minor versions. +# +# eq0 - equal up to the length of the shorter version +# ne0 - not equal up to the length of the shorter version +# eqN - equal up to N sub-version levels +# neN - not equal up to N sub-version levels +# +# When the condition is true, shell commands ACTION-IF-TRUE are run, +# otherwise shell commands ACTION-IF-FALSE are run. The environment +# variable 'ax_compare_version' is always set to either 'true' or 'false' +# as well. +# +# Examples: +# +# AX_COMPARE_VERSION([3.15.7],[lt],[3.15.8]) +# AX_COMPARE_VERSION([3.15],[lt],[3.15.8]) +# +# would both be true. +# +# AX_COMPARE_VERSION([3.15.7],[eq],[3.15.8]) +# AX_COMPARE_VERSION([3.15],[gt],[3.15.8]) +# +# would both be false. +# +# AX_COMPARE_VERSION([3.15.7],[eq2],[3.15.8]) +# +# would be true because it is only comparing two minor versions. +# +# AX_COMPARE_VERSION([3.15.7],[eq0],[3.15]) +# +# would be true because it is only comparing the lesser number of minor +# versions of the two values. +# +# Note: The characters that separate the version numbers do not matter. An +# empty string is the same as version 0. OP is evaluated by autoconf, not +# configure, so must be a string, not a variable. +# +# The author would like to acknowledge Guido Draheim whose advice about +# the m4_case and m4_ifvaln functions make this macro only include the +# portions necessary to perform the specific comparison specified by the +# OP argument in the final configure script. +# +# LICENSE +# +# Copyright (c) 2008 Tim Toolan +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 13 + +dnl ######################################################################### +AC_DEFUN([AX_COMPARE_VERSION], [ + AC_REQUIRE([AC_PROG_AWK]) + + # Used to indicate true or false condition + ax_compare_version=false + + # Convert the two version strings to be compared into a format that + # allows a simple string comparison. The end result is that a version + # string of the form 1.12.5-r617 will be converted to the form + # 0001001200050617. In other words, each number is zero padded to four + # digits, and non digits are removed. + AS_VAR_PUSHDEF([A],[ax_compare_version_A]) + A=`echo "$1" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ + -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/[[^0-9]]//g'` + + AS_VAR_PUSHDEF([B],[ax_compare_version_B]) + B=`echo "$3" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ + -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/[[^0-9]]//g'` + + dnl # In the case of le, ge, lt, and gt, the strings are sorted as necessary + dnl # then the first line is used to determine if the condition is true. + dnl # The sed right after the echo is to remove any indented white space. + m4_case(m4_tolower($2), + [lt],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/false/;s/x${B}/true/;1q"` + ], + [gt],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort | sed "s/x${A}/false/;s/x${B}/true/;1q"` + ], + [le],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort | sed "s/x${A}/true/;s/x${B}/false/;1q"` + ], + [ge],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/true/;s/x${B}/false/;1q"` + ],[ + dnl Split the operator from the subversion count if present. + m4_bmatch(m4_substr($2,2), + [0],[ + # A count of zero means use the length of the shorter version. + # Determine the number of characters in A and B. + ax_compare_version_len_A=`echo "$A" | $AWK '{print(length)}'` + ax_compare_version_len_B=`echo "$B" | $AWK '{print(length)}'` + + # Set A to no more than B's length and B to no more than A's length. + A=`echo "$A" | sed "s/\(.\{$ax_compare_version_len_B\}\).*/\1/"` + B=`echo "$B" | sed "s/\(.\{$ax_compare_version_len_A\}\).*/\1/"` + ], + [[0-9]+],[ + # A count greater than zero means use only that many subversions + A=`echo "$A" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` + B=`echo "$B" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` + ], + [.+],[ + AC_WARNING( + [invalid OP numeric parameter: $2]) + ],[]) + + # Pad zeros at end of numbers to make same length. + ax_compare_version_tmp_A="$A`echo $B | sed 's/./0/g'`" + B="$B`echo $A | sed 's/./0/g'`" + A="$ax_compare_version_tmp_A" + + # Check for equality or inequality as necessary. + m4_case(m4_tolower(m4_substr($2,0,2)), + [eq],[ + test "x$A" = "x$B" && ax_compare_version=true + ], + [ne],[ + test "x$A" != "x$B" && ax_compare_version=true + ],[ + AC_WARNING([invalid OP parameter: $2]) + ]) + ]) + + AS_VAR_POPDEF([A])dnl + AS_VAR_POPDEF([B])dnl + + dnl # Execute ACTION-IF-TRUE / ACTION-IF-FALSE. + if test "$ax_compare_version" = "true" ; then + m4_ifvaln([$4],[$4],[:])dnl + m4_ifvaln([$5],[else $5])dnl + fi +]) dnl AX_COMPARE_VERSION diff --git a/local/recipes/libs/freetype2/source/builds/unix/ax_prog_python_version.m4 b/local/recipes/libs/freetype2/source/builds/unix/ax_prog_python_version.m4 new file mode 100644 index 0000000000..dbc3dbf1da --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ax_prog_python_version.m4 @@ -0,0 +1,66 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_prog_python_version.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PROG_PYTHON_VERSION([VERSION],[ACTION-IF-TRUE],[ACTION-IF-FALSE]) +# +# DESCRIPTION +# +# Makes sure that python supports the version indicated. If true the shell +# commands in ACTION-IF-TRUE are executed. If not the shell commands in +# ACTION-IF-FALSE are run. Note if $PYTHON is not set (for example by +# running AC_CHECK_PROG or AC_PATH_PROG) the macro will fail. +# +# Example: +# +# AC_PATH_PROG([PYTHON],[python]) +# AX_PROG_PYTHON_VERSION([2.4.4],[ ... ],[ ... ]) +# +# This will check to make sure that the python you have supports at least +# version 2.4.4. +# +# NOTE: This macro uses the $PYTHON variable to perform the check. +# AX_WITH_PYTHON can be used to set that variable prior to running this +# macro. The $PYTHON_VERSION variable will be valorized with the detected +# version. +# +# LICENSE +# +# Copyright (c) 2009 Francesco Salvestrini +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 12 + +AC_DEFUN([AX_PROG_PYTHON_VERSION],[ + AC_REQUIRE([AC_PROG_SED]) + AC_REQUIRE([AC_PROG_GREP]) + + AS_IF([test -n "$PYTHON"],[ + ax_python_version="$1" + + AC_MSG_CHECKING([for python version]) + changequote(<<,>>) + python_version=`$PYTHON -V 2>&1 | $GREP "^Python " | $SED -e 's/^.* \([0-9]*\.[0-9]*\.[0-9]*\)/\1/'` + changequote([,]) + AC_MSG_RESULT($python_version) + + AC_SUBST([PYTHON_VERSION],[$python_version]) + + AX_COMPARE_VERSION([$ax_python_version],[le],[$python_version],[ + : + $2 + ],[ + : + $3 + ]) + ],[ + AC_MSG_WARN([could not find the python interpreter]) + $3 + ]) +]) diff --git a/local/recipes/libs/freetype2/source/builds/unix/ax_pthread.m4 b/local/recipes/libs/freetype2/source/builds/unix/ax_pthread.m4 new file mode 100644 index 0000000000..e5858e50c3 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ax_pthread.m4 @@ -0,0 +1,522 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_pthread.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +# +# DESCRIPTION +# +# This macro figures out how to build C programs using POSIX threads. It +# sets the PTHREAD_LIBS output variable to the threads library and linker +# flags, and the PTHREAD_CFLAGS output variable to any special C compiler +# flags that are needed. (The user can also force certain compiler +# flags/libs to be tested by setting these environment variables.) +# +# Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is +# needed for multi-threaded programs (defaults to the value of CC +# respectively CXX otherwise). (This is necessary on e.g. AIX to use the +# special cc_r/CC_r compiler alias.) +# +# NOTE: You are assumed to not only compile your program with these flags, +# but also to link with them as well. For example, you might link with +# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# $PTHREAD_CXX $CXXFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS +# +# If you are only building threaded programs, you may wish to use these +# variables in your default LIBS, CFLAGS, and CC: +# +# LIBS="$PTHREAD_LIBS $LIBS" +# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +# CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" +# CC="$PTHREAD_CC" +# CXX="$PTHREAD_CXX" +# +# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant +# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to +# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +# +# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the +# PTHREAD_PRIO_INHERIT symbol is defined when compiling with +# PTHREAD_CFLAGS. +# +# ACTION-IF-FOUND is a list of shell commands to run if a threads library +# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it +# is not found. If ACTION-IF-FOUND is not specified, the default action +# will define HAVE_PTHREAD. +# +# Please let the authors know if this macro fails on any platform, or if +# you have any other suggestions or comments. This macro was based on work +# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help +# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by +# Alejandro Forero Cuervo to the autoconf macro repository. We are also +# grateful for the helpful feedback of numerous users. +# +# Updated for Autoconf 2.68 by Daniel Richard G. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# Copyright (c) 2011 Daniel Richard G. +# Copyright (c) 2019 Marc Stevens +# +# 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 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. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 30 + +AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) +AC_DEFUN([AX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_TARGET]) +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_PROG_SED]) +AC_LANG_PUSH([C]) +ax_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on Tru64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) + AS_IF([test "x$PTHREAD_CXX" != "x"], [CXX="$PTHREAD_CXX"]) + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) + AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) + AC_MSG_RESULT([$ax_pthread_ok]) + if test "x$ax_pthread_ok" = "xno"; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items with a "," contain both +# C compiler flags (before ",") and linker flags (after ","). Other items +# starting with a "-" are C compiler flags, and remaining items are +# library names, except for "none" which indicates that we try without +# any flags at all, and "pthread-config" which is a program returning +# the flags for the Pth emulation library. + +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case $target_os in + + freebsd*) + + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + + hpux*) + + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], + [ +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + ], + [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) + ;; + + solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). + + ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" + ;; +esac + +# Are we compiling with Clang? + +AC_CACHE_CHECK([whether $CC is Clang], + [ax_cv_PTHREAD_CLANG], + [ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], + [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + ], + [ax_cv_PTHREAD_CLANG=yes]) + fi + ]) +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + + +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) + +# Note that for GCC and Clang -pthread generally implies -lpthread, +# except when -nostdlib is passed. +# This is problematic using libtool to build C++ shared libraries with pthread: +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 +# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 +# To solve this, first try -pthread together with -lpthread for GCC + +AS_IF([test "x$GCC" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) + +# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first + +AS_IF([test "x$ax_pthread_clang" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread"]) + + +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $target_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; + + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" + ;; +esac +AS_IF([test "x$ax_pthread_check_macro" = "x--"], + [ax_pthread_check_cond=0], + [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) + + +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do + + case $ax_pthread_try_flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + *,*) + PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` + PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` + AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) + PTHREAD_CFLAGS="$ax_pthread_try_flag" + ;; + + pthread-config) + AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) + AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) + PTHREAD_LIBS="-l$ax_pthread_try_flag" + ;; + esac + + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif + static void *some_global = NULL; + static void routine(void *a) + { + /* To avoid any unused-parameter or + unused-but-set-parameter warning. */ + some_global = a; + } + static void *start_routine(void *a) { return a; }], + [pthread_t th; pthread_attr_t attr; + pthread_create(&th, 0, start_routine, 0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0) /* ; */])], + [ax_pthread_ok=yes], + []) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + AC_MSG_RESULT([$ax_pthread_ok]) + AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`AS_ECHO(["$ac_link"]) | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [ac_link="$ax_pthread_2step_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [break]) + ]) + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ]) + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + + + +# Various other checks: +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_CACHE_CHECK([for joinable pthread attribute], + [ax_cv_PTHREAD_JOINABLE_ATTR], + [ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], + [int attr = $ax_pthread_attr; return attr /* ; */])], + [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], + []) + done + ]) + AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ + test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ + test "x$ax_pthread_joinable_attr_defined" != "xyes"], + [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], + [$ax_cv_PTHREAD_JOINABLE_ATTR], + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + ax_pthread_joinable_attr_defined=yes + ]) + + AC_CACHE_CHECK([whether more special flags are required for pthreads], + [ax_cv_PTHREAD_SPECIAL_FLAGS], + [ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $target_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + ]) + AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes"], + [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes]) + + AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], + [ax_cv_PTHREAD_PRIO_INHERIT], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[int i = PTHREAD_PRIO_INHERIT; + return i;]])], + [ax_cv_PTHREAD_PRIO_INHERIT=yes], + [ax_cv_PTHREAD_PRIO_INHERIT=no]) + ]) + AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes"], + [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) + ax_pthread_prio_inherit_defined=yes + ]) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + # More AIX lossage: compile with *_r variant + if test "x$GCC" != "xyes"; then + case $target_os in + aix*) + AS_CASE(["x/$CC"], + [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], + [#handle absolute path differently from PATH based program lookup + AS_CASE(["x$CC"], + [x/*], + [ + AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"]) + AS_IF([test "x${CXX}" != "x"], [AS_IF([AS_EXECUTABLE_P([${CXX}_r])],[PTHREAD_CXX="${CXX}_r"])]) + ], + [ + AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC]) + AS_IF([test "x${CXX}" != "x"], [AC_CHECK_PROGS([PTHREAD_CXX],[${CXX}_r],[$CXX])]) + ] + ) + ]) + ;; + esac + fi +fi + +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + +AC_SUBST([PTHREAD_LIBS]) +AC_SUBST([PTHREAD_CFLAGS]) +AC_SUBST([PTHREAD_CC]) +AC_SUBST([PTHREAD_CXX]) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test "x$ax_pthread_ok" = "xyes"; then + ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) + : +else + ax_pthread_ok=no + $2 +fi +AC_LANG_POP +])dnl AX_PTHREAD diff --git a/local/recipes/libs/freetype2/source/builds/unix/config.guess b/local/recipes/libs/freetype2/source/builds/unix/config.guess new file mode 100755 index 0000000000..a9d01fde46 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/config.guess @@ -0,0 +1,1818 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2025 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2025-07-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 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. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# 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 Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system '$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2025 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# Just in case it came from the environment. +GUESS= + +# 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 +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { 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" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c17 c99 c89 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +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/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi + ;; +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 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 + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case $UNAME_VERSION in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + GUESS=mips-dec-osf1 + ;; + alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case $ALPHA_CPU_TYPE in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; + Amiga*:UNIX_System_V:4.0:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + GUESS=hppa1.1-hitachi-hiuxmpp + ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + case `/usr/bin/arch -k` in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like '4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case `/bin/arch` in + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + int + main () + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *: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 + else + IBM_ARCH=powerpc + fi + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if test -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 ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + 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); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; + 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/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + 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/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + GUESS=hppa64-unknown-linux-$LIBC + ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac + fi + GUESS=$CPU-pc-linux-$LIBCABI + ;; + xtensa*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + GUESS=i386-sequent-sysv4 + ;; + 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, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; + i*86:OS/2:*:*) + # If we were able to find 'uname', then EMX Unix compatibility + # is probably installed. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + 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. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + GUESS=m68k-diab-dnix + ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /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; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; + SX-4:SUPER-UX:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if test "$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 + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + x86_64:[Ii]ronclad:*:*|i?86:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-pc-ironclad-mlibc + ;; + *:[Ii]ronclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad-mlibc + ;; +esac + +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +int +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%Y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/libs/freetype2/source/builds/unix/config.sub b/local/recipes/libs/freetype2/source/builds/unix/config.sub new file mode 100755 index 0000000000..3d35cde174 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/config.sub @@ -0,0 +1,2364 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2025 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale + +timestamp='2025-07-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 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. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# 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 Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2025 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." + +help=" +Try '$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + cloudabi*-eabi* \ + | kfreebsd*-gnu* \ + | knetbsd*-gnu* \ + | kopensolaris*-gnu* \ + | ironclad-* \ + | linux-* \ + | managarm-* \ + | netbsd*-eabi* \ + | netbsd*-gnu* \ + | nto-qnx* \ + | os2-emx* \ + | rtmk-nova* \ + | storm-chaos* \ + | uclinux-gnu* \ + | uclinux-uclibc* \ + | windows-* ) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + case $field1-$field2 in + # Shorthands that happen to contain a single dash + convex-c[12] | convex-c3[248]) + basic_machine=$field2-convex + basic_os= + ;; + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Do not treat sunos as a manufacturer + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + # Manufacturers + 3100* \ + | 32* \ + | 3300* \ + | 3600* \ + | 7300* \ + | acorn \ + | altos* \ + | apollo \ + | apple \ + | atari \ + | att* \ + | axis \ + | be \ + | bull \ + | cbm \ + | ccur \ + | cisco \ + | commodore \ + | convergent* \ + | convex* \ + | cray \ + | crds \ + | dec* \ + | delta* \ + | dg \ + | digital \ + | dolphin \ + | encore* \ + | gould \ + | harris \ + | highlevel \ + | hitachi* \ + | hp \ + | ibm* \ + | intergraph \ + | isi* \ + | knuth \ + | masscomp \ + | microblaze* \ + | mips* \ + | motorola* \ + | ncr* \ + | news \ + | next \ + | ns \ + | oki \ + | omron* \ + | pc533* \ + | rebel \ + | rom68k \ + | rombug \ + | semi \ + | sequent* \ + | sgi* \ + | siemens \ + | sim \ + | sni \ + | sony* \ + | stratus \ + | sun \ + | sun[234]* \ + | tektronix \ + | tti* \ + | ultra \ + | unicom* \ + | wec \ + | winbond \ + | wrs) + basic_machine=$field1-$field2 + basic_os= + ;; + tock* | zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300) + cpu=m68k + vendor=motorola + ;; + # This used to be dpx2*, but that gets the RS6000-based + # DPX/20 and the x86-based DPX/2-100 wrong. See + # https://oldskool.silicium.org/stations/bull_dpx20.htm + # https://www.feb-patrimoine.com/english/bull_dpx2.htm + # https://www.feb-patrimoine.com/english/unix_and_bull.htm + dpx2 | dpx2[23]00 | dpx2[23]xx) + cpu=m68k + vendor=bull + ;; + dpx2100 | dpx21xx) + cpu=i386 + vendor=bull + ;; + dpx20) + cpu=rs6000 + vendor=bull + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x"$basic_os" != x +then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +obj= +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + saved_IFS=$IFS + IFS="-" read kernel os <&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- | linux-ohos*- ) + ;; + uclinux-uclibc*- | uclinux-gnu*- ) + ;; + ironclad-mlibc*-) + ;; + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 + ;; + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) + ;; + rtmk-nova-) + ;; + *-eabi*- | *-gnueabi*-) + ;; + ios*-simulator- | tvos*-simulator- | watchos*-simulator- ) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) + # Blank kernel with real OS is always fine. + ;; + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 + exit 1 + ;; +esac + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos* | *-solaris*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%Y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/local/recipes/libs/freetype2/source/builds/unix/configure b/local/recipes/libs/freetype2/source/builds/unix/configure new file mode 100755 index 0000000000..7e9e8c50dd --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/configure @@ -0,0 +1,20160 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.72 for FreeType 2.14.3. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, +# Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +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 \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else case e in #( + e) case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : + +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || 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'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in #( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + if test "x$CONFIG_SHELL" != x +then : + 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and +$0: freetype@nongnu.org about your system, including any +$0: error possibly output before this message. Then install +$0: a modern shell, or manually run the script under such a +$0: shell if you do have one." + fi + exit 1 +fi ;; +esac +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_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 +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +# 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. +as_fn_error () +{ + 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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + t clear + :clear + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { printf "%s\n" "$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). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# 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` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='FreeType' +PACKAGE_TARNAME='freetype' +PACKAGE_VERSION='2.14.3' +PACKAGE_STRING='FreeType 2.14.3' +PACKAGE_BUGREPORT='freetype@nongnu.org' +PACKAGE_URL='' + +ac_unique_file="ftconfig.h.in" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_STDIO_H +# include +#endif +#ifdef HAVE_STDLIB_H +# include +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_c_list= +ac_func_c_list= +enable_year2038=no +ac_subst_vars='LTLIBOBJS +LIBOBJS +build_libtool_libs +wl +hardcode_libdir_flag_spec +LIBSSTATIC_CONFIG +PKGCONFIG_LIBS_PRIVATE +PKGCONFIG_REQUIRES_PRIVATE +PKGCONFIG_LIBS +PKGCONFIG_REQUIRES +ftmac_c +PYTHON_VERSION +PYTHON +PTHREAD_CFLAGS +PTHREAD_LIBS +PTHREAD_CXX +PTHREAD_CC +ax_pthread_config +target_os +target_vendor +target_cpu +target +FT_DEMO_LDFLAGS +FT_DEMO_CFLAGS +LIBRSVG_LIBS +LIBRSVG_CFLAGS +BROTLI_LIBS +BROTLI_CFLAGS +HARFBUZZ_LIBS +HARFBUZZ_CFLAGS +have_libpng +LIBPNG_LIBS +LIBPNG_CFLAGS +BZIP2_LIBS +BZIP2_CFLAGS +SYSTEM_ZLIB +ZLIB_LIBS +ZLIB_CFLAGS +XX_ANSIFLAGS +XX_CFLAGS +FTSYS_SRC +INSTALL_FT2_CONFIG +MKDIR_P +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +EXEEXT_BUILD +LDFLAGS_BUILD +CFLAGS_BUILD +CC_BUILD +RC +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +AWK +RANLIB +STRIP +ac_ct_AR +AR +FILECMD +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +LIBTOOL +OBJDUMP +DLLTOOL +AS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +ft_version +version_info +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_shared +enable_static +enable_pic +with_pic +enable_fast_install +enable_aix_soname +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +enable_freetype_config +enable_largefile +enable_mmap +with_zlib +with_bzip2 +with_png +with_harfbuzz +with_brotli +with_librsvg +with_old_mac_fonts +with_fsspec +with_fsref +with_quickdraw_toolbox +with_quickdraw_carbon +with_ats +enable_year2038 +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +LT_SYS_LIBRARY_PATH +ZLIB_CFLAGS +ZLIB_LIBS +BZIP2_CFLAGS +BZIP2_LIBS +LIBPNG_CFLAGS +LIBPNG_LIBS +HARFBUZZ_CFLAGS +HARFBUZZ_LIBS +BROTLI_CFLAGS +BROTLI_LIBS +LIBRSVG_CFLAGS +LIBRSVG_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + 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'" + ac_useropt_orig=$ac_useropt + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --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" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # 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'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + 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" ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: '$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +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" +fi +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +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 FreeType 2.14.3 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --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 + --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 + --srcdir=DIR find the sources in DIR [configure dir or '..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/freetype] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of FreeType 2.14.3:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --enable-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --disable-libtool-lock avoid locking (might break parallel builds) + --enable-freetype-config + install freetype-config + --disable-largefile omit support for large files + --disable-mmap do not check mmap() and do not use + --enable-year2038 support timestamps after 2038 + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-zlib=[yes|no|auto] + use system zlib instead of internal library + [default=auto] + --with-bzip2=[yes|no|auto] + support bzip2 compressed fonts [default=auto] + --with-png=[yes|no|auto] + support png compressed OpenType embedded bitmaps + [default=auto] + --with-harfbuzz=[yes|dynamic|no|auto] + improve auto-hinting of OpenType fonts + [default=auto] + --with-brotli=[yes|no|auto] + support decompression of WOFF2 streams + [default=auto] + --with-librsvg=[yes|no|auto] + support OpenType SVG fonts in FreeType demo programs + [default=auto] + --with-old-mac-fonts allow Mac resource-based fonts to be used + --with-fsspec use obsolete FSSpec API of MacOS, if available + (default=yes) + --with-fsref use Carbon FSRef API of MacOS, if available + (default=yes) + --with-quickdraw-toolbox + use MacOS QuickDraw in ToolBox, if available + (default=yes) + --with-quickdraw-carbon use MacOS QuickDraw in Carbon, if available + (default=yes) + --with-ats use AppleTypeService, if available (default=yes) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + 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 + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config + ZLIB_LIBS linker flags for ZLIB, overriding pkg-config + BZIP2_CFLAGS + C compiler flags for BZIP2, overriding pkg-config + BZIP2_LIBS linker flags for BZIP2, overriding pkg-config + LIBPNG_CFLAGS + C compiler flags for LIBPNG, overriding pkg-config + LIBPNG_LIBS linker flags for LIBPNG, overriding pkg-config + HARFBUZZ_CFLAGS + C compiler flags for HARFBUZZ, overriding pkg-config + HARFBUZZ_LIBS + linker flags for HARFBUZZ, overriding pkg-config + BROTLI_CFLAGS + C compiler flags for BROTLI, overriding pkg-config + BROTLI_LIBS linker flags for BROTLI, overriding pkg-config + LIBRSVG_CFLAGS + C compiler flags for LIBRSVG, overriding pkg-config + LIBRSVG_LIBS + linker flags for LIBRSVG, 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. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +FreeType configure 2.14.3 +generated by GNU Autoconf 2.72 + +Copyright (C) 2023 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + } +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 ;; +esac +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (void); below. */ + +#include +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (void); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main (void) +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else case e in #( + e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status ;; +esac +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_check_decl +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 FreeType $as_me 2.14.3, which was +generated by GNU Autoconf 2.72. Invocation command line was + + $ $0$ac_configure_args_raw + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$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 + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (char **p, int i) +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +/* Does the compiler advertise C99 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +// See if C++-style comments work. + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); +extern void free (void *); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +/* Does the compiler advertise C11 conformance? */ +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +as_fn_append ac_func_c_list " getpagesize HAVE_GETPAGESIZE" + +# Auxiliary files required by this configure script. +ac_aux_files="install-sh ltmain.sh config.guess config.sub" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Don't forget to update `docs/VERSIONS.TXT'! + +version_info='26:6:20' + +ft_version=`echo $version_info | tr : .` + + + +# checks for system type + + + + + # 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 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + + +# checks for programs + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See 'config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. +# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an '-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else case e in #( + e) ac_file='' ;; +esac +fi +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) +# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will +# work properly (i.e., refer to 'conftest.exe'), while it won't with +# 'rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else case e in #( + e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$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; } ;; +esac +fi +rm -f conftest conftest$ac_cv_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$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; } ;; +esac +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else case e in #( + e) ac_compiler_gnu=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else case e in #( + e) CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 ;; +esac +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC ;; +esac +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else case e in #( + e) if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" ;; +esac +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 ;; +esac +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + ;; +esac +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else case e in #( + e) # Passes both tests. +ac_preproc_ok=: +break ;; +esac +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else case e in #( + e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See 'config.log' for more details" "$LINENO" 5; } ;; +esac +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + +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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$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 +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.24 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + PKG_CONFIG="" + fi +fi + + +case `pwd` in + *\ * | *\ *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.5.4' +macro_revision='2.5.4' + + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +printf %s "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +printf "%s\n" "printf" >&6; } ;; + print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +printf "%s\n" "print -r" >&6; } ;; + *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +printf "%s\n" "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in #( +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + 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 #( +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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" + 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 #( +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + EGREP_TRADITIONAL=$EGREP + ac_cv_path_EGREP_TRADITIONAL=$EGREP + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +printf %s "checking for fgrep... " >&6; } +if test ${ac_cv_path_FGREP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in fgrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in #( +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +printf "%s\n" "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test ${with_gnu_ld+y} +then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else case e in #( + e) with_gnu_ld=no ;; +esac +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw* | *-*-windows*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } +fi +if test ${lt_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +printf "%s\n" "$LD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${lt_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test ${lt_cv_path_NM+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw* | windows*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +printf "%s\n" "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +printf "%s\n" "$DUMPBIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +printf "%s\n" "$ac_ct_DUMPBIN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +printf %s "checking the name lister ($NM) interface... " >&6; } +if test ${lt_cv_nm_interface+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +printf "%s\n" "$lt_cv_nm_interface" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +printf %s "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf "%s\n" "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +printf %s "checking the maximum length of command line arguments... " >&6; } +if test ${lt_cv_sys_max_cmd_len+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu* | ironclad*) + # Under GNU Hurd and Ironclad, this test is not required because there + # is no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | windows* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + ;; +esac +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf "%s\n" "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +printf %s "checking how to convert $build file names to $host format... " >&6; } +if test ${lt_cv_to_host_file_cmd+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $host in + *-*-mingw* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + ;; +esac +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +printf %s "checking how to convert $build file names to toolchain format... " >&6; } +if test ${lt_cv_to_tool_file_cmd+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* | *-*-windows* ) + case $build in + *-*-mingw* | *-*-windows* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + ;; +esac +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +printf %s "checking for $LD option to reload object files... " >&6; } +if test ${lt_cv_ld_reload_flag+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_ld_reload_flag='-r' ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | windows* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +# Extract the first word of "file", so it can be a program name with args. +set dummy file; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_FILECMD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$FILECMD"; then + ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_FILECMD="file" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_FILECMD" && ac_cv_prog_FILECMD=":" +fi ;; +esac +fi +FILECMD=$ac_cv_prog_FILECMD +if test -n "$FILECMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 +printf "%s\n" "$FILECMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +printf %s "checking how to recognize dependent libraries... " >&6; } +if test ${lt_cv_deplibs_check_method+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='$FILECMD -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | windows* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly* | midnightbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=$FILECMD + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +*-mlibc) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +serenity*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | windows* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +printf %s "checking how to associate runtime and link libraries... " >&6; } +if test ${lt_cv_sharedlib_from_linklib_cmd+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | windows* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} + + + + + + +# Use ARFLAGS variable as AR's operation code to sync the variable naming with +# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have +# higher priority because that's what people were doing historically (setting +# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS +# variable obsoleted/removed. + +test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} +lt_ar_flags=$AR_FLAGS + + + + + + +# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override +# by AR_FLAGS because that was never working and AR_FLAGS is about to die. + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +printf %s "checking for archiver @FILE support... " >&6; } +if test ${lt_cv_ar_at_file+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +printf "%s\n" "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +printf %s "checking command to parse $NM output from $compiler object... " >&6; } +if test ${lt_cv_sys_global_symbol_pipe+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | windows* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BCDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw* | windows*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++ or ICC, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(void){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + ;; +esac +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +printf "%s\n" "failed" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +printf %s "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test ${with_sysroot+y} +then : + withval=$with_sysroot; +else case e in #( + e) with_sysroot=no ;; +esac +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + # Trim trailing / since we'll always append absolute paths and we want + # to avoid //, if only for less confusing output for the user. + lt_sysroot=`$CC --print-sysroot 2>/dev/null | $SED 's:/\+$::'` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +printf "%s\n" "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +printf "%s\n" "${lt_sysroot:-no}" >&6; } + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +printf %s "checking for a working dd... " >&6; } +if test ${ac_cv_path_lt_DD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in dd + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +printf "%s\n" "$ac_cv_path_lt_DD" >&6; } + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +printf %s "checking how to truncate binary pipes... " >&6; } +if test ${lt_cv_truncate_bin+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +printf "%s\n" "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test ${enable_libtool_lock+y} +then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `$FILECMD conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `$FILECMD conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `$FILECMD conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `$FILECMD conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*|x86_64-gnu*) + case `$FILECMD conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*|x86_64-gnu*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +printf %s "checking whether the C compiler needs -belf... " >&6; } +if test ${lt_cv_cc_needs_belf+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_cc_needs_belf=yes +else case e in #( + e) lt_cv_cc_needs_belf=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `$FILECMD conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +printf "%s\n" "$MANIFEST_TOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if test ${lt_cv_path_manifest_tool+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_path_manifest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_manifest_tool=yes + fi + rm -f conftest* ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_manifest_tool" >&5 +printf "%s\n" "$lt_cv_path_manifest_tool" >&6; } +if test yes != "$lt_cv_path_manifest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +printf "%s\n" "$DSYMUTIL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +printf "%s\n" "$NMEDIT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +printf "%s\n" "$ac_ct_NMEDIT" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_LIPO+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +printf "%s\n" "$LIPO" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_LIPO+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +printf "%s\n" "$ac_ct_LIPO" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +printf "%s\n" "$OTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +printf "%s\n" "$ac_ct_OTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +printf "%s\n" "$OTOOL64" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +printf "%s\n" "$ac_ct_OTOOL64" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +printf %s "checking for -single_module linker flag... " >&6; } +if test ${lt_cv_apple_cc_single_mod+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } + + # Feature test to disable chained fixups since it is not + # compatible with '-undefined dynamic_lookup' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -no_fixup_chains linker flag" >&5 +printf %s "checking for -no_fixup_chains linker flag... " >&6; } +if test ${lt_cv_support_no_fixup_chains+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-no_fixup_chains" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_support_no_fixup_chains=yes +else case e in #( + e) lt_cv_support_no_fixup_chains=no + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_support_no_fixup_chains" >&5 +printf "%s\n" "$lt_cv_support_no_fixup_chains" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +printf %s "checking for -exported_symbols_list linker flag... " >&6; } +if test ${lt_cv_ld_exported_symbols_list+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_ld_exported_symbols_list=yes +else case e in #( + e) lt_cv_ld_exported_symbols_list=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +printf %s "checking for -force_load linker flag... " >&6; } +if test ${lt_cv_ld_force_load+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 + $AR $AR_FLAGS libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main(void) { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +printf "%s\n" "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) + case $MACOSX_DEPLOYMENT_TARGET,$host in + 10.[012],*|,*powerpc*-darwin[5-8]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + *) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' + if test yes = "$lt_cv_support_no_fixup_chains"; then + as_fn_append _lt_dar_allow_undefined ' $wl-no_fixup_chains' + fi + ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + _lt_dar_needs_single_mod=no + case $host_os in + rhapsody* | darwin1.*) + _lt_dar_needs_single_mod=yes ;; + darwin*) + # When targeting Mac OS X 10.4 (darwin 8) or later, + # -single_module is the default and -multi_module is unsupported. + # The toolchain on macOS 10.14 (darwin 18) and later cannot + # target any OS version that needs -single_module. + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*-darwin[567].*|10.[0-3],*-darwin[5-9].*|10.[0-3],*-darwin1[0-7].*) + _lt_dar_needs_single_mod=yes ;; + esac + ;; + esac + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_header= ac_cache= +for ac_item in $ac_header_c_list +do + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes +then : + printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h + +fi + + + + + +# Set options +enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AS+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AS="${ac_tool_prefix}as" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +printf "%s\n" "$AS" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AS+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AS="as" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +printf "%s\n" "$ac_ct_AS" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; +esac + +test -z "$AS" && AS=as + + + + + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + enable_dlopen=no + + + + # Check whether --enable-shared was given. +if test ${enable_shared+y} +then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else case e in #( + e) enable_shared=yes ;; +esac +fi + + + + + + + + + + # Check whether --enable-static was given. +if test ${enable_static+y} +then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else case e in #( + e) enable_static=yes ;; +esac +fi + + + + + + + + + + # Check whether --enable-pic was given. +if test ${enable_pic+y} +then : + enableval=$enable_pic; lt_p=${PACKAGE-default} + case $enableval in + yes|no) pic_mode=$enableval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else case e in #( + e) # Check whether --with-pic was given. +if test ${with_pic+y} +then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else case e in #( + e) pic_mode=default ;; +esac +fi + + ;; +esac +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test ${enable_fast_install+y} +then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else case e in #( + e) enable_fast_install=yes ;; +esac +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +printf %s "checking which variant of shared library versioning to provide... " >&6; } + # Check whether --enable-aix-soname was given. +if test ${enable_aix_soname+y} +then : + enableval=$enable_aix_soname; case $enableval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --enable-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$enable_aix_soname +else case e in #( + e) # Check whether --with-aix-soname was given. +if test ${with_aix_soname+y} +then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else case e in #( + e) if test ${lt_cv_with_aix_soname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_with_aix_soname=aix ;; +esac +fi + ;; +esac +fi + + enable_aix_soname=$lt_cv_with_aix_soname ;; +esac +fi + + with_aix_soname=$enable_aix_soname + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +printf "%s\n" "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +printf %s "checking for objdir... " >&6; } +if test ${lt_cv_objdir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +printf "%s\n" "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC and +# ICC, which need '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +printf %s "checking for ${ac_tool_prefix}file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +printf %s "checking for file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(void){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test ${lt_cv_prog_compiler_rtti_exceptions+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + *flang* | ftn | f18* | f95*) + # Flang compiler. + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *-mlibc) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + serenity*) + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +printf %s "checking for $compiler option to produce PIC... " >&6; } +if test ${lt_cv_prog_compiler_pic+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test ${lt_cv_prog_compiler_pic_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test ${lt_cv_prog_compiler_static_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +printf %s "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +printf "%s\n" "$hard_links" >&6; } + if test no = "$hard_links"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | windows* | pw32* | cegcc*) + # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) + with_gnu_ld=yes + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # 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. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | windows* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + file_list_spec='@' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=no + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + file_list_spec='@' + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + *-mlibc) + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + 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 + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + ;; +esac +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + ;; +esac +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | windows* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++ or Intel C++ Compiler. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl* | icl*) + # Native MSVC or ICC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -Fe$output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -Fe$tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC and ICC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly* | midnightbsd*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + 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 + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # 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 yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +printf %s "checking if $CC understands -b... " >&6; } +if test ${lt_cv_prog_compiler__b+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if test ${lt_cv_irix_exported_symbol+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + lt_cv_irix_exported_symbol=yes +else case e in #( + e) lt_cv_irix_exported_symbol=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + ;; + esac + ;; + + *-mlibc) + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + file_list_spec='@' + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + serenity*) + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +printf "%s\n" "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +printf %s "checking whether -lc should be explicitly linked in... " >&6; } +if test ${lt_cv_archive_cmds_need_lc+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +printf %s "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --enable-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | windows* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + # If user builds GCC with multilib enabled, + # it should just install on $(libdir) + # not on $(libdir)/../bin or 32 bits dlls would override 64 bit ones. + if test xyes = x"$multilib"; then + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + $install_prog $dir/$dlname $destdir/$dlname~ + chmod a+x $destdir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib $destdir/$dlname'\'' || exit \$?; + fi' + else + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + fi + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | windows* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl* | *,icl*) + # Native MSVC or ICC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw* | windows*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC and ICC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly* | midnightbsd*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + case $host_cpu in + powerpc64) + # On FreeBSD bi-arch platforms, a different variable is used for 32-bit + # binaries. See . + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int test_pointer_size[sizeof (void *) - 5]; + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + shlibpath_var=LD_LIBRARY_PATH +else case e in #( + e) shlibpath_var=LD_32_LIBRARY_PATH ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; + *) + shlibpath_var=LD_LIBRARY_PATH + ;; + esac + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib' + sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib' + hardcode_into_libs=no + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # -rpath works at least for libraries that are not overridden by + # libraries installed in system locations. + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if test ${lt_cv_shlibpath_overrides_runpath+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null +then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ;; +esac +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directories which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +*-mlibc) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='mlibc ld.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +serenity*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + dynamic_linker='SerenityOS LibELF' + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +emscripten*) + version_type=none + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + dynamic_linker="Emscripten linker" + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | windows* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + *flang* | ftn | f18* | f95*) + # Flang compiler. + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | $SED 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *-mlibc) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + serenity*) + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +printf %s "checking for $compiler option to produce PIC... " >&6; } +if test ${lt_cv_prog_compiler_pic+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test ${lt_cv_prog_compiler_pic_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test ${lt_cv_prog_compiler_static_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + +='-fPIC' + archive_cmds='$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib' + archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -sSIDE_MODULE=2 -shared $libobjs $deplibs $compiler_flags -o $lib -s EXPORTED_FUNCTIONS=@$output_objdir/$soname.expsym' + archive_cmds_need_lc=no + no_undefined_flag= + ;; + +*) + dynamic_linker=no + ;; +esac +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +printf "%s\n" "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +printf %s "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +printf "%s\n" "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | windows* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else case e in #( + e) ac_cv_lib_dl_dlopen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else case e in #( + e) + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; +esac +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes +then : + lt_cv_dlopen=shl_load +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +printf %s "checking for shl_load in -ldld... " >&6; } +if test ${ac_cv_lib_dld_shl_load+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (void); +int +main (void) +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dld_shl_load=yes +else case e in #( + e) ac_cv_lib_dld_shl_load=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes +then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else case e in #( + e) ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes +then : + lt_cv_dlopen=dlopen +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else case e in #( + e) ac_cv_lib_dl_dlopen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +printf %s "checking for dlopen in -lsvld... " >&6; } +if test ${ac_cv_lib_svld_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_svld_dlopen=yes +else case e in #( + e) ac_cv_lib_svld_dlopen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes +then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +printf %s "checking for dld_link in -ldld... " >&6; } +if test ${ac_cv_lib_dld_dld_link+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (void); +int +main (void) +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dld_dld_link=yes +else case e in #( + e) ac_cv_lib_dld_dld_link=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes +then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + + ;; +esac +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +printf %s "checking whether a program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord (void) __attribute__((visibility("default"))); +#endif + +int fnord (void) { return 42; } +int main (void) +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +printf "%s\n" "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +printf %s "checking whether a statically linked program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self_static+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord (void) __attribute__((visibility("default"))); +#endif + +int fnord (void) { return 42; } +int main (void) +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +printf %s "checking whether stripping libraries is possible... " >&6; } +if test -z "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +else + if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + case $host_os in + darwin*) + # FIXME - insert some real tests, host_os isn't really good enough + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + ;; + freebsd*) + if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + fi + ;; + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; + esac + fi +fi + + + + + + + + + + + + + # Report what library types will actually be built + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +printf %s "checking if libtool supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +printf "%s\n" "$can_build_shared" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +printf %s "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +printf "%s\n" "$enable_shared" >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +printf %s "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +printf "%s\n" "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + +ac_fn_c_check_header_compile "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default" +if test "x$ac_cv_header_windows_h" = xyes +then : + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. +set dummy ${ac_tool_prefix}windres; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$RC"; then + ac_cv_prog_RC="$RC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RC="${ac_tool_prefix}windres" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +RC=$ac_cv_prog_RC +if test -n "$RC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RC" >&5 +printf "%s\n" "$RC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RC"; then + ac_ct_RC=$RC + # Extract the first word of "windres", so it can be a program name with args. +set dummy windres; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_RC"; then + ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RC="windres" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_RC=$ac_cv_prog_ac_ct_RC +if test -n "$ac_ct_RC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5 +printf "%s\n" "$ac_ct_RC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_RC" = x; then + RC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RC=$ac_ct_RC + fi +else + RC="$ac_cv_prog_RC" +fi + + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +compiler_RC=$CC +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + +lt_cv_prog_compiler_c_o_RC=yes + +if test -n "$compiler"; then + : + + + +fi + +GCC=$lt_save_GCC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS + +fi + + + +# checks for native programs to generate building tool + +if test ${cross_compiling} = yes; then + # Extract the first word of "${build}-gcc", so it can be a program name with args. +set dummy ${build}-gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_BUILD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC_BUILD"; then + ac_cv_prog_CC_BUILD="$CC_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_BUILD="${build}-gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC_BUILD=$ac_cv_prog_CC_BUILD +if test -n "$CC_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_BUILD" >&5 +printf "%s\n" "$CC_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -z "${CC_BUILD}" && # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_BUILD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC_BUILD"; then + ac_cv_prog_CC_BUILD="$CC_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_BUILD="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC_BUILD=$ac_cv_prog_CC_BUILD +if test -n "$CC_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_BUILD" >&5 +printf "%s\n" "$CC_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -z "${CC_BUILD}" && # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_BUILD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC_BUILD"; then + ac_cv_prog_CC_BUILD="$CC_BUILD" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + 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 + fi + ac_cv_prog_CC_BUILD="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC_BUILD + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC_BUILD to just the basename; use the full file name. + shift + ac_cv_prog_CC_BUILD="$as_dir$ac_word${1+' '}$@" + fi +fi +fi ;; +esac +fi +CC_BUILD=$ac_cv_prog_CC_BUILD +if test -n "$CC_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_BUILD" >&5 +printf "%s\n" "$CC_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -z "${CC_BUILD}" && # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_BUILD+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$CC_BUILD"; then + ac_cv_prog_CC_BUILD="$CC_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_BUILD="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +CC_BUILD=$ac_cv_prog_CC_BUILD +if test -n "$CC_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_BUILD" >&5 +printf "%s\n" "$CC_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -z "${CC_BUILD}" && as_fn_error $? "cannot find native C compiler" "$LINENO" 5 + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of native executables" >&5 +printf %s "checking for suffix of native executables... " >&6; } + rm -f a.* b.* a_out.exe conftest.* + echo > conftest.c "int main(void) { return 0;}" + ${CC_BUILD} conftest.c || as_fn_error $? "native C compiler is not working" "$LINENO" 5 + rm -f conftest.c + if test -x a.out -o -x b.out -o -x conftest; then + EXEEXT_BUILD="" + elif test -x a_out.exe -o -x conftest.exe; then + EXEEXT_BUILD=".exe" + elif test -x conftest.*; then + EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\././'` + fi + rm -f a.* b.* a_out.exe conftest.* + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EXEEXT_BUILD" >&5 +printf "%s\n" "$EXEEXT_BUILD" >&6; } + CFLAGS_BUILD= + LDFLAGS_BUILD= +else + CC_BUILD=${CC} + CFLAGS_BUILD=${CFLAGS} + LDFLAGS_BUILD=${LDFLAGS} + EXEEXT_BUILD=${EXEEXT} +fi + + + + + + + +# Since these files will be eventually called from another directory (namely +# from the top level) we make the path of the scripts absolute. +# +# This small code snippet has been taken from automake's `ylwrap' script. + + + # Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_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. + : + elif test $ac_prog = install && + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + ;; +esac +fi + if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +case "$INSTALL" in +[\\/]* | ?:[\\/]*) + ;; +*[\\/]*) + INSTALL="`pwd`/$INSTALL" + ;; +esac + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + 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 ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + +case "$MKDIR_P" in +[\\/]* | ?:[\\/]*) + ;; +*[\\/]*) + MKDIR_P="`pwd`/$MKDIR_P" + ;; +esac + + +# checks for header files + +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h + +fi + + + +# checks for typedefs, structures, and compiler characteristics + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* IBM XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* 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; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* IBM 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]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_c_const=yes +else case e in #( + e) ac_cv_c_const=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf "%s\n" "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +printf "%s\n" "#define const /**/" >>confdefs.h + +fi + + +# Check whether --enable-freetype-config was given. +if test ${enable_freetype_config+y} +then : + enableval=$enable_freetype_config; case "${enableval}" in + yes) enable_freetype_config="TRUE" ;; + no) enable_freetype_config="FALSE" ;; + *) as_fn_error $? "unknown value '${enableval}' passed with --enable-freetype-config" "$LINENO" 5 ;; + esac +else case e in #( + e) enable_freetype_config="FALSE" ;; +esac +fi + + +INSTALL_FT2_CONFIG=$enable_freetype_config + + +# checks for library functions + +# Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi +if test "$enable_largefile,$enable_year2038" != no,no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable large file support" >&5 +printf %s "checking for $CC option to enable large file support... " >&6; } +if test ${ac_cv_sys_largefile_opts+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CC="$CC" + ac_opt_found=no + for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1" "-n32"; do + if test x"$ac_opt" != x"none needed" +then : + CC="$ac_save_CC $ac_opt" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#ifndef FTYPE +# define FTYPE off_t +#endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_opt" = x"none needed" +then : + # GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t. + CC="$CC -DFTYPE=ino_t" + if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) CC="$CC -D_FILE_OFFSET_BITS=64" + if ac_fn_c_try_compile "$LINENO" +then : + ac_opt='-D_FILE_OFFSET_BITS=64' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam +fi + ac_cv_sys_largefile_opts=$ac_opt + ac_opt_found=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + test $ac_opt_found = no || break + done + CC="$ac_save_CC" + + test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5 +printf "%s\n" "$ac_cv_sys_largefile_opts" >&6; } + +ac_have_largefile=yes +case $ac_cv_sys_largefile_opts in #( + "none needed") : + ;; #( + "supported through gnulib") : + ;; #( + "support not detected") : + ac_have_largefile=no ;; #( + "-D_FILE_OFFSET_BITS=64") : + +printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h + ;; #( + "-D_LARGE_FILES=1") : + +printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h + ;; #( + "-n32") : + CC="$CC -n32" ;; #( + *) : + as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;; +esac + +if test "$enable_year2038" != no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option for timestamps after 2038" >&5 +printf %s "checking for $CC option for timestamps after 2038... " >&6; } +if test ${ac_cv_sys_year2038_opts+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CPPFLAGS="$CPPFLAGS" + ac_opt_found=no + for ac_opt in "none needed" "-D_TIME_BITS=64" "-D__MINGW_USE_VC2005_COMPAT" "-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"; do + if test x"$ac_opt" != x"none needed" +then : + CPPFLAGS="$ac_save_CPPFLAGS $ac_opt" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_sys_year2038_opts="$ac_opt" + ac_opt_found=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + test $ac_opt_found = no || break + done + CPPFLAGS="$ac_save_CPPFLAGS" + test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected" ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5 +printf "%s\n" "$ac_cv_sys_year2038_opts" >&6; } + +ac_have_year2038=yes +case $ac_cv_sys_year2038_opts in #( + "none needed") : + ;; #( + "support not detected") : + ac_have_year2038=no ;; #( + "-D_TIME_BITS=64") : + +printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h + ;; #( + "-D__MINGW_USE_VC2005_COMPAT") : + +printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h + ;; #( + "-U_USE_32_BIT_TIME_T"*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "the 'time_t' type is currently forced to be 32-bit. It +will stop working after mid-January 2038. Remove +_USE_32BIT_TIME_T from the compiler flags. +See 'config.log' for more details" "$LINENO" 5; } ;; #( + *) : + as_fn_error $? "internal error: bad value for \$ac_cv_sys_year2038_opts" "$LINENO" 5 ;; +esac + +fi + +fi + +# Here we check whether we can use our mmap file component. +# +# Note that `ftsystem.c` for Windows has its own mmap-like implementation +# not covered by `AC_FUNC_MMAP` and/or `FT_UNMAP_PARAM`. + +# Check whether --enable-mmap was given. +if test ${enable_mmap+y} +then : + enableval=$enable_mmap; enable_mmap="no" +else case e in #( + e) enable_mmap="yes" ;; +esac +fi + +if test "x${enable_mmap}" != "xno"; then + case "$host" in + *-*-mingw*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +printf %s "checking for working mmap... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using MapViewOfFile in Windows" >&5 +printf "%s\n" "using MapViewOfFile in Windows" >&6; } + FTSYS_SRC='$(TOP_DIR)/builds/windows/ftsystem.c' + ;; + *) + +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi +done + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +printf %s "checking for working mmap... " >&6; } +if test ${ac_cv_func_mmap_fixed_mapped+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on platforms where we know the result. + linux*) ac_cv_func_mmap_fixed_mapped=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_mmap_fixed_mapped=no ;; + esac +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. */ + +#include +#include + +#ifndef getpagesize +/* Prefer sysconf to the legacy getpagesize function, as getpagesize has + been removed from POSIX and is limited to page sizes that fit in 'int'. */ +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf (_SC_PAGESIZE) +# elif defined _SC_PAGE_SIZE +# define getpagesize() sysconf (_SC_PAGE_SIZE) +# elif HAVE_GETPAGESIZE +int getpagesize (); +# else +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif +#endif + +int +main (void) +{ + char *data, *data2, *data3; + const char *cdata2; + long i, pagesize; + int fd, fd2; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 2; + if (write (fd, data, pagesize) != pagesize) + return 3; + close (fd); + + /* Next, check that the tail of a page is zero-filled. File must have + non-zero length, otherwise we risk SIGBUS for entire page. */ + fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); + if (fd2 < 0) + return 4; + cdata2 = ""; + if (write (fd2, cdata2, 1) != 1) + return 5; + data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); + if (data2 == MAP_FAILED) + return 6; + for (i = 0; i < pagesize; ++i) + if (*(data2 + i)) + return 7; + close (fd2); + /* 'return 8;' not currently used. */ + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + return 9; + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 10; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 11; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + return 12; + if (read (fd, data3, pagesize) != pagesize) + return 13; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 14; + close (fd); + free (data); + free (data3); + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : + ac_cv_func_mmap_fixed_mapped=yes +else case e in #( + e) ac_cv_func_mmap_fixed_mapped=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +printf "%s\n" "$ac_cv_func_mmap_fixed_mapped" >&6; } +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h + +fi +rm -f conftest.mmap conftest.txt + + if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then + FTSYS_SRC='$(PLATFORM_DIR)/ftsystem.c' + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in #( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See 'config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + +ac_fn_check_decl "$LINENO" "munmap" "ac_cv_have_decl_munmap" " + +#ifdef HAVE_UNISTD_H +#include +#endif +#include + + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_munmap" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_MUNMAP $ac_have_decl" >>confdefs.h + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for munmap's first parameter type" >&5 +printf %s "checking for munmap's first parameter type... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#include +#include +int munmap(void *, size_t); + + + +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: void *" >&5 +printf "%s\n" "void *" >&6; } + +printf "%s\n" "#define MUNMAP_USES_VOIDP /**/" >>confdefs.h + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: char *" >&5 +printf "%s\n" "char *" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + + fi + ;; + esac +fi + +if test -z "$FTSYS_SRC"; then + FTSYS_SRC='$(BASE_DIR)/ftsystem.c' +fi + + + +# get compiler flags right +# +# We try to make the compiler work for C99-strict source. Even if the +# C compiler is gcc and C99 flags are available, some system headers +# might be broken in C99 mode. We have to check whether compilation +# finishes successfully. +# +if test "x$GCC" = xyes; then + XX_CFLAGS="-Wall" + case "$host" in + *-*-mingw*) + XX_ANSIFLAGS="-pedantic" + ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; + *) + XX_ANSIFLAGS="" + + for a in "-pedantic" "-std=c99" + do + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking $CC compiler flag ${a} to assure ANSI C99 works correctly" >&5 +printf %s "checking $CC compiler flag ${a} to assure ANSI C99 works correctly... " >&6; } + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} ${XX_ANSIFLAGS} ${a}" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#include + + +int +main (void) +{ + + + { + puts( "" ); + return 0; + } + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok, adding to XX_ANSIFLAGS" >&5 +printf "%s\n" "ok, adding to XX_ANSIFLAGS" >&6; } + XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}" + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS="${orig_CFLAGS}" + done + ;; + esac +else + case "$host" in + *-dec-osf*) + CFLAGS= + XX_CFLAGS="-std1 -g3" + XX_ANSIFLAGS= + ;; + *) + XX_CFLAGS= + XX_ANSIFLAGS= + ;; + esac +fi + + + + +# It is recommended that shared libraries hide symbols except those with +# explicit __attribute__((visibility("default"))). +# +found_visibility_flag=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5 +printf %s "checking for -fvisibility=hidden compiler flag... " >&6; } +orig_CFLAGS="${CFLAGS}" +CFLAGS="${CFLAGS} -fvisibility=hidden -Werror" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +__attribute__(( visibility( "default" ) )) int foo( void ); +__attribute__(( visibility( "hidden" ) )) int bar( void ); + +int foo( void ) { return 0; } +int bar( void ) { return 1; } + + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + found_visibility_flag=yes + CFLAGS="${orig_CFLAGS} -fvisibility=hidden" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +else case e in #( + e) CFLAGS="${orig_CFLAGS}" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +if test "${found_visibility_flag}" = "no"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -xldscope=hidden compiler flag" >&5 +printf %s "checking for -xldscope=hidden compiler flag... " >&6; } + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} -xldscope=hidden" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + found_visibility_flag=yes + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +else case e in #( + e) CFLAGS="${orig_CFLAGS}" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + +# All library tests below try `pkg-config' first. If that fails, a function +# from the library is tested in the traditional autoconf way (zlib, bzip2), +# or a config script is called (libpng). +# +# The `xxx_reqpriv' variables are for the `Requires.private' field in +# `freetype2.pc'. The `xxx_libspriv' variables are for the `Libs.private' +# field in `freetype2.pc' if pkg-config doesn't find a proper .pc file. +# +# The `xxx_libsstaticconf' variables are for the `freetype-config' script. +# +# Note that a call to PKG_CHECK_MODULES(XXX, ...) sets and creates the +# output variables `XXX_CFLAGS' and `XXX_LIBS'. In case one or both are set +# for a library by the user, no entry for this library is added to +# `Requires.private'. Instead, it gets added to `Libs.private' + + +# check for system zlib + + +# Check whether --with-zlib was given. +if test ${with_zlib+y} +then : + withval=$with_zlib; +else case e in #( + e) with_zlib=auto ;; +esac +fi + + +have_zlib=no +if test x"$with_zlib" = xyes -o x"$with_zlib" = xauto; then + zlib_pkg="zlib" + have_zlib_pkg=no + + if test x"$ZLIB_CFLAGS" = x -a x"$ZLIB_LIBS" = x; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$zlib_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$zlib_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_zlib_pkg=yes +fi + fi + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ZLIB" >&5 +printf %s "checking for ZLIB... " >&6; } + +if test -n "$ZLIB_CFLAGS"; then + pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$zlib_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$zlib_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "$zlib_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$ZLIB_LIBS"; then + pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$zlib_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$zlib_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "$zlib_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "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 + ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$zlib_pkg" 2>&1` + else + ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$zlib_pkg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$ZLIB_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS + ZLIB_LIBS=$pkg_cv_ZLIB_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_zlib="yes (pkg-config)" +fi + + if test $have_zlib_pkg = yes; then + # we have zlib.pc + zlib_reqpriv="$zlib_pkg" + zlib_libspriv= + zlib_libsstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` + else + zlib_reqpriv= + + if test "$have_zlib" != no; then + # ZLIB_CFLAGS and ZLIB_LIBS are set by the user + zlib_libspriv="$ZLIB_LIBS" + zlib_libsstaticconf="$ZLIB_LIBS" + have_zlib="yes (ZLIB_CFLAGS and ZLIB_LIBS)" + else + # fall back to standard autoconf test + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gzsetparams in -lz" >&5 +printf %s "checking for gzsetparams in -lz... " >&6; } +if test ${ac_cv_lib_z_gzsetparams+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gzsetparams (void); +int +main (void) +{ +return gzsetparams (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_z_gzsetparams=yes +else case e in #( + e) ac_cv_lib_z_gzsetparams=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzsetparams" >&5 +printf "%s\n" "$ac_cv_lib_z_gzsetparams" >&6; } +if test "x$ac_cv_lib_z_gzsetparams" = xyes +then : + ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes +then : + have_zlib="yes (autoconf test)" + zlib_libspriv="-lz" + zlib_libsstaticconf="$zlib_libspriv" + ZLIB_LIBS="$zlib_libspriv" +fi + +fi + + fi + fi +fi + +if test x"$with_zlib" = xyes -a "$have_zlib" = no; then + as_fn_error $? "external zlib support requested but library not found" "$LINENO" 5 +fi + +SYSTEM_ZLIB= +if test "$have_zlib" != no; then + SYSTEM_ZLIB=yes +fi + + + +# check for system libbz2 + + +# Check whether --with-bzip2 was given. +if test ${with_bzip2+y} +then : + withval=$with_bzip2; +else case e in #( + e) with_bzip2=auto ;; +esac +fi + + +have_bzip2=no +if test x"$with_bzip2" = xyes -o x"$with_bzip2" = xauto; then + bzip2_pkg="bzip2" + have_bzip2_pkg=no + + if test x"$BZIP2_CFLAGS" = x -a x"$BZIP2_LIBS" = x; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$bzip2_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$bzip2_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_bzip2_pkg=yes +fi + fi + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZIP2" >&5 +printf %s "checking for BZIP2... " >&6; } + +if test -n "$BZIP2_CFLAGS"; then + pkg_cv_BZIP2_CFLAGS="$BZIP2_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$bzip2_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$bzip2_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BZIP2_CFLAGS=`$PKG_CONFIG --cflags "$bzip2_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$BZIP2_LIBS"; then + pkg_cv_BZIP2_LIBS="$BZIP2_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$bzip2_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$bzip2_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BZIP2_LIBS=`$PKG_CONFIG --libs "$bzip2_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "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 + BZIP2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$bzip2_pkg" 2>&1` + else + BZIP2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$bzip2_pkg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$BZIP2_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + BZIP2_CFLAGS=$pkg_cv_BZIP2_CFLAGS + BZIP2_LIBS=$pkg_cv_BZIP2_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_bzip2="yes (pkg-config)" +fi + + if test $have_bzip2_pkg = yes; then + # we have bzip2.pc + bzip2_reqpriv="$bzip2_pkg" + bzip2_libspriv= + bzip2_libsstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` + else + bzip2_reqpriv= + + if test "$have_bzip2" != no; then + # BZIP2_CFLAGS and BZIP2_LIBS are set by the user + bzip2_libspriv="$BZIP2_LIBS" + bzip2_libsstaticconf="$BZIP2_LIBS" + have_bzip2="yes (BZIP2_CFLAGS and BZIP2_LIBS)" + else + # fall back to standard autoconf test + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BZ2_bzDecompress in -lbz2" >&5 +printf %s "checking for BZ2_bzDecompress in -lbz2... " >&6; } +if test ${ac_cv_lib_bz2_BZ2_bzDecompress+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lbz2 $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char BZ2_bzDecompress (void); +int +main (void) +{ +return BZ2_bzDecompress (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_bz2_BZ2_bzDecompress=yes +else case e in #( + e) ac_cv_lib_bz2_BZ2_bzDecompress=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzDecompress" >&5 +printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzDecompress" >&6; } +if test "x$ac_cv_lib_bz2_BZ2_bzDecompress" = xyes +then : + ac_fn_c_check_header_compile "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default" +if test "x$ac_cv_header_bzlib_h" = xyes +then : + have_bzip2="yes (autoconf test)" + bzip2_libspriv="-lbz2" + bzip2_libsstaticconf="$bzip2_libspriv" + BZIP2_LIBS="$bzip2_libspriv" +fi + +fi + + fi + fi +fi + +if test x"$with_bzip2" = xyes -a "$have_bzip2" = no; then + as_fn_error $? "bzip2 support requested but library not found" "$LINENO" 5 +fi + + +# check for system libpng + + +# Check whether --with-png was given. +if test ${with_png+y} +then : + withval=$with_png; +else case e in #( + e) with_png=auto ;; +esac +fi + + +have_libpng=no +if test x"$with_png" = xyes -o x"$with_png" = xauto; then + libpng_pkg="libpng" + have_libpng_pkg=no + + if test x"$LIBPNG_CFLAGS" = x -a x"$LIBPNG_LIBS" = x; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$libpng_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$libpng_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_libpng_pkg=yes +fi + fi + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBPNG" >&5 +printf %s "checking for LIBPNG... " >&6; } + +if test -n "$LIBPNG_CFLAGS"; then + pkg_cv_LIBPNG_CFLAGS="$LIBPNG_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$libpng_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$libpng_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBPNG_CFLAGS=`$PKG_CONFIG --cflags "$libpng_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBPNG_LIBS"; then + pkg_cv_LIBPNG_LIBS="$LIBPNG_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$libpng_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$libpng_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBPNG_LIBS=`$PKG_CONFIG --libs "$libpng_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "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 + LIBPNG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$libpng_pkg" 2>&1` + else + LIBPNG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$libpng_pkg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBPNG_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + LIBPNG_CFLAGS=$pkg_cv_LIBPNG_CFLAGS + LIBPNG_LIBS=$pkg_cv_LIBPNG_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_libpng="yes (pkg-config)" +fi + + if test $have_libpng_pkg = yes; then + # we have libpng.pc + libpng_reqpriv="$libpng_pkg" + libpng_libspriv= + libpng_libsstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` + else + libpng_reqpriv= + + if test "$have_libpng" != no; then + # LIBPNG_CFLAGS and LIBPNG_LIBS are set by the user + libpng_libspriv="$LIBPNG_LIBS" + libpng_libsstaticconf="$LIBPNG_LIBS" + have_libpng="yes (LIBPNG_CFLAGS and LIBPNG_LIBS)" + else + # fall back to config script + # Extract the first word of "libpng-config", so it can be a program name with args. +set dummy libpng-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_have_libpng+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$have_libpng"; then + ac_cv_prog_have_libpng="$have_libpng" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_have_libpng="yes (libpng-config)" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_have_libpng" && ac_cv_prog_have_libpng="no" +fi ;; +esac +fi +have_libpng=$ac_cv_prog_have_libpng +if test -n "$have_libpng"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_libpng" >&5 +printf "%s\n" "$have_libpng" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "$have_libpng" != no; then + LIBPNG_CFLAGS=`libpng-config --cflags` + LIBPNG_LIBS=`libpng-config --ldflags` + libpng_libspriv=`libpng-config --static --ldflags` + libpng_libsstaticconf="$libpng_libspriv" + fi + fi + fi +fi + +if test x"$with_png" = xyes -a "$have_libpng" = no; then + as_fn_error $? "libpng support requested but library not found" "$LINENO" 5 +fi + + +# check for system libharfbuzz + + +# Check whether --with-harfbuzz was given. +if test ${with_harfbuzz+y} +then : + withval=$with_harfbuzz; +else case e in #( + e) with_harfbuzz=auto ;; +esac +fi + + +have_harfbuzz=no +if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then + harfbuzz_pkg="harfbuzz >= 2.0.0" + have_harfbuzz_pkg=no + + if test x"$HARFBUZZ_CFLAGS" = x -a x"$HARFBUZZ_LIBS" = x; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$harfbuzz_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$harfbuzz_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_harfbuzz_pkg=yes +fi + fi + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HARFBUZZ" >&5 +printf %s "checking for HARFBUZZ... " >&6; } + +if test -n "$HARFBUZZ_CFLAGS"; then + pkg_cv_HARFBUZZ_CFLAGS="$HARFBUZZ_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$harfbuzz_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$harfbuzz_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_HARFBUZZ_CFLAGS=`$PKG_CONFIG --cflags "$harfbuzz_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$HARFBUZZ_LIBS"; then + pkg_cv_HARFBUZZ_LIBS="$HARFBUZZ_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$harfbuzz_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$harfbuzz_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_HARFBUZZ_LIBS=`$PKG_CONFIG --libs "$harfbuzz_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "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 + HARFBUZZ_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$harfbuzz_pkg" 2>&1` + else + HARFBUZZ_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$harfbuzz_pkg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$HARFBUZZ_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + HARFBUZZ_CFLAGS=$pkg_cv_HARFBUZZ_CFLAGS + HARFBUZZ_LIBS=$pkg_cv_HARFBUZZ_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_harfbuzz="yes (pkg-config)" +fi + + if test $have_harfbuzz_pkg = yes; then + # we have harfbuzz.pc + harfbuzz_reqpriv="$harfbuzz_pkg" + harfbuzz_libspriv= + harfbuzz_libsstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` + else + harfbuzz_reqpriv= + + if test "$have_harfbuzz" != no; then + # HARFBUZZ_CFLAGS and HARFBUZZ_LIBS are set by the user + harfbuzz_libspriv="$HARFBUZZ_LIBS" + harfbuzz_libsstaticconf="$HARFBUZZ_LIBS" + have_harfbuzz="yes (HARFBUZZ_CFLAGS and HARFBUZZ_LIBS)" + else + # since HarfBuzz is quite a new library we don't fall back to a + # different test; additionally, it has too many dependencies + : + fi + fi +fi + +have_harfbuzz_dynamic=no +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" = xdynamic -o x"$with_harfbuzz" = xauto; then + case "$host" in + *-*-mingw*) + # Windows uses its own LoadLibrary(), set variables to dynamic. + have_harfbuzz_dynamic=yes + have_harfbuzz="yes (dynamic)" + ;; + *) + # Check for libdl + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lc" >&5 +printf %s "checking for dlopen in -lc... " >&6; } +if test ${ac_cv_lib_c_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_c_dlopen=yes +else case e in #( + e) ac_cv_lib_c_dlopen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_c_dlopen" >&6; } +if test "x$ac_cv_lib_c_dlopen" = xyes +then : + have_harfbuzz_dynamic=yes +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dl_dlopen=yes +else case e in #( + e) ac_cv_lib_dl_dlopen=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : + have_harfbuzz_dynamic=yes + need_libdl=yes +fi + ;; +esac +fi + + if test x"$have_harfbuzz_dynamic" = xyes; then + have_harfbuzz="yes (dynamic)" + HARFBUZZ_CFLAGS= + if test x"$need_libdl" = xyes; then + HARFBUZZ_LIBS="-ldl" + fi + fi + ;; + esac + fi +fi + +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" != xno -a "$with_harfbuzz" != xauto; then + as_fn_error $? "harfbuzz support requested but library not found" "$LINENO" 5 + fi +fi + +# check for system libbrotlidec + + +# Check whether --with-brotli was given. +if test ${with_brotli+y} +then : + withval=$with_brotli; +else case e in #( + e) with_brotli=auto ;; +esac +fi + + +have_brotli=no +if test x"$with_brotli" = xyes -o x"$with_brotli" = xauto; then + brotli_pkg="libbrotlidec" + have_brotli_pkg=no + + if test x"$BROTLI_CFLAGS" = x -a x"$BROTLI_LIBS" = x; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$brotli_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$brotli_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_brotli_pkg=yes +fi + fi + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BROTLI" >&5 +printf %s "checking for BROTLI... " >&6; } + +if test -n "$BROTLI_CFLAGS"; then + pkg_cv_BROTLI_CFLAGS="$BROTLI_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$brotli_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$brotli_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BROTLI_CFLAGS=`$PKG_CONFIG --cflags "$brotli_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$BROTLI_LIBS"; then + pkg_cv_BROTLI_LIBS="$BROTLI_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$brotli_pkg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$brotli_pkg") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_BROTLI_LIBS=`$PKG_CONFIG --libs "$brotli_pkg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "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 + BROTLI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$brotli_pkg" 2>&1` + else + BROTLI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$brotli_pkg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$BROTLI_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + BROTLI_CFLAGS=$pkg_cv_BROTLI_CFLAGS + BROTLI_LIBS=$pkg_cv_BROTLI_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_brotli="yes (pkg-config)" +fi + + if test $have_brotli_pkg = yes; then + # we have libbrotlidec.pc + brotli_reqpriv="$brotli_pkg" + brotli_libspriv= + brotli_libsstaticconf=`$PKG_CONFIG --static --libs "$brotli_pkg"` + else + brotli_reqpriv= + + if test "$have_brotli" != no; then + # BROTLI_CFLAGS and BROTLI_LIBS are set by the user + brotli_libspriv="$BROTLI_LIBS" + brotli_libsstaticconf="$BROTLI_LIBS" + have_brotli="yes (BROTLI_CFLAGS and BROTLI_LIBS)" + else + # since Brotli is quite a new library we don't fall back to a + # different test + : + fi + fi +fi + +if test x"$with_brotli" = xyes -a "$have_brotli" = no; then + as_fn_error $? "brotli support requested but library not found" "$LINENO" 5 +fi + + +# Checks for the demo programs. +# +# FreeType doesn't need this. However, since the demo program repository +# doesn't come with a `configure` script of its own, we integrate the tests +# here for simplicity. + +# We need `clock_gettime` from 'librt' for the `ftbench` demo program. +# +# The code is modeled after gnulib's file `clock_time.m4`, ignoring +# very old Solaris systems. +LIB_CLOCK_GETTIME= +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 +printf %s "checking for library containing clock_gettime... " >&6; } +if test ${ac_cv_search_clock_gettime+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (void); +int +main (void) +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt +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_clock_gettime=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_clock_gettime+y} +then : + break +fi +done +if test ${ac_cv_search_clock_gettime+y} +then : + +else case e in #( + e) ac_cv_search_clock_gettime=no ;; +esac +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 +printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } +ac_res=$ac_cv_search_clock_gettime +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + test "$ac_cv_search_clock_gettime" = "none required" \ + || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime +fi + + +FT_DEMO_CFLAGS="" +FT_DEMO_LDFLAGS="$LIB_CLOCK_GETTIME" + +# 'librsvg' is needed to demonstrate SVG support. + +# Check whether --with-librsvg was given. +if test ${with_librsvg+y} +then : + withval=$with_librsvg; +else case e in #( + e) with_librsvg=auto ;; +esac +fi + + +have_librsvg=no +if test x"$with_librsvg" = xyes -o x"$with_librsvg" = xauto; then + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBRSVG" >&5 +printf %s "checking for LIBRSVG... " >&6; } + +if test -n "$LIBRSVG_CFLAGS"; then + pkg_cv_LIBRSVG_CFLAGS="$LIBRSVG_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.46.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.46.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBRSVG_CFLAGS=`$PKG_CONFIG --cflags "librsvg-2.0 >= 2.46.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBRSVG_LIBS"; then + pkg_cv_LIBRSVG_LIBS="$LIBRSVG_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.46.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.46.0") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBRSVG_LIBS=`$PKG_CONFIG --libs "librsvg-2.0 >= 2.46.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "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 + LIBRSVG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "librsvg-2.0 >= 2.46.0" 2>&1` + else + LIBRSVG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "librsvg-2.0 >= 2.46.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBRSVG_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + : +else + LIBRSVG_CFLAGS=$pkg_cv_LIBRSVG_CFLAGS + LIBRSVG_LIBS=$pkg_cv_LIBRSVG_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_librsvg="yes (pkg-config)" +fi + + if test "$have_librsvg" != no; then + FT_DEMO_CFLAGS="$FT_DEMO_CFLAGS $LIBRSVG_CFLAGS -DHAVE_LIBRSVG" + FT_DEMO_LDFLAGS="$FT_DEMO_LDFLAGS $LIBRSVG_LIBS" + fi +fi + +if test x"$with_librsvg" = xyes -a "$have_librsvg" = no; then + as_fn_error $? "librsvg support requested but library not found" "$LINENO" 5 +fi + + + + + +# Some options handling SDKs/archs in CFLAGS should be copied +# to LDFLAGS. Apple TechNote 2137 recommends to include these +# options in CFLAGS but not in LDFLAGS. + +save_config_args=$* +set dummy ${CFLAGS} +i=1 +while test $i -le $# +do + c=$1 + + case "${c}" in + -isysroot|-arch) # options taking 1 argument + a=$2 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CFLAGS and LDFLAGS share ${c} ${a}" >&5 +printf %s "checking whether CFLAGS and LDFLAGS share ${c} ${a}... " >&6; } + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, copy to LDFLAGS" >&5 +printf "%s\n" "no, copy to LDFLAGS" >&6; } + LDFLAGS="${LDFLAGS} ${c} ${a}" + fi + shift 1 + ;; + -m32|-m64|-march=*|-mcpu=*) # options taking no argument + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CFLAGS and LDFLAGS share ${c}" >&5 +printf %s "checking whether CFLAGS and LDFLAGS share ${c}... " >&6; } + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, copy to LDFLAGS" >&5 +printf "%s\n" "no, copy to LDFLAGS" >&6; } + LDFLAGS="${LDFLAGS} ${c}" + fi + ;; + # *) + # AC_MSG_RESULT([${c} is not copied to LDFLAGS]) + # ;; + esac + + shift 1 +done +set ${save_config_args} + + +# Whether to use Mac OS resource-based fonts. + +ftmac_c="" # src/base/ftmac.c should not be included in makefiles by default + + +# Check whether --with-old-mac-fonts was given. +if test ${with_old_mac_fonts+y} +then : + withval=$with_old_mac_fonts; +fi + +if test x$with_old_mac_fonts = xyes; then + orig_LDFLAGS="${LDFLAGS}" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CoreServices & ApplicationServices of Mac OS X" >&5 +printf %s "checking CoreServices & ApplicationServices of Mac OS X... " >&6; } + ft2_extra_libs="-Wl,-framework,CoreServices -Wl,-framework,ApplicationServices" + LDFLAGS="$LDFLAGS $ft2_extra_libs" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + short res = 0; + + + UseResFile( res ); + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + ftmac_c='ftmac.c' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OS_INLINE macro is ANSI compatible" >&5 +printf %s "checking whether OS_INLINE macro is ANSI compatible... " >&6; } + orig_CFLAGS="$CFLAGS -DFT_MACINTOSH" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + /* OSHostByteOrder() is typed as OS_INLINE */ + int32_t os_byte_order = OSHostByteOrder(); + + + if ( OSBigEndian != os_byte_order ) + return 1; + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_ANSI_OS_INLINE=1" + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, ANSI incompatible" >&5 +printf "%s\n" "no, ANSI incompatible" >&6; } + CFLAGS="$orig_CFLAGS" + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking type ResourceIndex" >&5 +printf %s "checking type ResourceIndex... " >&6; } + orig_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +# include +#endif + + +int +main (void) +{ + + + ResourceIndex i = 0; + return i; + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=1" + +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=0" + ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + ft2_extra_libs="" + LDFLAGS="${orig_LDFLAGS}" + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else + case x$host_os in + xdarwin*) + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" + ;; + *) + ;; + esac +fi + + +# Whether to use FileManager, which is deprecated since Mac OS X 10.4. + + +# Check whether --with-fsspec was given. +if test ${with_fsspec+y} +then : + withval=$with_fsspec; +fi + +if test x$with_fsspec = xno; then + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsspec != x; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking FSSpec-based FileManager" >&5 +printf %s "checking FSSpec-based FileManager... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + FCBPBPtr paramBlock; + short vRefNum; + long dirID; + ConstStr255Param fileName; + FSSpec* spec; + + + /* FSSpec functions: deprecated since Mac OS X 10.4 */ + PBGetFCBInfoSync( paramBlock ); + FSMakeFSSpec( vRefNum, dirID, fileName, spec ); + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$CFLAGS -DHAVE_FSSPEC=1" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + +# Whether to use FileManager in Carbon since MacOS 9.x. + + +# Check whether --with-fsref was given. +if test ${with_fsref+y} +then : + withval=$with_fsref; +fi + +if test x$with_fsref = xno; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: +*** WARNING + FreeType2 built without FSRef API cannot load + data-fork fonts on MacOS, except of XXX.dfont. + " >&5 +printf "%s\n" "$as_me: WARNING: +*** WARNING + FreeType2 built without FSRef API cannot load + data-fork fonts on MacOS, except of XXX.dfont. + " >&2;} + CFLAGS="$CFLAGS -DHAVE_FSREF=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsref != x; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking FSRef-based FileManager" >&5 +printf %s "checking FSRef-based FileManager... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + short vRefNum; + long dirID; + ConstStr255Param fileName; + + Boolean* isDirectory; + UInt8* path; + SInt16 desiredRefNum; + SInt16* iterator; + SInt16* actualRefNum; + HFSUniStr255* outForkName; + FSVolumeRefNum volume; + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo* catalogInfo; + FSForkInfo* forkInfo; + FSRef* ref; + +#if HAVE_FSSPEC + FSSpec* spec; +#endif + + /* FSRef functions: no need to check? */ + FSGetForkCBInfo( desiredRefNum, volume, iterator, + actualRefNum, forkInfo, ref, + outForkName ); + FSPathMakeRef( path, ref, isDirectory ); + +#if HAVE_FSSPEC + FSpMakeFSRef ( spec, ref ); + FSGetCatalogInfo( ref, whichInfo, catalogInfo, + outForkName, spec, ref ); +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$CFLAGS -DHAVE_FSREF=1" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + CFLAGS="$CFLAGS -DHAVE_FSREF=0" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + +# Whether to use QuickDraw API in ToolBox, which is deprecated since +# Mac OS X 10.4. + + +# Check whether --with-quickdraw-toolbox was given. +if test ${with_quickdraw_toolbox+y} +then : + withval=$with_quickdraw_toolbox; +fi + +if test x$with_quickdraw_toolbox = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_toolbox != x; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking QuickDraw FontManager functions in ToolBox" >&5 +printf %s "checking QuickDraw FontManager functions in ToolBox... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + Str255 familyName; + SInt16 familyID = 0; + FMInput* fmIn = NULL; + FMOutput* fmOut = NULL; + + + GetFontName( familyID, familyName ); + GetFNum( familyName, &familyID ); + fmOut = FMSwapFont( fmIn ); + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=1" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + +# Whether to use QuickDraw API in Carbon, which is deprecated since +# Mac OS X 10.4. + + +# Check whether --with-quickdraw-carbon was given. +if test ${with_quickdraw_carbon+y} +then : + withval=$with_quickdraw_carbon; +fi + +if test x$with_quickdraw_carbon = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_carbon != x; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking QuickDraw FontManager functions in Carbon" >&5 +printf %s "checking QuickDraw FontManager functions in Carbon... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + FMFontFamilyIterator famIter; + FMFontFamily family; + Str255 famNameStr; + FMFontFamilyInstanceIterator instIter; + FMFontStyle style; + FMFontSize size; + FMFont font; + FSSpec* pathSpec; + + + FMCreateFontFamilyIterator( NULL, NULL, kFMUseGlobalScopeOption, + &famIter ); + FMGetNextFontFamily( &famIter, &family ); + FMGetFontFamilyName( family, famNameStr ); + FMCreateFontFamilyInstanceIterator( family, &instIter ); + FMGetNextFontFamilyInstance( &instIter, &font, &style, &size ); + FMDisposeFontFamilyInstanceIterator( &instIter ); + FMDisposeFontFamilyIterator( &famIter ); + FMGetFontContainer( font, pathSpec ); + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=1" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + + +# Whether to use AppleTypeService since Mac OS X. + + +# Check whether --with-ats was given. +if test ${with_ats+y} +then : + withval=$with_ats; +fi + +if test x$with_ats = xno; then + CFLAGS="$CFLAGS -DHAVE_ATS=0" +elif test x$with_old_mac_fonts = xyes -a x$with_ats != x; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking AppleTypeService functions" >&5 +printf %s "checking AppleTypeService functions... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + +int +main (void) +{ + + + FSSpec* pathSpec; + + + ATSFontFindFromName( NULL, kATSOptionFlagsUnRestrictedScope ); +#if HAVE_FSSPEC + ATSFontGetFileSpecification( 0, pathSpec ); +#endif + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } + CFLAGS="$CFLAGS -DHAVE_ATS=1" +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +printf "%s\n" "not found" >&6; } + CFLAGS="$CFLAGS -DHAVE_ATS=0" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + +case "$CFLAGS" in + *HAVE_FSSPEC* | *HAVE_FSREF* | *HAVE_QUICKDRAW* | *HAVE_ATS* ) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: +*** WARNING + FSSpec/FSRef/QuickDraw/ATS options are explicitly given, + thus it is recommended to replace src/base/ftmac.c by builds/mac/ftmac.c. + " >&5 +printf "%s\n" "$as_me: WARNING: +*** WARNING + FSSpec/FSRef/QuickDraw/ATS options are explicitly given, + thus it is recommended to replace src/base/ftmac.c by builds/mac/ftmac.c. + " >&2;} + CFLAGS="$CFLAGS "'-I$(TOP_DIR)/builds/mac/' + ;; + *) + ;; +esac + +# Check for pthreads + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +printf %s "checking target system type... " >&6; } +if test ${ac_cv_target+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +printf "%s\n" "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + + if test "$ac_cv_path_EGREP_TRADITIONAL" +then : + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( +*GNU*) + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +#( +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_TRADITIONAL_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL +fi + ;; +esac +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ax_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on Tru64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + if test "x$PTHREAD_CC" != "x" +then : + CC="$PTHREAD_CC" +fi + if test "x$PTHREAD_CXX" != "x" +then : + CXX="$PTHREAD_CXX" +fi + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 +printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } + 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. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_join (void); +int +main (void) +{ +return pthread_join (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_pthread_ok=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 +printf "%s\n" "$ax_pthread_ok" >&6; } + if test "x$ax_pthread_ok" = "xno"; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items with a "," contain both +# C compiler flags (before ",") and linker flags (after ","). Other items +# starting with a "-" are C compiler flags, and remaining items are +# library names, except for "none" which indicates that we try without +# any flags at all, and "pthread-config" which is a program returning +# the flags for the Pth emulation library. + +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case $target_os in + + freebsd*) + + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + + hpux*) + + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 +printf "%s\n" "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} +fi +rm -rf conftest* + + ;; + + solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). + + ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" + ;; +esac + +# Are we compiling with Clang? + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 +printf %s "checking whether $CC is Clang... " >&6; } +if test ${ax_cv_PTHREAD_CLANG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 +then : + ax_cv_PTHREAD_CLANG=yes +fi +rm -rf conftest* + + fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 +printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; } +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + + +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) + +# Note that for GCC and Clang -pthread generally implies -lpthread, +# except when -nostdlib is passed. +# This is problematic using libtool to build C++ shared libraries with pthread: +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 +# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 +# To solve this, first try -pthread together with -lpthread for GCC + +if test "x$GCC" = "xyes" +then : + ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags" +fi + +# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first + +if test "x$ax_pthread_clang" = "xyes" +then : + ax_pthread_flags="-pthread,-lpthread -pthread" +fi + + +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $target_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" + ;; + + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" + ;; +esac +if test "x$ax_pthread_check_macro" = "x--" +then : + ax_pthread_check_cond=0 +else case e in #( + e) ax_pthread_check_cond="!defined($ax_pthread_check_macro)" ;; +esac +fi + + +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do + + case $ax_pthread_try_flag in + none) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +printf %s "checking whether pthreads work without any flags... " >&6; } + ;; + + *,*) + PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` + PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"" >&5 +printf %s "checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"... " >&6; } + ;; + + -*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 +printf %s "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } + PTHREAD_CFLAGS="$ax_pthread_try_flag" + ;; + + pthread-config) + # Extract the first word of "pthread-config", so it can be a program name with args. +set dummy pthread-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ax_pthread_config+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ax_pthread_config"; then + ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ax_pthread_config="yes" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no" +fi ;; +esac +fi +ax_pthread_config=$ac_cv_prog_ax_pthread_config +if test -n "$ax_pthread_config"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 +printf "%s\n" "$ax_pthread_config" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test "x$ax_pthread_config" = "xno" +then : + continue +fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 +printf %s "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } + PTHREAD_LIBS="-l$ax_pthread_try_flag" + ;; + esac + + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif + static void *some_global = NULL; + static void routine(void *a) + { + /* To avoid any unused-parameter or + unused-but-set-parameter warning. */ + some_global = a; + } + static void *start_routine(void *a) { return a; } +int +main (void) +{ +pthread_t th; pthread_attr_t attr; + pthread_create(&th, 0, start_routine, 0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0) /* ; */ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_pthread_ok=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 +printf "%s\n" "$ax_pthread_ok" >&6; } + if test "x$ax_pthread_ok" = "xyes" +then : + break +fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 +printf %s "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } +if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`printf "%s\n" "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + if test "x$ax_pthread_try" = "xunknown" +then : + break +fi + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_link="$ax_pthread_2step_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + if test "x$ax_pthread_try" = "x" +then : + ax_pthread_try=no +fi + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 +printf "%s\n" "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + + + +# Various other checks: +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +printf %s "checking for joinable pthread attribute... " >&6; } +if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +int attr = $ax_pthread_attr; return attr /* ; */ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + done + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 +printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } + if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ + test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ + test "x$ax_pthread_joinable_attr_defined" != "xyes" +then : + +printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR" >>confdefs.h + + ax_pthread_joinable_attr_defined=yes + +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 +printf %s "checking whether more special flags are required for pthreads... " >&6; } +if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $target_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 +printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } + if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes" +then : + PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 +printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; } +if test ${ax_cv_PTHREAD_PRIO_INHERIT+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +int i = PTHREAD_PRIO_INHERIT; + return i; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_cv_PTHREAD_PRIO_INHERIT=yes +else case e in #( + e) ax_cv_PTHREAD_PRIO_INHERIT=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 +printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } + if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes" +then : + +printf "%s\n" "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h + + ax_pthread_prio_inherit_defined=yes + +fi + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + # More AIX lossage: compile with *_r variant + if test "x$GCC" != "xyes"; then + case $target_os in + aix*) + case "x/$CC" in #( + x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) : + #handle absolute path differently from PATH based program lookup + case "x$CC" in #( + x/*) : + + if as_fn_executable_p ${CC}_r +then : + PTHREAD_CC="${CC}_r" +fi + if test "x${CXX}" != "x" +then : + if as_fn_executable_p ${CXX}_r +then : + PTHREAD_CXX="${CXX}_r" +fi +fi + ;; #( + *) : + + for ac_prog in ${CC}_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PTHREAD_CC+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$PTHREAD_CC"; then + ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PTHREAD_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +PTHREAD_CC=$ac_cv_prog_PTHREAD_CC +if test -n "$PTHREAD_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +printf "%s\n" "$PTHREAD_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$PTHREAD_CC" && break +done +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" + + if test "x${CXX}" != "x" +then : + for ac_prog in ${CXX}_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PTHREAD_CXX+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$PTHREAD_CXX"; then + ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PTHREAD_CXX="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX +if test -n "$PTHREAD_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CXX" >&5 +printf "%s\n" "$PTHREAD_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$PTHREAD_CXX" && break +done +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + +fi + + ;; +esac + ;; #( + *) : + ;; +esac + ;; + esac + fi +fi + +test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + + + + + + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test "x$ax_pthread_ok" = "xyes"; then + have_pthread=yes + : +else + ax_pthread_ok=no + have_pthread=no +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Check for Python and docwriter +PYTHON_MIN_VERSION=3.5 +have_py3=no +have_docwriter=no +PIP=pip + +for ac_prog in python3 python +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PYTHON+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$PYTHON"; then + ac_cv_prog_PYTHON="$PYTHON" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PYTHON="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +PYTHON=$ac_cv_prog_PYTHON +if test -n "$PYTHON"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +printf "%s\n" "$PYTHON" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$PYTHON" && break +done +test -n "$PYTHON" || PYTHON="missing" + +if test "x$PYTHON" != "xmissing"; then + + + + + if test -n "$PYTHON" +then : + + ax_python_version="$PYTHON_MIN_VERSION" + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python version" >&5 +printf %s "checking for python version... " >&6; } + + python_version=`$PYTHON -V 2>&1 | $GREP "^Python " | $SED -e 's/^.* \([0-9]*\.[0-9]*\.[0-9]*\)/\1/'` + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $python_version" >&5 +printf "%s\n" "$python_version" >&6; } + + PYTHON_VERSION=$python_version + + + + + + # Used to indicate true or false condition + ax_compare_version=false + + # Convert the two version strings to be compared into a format that + # allows a simple string comparison. The end result is that a version + # string of the form 1.12.5-r617 will be converted to the form + # 0001001200050617. In other words, each number is zero padded to four + # digits, and non digits are removed. + + ax_compare_version_A=`echo "$ax_python_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \ + -e 's/Z\([0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/[^0-9]//g'` + + + ax_compare_version_B=`echo "$python_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \ + -e 's/Z\([0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/[^0-9]//g'` + + + ax_compare_version=`echo "x$ax_compare_version_A +x$ax_compare_version_B" | sed 's/^ *//' | sort | sed "s/x${ax_compare_version_A}/true/;s/x${ax_compare_version_B}/false/;1q"` + + + + if test "$ax_compare_version" = "true" ; then + + : + have_py3=yes + + else + : + + + fi + + +else case e in #( + e) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: could not find the python interpreter" >&5 +printf "%s\n" "$as_me: WARNING: could not find the python interpreter" >&2;} + + ;; +esac +fi + + + if test "x$have_py3" = "xyes"; then + PIP="$PYTHON -m $PIP" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for \`docwriter' Python module" >&5 +printf %s "checking for \`docwriter' Python module... " >&6; } + $PYTHON -m docwriter -h > /dev/null 2>&1 + if test "x$?" = "x0"; then + have_docwriter=yes + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + fi + fi +fi + + +# entries in Requires.private are separated by commas +PKGCONFIG_REQUIRES_PRIVATE="$zlib_reqpriv, \ + $bzip2_reqpriv, \ + $libpng_reqpriv, \ + $harfbuzz_reqpriv, \ + $brotli_reqpriv" +# beautify +PKGCONFIG_REQUIRES_PRIVATE=`echo "$PKGCONFIG_REQUIRES_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/, */,/g' \ + -e 's/,,*/,/g' \ + -e 's/^,*//' \ + -e 's/,*$//' \ + -e 's/,/, /g'` + +PKGCONFIG_LIBS_PRIVATE="$zlib_libspriv \ + $bzip2_libspriv \ + $libpng_libspriv \ + $harfbuzz_libspriv \ + $brotli_libspriv \ + $ft2_extra_libs" +# beautify +PKGCONFIG_LIBS_PRIVATE=`echo "$PKGCONFIG_LIBS_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +LIBSSTATIC_CONFIG="-lfreetype \ + $zlib_libsstaticconf \ + $bzip2_libsstaticconf \ + $libpng_libsstaticconf \ + $harfbuzz_libsstaticconf \ + $brotli_libsstaticconf \ + $ft2_extra_libs" +# remove -L/usr/lib and -L/usr/lib64 since `freetype-config' adds them later +# on if necessary; also beautify +LIBSSTATIC_CONFIG=`echo "$LIBSSTATIC_CONFIG" \ + | sed -e 's|-L */usr/lib64/* | |g' \ + -e 's|-L */usr/lib/* | |g' \ + -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +# If FreeType gets installed with `--disable-shared', don't use +# 'private' fields. `pkg-config' only looks into `.pc' files and is +# completely agnostic to whether shared libraries are actually present +# or not. As a consequence, the user had to specify `--static' while +# calling `pkg-config', which configure scripts are normally not +# prepared for. + +PKGCONFIG_REQUIRES= +PKGCONFIG_LIBS='-L${libdir} -lfreetype' + +if test $enable_shared = "no"; then + PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES $PKGCONFIG_REQUIRES_PRIVATE" + PKGCONFIG_REQUIRES_PRIVATE= + PKGCONFIG_LIBS="$PKGCONFIG_LIBS $PKGCONFIG_LIBS_PRIVATE" + PKGCONFIG_LIBS_PRIVATE= +fi + + + + + + + + + + + + + +# We cannot use alternation (`\|`) in the `sed` regexp since it is not +# portable. + +ftoption_set() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|#define $1|\\\" \ + -e \\\"s|.*#.*def.*$1\$|#define $1|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +ftoption_unset() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|/* #undef $1 */|\\\" \ + -e \\\"s|.*#.*def.*$1\$|/* #undef $1 */|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +# Changing the `LDFLAGS` value should only be done after the +# `lt_cv_prog_compiler_static_works` test. + +if test "$have_zlib" != no; then + CFLAGS="$CFLAGS $ZLIB_CFLAGS" + LDFLAGS="$LDFLAGS $ZLIB_LIBS" + ftoption_set FT_CONFIG_OPTION_SYSTEM_ZLIB +else + ftoption_unset FT_CONFIG_OPTION_SYSTEM_ZLIB +fi +if test "$have_bzip2" != no; then + CFLAGS="$CFLAGS $BZIP2_CFLAGS" + LDFLAGS="$LDFLAGS $BZIP2_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BZIP2 +else + ftoption_unset FT_CONFIG_OPTION_USE_BZIP2 +fi +if test "$have_libpng" != no; then + CFLAGS="$CFLAGS $LIBPNG_CFLAGS" + LDFLAGS="$LDFLAGS $LIBPNG_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_PNG +else + ftoption_unset FT_CONFIG_OPTION_USE_PNG +fi +if test "$have_harfbuzz" != no; then + CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS" + LDFLAGS="$LDFLAGS $HARFBUZZ_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ +fi +if test "$have_harfbuzz_dynamic" != no; then + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +fi +if test "$have_brotli" != no; then + CFLAGS="$CFLAGS $BROTLI_CFLAGS" + LDFLAGS="$LDFLAGS $BROTLI_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BROTLI +else + ftoption_unset FT_CONFIG_OPTION_USE_BROTLI +fi + +if test "$have_pthread" != no; then + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LDFLAGS="$LDFLAGS $PTHREAD_CFLAGS $PTHREAD_LIBS" +fi + + + + +# We don't want to use a template file for `ftoption.h', since compilation +# should work without calling a configure script also. For this reason, we +# copy the `include/freetype/config/ftoption.h' file to the `unix/builds' +# directory (using a dummy `AC_CONFIG_FILES' call) and apply the just +# constructed $FTOPTION_H_SED regexp (using the post-action of +# `AC_CONFIG_FILES'); this is also the version that gets installed later on. +# +ac_config_files="$ac_config_files ftoption.h:${srcdir}/../../include/freetype/config/ftoption.h" + + +ac_config_headers="$ac_config_headers ftconfig.h" + + +# create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' +# and `builds/unix/unix-cc.mk' that will be used by the build system +# +ac_config_files="$ac_config_files unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in" + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # 'set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # 'set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +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$//' + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +# Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; +fi + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else case e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# 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 +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as 'sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# 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. +as_fn_error () +{ + 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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by FreeType $as_me 2.14.3, which was +generated by GNU Autoconf 2.72. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +'$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +FreeType config.status 2.14.3 +configured by $0, generated by GNU Autoconf 2.72, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2023 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; + --help | --hel | -h ) + printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +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 + shift + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +LD_RC='`$ECHO "$LD_RC" | $SED "$delay_single_quote_subst"`' +reload_flag_RC='`$ECHO "$reload_flag_RC" | $SED "$delay_single_quote_subst"`' +reload_cmds_RC='`$ECHO "$reload_cmds_RC" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_RC='`$ECHO "$old_archive_cmds_RC" | $SED "$delay_single_quote_subst"`' +compiler_RC='`$ECHO "$compiler_RC" | $SED "$delay_single_quote_subst"`' +GCC_RC='`$ECHO "$GCC_RC" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_RC='`$ECHO "$lt_prog_compiler_no_builtin_flag_RC" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_RC='`$ECHO "$lt_prog_compiler_pic_RC" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_RC='`$ECHO "$lt_prog_compiler_wl_RC" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_RC='`$ECHO "$lt_prog_compiler_static_RC" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_RC='`$ECHO "$lt_cv_prog_compiler_c_o_RC" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_RC='`$ECHO "$archive_cmds_need_lc_RC" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_RC='`$ECHO "$enable_shared_with_static_runtimes_RC" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_RC='`$ECHO "$export_dynamic_flag_spec_RC" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_RC='`$ECHO "$whole_archive_flag_spec_RC" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_RC='`$ECHO "$compiler_needs_object_RC" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_RC='`$ECHO "$old_archive_from_new_cmds_RC" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_RC='`$ECHO "$old_archive_from_expsyms_cmds_RC" | $SED "$delay_single_quote_subst"`' +archive_cmds_RC='`$ECHO "$archive_cmds_RC" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_RC='`$ECHO "$archive_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`' +module_cmds_RC='`$ECHO "$module_cmds_RC" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_RC='`$ECHO "$module_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_RC='`$ECHO "$with_gnu_ld_RC" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_RC='`$ECHO "$allow_undefined_flag_RC" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_RC='`$ECHO "$no_undefined_flag_RC" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_RC='`$ECHO "$hardcode_libdir_flag_spec_RC" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_RC='`$ECHO "$hardcode_libdir_separator_RC" | $SED "$delay_single_quote_subst"`' +hardcode_direct_RC='`$ECHO "$hardcode_direct_RC" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_RC='`$ECHO "$hardcode_direct_absolute_RC" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_RC='`$ECHO "$hardcode_minus_L_RC" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_RC='`$ECHO "$hardcode_shlibpath_var_RC" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_RC='`$ECHO "$hardcode_automatic_RC" | $SED "$delay_single_quote_subst"`' +inherit_rpath_RC='`$ECHO "$inherit_rpath_RC" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_RC='`$ECHO "$link_all_deplibs_RC" | $SED "$delay_single_quote_subst"`' +always_export_symbols_RC='`$ECHO "$always_export_symbols_RC" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_RC='`$ECHO "$export_symbols_cmds_RC" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_RC='`$ECHO "$exclude_expsyms_RC" | $SED "$delay_single_quote_subst"`' +include_expsyms_RC='`$ECHO "$include_expsyms_RC" | $SED "$delay_single_quote_subst"`' +prelink_cmds_RC='`$ECHO "$prelink_cmds_RC" | $SED "$delay_single_quote_subst"`' +postlink_cmds_RC='`$ECHO "$postlink_cmds_RC" | $SED "$delay_single_quote_subst"`' +file_list_spec_RC='`$ECHO "$file_list_spec_RC" | $SED "$delay_single_quote_subst"`' +hardcode_action_RC='`$ECHO "$hardcode_action_RC" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in AS \ +DLLTOOL \ +OBJDUMP \ +SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +FILECMD \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +sharedlib_from_linklib_cmd \ +AR \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +LD_RC \ +reload_flag_RC \ +compiler_RC \ +lt_prog_compiler_no_builtin_flag_RC \ +lt_prog_compiler_pic_RC \ +lt_prog_compiler_wl_RC \ +lt_prog_compiler_static_RC \ +lt_cv_prog_compiler_c_o_RC \ +export_dynamic_flag_spec_RC \ +whole_archive_flag_spec_RC \ +compiler_needs_object_RC \ +with_gnu_ld_RC \ +allow_undefined_flag_RC \ +no_undefined_flag_RC \ +hardcode_libdir_flag_spec_RC \ +hardcode_libdir_separator_RC \ +exclude_expsyms_RC \ +include_expsyms_RC \ +file_list_spec_RC; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ +reload_cmds_RC \ +old_archive_cmds_RC \ +old_archive_from_new_cmds_RC \ +old_archive_from_expsyms_cmds_RC \ +archive_cmds_RC \ +archive_expsym_cmds_RC \ +module_cmds_RC \ +module_expsym_cmds_RC \ +export_symbols_cmds_RC \ +prelink_cmds_RC \ +postlink_cmds_RC; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + + +FTOPTION_H_SED="$FTOPTION_H_SED" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "ftoption.h") CONFIG_FILES="$CONFIG_FILES ftoption.h:${srcdir}/../../include/freetype/config/ftoption.h" ;; + "ftconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS ftconfig.h" ;; + "unix-cc.mk") CONFIG_FILES="$CONFIG_FILES unix-cc.mk:unix-cc.in" ;; + "unix-def.mk") CONFIG_FILES="$CONFIG_FILES unix-def.mk:unix-def.in" ;; + + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to '$tmp'. +$debug || +{ + tmp= ac_tmp= + trap '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 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || 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. +# This happens for instance with './config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$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 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[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with './config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script 'defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_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 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$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 ':'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is 'configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when '$srcdir' = '.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$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' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { printf "%s\n" "$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 +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) 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 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + printf "%s\n" "/* $configure_input */" >&1 \ + && 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2024 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. + +# GNU Libtool is free software; you can redistribute 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. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT 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 . + + +# The names of the tagged configurations supported by this script. +available_tags='RC ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Assembler program. +AS=$lt_AS + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Object dumper program. +OBJDUMP=$lt_OBJDUMP + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# A file(cmd) program that detects file types. +FILECMD=$lt_FILECMD + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive (by configure). +lt_ar_flags=$lt_ar_flags + +# Flags to create an archive. +AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e. impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + $SED '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: RC + +# The linker used to build libraries. +LD=$lt_LD_RC + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_RC +reload_cmds=$lt_reload_cmds_RC + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_RC + +# A language specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU compiler? +with_gcc=$GCC_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_RC + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_RC + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e. impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_RC + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_RC + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_RC + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_RC + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_RC + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_RC + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# ### END LIBTOOL TAG CONFIG: RC +_LT_EOF + + ;; + "ftoption.h":F) mv ftoption.h ftoption.tmp + eval "sed $FTOPTION_H_SED < ftoption.tmp > ftoption.h" + rm ftoption.tmp ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + 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 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: + +Library configuration: + external zlib: $have_zlib + bzip2: $have_bzip2 + libpng: $have_libpng + harfbuzz: $have_harfbuzz + brotli: $have_brotli + pthread: $have_pthread +" >&5 +printf "%s\n" "$as_me: + +Library configuration: + external zlib: $have_zlib + bzip2: $have_bzip2 + libpng: $have_libpng + harfbuzz: $have_harfbuzz + brotli: $have_brotli + pthread: $have_pthread +" >&6;} + +# Warn if docwriter is not installed + +if test $have_docwriter = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: + \`make refdoc' will fail since pip package \`docwriter' is not installed. + To install, run \`$PIP install docwriter', or to use a Python + virtual environment, run \`make refdoc-venv' (requires pip package + \`virtualenv'). These operations require Python >= $PYTHON_MIN_VERSION. + " >&5 +printf "%s\n" "$as_me: WARNING: + \`make refdoc' will fail since pip package \`docwriter' is not installed. + To install, run \`$PIP install docwriter', or to use a Python + virtual environment, run \`make refdoc-venv' (requires pip package + \`virtualenv'). These operations require Python >= $PYTHON_MIN_VERSION. + " >&2;} +fi + +# Warn if pthread is not available + +if test $have_pthread = no; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: + \`FT_DEBUG_LOGGING' will not work since the \`pthread' library is not + available. This warning can be safely ignored if you don't plan to use + this configuration macro. + " >&5 +printf "%s\n" "$as_me: WARNING: + \`FT_DEBUG_LOGGING' will not work since the \`pthread' library is not + available. This warning can be safely ignored if you don't plan to use + this configuration macro. + " >&2;} +fi + +# end of configure.raw + diff --git a/local/recipes/libs/freetype2/source/builds/unix/configure.ac b/local/recipes/libs/freetype2/source/builds/unix/configure.ac new file mode 100644 index 0000000000..01479559f2 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/configure.ac @@ -0,0 +1,1239 @@ +# This file is part of the FreeType project. +# +# Process this file with autoconf to produce a configure script. +# +# Copyright (C) 2001-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +AC_INIT([FreeType], [2.14.3], [freetype@nongnu.org], [freetype]) +AC_CONFIG_SRCDIR([ftconfig.h.in]) + + +# Don't forget to update `docs/VERSIONS.TXT'! + +version_info='26:6:20' +AC_SUBST([version_info]) +ft_version=`echo $version_info | tr : .` +AC_SUBST([ft_version]) + + +# checks for system type + +AC_CANONICAL_HOST + + +# checks for programs + +AC_PROG_CC +AC_PROG_CPP +AC_SUBST(EXEEXT) + +PKG_PROG_PKG_CONFIG([0.24]) + +LT_INIT(win32-dll) +AC_CHECK_HEADER([windows.h], [LT_PROG_RC]) + + +# checks for native programs to generate building tool + +if test ${cross_compiling} = yes; then + AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build}-gcc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, gcc, gcc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, cc, cc, , , /usr/ucb/cc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, clang, clang) + test -z "${CC_BUILD}" && AC_MSG_ERROR([cannot find native C compiler]) + + AC_MSG_CHECKING([for suffix of native executables]) + rm -f a.* b.* a_out.exe conftest.* + echo > conftest.c "int main(void) { return 0;}" + ${CC_BUILD} conftest.c || AC_MSG_ERROR([native C compiler is not working]) + rm -f conftest.c + if test -x a.out -o -x b.out -o -x conftest; then + EXEEXT_BUILD="" + elif test -x a_out.exe -o -x conftest.exe; then + EXEEXT_BUILD=".exe" + elif test -x conftest.*; then + EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\././'` + fi + rm -f a.* b.* a_out.exe conftest.* + AC_MSG_RESULT($EXEEXT_BUILD) + CFLAGS_BUILD= + LDFLAGS_BUILD= +else + CC_BUILD=${CC} + CFLAGS_BUILD=${CFLAGS} + LDFLAGS_BUILD=${LDFLAGS} + EXEEXT_BUILD=${EXEEXT} +fi + +AC_SUBST(CC_BUILD) +AC_SUBST(CFLAGS_BUILD) +AC_SUBST(LDFLAGS_BUILD) +AC_SUBST(EXEEXT_BUILD) + + +# Since these files will be eventually called from another directory (namely +# from the top level) we make the path of the scripts absolute. +# +# This small code snippet has been taken from automake's `ylwrap' script. + +AC_PROG_INSTALL +case "$INSTALL" in +[[\\/]]* | ?:[[\\/]]*) + ;; +*[[\\/]]*) + INSTALL="`pwd`/$INSTALL" + ;; +esac + +AC_PROG_MKDIR_P +case "$MKDIR_P" in +[[\\/]]* | ?:[[\\/]]*) + ;; +*[[\\/]]*) + MKDIR_P="`pwd`/$MKDIR_P" + ;; +esac + + +# checks for header files + +AC_CHECK_HEADERS([fcntl.h unistd.h]) + + +# checks for typedefs, structures, and compiler characteristics + +AC_C_CONST + +AC_ARG_ENABLE([freetype-config], + AS_HELP_STRING([--enable-freetype-config], [install freetype-config]), + [case "${enableval}" in + yes) enable_freetype_config="TRUE" ;; + no) enable_freetype_config="FALSE" ;; + *) AC_MSG_ERROR([unknown value '${enableval}' passed with --enable-freetype-config]) ;; + esac], [enable_freetype_config="FALSE"]) + +AC_SUBST(INSTALL_FT2_CONFIG, [$enable_freetype_config]) + +# checks for library functions + +AC_SYS_LARGEFILE + +# Here we check whether we can use our mmap file component. +# +# Note that `ftsystem.c` for Windows has its own mmap-like implementation +# not covered by `AC_FUNC_MMAP` and/or `FT_UNMAP_PARAM`. + +AC_ARG_ENABLE([mmap], + AS_HELP_STRING([--disable-mmap], + [do not check mmap() and do not use]), + [enable_mmap="no"], [enable_mmap="yes"]) +if test "x${enable_mmap}" != "xno"; then + case "$host" in + *-*-mingw*) + AC_MSG_CHECKING([for working mmap]) + AC_MSG_RESULT([using MapViewOfFile in Windows]) + FTSYS_SRC='$(TOP_DIR)/builds/windows/ftsystem.c' + ;; + *) + AC_FUNC_MMAP + if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then + FTSYS_SRC='$(PLATFORM_DIR)/ftsystem.c' + + AC_CHECK_DECLS([munmap], + [], + [], + [ + +#ifdef HAVE_UNISTD_H +#include +#endif +#include + + ]) + + FT_MUNMAP_PARAM + fi + ;; + esac +fi + +if test -z "$FTSYS_SRC"; then + FTSYS_SRC='$(BASE_DIR)/ftsystem.c' +fi +AC_SUBST([FTSYS_SRC]) + + +# get compiler flags right +# +# We try to make the compiler work for C99-strict source. Even if the +# C compiler is gcc and C99 flags are available, some system headers +# might be broken in C99 mode. We have to check whether compilation +# finishes successfully. +# +if test "x$GCC" = xyes; then + XX_CFLAGS="-Wall" + case "$host" in + *-*-mingw*) + XX_ANSIFLAGS="-pedantic" + ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; + *) + XX_ANSIFLAGS="" + + for a in "-pedantic" "-std=c99" + do + AC_MSG_CHECKING([$CC compiler flag ${a} to assure ANSI C99 works correctly]) + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} ${XX_ANSIFLAGS} ${a}" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#include + + ], + [ + + { + puts( "" ); + return 0; + } + + ])], + [AC_MSG_RESULT([ok, adding to XX_ANSIFLAGS]) + XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}" + ], + [AC_MSG_RESULT([no])]) + CFLAGS="${orig_CFLAGS}" + done + ;; + esac +else + case "$host" in + *-dec-osf*) + CFLAGS= + XX_CFLAGS="-std1 -g3" + XX_ANSIFLAGS= + ;; + *) + XX_CFLAGS= + XX_ANSIFLAGS= + ;; + esac +fi +AC_SUBST([XX_CFLAGS]) +AC_SUBST([XX_ANSIFLAGS]) + + +# It is recommended that shared libraries hide symbols except those with +# explicit __attribute__((visibility("default"))). +# +found_visibility_flag=no +AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) +orig_CFLAGS="${CFLAGS}" +CFLAGS="${CFLAGS} -fvisibility=hidden -Werror" +AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +__attribute__(( visibility( "default" ) )) int foo( void ); +__attribute__(( visibility( "hidden" ) )) int bar( void ); + +int foo( void ) { return 0; } +int bar( void ) { return 1; } + + ], + [])], + [found_visibility_flag=yes + CFLAGS="${orig_CFLAGS} -fvisibility=hidden" + AC_MSG_RESULT(yes) + ], + [CFLAGS="${orig_CFLAGS}" + AC_MSG_RESULT(no)]) + +if test "${found_visibility_flag}" = "no"; then + AC_MSG_CHECKING([for -xldscope=hidden compiler flag]) + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} -xldscope=hidden" + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], + [found_visibility_flag=yes + AC_MSG_RESULT(yes)], + [CFLAGS="${orig_CFLAGS}" + AC_MSG_RESULT(no)]) +fi + +# All library tests below try `pkg-config' first. If that fails, a function +# from the library is tested in the traditional autoconf way (zlib, bzip2), +# or a config script is called (libpng). +# +# The `xxx_reqpriv' variables are for the `Requires.private' field in +# `freetype2.pc'. The `xxx_libspriv' variables are for the `Libs.private' +# field in `freetype2.pc' if pkg-config doesn't find a proper .pc file. +# +# The `xxx_libsstaticconf' variables are for the `freetype-config' script. +# +# Note that a call to PKG_CHECK_MODULES(XXX, ...) sets and creates the +# output variables `XXX_CFLAGS' and `XXX_LIBS'. In case one or both are set +# for a library by the user, no entry for this library is added to +# `Requires.private'. Instead, it gets added to `Libs.private' + + +# check for system zlib + +AC_ARG_WITH([zlib], + [AS_HELP_STRING([--with-zlib=@<:@yes|no|auto@:>@], + [use system zlib instead of internal library @<:@default=auto@:>@])], + [], [with_zlib=auto]) + +have_zlib=no +if test x"$with_zlib" = xyes -o x"$with_zlib" = xauto; then + zlib_pkg="zlib" + have_zlib_pkg=no + + if test x"$ZLIB_CFLAGS" = x -a x"$ZLIB_LIBS" = x; then + PKG_CHECK_EXISTS([$zlib_pkg], [have_zlib_pkg=yes]) + fi + PKG_CHECK_MODULES([ZLIB], [$zlib_pkg], + [have_zlib="yes (pkg-config)"], [:]) + + if test $have_zlib_pkg = yes; then + # we have zlib.pc + zlib_reqpriv="$zlib_pkg" + zlib_libspriv= + zlib_libsstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` + else + zlib_reqpriv= + + if test "$have_zlib" != no; then + # ZLIB_CFLAGS and ZLIB_LIBS are set by the user + zlib_libspriv="$ZLIB_LIBS" + zlib_libsstaticconf="$ZLIB_LIBS" + have_zlib="yes (ZLIB_CFLAGS and ZLIB_LIBS)" + else + # fall back to standard autoconf test + AC_CHECK_LIB([z], + [gzsetparams], + [AC_CHECK_HEADER([zlib.h], + [have_zlib="yes (autoconf test)" + zlib_libspriv="-lz" + zlib_libsstaticconf="$zlib_libspriv" + ZLIB_LIBS="$zlib_libspriv"])]) + fi + fi +fi + +if test x"$with_zlib" = xyes -a "$have_zlib" = no; then + AC_MSG_ERROR([external zlib support requested but library not found]) +fi + +SYSTEM_ZLIB= +if test "$have_zlib" != no; then + SYSTEM_ZLIB=yes +fi +AC_SUBST([SYSTEM_ZLIB]) + + +# check for system libbz2 + +AC_ARG_WITH([bzip2], + [AS_HELP_STRING([--with-bzip2=@<:@yes|no|auto@:>@], + [support bzip2 compressed fonts @<:@default=auto@:>@])], + [], [with_bzip2=auto]) + +have_bzip2=no +if test x"$with_bzip2" = xyes -o x"$with_bzip2" = xauto; then + bzip2_pkg="bzip2" + have_bzip2_pkg=no + + if test x"$BZIP2_CFLAGS" = x -a x"$BZIP2_LIBS" = x; then + PKG_CHECK_EXISTS([$bzip2_pkg], [have_bzip2_pkg=yes]) + fi + PKG_CHECK_MODULES([BZIP2], [$bzip2_pkg], + [have_bzip2="yes (pkg-config)"], [:]) + + if test $have_bzip2_pkg = yes; then + # we have bzip2.pc + bzip2_reqpriv="$bzip2_pkg" + bzip2_libspriv= + bzip2_libsstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` + else + bzip2_reqpriv= + + if test "$have_bzip2" != no; then + # BZIP2_CFLAGS and BZIP2_LIBS are set by the user + bzip2_libspriv="$BZIP2_LIBS" + bzip2_libsstaticconf="$BZIP2_LIBS" + have_bzip2="yes (BZIP2_CFLAGS and BZIP2_LIBS)" + else + # fall back to standard autoconf test + AC_CHECK_LIB([bz2], + [BZ2_bzDecompress], + [AC_CHECK_HEADER([bzlib.h], + [have_bzip2="yes (autoconf test)" + bzip2_libspriv="-lbz2" + bzip2_libsstaticconf="$bzip2_libspriv" + BZIP2_LIBS="$bzip2_libspriv"])]) + fi + fi +fi + +if test x"$with_bzip2" = xyes -a "$have_bzip2" = no; then + AC_MSG_ERROR([bzip2 support requested but library not found]) +fi + + +# check for system libpng + +AC_ARG_WITH([png], + [AS_HELP_STRING([--with-png=@<:@yes|no|auto@:>@], + [support png compressed OpenType embedded bitmaps @<:@default=auto@:>@])], + [], [with_png=auto]) + +have_libpng=no +if test x"$with_png" = xyes -o x"$with_png" = xauto; then + libpng_pkg="libpng" + have_libpng_pkg=no + + if test x"$LIBPNG_CFLAGS" = x -a x"$LIBPNG_LIBS" = x; then + PKG_CHECK_EXISTS([$libpng_pkg], [have_libpng_pkg=yes]) + fi + PKG_CHECK_MODULES([LIBPNG], [$libpng_pkg], + [have_libpng="yes (pkg-config)"], [:]) + + if test $have_libpng_pkg = yes; then + # we have libpng.pc + libpng_reqpriv="$libpng_pkg" + libpng_libspriv= + libpng_libsstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` + else + libpng_reqpriv= + + if test "$have_libpng" != no; then + # LIBPNG_CFLAGS and LIBPNG_LIBS are set by the user + libpng_libspriv="$LIBPNG_LIBS" + libpng_libsstaticconf="$LIBPNG_LIBS" + have_libpng="yes (LIBPNG_CFLAGS and LIBPNG_LIBS)" + else + # fall back to config script + AC_CHECK_PROG(have_libpng, [libpng-config], [yes (libpng-config)], [no]) + if test "$have_libpng" != no; then + LIBPNG_CFLAGS=`libpng-config --cflags` + LIBPNG_LIBS=`libpng-config --ldflags` + libpng_libspriv=`libpng-config --static --ldflags` + libpng_libsstaticconf="$libpng_libspriv" + fi + fi + fi +fi + +if test x"$with_png" = xyes -a "$have_libpng" = no; then + AC_MSG_ERROR([libpng support requested but library not found]) +fi + + +# check for system libharfbuzz + +AC_ARG_WITH([harfbuzz], + [AS_HELP_STRING([--with-harfbuzz=@<:@yes|dynamic|no|auto@:>@], + [improve auto-hinting of OpenType fonts @<:@default=auto@:>@])], + [], [with_harfbuzz=auto]) + +have_harfbuzz=no +if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then + harfbuzz_pkg="harfbuzz >= 2.0.0" + have_harfbuzz_pkg=no + + if test x"$HARFBUZZ_CFLAGS" = x -a x"$HARFBUZZ_LIBS" = x; then + PKG_CHECK_EXISTS([$harfbuzz_pkg], [have_harfbuzz_pkg=yes]) + fi + PKG_CHECK_MODULES([HARFBUZZ], [$harfbuzz_pkg], + [have_harfbuzz="yes (pkg-config)"], [:]) + + if test $have_harfbuzz_pkg = yes; then + # we have harfbuzz.pc + harfbuzz_reqpriv="$harfbuzz_pkg" + harfbuzz_libspriv= + harfbuzz_libsstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` + else + harfbuzz_reqpriv= + + if test "$have_harfbuzz" != no; then + # HARFBUZZ_CFLAGS and HARFBUZZ_LIBS are set by the user + harfbuzz_libspriv="$HARFBUZZ_LIBS" + harfbuzz_libsstaticconf="$HARFBUZZ_LIBS" + have_harfbuzz="yes (HARFBUZZ_CFLAGS and HARFBUZZ_LIBS)" + else + # since HarfBuzz is quite a new library we don't fall back to a + # different test; additionally, it has too many dependencies + : + fi + fi +fi + +have_harfbuzz_dynamic=no +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" = xdynamic -o x"$with_harfbuzz" = xauto; then + case "$host" in + *-*-mingw*) + # Windows uses its own LoadLibrary(), set variables to dynamic. + have_harfbuzz_dynamic=yes + have_harfbuzz="yes (dynamic)" + ;; + *) + # Check for libdl + AC_CHECK_LIB([c], + [dlopen], + [have_harfbuzz_dynamic=yes], + AC_CHECK_LIB([dl], + [dlopen], + [have_harfbuzz_dynamic=yes + need_libdl=yes])) + if test x"$have_harfbuzz_dynamic" = xyes; then + have_harfbuzz="yes (dynamic)" + HARFBUZZ_CFLAGS= + if test x"$need_libdl" = xyes; then + HARFBUZZ_LIBS="-ldl" + fi + fi + ;; + esac + fi +fi + +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" != xno -a "$with_harfbuzz" != xauto; then + AC_MSG_ERROR([harfbuzz support requested but library not found]) + fi +fi + +# check for system libbrotlidec + +AC_ARG_WITH([brotli], + [AS_HELP_STRING([--with-brotli=@<:@yes|no|auto@:>@], + [support decompression of WOFF2 streams @<:@default=auto@:>@])], + [], [with_brotli=auto]) + +have_brotli=no +if test x"$with_brotli" = xyes -o x"$with_brotli" = xauto; then + brotli_pkg="libbrotlidec" + have_brotli_pkg=no + + if test x"$BROTLI_CFLAGS" = x -a x"$BROTLI_LIBS" = x; then + PKG_CHECK_EXISTS([$brotli_pkg], [have_brotli_pkg=yes]) + fi + PKG_CHECK_MODULES([BROTLI], [$brotli_pkg], + [have_brotli="yes (pkg-config)"], [:]) + + if test $have_brotli_pkg = yes; then + # we have libbrotlidec.pc + brotli_reqpriv="$brotli_pkg" + brotli_libspriv= + brotli_libsstaticconf=`$PKG_CONFIG --static --libs "$brotli_pkg"` + else + brotli_reqpriv= + + if test "$have_brotli" != no; then + # BROTLI_CFLAGS and BROTLI_LIBS are set by the user + brotli_libspriv="$BROTLI_LIBS" + brotli_libsstaticconf="$BROTLI_LIBS" + have_brotli="yes (BROTLI_CFLAGS and BROTLI_LIBS)" + else + # since Brotli is quite a new library we don't fall back to a + # different test + : + fi + fi +fi + +if test x"$with_brotli" = xyes -a "$have_brotli" = no; then + AC_MSG_ERROR([brotli support requested but library not found]) +fi + + +# Checks for the demo programs. +# +# FreeType doesn't need this. However, since the demo program repository +# doesn't come with a `configure` script of its own, we integrate the tests +# here for simplicity. + +# We need `clock_gettime` from 'librt' for the `ftbench` demo program. +# +# The code is modeled after gnulib's file `clock_time.m4`, ignoring +# very old Solaris systems. +LIB_CLOCK_GETTIME= +AC_SEARCH_LIBS([clock_gettime], + [rt], + [test "$ac_cv_search_clock_gettime" = "none required" \ + || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime]) + +FT_DEMO_CFLAGS="" +FT_DEMO_LDFLAGS="$LIB_CLOCK_GETTIME" + +# 'librsvg' is needed to demonstrate SVG support. +AC_ARG_WITH([librsvg], + [AS_HELP_STRING([--with-librsvg=@<:@yes|no|auto@:>@], + [support OpenType SVG fonts in FreeType demo programs @<:@default=auto@:>@])], + [], [with_librsvg=auto]) + +have_librsvg=no +if test x"$with_librsvg" = xyes -o x"$with_librsvg" = xauto; then + PKG_CHECK_MODULES([LIBRSVG], [librsvg-2.0 >= 2.46.0], + [have_librsvg="yes (pkg-config)"], [:]) + + if test "$have_librsvg" != no; then + FT_DEMO_CFLAGS="$FT_DEMO_CFLAGS $LIBRSVG_CFLAGS -DHAVE_LIBRSVG" + FT_DEMO_LDFLAGS="$FT_DEMO_LDFLAGS $LIBRSVG_LIBS" + fi +fi + +if test x"$with_librsvg" = xyes -a "$have_librsvg" = no; then + AC_MSG_ERROR([librsvg support requested but library not found]) +fi + +AC_SUBST([FT_DEMO_CFLAGS]) +AC_SUBST([FT_DEMO_LDFLAGS]) + + +# Some options handling SDKs/archs in CFLAGS should be copied +# to LDFLAGS. Apple TechNote 2137 recommends to include these +# options in CFLAGS but not in LDFLAGS. + +save_config_args=$* +set dummy ${CFLAGS} +i=1 +while test $i -le $# +do + c=$1 + + case "${c}" in + -isysroot|-arch) # options taking 1 argument + a=$2 + AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c} ${a}]) + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no, copy to LDFLAGS]) + LDFLAGS="${LDFLAGS} ${c} ${a}" + fi + shift 1 + ;; + -m32|-m64|-march=*|-mcpu=*) # options taking no argument + AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c}]) + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no, copy to LDFLAGS]) + LDFLAGS="${LDFLAGS} ${c}" + fi + ;; + # *) + # AC_MSG_RESULT([${c} is not copied to LDFLAGS]) + # ;; + esac + + shift 1 +done +set ${save_config_args} + + +# Whether to use Mac OS resource-based fonts. + +ftmac_c="" # src/base/ftmac.c should not be included in makefiles by default + +AC_ARG_WITH([old-mac-fonts], + AS_HELP_STRING([--with-old-mac-fonts], + [allow Mac resource-based fonts to be used])) +if test x$with_old_mac_fonts = xyes; then + orig_LDFLAGS="${LDFLAGS}" + AC_MSG_CHECKING([CoreServices & ApplicationServices of Mac OS X]) + ft2_extra_libs="-Wl,-framework,CoreServices -Wl,-framework,ApplicationServices" + LDFLAGS="$LDFLAGS $ft2_extra_libs" + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + short res = 0; + + + UseResFile( res ); + + ])], + [AC_MSG_RESULT([ok]) + ftmac_c='ftmac.c' + AC_MSG_CHECKING([whether OS_INLINE macro is ANSI compatible]) + orig_CFLAGS="$CFLAGS -DFT_MACINTOSH" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + /* OSHostByteOrder() is typed as OS_INLINE */ + int32_t os_byte_order = OSHostByteOrder(); + + + if ( OSBigEndian != os_byte_order ) + return 1; + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_ANSI_OS_INLINE=1" + ], + [AC_MSG_RESULT([no, ANSI incompatible]) + CFLAGS="$orig_CFLAGS" + ]) + AC_MSG_CHECKING([type ResourceIndex]) + orig_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +# include +#endif + + ], + [ + + ResourceIndex i = 0; + return i; + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=1" + ], + [AC_MSG_RESULT([no]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=0" + ])], + [AC_MSG_RESULT([not found]) + ft2_extra_libs="" + LDFLAGS="${orig_LDFLAGS}" + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON"]) +else + case x$host_os in + xdarwin*) + dnl AC_MSG_WARN([host system is MacOS but configured to build without Carbon]) + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" + ;; + *) + ;; + esac +fi + + +# Whether to use FileManager, which is deprecated since Mac OS X 10.4. + +AC_ARG_WITH([fsspec], + AS_HELP_STRING([--with-fsspec], + [use obsolete FSSpec API of MacOS, if available (default=yes)])) +if test x$with_fsspec = xno; then + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsspec != x; then + AC_MSG_CHECKING([FSSpec-based FileManager]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FCBPBPtr paramBlock; + short vRefNum; + long dirID; + ConstStr255Param fileName; + FSSpec* spec; + + + /* FSSpec functions: deprecated since Mac OS X 10.4 */ + PBGetFCBInfoSync( paramBlock ); + FSMakeFSSpec( vRefNum, dirID, fileName, spec ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_FSSPEC=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0"]) +fi + + +# Whether to use FileManager in Carbon since MacOS 9.x. + +AC_ARG_WITH([fsref], + AS_HELP_STRING([--with-fsref], + [use Carbon FSRef API of MacOS, if available (default=yes)])) +if test x$with_fsref = xno; then + AC_MSG_WARN([ +*** WARNING + FreeType2 built without FSRef API cannot load + data-fork fonts on MacOS, except of XXX.dfont. + ]) + CFLAGS="$CFLAGS -DHAVE_FSREF=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsref != x; then + AC_MSG_CHECKING([FSRef-based FileManager]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + short vRefNum; + long dirID; + ConstStr255Param fileName; + + Boolean* isDirectory; + UInt8* path; + SInt16 desiredRefNum; + SInt16* iterator; + SInt16* actualRefNum; + HFSUniStr255* outForkName; + FSVolumeRefNum volume; + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo* catalogInfo; + FSForkInfo* forkInfo; + FSRef* ref; + +#if HAVE_FSSPEC + FSSpec* spec; +#endif + + /* FSRef functions: no need to check? */ + FSGetForkCBInfo( desiredRefNum, volume, iterator, + actualRefNum, forkInfo, ref, + outForkName ); + FSPathMakeRef( path, ref, isDirectory ); + +#if HAVE_FSSPEC + FSpMakeFSRef ( spec, ref ); + FSGetCatalogInfo( ref, whichInfo, catalogInfo, + outForkName, spec, ref ); +#endif + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_FSREF=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_FSREF=0"]) +fi + + +# Whether to use QuickDraw API in ToolBox, which is deprecated since +# Mac OS X 10.4. + +AC_ARG_WITH([quickdraw-toolbox], + AS_HELP_STRING([--with-quickdraw-toolbox], + [use MacOS QuickDraw in ToolBox, if available (default=yes)])) +if test x$with_quickdraw_toolbox = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_toolbox != x; then + AC_MSG_CHECKING([QuickDraw FontManager functions in ToolBox]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + Str255 familyName; + SInt16 familyID = 0; + FMInput* fmIn = NULL; + FMOutput* fmOut = NULL; + + + GetFontName( familyID, familyName ); + GetFNum( familyName, &familyID ); + fmOut = FMSwapFont( fmIn ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0"]) +fi + + +# Whether to use QuickDraw API in Carbon, which is deprecated since +# Mac OS X 10.4. + +AC_ARG_WITH([quickdraw-carbon], + AS_HELP_STRING([--with-quickdraw-carbon], + [use MacOS QuickDraw in Carbon, if available (default=yes)])) +if test x$with_quickdraw_carbon = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_carbon != x; then + AC_MSG_CHECKING([QuickDraw FontManager functions in Carbon]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FMFontFamilyIterator famIter; + FMFontFamily family; + Str255 famNameStr; + FMFontFamilyInstanceIterator instIter; + FMFontStyle style; + FMFontSize size; + FMFont font; + FSSpec* pathSpec; + + + FMCreateFontFamilyIterator( NULL, NULL, kFMUseGlobalScopeOption, + &famIter ); + FMGetNextFontFamily( &famIter, &family ); + FMGetFontFamilyName( family, famNameStr ); + FMCreateFontFamilyInstanceIterator( family, &instIter ); + FMGetNextFontFamilyInstance( &instIter, &font, &style, &size ); + FMDisposeFontFamilyInstanceIterator( &instIter ); + FMDisposeFontFamilyIterator( &famIter ); + FMGetFontContainer( font, pathSpec ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0"]) +fi + + +# Whether to use AppleTypeService since Mac OS X. + +AC_ARG_WITH([ats], + AS_HELP_STRING([--with-ats], + [use AppleTypeService, if available (default=yes)])) +if test x$with_ats = xno; then + CFLAGS="$CFLAGS -DHAVE_ATS=0" +elif test x$with_old_mac_fonts = xyes -a x$with_ats != x; then + AC_MSG_CHECKING([AppleTypeService functions]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FSSpec* pathSpec; + + + ATSFontFindFromName( NULL, kATSOptionFlagsUnRestrictedScope ); +#if HAVE_FSSPEC + ATSFontGetFileSpecification( 0, pathSpec ); +#endif + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_ATS=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_ATS=0"]) +fi + +case "$CFLAGS" in + *HAVE_FSSPEC* | *HAVE_FSREF* | *HAVE_QUICKDRAW* | *HAVE_ATS* ) + AC_MSG_WARN([ +*** WARNING + FSSpec/FSRef/QuickDraw/ATS options are explicitly given, + thus it is recommended to replace src/base/ftmac.c by builds/mac/ftmac.c. + ]) + CFLAGS="$CFLAGS "'-I$(TOP_DIR)/builds/mac/' + ;; + *) + ;; +esac + +# Check for pthreads + +AX_PTHREAD([have_pthread=yes], [have_pthread=no]) + +# Check for Python and docwriter +PYTHON_MIN_VERSION=3.5 +have_py3=no +have_docwriter=no +PIP=pip + +AC_CHECK_PROGS([PYTHON], [python3 python], [missing]) +if test "x$PYTHON" != "xmissing"; then + AX_PROG_PYTHON_VERSION([$PYTHON_MIN_VERSION], [have_py3=yes], []) + + if test "x$have_py3" = "xyes"; then + PIP="$PYTHON -m $PIP" + AC_MSG_CHECKING([for `docwriter' Python module]) + $PYTHON -m docwriter -h > /dev/null 2>&1 + if test "x$?" = "x0"; then + have_docwriter=yes + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi +fi + + +# entries in Requires.private are separated by commas +PKGCONFIG_REQUIRES_PRIVATE="$zlib_reqpriv, \ + $bzip2_reqpriv, \ + $libpng_reqpriv, \ + $harfbuzz_reqpriv, \ + $brotli_reqpriv" +# beautify +PKGCONFIG_REQUIRES_PRIVATE=`echo "$PKGCONFIG_REQUIRES_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/, */,/g' \ + -e 's/,,*/,/g' \ + -e 's/^,*//' \ + -e 's/,*$//' \ + -e 's/,/, /g'` + +PKGCONFIG_LIBS_PRIVATE="$zlib_libspriv \ + $bzip2_libspriv \ + $libpng_libspriv \ + $harfbuzz_libspriv \ + $brotli_libspriv \ + $ft2_extra_libs" +# beautify +PKGCONFIG_LIBS_PRIVATE=`echo "$PKGCONFIG_LIBS_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +LIBSSTATIC_CONFIG="-lfreetype \ + $zlib_libsstaticconf \ + $bzip2_libsstaticconf \ + $libpng_libsstaticconf \ + $harfbuzz_libsstaticconf \ + $brotli_libsstaticconf \ + $ft2_extra_libs" +# remove -L/usr/lib and -L/usr/lib64 since `freetype-config' adds them later +# on if necessary; also beautify +LIBSSTATIC_CONFIG=`echo "$LIBSSTATIC_CONFIG" \ + | sed -e 's|-L */usr/lib64/* | |g' \ + -e 's|-L */usr/lib/* | |g' \ + -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +# If FreeType gets installed with `--disable-shared', don't use +# 'private' fields. `pkg-config' only looks into `.pc' files and is +# completely agnostic to whether shared libraries are actually present +# or not. As a consequence, the user had to specify `--static' while +# calling `pkg-config', which configure scripts are normally not +# prepared for. + +PKGCONFIG_REQUIRES= +PKGCONFIG_LIBS='-L${libdir} -lfreetype' + +if test $enable_shared = "no"; then + PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES $PKGCONFIG_REQUIRES_PRIVATE" + PKGCONFIG_REQUIRES_PRIVATE= + PKGCONFIG_LIBS="$PKGCONFIG_LIBS $PKGCONFIG_LIBS_PRIVATE" + PKGCONFIG_LIBS_PRIVATE= +fi + +AC_SUBST([ftmac_c]) +AC_SUBST([PKGCONFIG_REQUIRES]) +AC_SUBST([PKGCONFIG_LIBS]) +AC_SUBST([PKGCONFIG_REQUIRES_PRIVATE]) +AC_SUBST([PKGCONFIG_LIBS_PRIVATE]) +AC_SUBST([LIBSSTATIC_CONFIG]) + +AC_SUBST([hardcode_libdir_flag_spec]) +AC_SUBST([wl]) +AC_SUBST([build_libtool_libs]) + + +# We cannot use alternation (`\|`) in the `sed` regexp since it is not +# portable. + +ftoption_set() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|#define $1|\\\" \ + -e \\\"s|.*#.*def.*$1\$|#define $1|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +ftoption_unset() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|/* #undef $1 */|\\\" \ + -e \\\"s|.*#.*def.*$1\$|/* #undef $1 */|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +# Changing the `LDFLAGS` value should only be done after the +# `lt_cv_prog_compiler_static_works` test. + +if test "$have_zlib" != no; then + CFLAGS="$CFLAGS $ZLIB_CFLAGS" + LDFLAGS="$LDFLAGS $ZLIB_LIBS" + ftoption_set FT_CONFIG_OPTION_SYSTEM_ZLIB +else + ftoption_unset FT_CONFIG_OPTION_SYSTEM_ZLIB +fi +if test "$have_bzip2" != no; then + CFLAGS="$CFLAGS $BZIP2_CFLAGS" + LDFLAGS="$LDFLAGS $BZIP2_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BZIP2 +else + ftoption_unset FT_CONFIG_OPTION_USE_BZIP2 +fi +if test "$have_libpng" != no; then + CFLAGS="$CFLAGS $LIBPNG_CFLAGS" + LDFLAGS="$LDFLAGS $LIBPNG_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_PNG +else + ftoption_unset FT_CONFIG_OPTION_USE_PNG +fi +if test "$have_harfbuzz" != no; then + CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS" + LDFLAGS="$LDFLAGS $HARFBUZZ_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ +fi +if test "$have_harfbuzz_dynamic" != no; then + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +fi +if test "$have_brotli" != no; then + CFLAGS="$CFLAGS $BROTLI_CFLAGS" + LDFLAGS="$LDFLAGS $BROTLI_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BROTLI +else + ftoption_unset FT_CONFIG_OPTION_USE_BROTLI +fi + +if test "$have_pthread" != no; then + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LDFLAGS="$LDFLAGS $PTHREAD_CFLAGS $PTHREAD_LIBS" +fi + +AC_SUBST([CFLAGS]) +AC_SUBST([LDFLAGS]) + +# We don't want to use a template file for `ftoption.h', since compilation +# should work without calling a configure script also. For this reason, we +# copy the `include/freetype/config/ftoption.h' file to the `unix/builds' +# directory (using a dummy `AC_CONFIG_FILES' call) and apply the just +# constructed $FTOPTION_H_SED regexp (using the post-action of +# `AC_CONFIG_FILES'); this is also the version that gets installed later on. +# +AC_CONFIG_FILES([ftoption.h:${srcdir}/../../include/freetype/config/ftoption.h], + [mv ftoption.h ftoption.tmp + eval "sed $FTOPTION_H_SED < ftoption.tmp > ftoption.h" + rm ftoption.tmp], + [FTOPTION_H_SED="$FTOPTION_H_SED"]) + +AC_CONFIG_HEADERS([ftconfig.h]) + +# create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' +# and `builds/unix/unix-cc.mk' that will be used by the build system +# +AC_CONFIG_FILES([unix-cc.mk:unix-cc.in + unix-def.mk:unix-def.in]) + +AC_OUTPUT + +AC_MSG_NOTICE([ + +Library configuration: + external zlib: $have_zlib + bzip2: $have_bzip2 + libpng: $have_libpng + harfbuzz: $have_harfbuzz + brotli: $have_brotli + pthread: $have_pthread +]) + +# Warn if docwriter is not installed + +if test $have_docwriter = no; then + AC_MSG_WARN([ + `make refdoc' will fail since pip package `docwriter' is not installed. + To install, run `$PIP install docwriter', or to use a Python + virtual environment, run `make refdoc-venv' (requires pip package + `virtualenv'). These operations require Python >= $PYTHON_MIN_VERSION. + ]) +fi + +# Warn if pthread is not available + +if test $have_pthread = no; then + AC_MSG_WARN([ + `FT_DEBUG_LOGGING' will not work since the `pthread' library is not + available. This warning can be safely ignored if you don't plan to use + this configuration macro. + ]) +fi + +# end of configure.raw diff --git a/local/recipes/libs/freetype2/source/builds/unix/configure.raw b/local/recipes/libs/freetype2/source/builds/unix/configure.raw new file mode 100644 index 0000000000..7d08463819 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/configure.raw @@ -0,0 +1,1239 @@ +# This file is part of the FreeType project. +# +# Process this file with autoconf to produce a configure script. +# +# Copyright (C) 2001-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +AC_INIT([FreeType], [@VERSION@], [freetype@nongnu.org], [freetype]) +AC_CONFIG_SRCDIR([ftconfig.h.in]) + + +# Don't forget to update `docs/VERSIONS.TXT'! + +version_info='26:6:20' +AC_SUBST([version_info]) +ft_version=`echo $version_info | tr : .` +AC_SUBST([ft_version]) + + +# checks for system type + +AC_CANONICAL_HOST + + +# checks for programs + +AC_PROG_CC +AC_PROG_CPP +AC_SUBST(EXEEXT) + +PKG_PROG_PKG_CONFIG([0.24]) + +LT_INIT(win32-dll) +AC_CHECK_HEADER([windows.h], [LT_PROG_RC]) + + +# checks for native programs to generate building tool + +if test ${cross_compiling} = yes; then + AC_CHECK_PROG(CC_BUILD, ${build}-gcc, ${build}-gcc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, gcc, gcc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, cc, cc, , , /usr/ucb/cc) + test -z "${CC_BUILD}" && AC_CHECK_PROG(CC_BUILD, clang, clang) + test -z "${CC_BUILD}" && AC_MSG_ERROR([cannot find native C compiler]) + + AC_MSG_CHECKING([for suffix of native executables]) + rm -f a.* b.* a_out.exe conftest.* + echo > conftest.c "int main(void) { return 0;}" + ${CC_BUILD} conftest.c || AC_MSG_ERROR([native C compiler is not working]) + rm -f conftest.c + if test -x a.out -o -x b.out -o -x conftest; then + EXEEXT_BUILD="" + elif test -x a_out.exe -o -x conftest.exe; then + EXEEXT_BUILD=".exe" + elif test -x conftest.*; then + EXEEXT_BUILD=`echo conftest.* | sed -n '1s/^.*\././'` + fi + rm -f a.* b.* a_out.exe conftest.* + AC_MSG_RESULT($EXEEXT_BUILD) + CFLAGS_BUILD= + LDFLAGS_BUILD= +else + CC_BUILD=${CC} + CFLAGS_BUILD=${CFLAGS} + LDFLAGS_BUILD=${LDFLAGS} + EXEEXT_BUILD=${EXEEXT} +fi + +AC_SUBST(CC_BUILD) +AC_SUBST(CFLAGS_BUILD) +AC_SUBST(LDFLAGS_BUILD) +AC_SUBST(EXEEXT_BUILD) + + +# Since these files will be eventually called from another directory (namely +# from the top level) we make the path of the scripts absolute. +# +# This small code snippet has been taken from automake's `ylwrap' script. + +AC_PROG_INSTALL +case "$INSTALL" in +[[\\/]]* | ?:[[\\/]]*) + ;; +*[[\\/]]*) + INSTALL="`pwd`/$INSTALL" + ;; +esac + +AC_PROG_MKDIR_P +case "$MKDIR_P" in +[[\\/]]* | ?:[[\\/]]*) + ;; +*[[\\/]]*) + MKDIR_P="`pwd`/$MKDIR_P" + ;; +esac + + +# checks for header files + +AC_CHECK_HEADERS([fcntl.h unistd.h]) + + +# checks for typedefs, structures, and compiler characteristics + +AC_C_CONST + +AC_ARG_ENABLE([freetype-config], + AS_HELP_STRING([--enable-freetype-config], [install freetype-config]), + [case "${enableval}" in + yes) enable_freetype_config="TRUE" ;; + no) enable_freetype_config="FALSE" ;; + *) AC_MSG_ERROR([unknown value '${enableval}' passed with --enable-freetype-config]) ;; + esac], [enable_freetype_config="FALSE"]) + +AC_SUBST(INSTALL_FT2_CONFIG, [$enable_freetype_config]) + +# checks for library functions + +AC_SYS_LARGEFILE + +# Here we check whether we can use our mmap file component. +# +# Note that `ftsystem.c` for Windows has its own mmap-like implementation +# not covered by `AC_FUNC_MMAP` and/or `FT_UNMAP_PARAM`. + +AC_ARG_ENABLE([mmap], + AS_HELP_STRING([--disable-mmap], + [do not check mmap() and do not use]), + [enable_mmap="no"], [enable_mmap="yes"]) +if test "x${enable_mmap}" != "xno"; then + case "$host" in + *-*-mingw*) + AC_MSG_CHECKING([for working mmap]) + AC_MSG_RESULT([using MapViewOfFile in Windows]) + FTSYS_SRC='$(TOP_DIR)/builds/windows/ftsystem.c' + ;; + *) + AC_FUNC_MMAP + if test "$ac_cv_func_mmap_fixed_mapped" = "yes"; then + FTSYS_SRC='$(PLATFORM_DIR)/ftsystem.c' + + AC_CHECK_DECLS([munmap], + [], + [], + [ + +#ifdef HAVE_UNISTD_H +#include +#endif +#include + + ]) + + FT_MUNMAP_PARAM + fi + ;; + esac +fi + +if test -z "$FTSYS_SRC"; then + FTSYS_SRC='$(BASE_DIR)/ftsystem.c' +fi +AC_SUBST([FTSYS_SRC]) + + +# get compiler flags right +# +# We try to make the compiler work for C99-strict source. Even if the +# C compiler is gcc and C99 flags are available, some system headers +# might be broken in C99 mode. We have to check whether compilation +# finishes successfully. +# +if test "x$GCC" = xyes; then + XX_CFLAGS="-Wall" + case "$host" in + *-*-mingw*) + XX_ANSIFLAGS="-pedantic" + ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; + *) + XX_ANSIFLAGS="" + + for a in "-pedantic" "-std=c99" + do + AC_MSG_CHECKING([$CC compiler flag ${a} to assure ANSI C99 works correctly]) + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} ${XX_ANSIFLAGS} ${a}" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#include + + ], + [ + + { + puts( "" ); + return 0; + } + + ])], + [AC_MSG_RESULT([ok, adding to XX_ANSIFLAGS]) + XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}" + ], + [AC_MSG_RESULT([no])]) + CFLAGS="${orig_CFLAGS}" + done + ;; + esac +else + case "$host" in + *-dec-osf*) + CFLAGS= + XX_CFLAGS="-std1 -g3" + XX_ANSIFLAGS= + ;; + *) + XX_CFLAGS= + XX_ANSIFLAGS= + ;; + esac +fi +AC_SUBST([XX_CFLAGS]) +AC_SUBST([XX_ANSIFLAGS]) + + +# It is recommended that shared libraries hide symbols except those with +# explicit __attribute__((visibility("default"))). +# +found_visibility_flag=no +AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) +orig_CFLAGS="${CFLAGS}" +CFLAGS="${CFLAGS} -fvisibility=hidden -Werror" +AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +__attribute__(( visibility( "default" ) )) int foo( void ); +__attribute__(( visibility( "hidden" ) )) int bar( void ); + +int foo( void ) { return 0; } +int bar( void ) { return 1; } + + ], + [])], + [found_visibility_flag=yes + CFLAGS="${orig_CFLAGS} -fvisibility=hidden" + AC_MSG_RESULT(yes) + ], + [CFLAGS="${orig_CFLAGS}" + AC_MSG_RESULT(no)]) + +if test "${found_visibility_flag}" = "no"; then + AC_MSG_CHECKING([for -xldscope=hidden compiler flag]) + orig_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} -xldscope=hidden" + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], + [found_visibility_flag=yes + AC_MSG_RESULT(yes)], + [CFLAGS="${orig_CFLAGS}" + AC_MSG_RESULT(no)]) +fi + +# All library tests below try `pkg-config' first. If that fails, a function +# from the library is tested in the traditional autoconf way (zlib, bzip2), +# or a config script is called (libpng). +# +# The `xxx_reqpriv' variables are for the `Requires.private' field in +# `freetype2.pc'. The `xxx_libspriv' variables are for the `Libs.private' +# field in `freetype2.pc' if pkg-config doesn't find a proper .pc file. +# +# The `xxx_libsstaticconf' variables are for the `freetype-config' script. +# +# Note that a call to PKG_CHECK_MODULES(XXX, ...) sets and creates the +# output variables `XXX_CFLAGS' and `XXX_LIBS'. In case one or both are set +# for a library by the user, no entry for this library is added to +# `Requires.private'. Instead, it gets added to `Libs.private' + + +# check for system zlib + +AC_ARG_WITH([zlib], + [AS_HELP_STRING([--with-zlib=@<:@yes|no|auto@:>@], + [use system zlib instead of internal library @<:@default=auto@:>@])], + [], [with_zlib=auto]) + +have_zlib=no +if test x"$with_zlib" = xyes -o x"$with_zlib" = xauto; then + zlib_pkg="zlib" + have_zlib_pkg=no + + if test x"$ZLIB_CFLAGS" = x -a x"$ZLIB_LIBS" = x; then + PKG_CHECK_EXISTS([$zlib_pkg], [have_zlib_pkg=yes]) + fi + PKG_CHECK_MODULES([ZLIB], [$zlib_pkg], + [have_zlib="yes (pkg-config)"], [:]) + + if test $have_zlib_pkg = yes; then + # we have zlib.pc + zlib_reqpriv="$zlib_pkg" + zlib_libspriv= + zlib_libsstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` + else + zlib_reqpriv= + + if test "$have_zlib" != no; then + # ZLIB_CFLAGS and ZLIB_LIBS are set by the user + zlib_libspriv="$ZLIB_LIBS" + zlib_libsstaticconf="$ZLIB_LIBS" + have_zlib="yes (ZLIB_CFLAGS and ZLIB_LIBS)" + else + # fall back to standard autoconf test + AC_CHECK_LIB([z], + [gzsetparams], + [AC_CHECK_HEADER([zlib.h], + [have_zlib="yes (autoconf test)" + zlib_libspriv="-lz" + zlib_libsstaticconf="$zlib_libspriv" + ZLIB_LIBS="$zlib_libspriv"])]) + fi + fi +fi + +if test x"$with_zlib" = xyes -a "$have_zlib" = no; then + AC_MSG_ERROR([external zlib support requested but library not found]) +fi + +SYSTEM_ZLIB= +if test "$have_zlib" != no; then + SYSTEM_ZLIB=yes +fi +AC_SUBST([SYSTEM_ZLIB]) + + +# check for system libbz2 + +AC_ARG_WITH([bzip2], + [AS_HELP_STRING([--with-bzip2=@<:@yes|no|auto@:>@], + [support bzip2 compressed fonts @<:@default=auto@:>@])], + [], [with_bzip2=auto]) + +have_bzip2=no +if test x"$with_bzip2" = xyes -o x"$with_bzip2" = xauto; then + bzip2_pkg="bzip2" + have_bzip2_pkg=no + + if test x"$BZIP2_CFLAGS" = x -a x"$BZIP2_LIBS" = x; then + PKG_CHECK_EXISTS([$bzip2_pkg], [have_bzip2_pkg=yes]) + fi + PKG_CHECK_MODULES([BZIP2], [$bzip2_pkg], + [have_bzip2="yes (pkg-config)"], [:]) + + if test $have_bzip2_pkg = yes; then + # we have bzip2.pc + bzip2_reqpriv="$bzip2_pkg" + bzip2_libspriv= + bzip2_libsstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` + else + bzip2_reqpriv= + + if test "$have_bzip2" != no; then + # BZIP2_CFLAGS and BZIP2_LIBS are set by the user + bzip2_libspriv="$BZIP2_LIBS" + bzip2_libsstaticconf="$BZIP2_LIBS" + have_bzip2="yes (BZIP2_CFLAGS and BZIP2_LIBS)" + else + # fall back to standard autoconf test + AC_CHECK_LIB([bz2], + [BZ2_bzDecompress], + [AC_CHECK_HEADER([bzlib.h], + [have_bzip2="yes (autoconf test)" + bzip2_libspriv="-lbz2" + bzip2_libsstaticconf="$bzip2_libspriv" + BZIP2_LIBS="$bzip2_libspriv"])]) + fi + fi +fi + +if test x"$with_bzip2" = xyes -a "$have_bzip2" = no; then + AC_MSG_ERROR([bzip2 support requested but library not found]) +fi + + +# check for system libpng + +AC_ARG_WITH([png], + [AS_HELP_STRING([--with-png=@<:@yes|no|auto@:>@], + [support png compressed OpenType embedded bitmaps @<:@default=auto@:>@])], + [], [with_png=auto]) + +have_libpng=no +if test x"$with_png" = xyes -o x"$with_png" = xauto; then + libpng_pkg="libpng" + have_libpng_pkg=no + + if test x"$LIBPNG_CFLAGS" = x -a x"$LIBPNG_LIBS" = x; then + PKG_CHECK_EXISTS([$libpng_pkg], [have_libpng_pkg=yes]) + fi + PKG_CHECK_MODULES([LIBPNG], [$libpng_pkg], + [have_libpng="yes (pkg-config)"], [:]) + + if test $have_libpng_pkg = yes; then + # we have libpng.pc + libpng_reqpriv="$libpng_pkg" + libpng_libspriv= + libpng_libsstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` + else + libpng_reqpriv= + + if test "$have_libpng" != no; then + # LIBPNG_CFLAGS and LIBPNG_LIBS are set by the user + libpng_libspriv="$LIBPNG_LIBS" + libpng_libsstaticconf="$LIBPNG_LIBS" + have_libpng="yes (LIBPNG_CFLAGS and LIBPNG_LIBS)" + else + # fall back to config script + AC_CHECK_PROG(have_libpng, [libpng-config], [yes (libpng-config)], [no]) + if test "$have_libpng" != no; then + LIBPNG_CFLAGS=`libpng-config --cflags` + LIBPNG_LIBS=`libpng-config --ldflags` + libpng_libspriv=`libpng-config --static --ldflags` + libpng_libsstaticconf="$libpng_libspriv" + fi + fi + fi +fi + +if test x"$with_png" = xyes -a "$have_libpng" = no; then + AC_MSG_ERROR([libpng support requested but library not found]) +fi + + +# check for system libharfbuzz + +AC_ARG_WITH([harfbuzz], + [AS_HELP_STRING([--with-harfbuzz=@<:@yes|dynamic|no|auto@:>@], + [improve auto-hinting of OpenType fonts @<:@default=auto@:>@])], + [], [with_harfbuzz=auto]) + +have_harfbuzz=no +if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then + harfbuzz_pkg="harfbuzz >= 2.0.0" + have_harfbuzz_pkg=no + + if test x"$HARFBUZZ_CFLAGS" = x -a x"$HARFBUZZ_LIBS" = x; then + PKG_CHECK_EXISTS([$harfbuzz_pkg], [have_harfbuzz_pkg=yes]) + fi + PKG_CHECK_MODULES([HARFBUZZ], [$harfbuzz_pkg], + [have_harfbuzz="yes (pkg-config)"], [:]) + + if test $have_harfbuzz_pkg = yes; then + # we have harfbuzz.pc + harfbuzz_reqpriv="$harfbuzz_pkg" + harfbuzz_libspriv= + harfbuzz_libsstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` + else + harfbuzz_reqpriv= + + if test "$have_harfbuzz" != no; then + # HARFBUZZ_CFLAGS and HARFBUZZ_LIBS are set by the user + harfbuzz_libspriv="$HARFBUZZ_LIBS" + harfbuzz_libsstaticconf="$HARFBUZZ_LIBS" + have_harfbuzz="yes (HARFBUZZ_CFLAGS and HARFBUZZ_LIBS)" + else + # since HarfBuzz is quite a new library we don't fall back to a + # different test; additionally, it has too many dependencies + : + fi + fi +fi + +have_harfbuzz_dynamic=no +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" = xdynamic -o x"$with_harfbuzz" = xauto; then + case "$host" in + *-*-mingw*) + # Windows uses its own LoadLibrary(), set variables to dynamic. + have_harfbuzz_dynamic=yes + have_harfbuzz="yes (dynamic)" + ;; + *) + # Check for libdl + AC_CHECK_LIB([c], + [dlopen], + [have_harfbuzz_dynamic=yes], + AC_CHECK_LIB([dl], + [dlopen], + [have_harfbuzz_dynamic=yes + need_libdl=yes])) + if test x"$have_harfbuzz_dynamic" = xyes; then + have_harfbuzz="yes (dynamic)" + HARFBUZZ_CFLAGS= + if test x"$need_libdl" = xyes; then + HARFBUZZ_LIBS="-ldl" + fi + fi + ;; + esac + fi +fi + +if test x"$have_harfbuzz" = xno; then + if test x"$with_harfbuzz" != xno -a "$with_harfbuzz" != xauto; then + AC_MSG_ERROR([harfbuzz support requested but library not found]) + fi +fi + +# check for system libbrotlidec + +AC_ARG_WITH([brotli], + [AS_HELP_STRING([--with-brotli=@<:@yes|no|auto@:>@], + [support decompression of WOFF2 streams @<:@default=auto@:>@])], + [], [with_brotli=auto]) + +have_brotli=no +if test x"$with_brotli" = xyes -o x"$with_brotli" = xauto; then + brotli_pkg="libbrotlidec" + have_brotli_pkg=no + + if test x"$BROTLI_CFLAGS" = x -a x"$BROTLI_LIBS" = x; then + PKG_CHECK_EXISTS([$brotli_pkg], [have_brotli_pkg=yes]) + fi + PKG_CHECK_MODULES([BROTLI], [$brotli_pkg], + [have_brotli="yes (pkg-config)"], [:]) + + if test $have_brotli_pkg = yes; then + # we have libbrotlidec.pc + brotli_reqpriv="$brotli_pkg" + brotli_libspriv= + brotli_libsstaticconf=`$PKG_CONFIG --static --libs "$brotli_pkg"` + else + brotli_reqpriv= + + if test "$have_brotli" != no; then + # BROTLI_CFLAGS and BROTLI_LIBS are set by the user + brotli_libspriv="$BROTLI_LIBS" + brotli_libsstaticconf="$BROTLI_LIBS" + have_brotli="yes (BROTLI_CFLAGS and BROTLI_LIBS)" + else + # since Brotli is quite a new library we don't fall back to a + # different test + : + fi + fi +fi + +if test x"$with_brotli" = xyes -a "$have_brotli" = no; then + AC_MSG_ERROR([brotli support requested but library not found]) +fi + + +# Checks for the demo programs. +# +# FreeType doesn't need this. However, since the demo program repository +# doesn't come with a `configure` script of its own, we integrate the tests +# here for simplicity. + +# We need `clock_gettime` from 'librt' for the `ftbench` demo program. +# +# The code is modeled after gnulib's file `clock_time.m4`, ignoring +# very old Solaris systems. +LIB_CLOCK_GETTIME= +AC_SEARCH_LIBS([clock_gettime], + [rt], + [test "$ac_cv_search_clock_gettime" = "none required" \ + || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime]) + +FT_DEMO_CFLAGS="" +FT_DEMO_LDFLAGS="$LIB_CLOCK_GETTIME" + +# 'librsvg' is needed to demonstrate SVG support. +AC_ARG_WITH([librsvg], + [AS_HELP_STRING([--with-librsvg=@<:@yes|no|auto@:>@], + [support OpenType SVG fonts in FreeType demo programs @<:@default=auto@:>@])], + [], [with_librsvg=auto]) + +have_librsvg=no +if test x"$with_librsvg" = xyes -o x"$with_librsvg" = xauto; then + PKG_CHECK_MODULES([LIBRSVG], [librsvg-2.0 >= 2.46.0], + [have_librsvg="yes (pkg-config)"], [:]) + + if test "$have_librsvg" != no; then + FT_DEMO_CFLAGS="$FT_DEMO_CFLAGS $LIBRSVG_CFLAGS -DHAVE_LIBRSVG" + FT_DEMO_LDFLAGS="$FT_DEMO_LDFLAGS $LIBRSVG_LIBS" + fi +fi + +if test x"$with_librsvg" = xyes -a "$have_librsvg" = no; then + AC_MSG_ERROR([librsvg support requested but library not found]) +fi + +AC_SUBST([FT_DEMO_CFLAGS]) +AC_SUBST([FT_DEMO_LDFLAGS]) + + +# Some options handling SDKs/archs in CFLAGS should be copied +# to LDFLAGS. Apple TechNote 2137 recommends to include these +# options in CFLAGS but not in LDFLAGS. + +save_config_args=$* +set dummy ${CFLAGS} +i=1 +while test $i -le $# +do + c=$1 + + case "${c}" in + -isysroot|-arch) # options taking 1 argument + a=$2 + AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c} ${a}]) + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no, copy to LDFLAGS]) + LDFLAGS="${LDFLAGS} ${c} ${a}" + fi + shift 1 + ;; + -m32|-m64|-march=*|-mcpu=*) # options taking no argument + AC_MSG_CHECKING([whether CFLAGS and LDFLAGS share ${c}]) + if expr " ${LDFLAGS} " : ".* ${c} *${a}.*" > /dev/null + then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no, copy to LDFLAGS]) + LDFLAGS="${LDFLAGS} ${c}" + fi + ;; + # *) + # AC_MSG_RESULT([${c} is not copied to LDFLAGS]) + # ;; + esac + + shift 1 +done +set ${save_config_args} + + +# Whether to use Mac OS resource-based fonts. + +ftmac_c="" # src/base/ftmac.c should not be included in makefiles by default + +AC_ARG_WITH([old-mac-fonts], + AS_HELP_STRING([--with-old-mac-fonts], + [allow Mac resource-based fonts to be used])) +if test x$with_old_mac_fonts = xyes; then + orig_LDFLAGS="${LDFLAGS}" + AC_MSG_CHECKING([CoreServices & ApplicationServices of Mac OS X]) + ft2_extra_libs="-Wl,-framework,CoreServices -Wl,-framework,ApplicationServices" + LDFLAGS="$LDFLAGS $ft2_extra_libs" + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + short res = 0; + + + UseResFile( res ); + + ])], + [AC_MSG_RESULT([ok]) + ftmac_c='ftmac.c' + AC_MSG_CHECKING([whether OS_INLINE macro is ANSI compatible]) + orig_CFLAGS="$CFLAGS -DFT_MACINTOSH" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + /* OSHostByteOrder() is typed as OS_INLINE */ + int32_t os_byte_order = OSHostByteOrder(); + + + if ( OSBigEndian != os_byte_order ) + return 1; + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_ANSI_OS_INLINE=1" + ], + [AC_MSG_RESULT([no, ANSI incompatible]) + CFLAGS="$orig_CFLAGS" + ]) + AC_MSG_CHECKING([type ResourceIndex]) + orig_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $XX_CFLAGS $XX_ANSIFLAGS" + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +# include +#endif + + ], + [ + + ResourceIndex i = 0; + return i; + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=1" + ], + [AC_MSG_RESULT([no]) + CFLAGS="$orig_CFLAGS" + CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=0" + ])], + [AC_MSG_RESULT([not found]) + ft2_extra_libs="" + LDFLAGS="${orig_LDFLAGS}" + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON"]) +else + case x$host_os in + xdarwin*) + dnl AC_MSG_WARN([host system is MacOS but configured to build without Carbon]) + CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" + ;; + *) + ;; + esac +fi + + +# Whether to use FileManager, which is deprecated since Mac OS X 10.4. + +AC_ARG_WITH([fsspec], + AS_HELP_STRING([--with-fsspec], + [use obsolete FSSpec API of MacOS, if available (default=yes)])) +if test x$with_fsspec = xno; then + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsspec != x; then + AC_MSG_CHECKING([FSSpec-based FileManager]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FCBPBPtr paramBlock; + short vRefNum; + long dirID; + ConstStr255Param fileName; + FSSpec* spec; + + + /* FSSpec functions: deprecated since Mac OS X 10.4 */ + PBGetFCBInfoSync( paramBlock ); + FSMakeFSSpec( vRefNum, dirID, fileName, spec ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_FSSPEC=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_FSSPEC=0"]) +fi + + +# Whether to use FileManager in Carbon since MacOS 9.x. + +AC_ARG_WITH([fsref], + AS_HELP_STRING([--with-fsref], + [use Carbon FSRef API of MacOS, if available (default=yes)])) +if test x$with_fsref = xno; then + AC_MSG_WARN([ +*** WARNING + FreeType2 built without FSRef API cannot load + data-fork fonts on MacOS, except of XXX.dfont. + ]) + CFLAGS="$CFLAGS -DHAVE_FSREF=0" +elif test x$with_old_mac_fonts = xyes -a x$with_fsref != x; then + AC_MSG_CHECKING([FSRef-based FileManager]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + short vRefNum; + long dirID; + ConstStr255Param fileName; + + Boolean* isDirectory; + UInt8* path; + SInt16 desiredRefNum; + SInt16* iterator; + SInt16* actualRefNum; + HFSUniStr255* outForkName; + FSVolumeRefNum volume; + FSCatalogInfoBitmap whichInfo; + FSCatalogInfo* catalogInfo; + FSForkInfo* forkInfo; + FSRef* ref; + +#if HAVE_FSSPEC + FSSpec* spec; +#endif + + /* FSRef functions: no need to check? */ + FSGetForkCBInfo( desiredRefNum, volume, iterator, + actualRefNum, forkInfo, ref, + outForkName ); + FSPathMakeRef( path, ref, isDirectory ); + +#if HAVE_FSSPEC + FSpMakeFSRef ( spec, ref ); + FSGetCatalogInfo( ref, whichInfo, catalogInfo, + outForkName, spec, ref ); +#endif + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_FSREF=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_FSREF=0"]) +fi + + +# Whether to use QuickDraw API in ToolBox, which is deprecated since +# Mac OS X 10.4. + +AC_ARG_WITH([quickdraw-toolbox], + AS_HELP_STRING([--with-quickdraw-toolbox], + [use MacOS QuickDraw in ToolBox, if available (default=yes)])) +if test x$with_quickdraw_toolbox = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_toolbox != x; then + AC_MSG_CHECKING([QuickDraw FontManager functions in ToolBox]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + Str255 familyName; + SInt16 familyID = 0; + FMInput* fmIn = NULL; + FMOutput* fmOut = NULL; + + + GetFontName( familyID, familyName ); + GetFNum( familyName, &familyID ); + fmOut = FMSwapFont( fmIn ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0"]) +fi + + +# Whether to use QuickDraw API in Carbon, which is deprecated since +# Mac OS X 10.4. + +AC_ARG_WITH([quickdraw-carbon], + AS_HELP_STRING([--with-quickdraw-carbon], + [use MacOS QuickDraw in Carbon, if available (default=yes)])) +if test x$with_quickdraw_carbon = xno; then + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0" +elif test x$with_old_mac_fonts = xyes -a x$with_quickdraw_carbon != x; then + AC_MSG_CHECKING([QuickDraw FontManager functions in Carbon]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FMFontFamilyIterator famIter; + FMFontFamily family; + Str255 famNameStr; + FMFontFamilyInstanceIterator instIter; + FMFontStyle style; + FMFontSize size; + FMFont font; + FSSpec* pathSpec; + + + FMCreateFontFamilyIterator( NULL, NULL, kFMUseGlobalScopeOption, + &famIter ); + FMGetNextFontFamily( &famIter, &family ); + FMGetFontFamilyName( family, famNameStr ); + FMCreateFontFamilyInstanceIterator( family, &instIter ); + FMGetNextFontFamilyInstance( &instIter, &font, &style, &size ); + FMDisposeFontFamilyInstanceIterator( &instIter ); + FMDisposeFontFamilyIterator( &famIter ); + FMGetFontContainer( font, pathSpec ); + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0"]) +fi + + +# Whether to use AppleTypeService since Mac OS X. + +AC_ARG_WITH([ats], + AS_HELP_STRING([--with-ats], + [use AppleTypeService, if available (default=yes)])) +if test x$with_ats = xno; then + CFLAGS="$CFLAGS -DHAVE_ATS=0" +elif test x$with_old_mac_fonts = xyes -a x$with_ats != x; then + AC_MSG_CHECKING([AppleTypeService functions]) + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + +#if defined(__GNUC__) && defined(__APPLE_CC__) +# include +# include +#else +# include +# include +#endif + + ], + [ + + FSSpec* pathSpec; + + + ATSFontFindFromName( NULL, kATSOptionFlagsUnRestrictedScope ); +#if HAVE_FSSPEC + ATSFontGetFileSpecification( 0, pathSpec ); +#endif + + ])], + [AC_MSG_RESULT([ok]) + CFLAGS="$CFLAGS -DHAVE_ATS=1"], + [AC_MSG_RESULT([not found]) + CFLAGS="$CFLAGS -DHAVE_ATS=0"]) +fi + +case "$CFLAGS" in + *HAVE_FSSPEC* | *HAVE_FSREF* | *HAVE_QUICKDRAW* | *HAVE_ATS* ) + AC_MSG_WARN([ +*** WARNING + FSSpec/FSRef/QuickDraw/ATS options are explicitly given, + thus it is recommended to replace src/base/ftmac.c by builds/mac/ftmac.c. + ]) + CFLAGS="$CFLAGS "'-I$(TOP_DIR)/builds/mac/' + ;; + *) + ;; +esac + +# Check for pthreads + +AX_PTHREAD([have_pthread=yes], [have_pthread=no]) + +# Check for Python and docwriter +PYTHON_MIN_VERSION=3.5 +have_py3=no +have_docwriter=no +PIP=pip + +AC_CHECK_PROGS([PYTHON], [python3 python], [missing]) +if test "x$PYTHON" != "xmissing"; then + AX_PROG_PYTHON_VERSION([$PYTHON_MIN_VERSION], [have_py3=yes], []) + + if test "x$have_py3" = "xyes"; then + PIP="$PYTHON -m $PIP" + AC_MSG_CHECKING([for `docwriter' Python module]) + $PYTHON -m docwriter -h > /dev/null 2>&1 + if test "x$?" = "x0"; then + have_docwriter=yes + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi +fi + + +# entries in Requires.private are separated by commas +PKGCONFIG_REQUIRES_PRIVATE="$zlib_reqpriv, \ + $bzip2_reqpriv, \ + $libpng_reqpriv, \ + $harfbuzz_reqpriv, \ + $brotli_reqpriv" +# beautify +PKGCONFIG_REQUIRES_PRIVATE=`echo "$PKGCONFIG_REQUIRES_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/, */,/g' \ + -e 's/,,*/,/g' \ + -e 's/^,*//' \ + -e 's/,*$//' \ + -e 's/,/, /g'` + +PKGCONFIG_LIBS_PRIVATE="$zlib_libspriv \ + $bzip2_libspriv \ + $libpng_libspriv \ + $harfbuzz_libspriv \ + $brotli_libspriv \ + $ft2_extra_libs" +# beautify +PKGCONFIG_LIBS_PRIVATE=`echo "$PKGCONFIG_LIBS_PRIVATE" \ + | sed -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +LIBSSTATIC_CONFIG="-lfreetype \ + $zlib_libsstaticconf \ + $bzip2_libsstaticconf \ + $libpng_libsstaticconf \ + $harfbuzz_libsstaticconf \ + $brotli_libsstaticconf \ + $ft2_extra_libs" +# remove -L/usr/lib and -L/usr/lib64 since `freetype-config' adds them later +# on if necessary; also beautify +LIBSSTATIC_CONFIG=`echo "$LIBSSTATIC_CONFIG" \ + | sed -e 's|-L */usr/lib64/* | |g' \ + -e 's|-L */usr/lib/* | |g' \ + -e 's/^ *//' \ + -e 's/ *$//' \ + -e 's/ */ /g'` + +# If FreeType gets installed with `--disable-shared', don't use +# 'private' fields. `pkg-config' only looks into `.pc' files and is +# completely agnostic to whether shared libraries are actually present +# or not. As a consequence, the user had to specify `--static' while +# calling `pkg-config', which configure scripts are normally not +# prepared for. + +PKGCONFIG_REQUIRES= +PKGCONFIG_LIBS='-L${libdir} -lfreetype' + +if test $enable_shared = "no"; then + PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES $PKGCONFIG_REQUIRES_PRIVATE" + PKGCONFIG_REQUIRES_PRIVATE= + PKGCONFIG_LIBS="$PKGCONFIG_LIBS $PKGCONFIG_LIBS_PRIVATE" + PKGCONFIG_LIBS_PRIVATE= +fi + +AC_SUBST([ftmac_c]) +AC_SUBST([PKGCONFIG_REQUIRES]) +AC_SUBST([PKGCONFIG_LIBS]) +AC_SUBST([PKGCONFIG_REQUIRES_PRIVATE]) +AC_SUBST([PKGCONFIG_LIBS_PRIVATE]) +AC_SUBST([LIBSSTATIC_CONFIG]) + +AC_SUBST([hardcode_libdir_flag_spec]) +AC_SUBST([wl]) +AC_SUBST([build_libtool_libs]) + + +# We cannot use alternation (`\|`) in the `sed` regexp since it is not +# portable. + +ftoption_set() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|#define $1|\\\" \ + -e \\\"s|.*#.*def.*$1\$|#define $1|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +ftoption_unset() +{ + regexp="-e \\\"s|.*#.*def.*$1 .*|/* #undef $1 */|\\\" \ + -e \\\"s|.*#.*def.*$1\$|/* #undef $1 */|\\\"" + FTOPTION_H_SED="$FTOPTION_H_SED $regexp" +} + +# Changing the `LDFLAGS` value should only be done after the +# `lt_cv_prog_compiler_static_works` test. + +if test "$have_zlib" != no; then + CFLAGS="$CFLAGS $ZLIB_CFLAGS" + LDFLAGS="$LDFLAGS $ZLIB_LIBS" + ftoption_set FT_CONFIG_OPTION_SYSTEM_ZLIB +else + ftoption_unset FT_CONFIG_OPTION_SYSTEM_ZLIB +fi +if test "$have_bzip2" != no; then + CFLAGS="$CFLAGS $BZIP2_CFLAGS" + LDFLAGS="$LDFLAGS $BZIP2_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BZIP2 +else + ftoption_unset FT_CONFIG_OPTION_USE_BZIP2 +fi +if test "$have_libpng" != no; then + CFLAGS="$CFLAGS $LIBPNG_CFLAGS" + LDFLAGS="$LDFLAGS $LIBPNG_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_PNG +else + ftoption_unset FT_CONFIG_OPTION_USE_PNG +fi +if test "$have_harfbuzz" != no; then + CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS" + LDFLAGS="$LDFLAGS $HARFBUZZ_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ +fi +if test "$have_harfbuzz_dynamic" != no; then + ftoption_set FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +else + ftoption_unset FT_CONFIG_OPTION_USE_HARFBUZZ_DYNAMIC +fi +if test "$have_brotli" != no; then + CFLAGS="$CFLAGS $BROTLI_CFLAGS" + LDFLAGS="$LDFLAGS $BROTLI_LIBS" + ftoption_set FT_CONFIG_OPTION_USE_BROTLI +else + ftoption_unset FT_CONFIG_OPTION_USE_BROTLI +fi + +if test "$have_pthread" != no; then + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LDFLAGS="$LDFLAGS $PTHREAD_CFLAGS $PTHREAD_LIBS" +fi + +AC_SUBST([CFLAGS]) +AC_SUBST([LDFLAGS]) + +# We don't want to use a template file for `ftoption.h', since compilation +# should work without calling a configure script also. For this reason, we +# copy the `include/freetype/config/ftoption.h' file to the `unix/builds' +# directory (using a dummy `AC_CONFIG_FILES' call) and apply the just +# constructed $FTOPTION_H_SED regexp (using the post-action of +# `AC_CONFIG_FILES'); this is also the version that gets installed later on. +# +AC_CONFIG_FILES([ftoption.h:${srcdir}/../../include/freetype/config/ftoption.h], + [mv ftoption.h ftoption.tmp + eval "sed $FTOPTION_H_SED < ftoption.tmp > ftoption.h" + rm ftoption.tmp], + [FTOPTION_H_SED="$FTOPTION_H_SED"]) + +AC_CONFIG_HEADERS([ftconfig.h]) + +# create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' +# and `builds/unix/unix-cc.mk' that will be used by the build system +# +AC_CONFIG_FILES([unix-cc.mk:unix-cc.in + unix-def.mk:unix-def.in]) + +AC_OUTPUT + +AC_MSG_NOTICE([ + +Library configuration: + external zlib: $have_zlib + bzip2: $have_bzip2 + libpng: $have_libpng + harfbuzz: $have_harfbuzz + brotli: $have_brotli + pthread: $have_pthread +]) + +# Warn if docwriter is not installed + +if test $have_docwriter = no; then + AC_MSG_WARN([ + `make refdoc' will fail since pip package `docwriter' is not installed. + To install, run `$PIP install docwriter', or to use a Python + virtual environment, run `make refdoc-venv' (requires pip package + `virtualenv'). These operations require Python >= $PYTHON_MIN_VERSION. + ]) +fi + +# Warn if pthread is not available + +if test $have_pthread = no; then + AC_MSG_WARN([ + `FT_DEBUG_LOGGING' will not work since the `pthread' library is not + available. This warning can be safely ignored if you don't plan to use + this configuration macro. + ]) +fi + +# end of configure.raw diff --git a/local/recipes/libs/freetype2/source/builds/unix/detect.mk b/local/recipes/libs/freetype2/source/builds/unix/detect.mk new file mode 100644 index 0000000000..2facdf7581 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/detect.mk @@ -0,0 +1,99 @@ +# +# FreeType 2 configuration file to detect a UNIX host platform. +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +.PHONY: setup + +ifeq ($(PLATFORM),ansi) + + # Note: this test is duplicated in "builds/toplevel.mk". + # + is_unix := $(strip $(wildcard /sbin/init) \ + $(wildcard /usr/sbin/init) \ + $(wildcard /dev/null) \ + $(wildcard /hurd/auth)) + ifneq ($(is_unix),) + + PLATFORM := unix + + endif # test is_unix +endif # test PLATFORM ansi + +ifeq ($(PLATFORM),unix) + COPY := cp + DELETE := rm -f + CAT := cat + + # If `devel' is the requested target, we use a special configuration + # file named `unix-dev.mk'. It disables optimization and libtool. + # + ifneq ($(findstring devel,$(MAKECMDGOALS)),) + CONFIG_FILE := unix-dev.mk + CC := gcc + + .PHONY: devel + devel: setup + @: + else + + # If `lcc' is the requested target, we use a special configuration + # file named `unix-lcc.mk'. It disables libtool for LCC. + # + ifneq ($(findstring lcc,$(MAKECMDGOALS)),) + CONFIG_FILE := unix-lcc.mk + CC := lcc + + .PHONY: lcc + lcc: setup + @: + else + + # If a Unix platform is detected, the configure script is called and + # `unix-def.mk' together with `unix-cc.mk' is created. + # + # Arguments to `configure' should be in the CFG variable. Example: + # + # make CFG="--prefix=/usr --disable-static" + # + # If you need to set CFLAGS or LDFLAGS, do it here also. + # + # Feel free to add support for other platform specific compilers in + # this directory (e.g. solaris.mk + changes here to detect the + # platform). + # + CONFIG_FILE := unix.mk + must_configure := 1 + + .PHONY: unix + unix: setup + @: + endif + endif + + have_Makefile := $(wildcard $(OBJ_DIR)/Makefile) + + setup: std_setup + ifdef must_configure + ifneq ($(have_Makefile),) + # we are building FT2 not in the src tree + $(TOP_DIR)/builds/unix/configure $(value CFG) + else + cd builds/unix; \ + ./configure $(value CFG) + endif + endif + +endif # test PLATFORM unix + + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/unix/freetype-config.in b/local/recipes/libs/freetype2/source/builds/unix/freetype-config.in new file mode 100644 index 0000000000..4e69a06725 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/freetype-config.in @@ -0,0 +1,211 @@ +#! /bin/sh +# +# Copyright (C) 2000-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +LC_ALL=C +export LC_ALL + + +# if `pkg-config' is available, use values from `freetype2.pc' +%PKG_CONFIG% --atleast-pkgconfig-version 0.24 >/dev/null 2>&1 +if test $? -eq 0 ; then + # note that option `--variable' is not affected by the + # PKG_CONFIG_SYSROOT_DIR environment variable + if test "x$SYSROOT" != "x" ; then + PKG_CONFIG_SYSROOT_DIR="$SYSROOT" + export PKG_CONFIG_SYSROOT_DIR + fi + + prefix=`%PKG_CONFIG% --variable prefix freetype2` + exec_prefix=`%PKG_CONFIG% --variable exec_prefix freetype2` + + includedir=`%PKG_CONFIG% --variable includedir freetype2` + libdir=`%PKG_CONFIG% --variable libdir freetype2` + + version=`%PKG_CONFIG% --modversion freetype2` + + cflags=`%PKG_CONFIG% --cflags freetype2` + dynamic_libs=`%PKG_CONFIG% --libs freetype2` + static_libs=`%PKG_CONFIG% --static --libs freetype2` +else + prefix="%prefix%" + exec_prefix="%exec_prefix%" + + includedir="%includedir%" + libdir="%libdir%" + + version=%ft_version% + + cflags="-I${SYSROOT}$includedir/freetype2" + dynamic_libs="-lfreetype" + static_libs="%LIBSSTATIC_CONFIG%" + if test "${SYSROOT}$libdir" != "/usr/lib" && + test "${SYSROOT}$libdir" != "/usr/lib64" ; then + libs_L="-L${SYSROOT}$libdir" + fi +fi + +orig_prefix=$prefix +orig_exec_prefix=$exec_prefix + +orig_includedir=$includedir +orig_libdir=$libdir + +include_suffix=`echo $includedir | sed "s|$prefix||"` +lib_suffix=`echo $libdir | sed "s|$exec_prefix||"` + + +usage() +{ + cat <&2 +fi + + +while test $# -gt 0 ; do + case "$1" in + -*=*) + optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` + ;; + *) + optarg= + ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + local_prefix=yes + ;; + --prefix) + echo_prefix=yes + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + local_prefix=yes + ;; + --exec-prefix) + echo_exec_prefix=yes + ;; + --version) + echo_version=yes + break + ;; + --ftversion) + echo_ft_version=yes + ;; + --cflags) + echo_cflags=yes + ;; + --libs) + echo_libs=yes + ;; + --libtool) + echo_libtool=yes + ;; + --static) + show_static=yes + ;; + --help) + usage 0 + ;; + *) + usage 1 1>&2 + ;; + esac + shift +done + + +if test "$local_prefix" = "yes" ; then + if test "$exec_prefix_set" != "yes" ; then + exec_prefix=$prefix + fi +fi + +if test "$local_prefix" = "yes" ; then + includedir=${prefix}${include_suffix} + if test "$exec_prefix_set" = "yes" ; then + libdir=${exec_prefix}${lib_suffix} + else + libdir=${prefix}${lib_suffix} + fi +fi + + +if test "$echo_version" = "yes" ; then + echo $version +fi + +if test "$echo_prefix" = "yes" ; then + echo ${SYSROOT}$prefix +fi + +if test "$echo_exec_prefix" = "yes" ; then + echo ${SYSROOT}$exec_prefix +fi + +if test "$echo_ft_version" = "yes" ; then + major=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ + | grep FREETYPE_MAJOR \ + | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` + minor=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ + | grep FREETYPE_MINOR \ + | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` + patch=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ + | grep FREETYPE_PATCH \ + | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` + echo $major.$minor.$patch +fi + +if test "$echo_cflags" = "yes" ; then + echo $cflags | sed "s|$orig_includedir/freetype2|$includedir/freetype2|" +fi + +if test "$echo_libs" = "yes" ; then + if test "$show_static" = "yes" ; then + libs="$libs_L $static_libs" + else + libs="$libs_L $dynamic_libs" + fi + echo $libs | sed "s|$orig_libdir|$libdir|" +fi + +if test "$echo_libtool" = "yes" ; then + echo ${SYSROOT}$libdir/libfreetype.la +fi + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/unix/freetype2.in b/local/recipes/libs/freetype2/source/builds/unix/freetype2.in new file mode 100644 index 0000000000..fe389f4b6f --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/freetype2.in @@ -0,0 +1,14 @@ +prefix=%prefix% +exec_prefix=%exec_prefix% +libdir=%libdir% +includedir=%includedir% + +Name: FreeType 2 +URL: https://freetype.org +Description: A free, high-quality, and portable font engine. +Version: %ft_version% +Requires: %PKGCONFIG_REQUIRES% +Requires.private: %PKGCONFIG_REQUIRES_PRIVATE% +Libs: %PKGCONFIG_LIBS% +Libs.private: %PKGCONFIG_LIBS_PRIVATE% +Cflags: -I${includedir}/freetype2 diff --git a/local/recipes/libs/freetype2/source/builds/unix/freetype2.m4 b/local/recipes/libs/freetype2/source/builds/unix/freetype2.m4 new file mode 100644 index 0000000000..c08ef9eac8 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/freetype2.m4 @@ -0,0 +1,194 @@ +# Configure paths for FreeType2 +# Marcelo Magallon 2001-10-26, based on `gtk.m4` by Owen Taylor +# +# Copyright (C) 2001-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. +# +# As a special exception to the FreeType project license, this file may be +# distributed as part of a program that contains a configuration script +# generated by Autoconf, under the same distribution terms as the rest of +# that program. +# +# serial 7 + +# AC_CHECK_FT2([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +# Test for FreeType 2, and define FT2_CFLAGS and FT2_LIBS. +# MINIMUM-VERSION is what libtool reports; the default is '7.0.1' (this is +# FreeType 2.0.4). +# +# To make this code work with older autoconf versions, `AS_HELP_STRING` is +# not quoted. +# +AC_DEFUN([AC_CHECK_FT2], + [# Get the cflags and libraries from the freetype-config script + # + AC_ARG_WITH([ft-prefix], + AS_HELP_STRING([--with-ft-prefix=PREFIX], + [Prefix where FreeType is installed (optional)]), + [ft_config_prefix="$withval"], + [ft_config_prefix=""]) + + AC_ARG_WITH([ft-exec-prefix], + AS_HELP_STRING([--with-ft-exec-prefix=PREFIX], + [Exec prefix where FreeType is installed (optional)]), + [ft_config_exec_prefix="$withval"], + [ft_config_exec_prefix=""]) + + AC_ARG_ENABLE([freetypetest], + AS_HELP_STRING([--disable-freetypetest], + [Do not try to compile and run a test FreeType program]), + [], + [enable_fttest=yes]) + + if test x$ft_config_exec_prefix != x ; then + ft_config_args="$ft_config_args --exec-prefix=$ft_config_exec_prefix" + if test x${FT2_CONFIG+set} != xset ; then + FT2_CONFIG=$ft_config_exec_prefix/bin/freetype-config + fi + fi + + if test x$ft_config_prefix != x ; then + ft_config_args="$ft_config_args --prefix=$ft_config_prefix" + if test x${FT2_CONFIG+set} != xset ; then + FT2_CONFIG=$ft_config_prefix/bin/freetype-config + fi + fi + + if test "x$FT2_CONFIG" = x ; then + AC_PATH_TOOL([FT2_CONFIG], [freetype-config], [no]) + fi + + min_ft_version=m4_if([$1], [], [7.0.1], [$1]) + AC_MSG_CHECKING([for FreeType -- version >= $min_ft_version]) + no_ft="" + if test "$FT2_CONFIG" = "no" ; then + no_ft=yes + else + FT2_CFLAGS=`$FT2_CONFIG $ft_config_args --cflags` + FT2_LIBS=`$FT2_CONFIG $ft_config_args --libs` + ft_config_major_version=`$FT2_CONFIG $ft_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + ft_config_minor_version=`$FT2_CONFIG $ft_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + ft_config_micro_version=`$FT2_CONFIG $ft_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + ft_min_major_version=`echo $min_ft_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + ft_min_minor_version=`echo $min_ft_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + ft_min_micro_version=`echo $min_ft_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test x$enable_fttest = xyes ; then + ft_config_is_lt="" + if test $ft_config_major_version -lt $ft_min_major_version ; then + ft_config_is_lt=yes + else + if test $ft_config_major_version -eq $ft_min_major_version ; then + if test $ft_config_minor_version -lt $ft_min_minor_version ; then + ft_config_is_lt=yes + else + if test $ft_config_minor_version -eq $ft_min_minor_version ; then + if test $ft_config_micro_version -lt $ft_min_micro_version ; then + ft_config_is_lt=yes + fi + fi + fi + fi + fi + if test x$ft_config_is_lt = xyes ; then + no_ft=yes + else + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $FT2_CFLAGS" + LIBS="$FT2_LIBS $LIBS" + + # + # Sanity checks for the results of freetype-config to some extent. + # + AC_RUN_IFELSE([ + AC_LANG_SOURCE([[ + +#include +#include +#include +#include + +int +main(void) +{ + FT_Library library; + FT_Error error; + + error = FT_Init_FreeType(&library); + + if (error) + return 1; + else + { + FT_Done_FreeType(library); + return 0; + } +} + + ]]) + ], + [], + [no_ft=yes], + [echo $ECHO_N "cross compiling; assuming OK... $ECHO_C"]) + + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi # test $ft_config_version -lt $ft_min_version + fi # test x$enable_fttest = xyes + fi # test "$FT2_CONFIG" = "no" + + if test x$no_ft = x ; then + AC_MSG_RESULT([yes]) + m4_if([$2], [], [:], [$2]) + else + AC_MSG_RESULT([no]) + if test "$FT2_CONFIG" = "no" ; then + AC_MSG_WARN([ + + The freetype-config script installed by FreeType 2 could not be found. + If FreeType 2 was installed in PREFIX, make sure PREFIX/bin is in + your path, or set the FT2_CONFIG environment variable to the + full path to freetype-config. + ]) + else + if test x$ft_config_is_lt = xyes ; then + AC_MSG_WARN([ + + Your installed version of the FreeType 2 library is too old. + If you have different versions of FreeType 2, make sure that + correct values for --with-ft-prefix or --with-ft-exec-prefix + are used, or set the FT2_CONFIG environment variable to the + full path to freetype-config. + ]) + else + AC_MSG_WARN([ + + The FreeType test program failed to run. If your system uses + shared libraries and they are installed outside the normal + system library path, make sure the variable LD_LIBRARY_PATH + (or whatever is appropriate for your system) is correctly set. + ]) + fi + fi + + FT2_CFLAGS="" + FT2_LIBS="" + m4_if([$3], [], [:], [$3]) + fi + + AC_SUBST([FT2_CFLAGS]) + AC_SUBST([FT2_LIBS])]) + +# end of freetype2.m4 diff --git a/local/recipes/libs/freetype2/source/builds/unix/ft-munmap.m4 b/local/recipes/libs/freetype2/source/builds/unix/ft-munmap.m4 new file mode 100644 index 0000000000..f4df34c5b7 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ft-munmap.m4 @@ -0,0 +1,32 @@ +## FreeType specific autoconf tests +# +# Copyright (C) 2002-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# serial 2 + +AC_DEFUN([FT_MUNMAP_PARAM], + [AC_MSG_CHECKING([for munmap's first parameter type]) + AC_COMPILE_IFELSE([ + AC_LANG_SOURCE([[ + +#include +#include +int munmap(void *, size_t); + + ]]) + ], + [AC_MSG_RESULT([void *]) + AC_DEFINE([MUNMAP_USES_VOIDP], + [], + [Define to 1 if the first argument of munmap is of type void *])], + [AC_MSG_RESULT([char *])]) + ]) + +# end of ft-munmap.m4 diff --git a/local/recipes/libs/freetype2/source/builds/unix/ftconfig.h.in b/local/recipes/libs/freetype2/source/builds/unix/ftconfig.h.in new file mode 100644 index 0000000000..1fc1e28fb5 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ftconfig.h.in @@ -0,0 +1,52 @@ +/**************************************************************************** + * + * ftconfig.h.in + * + * UNIX-specific configuration file (specification only). + * + * Copyright (C) 1996-2026 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + + /************************************************************************** + * + * This header file contains a number of macro definitions that are used by + * the rest of the engine. Most of the macros here are automatically + * determined at compile time, and you should not need to change it to port + * FreeType, except to compile the library with a non-ANSI compiler. + * + * Note however that if some specific modifications are needed, we advise + * you to place a modified copy in your build directory. + * + * The build directory is usually `builds/`, and contains + * system-specific files that are always included first when building the + * library. + * + */ + +#ifndef FTCONFIG_H_ +#define FTCONFIG_H_ + +#include +#include FT_CONFIG_OPTIONS_H +#include FT_CONFIG_STANDARD_LIBRARY_H + +#undef HAVE_UNISTD_H +#undef HAVE_FCNTL_H + +#include +#include +#include + +#endif /* FTCONFIG_H_ */ + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/unix/ftsystem.c b/local/recipes/libs/freetype2/source/builds/unix/ftsystem.c new file mode 100644 index 0000000000..7575da328b --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ftsystem.c @@ -0,0 +1,436 @@ +/**************************************************************************** + * + * ftsystem.c + * + * Unix-specific FreeType low-level system interface (body). + * + * Copyright (C) 1996-2026 by + * David Turner, Robert Wilhelm, and Werner Lemberg. + * + * This file is part of the FreeType project, and may only be used, + * modified, and distributed under the terms of the FreeType project + * license, LICENSE.TXT. By continuing to use, modify, or distribute + * this file you indicate that you have read the license and + * understand and accept it fully. + * + */ + + +#include + /* we use our special ftconfig.h file, not the standard one */ +#include FT_CONFIG_CONFIG_H +#include +#include +#include +#include +#include + + /* memory-mapping includes and definitions */ +#ifdef HAVE_UNISTD_H +#include +#endif + +#include +#ifndef MAP_FILE +#define MAP_FILE 0x00 +#endif + +#ifdef MUNMAP_USES_VOIDP +#define MUNMAP_ARG_CAST void * +#else +#define MUNMAP_ARG_CAST char * +#endif + +#ifdef NEED_MUNMAP_DECL + +#ifdef __cplusplus + extern "C" +#else + extern +#endif + int + munmap( char* addr, + int len ); + +#define MUNMAP_ARG_CAST char * + +#endif /* NEED_DECLARATION_MUNMAP */ + + +#include +#include + +#ifdef HAVE_FCNTL_H +#include +#endif + +#include +#include +#include +#include + + + /************************************************************************** + * + * MEMORY MANAGEMENT INTERFACE + * + */ + + + /************************************************************************** + * + * It is not necessary to do any error checking for the + * allocation-related functions. This will be done by the higher level + * routines like ft_mem_alloc() or ft_mem_realloc(). + * + */ + + + /************************************************************************** + * + * @Function: + * ft_alloc + * + * @Description: + * The memory allocation function. + * + * @Input: + * memory :: + * A pointer to the memory object. + * + * size :: + * The requested size in bytes. + * + * @Return: + * The address of newly allocated block. + */ + FT_CALLBACK_DEF( void* ) + ft_alloc( FT_Memory memory, + long size ) + { + FT_UNUSED( memory ); + + return malloc( size ); + } + + + /************************************************************************** + * + * @Function: + * ft_realloc + * + * @Description: + * The memory reallocation function. + * + * @Input: + * memory :: + * A pointer to the memory object. + * + * cur_size :: + * The current size of the allocated memory block. + * + * new_size :: + * The newly requested size in bytes. + * + * block :: + * The current address of the block in memory. + * + * @Return: + * The address of the reallocated memory block. + */ + FT_CALLBACK_DEF( void* ) + ft_realloc( FT_Memory memory, + long cur_size, + long new_size, + void* block ) + { + FT_UNUSED( memory ); + FT_UNUSED( cur_size ); + + return realloc( block, new_size ); + } + + + /************************************************************************** + * + * @Function: + * ft_free + * + * @Description: + * The memory release function. + * + * @Input: + * memory :: + * A pointer to the memory object. + * + * block :: + * The address of block in memory to be freed. + */ + FT_CALLBACK_DEF( void ) + ft_free( FT_Memory memory, + void* block ) + { + FT_UNUSED( memory ); + + free( block ); + } + + + /************************************************************************** + * + * RESOURCE MANAGEMENT INTERFACE + * + */ + + + /************************************************************************** + * + * The macro FT_COMPONENT is used in trace mode. It is an implicit + * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log + * messages during execution. + */ +#undef FT_COMPONENT +#define FT_COMPONENT io + + /* We use the macro STREAM_FILE for convenience to extract the */ + /* system-specific stream handle from a given FreeType stream object */ +#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) + + + /************************************************************************** + * + * @Function: + * ft_close_stream_by_munmap + * + * @Description: + * The function to close a stream which is opened by mmap. + * + * @Input: + * stream :: A pointer to the stream object. + */ + FT_CALLBACK_DEF( void ) + ft_close_stream_by_munmap( FT_Stream stream ) + { + munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size ); + + stream->descriptor.pointer = NULL; + stream->size = 0; + stream->base = NULL; + } + + + /************************************************************************** + * + * @Function: + * ft_close_stream_by_free + * + * @Description: + * The function to close a stream which is created by ft_alloc. + * + * @Input: + * stream :: A pointer to the stream object. + */ + FT_CALLBACK_DEF( void ) + ft_close_stream_by_free( FT_Stream stream ) + { + ft_free( stream->memory, stream->descriptor.pointer ); + + stream->descriptor.pointer = NULL; + stream->size = 0; + stream->base = NULL; + } + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( FT_Error ) + FT_Stream_Open( FT_Stream stream, + const char* filepathname ) + { + int file; + struct stat stat_buf; + + + if ( !stream ) + return FT_THROW( Invalid_Stream_Handle ); + + /* open the file */ + file = open( filepathname, O_RDONLY ); + if ( file < 0 ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not open `%s'\n", filepathname )); + return FT_THROW( Cannot_Open_Resource ); + } + + /* Here we ensure that a "fork" will _not_ duplicate */ + /* our opened input streams on Unix. This is critical */ + /* since it avoids some (possible) access control */ + /* issues and cleans up the kernel file table a bit. */ + /* */ +#ifdef F_SETFD +#ifdef FD_CLOEXEC + (void)fcntl( file, F_SETFD, FD_CLOEXEC ); +#else + (void)fcntl( file, F_SETFD, 1 ); +#endif /* FD_CLOEXEC */ +#endif /* F_SETFD */ + + if ( fstat( file, &stat_buf ) < 0 ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not `fstat' file `%s'\n", filepathname )); + goto Fail_Map; + } + + /* XXX: TODO -- real 64bit platform support */ + /* */ + /* `stream->size' is typedef'd to unsigned long (in `ftsystem.h'); */ + /* `stat_buf.st_size', however, is usually typedef'd to off_t */ + /* (in sys/stat.h). */ + /* On some platforms, the former is 32bit and the latter is 64bit. */ + /* To avoid overflow caused by fonts in huge files larger than */ + /* 2GB, do a test. Temporary fix proposed by Sean McBride. */ + /* */ + if ( stat_buf.st_size > LONG_MAX ) + { + FT_ERROR(( "FT_Stream_Open: file is too big\n" )); + goto Fail_Map; + } + else if ( stat_buf.st_size == 0 ) + { + FT_ERROR(( "FT_Stream_Open: zero-length file\n" )); + goto Fail_Map; + } + + /* This cast potentially truncates a 64bit to 32bit! */ + stream->size = (unsigned long)stat_buf.st_size; + stream->pos = 0; + stream->base = (unsigned char *)mmap( NULL, + stream->size, + PROT_READ, + MAP_FILE | MAP_PRIVATE, + file, + 0 ); + + if ( stream->base != MAP_FAILED ) + stream->close = ft_close_stream_by_munmap; + else + { + ssize_t total_read_count; + + + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not `mmap' file `%s'\n", filepathname )); + + stream->base = (unsigned char*)ft_alloc( stream->memory, stream->size ); + + if ( !stream->base ) + { + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " could not `alloc' memory\n" )); + goto Fail_Map; + } + + total_read_count = 0; + do + { + ssize_t read_count; + + + read_count = read( file, + stream->base + total_read_count, + stream->size - total_read_count ); + + if ( read_count <= 0 ) + { + if ( read_count == -1 && errno == EINTR ) + continue; + + FT_ERROR(( "FT_Stream_Open:" )); + FT_ERROR(( " error while `read'ing file `%s'\n", filepathname )); + goto Fail_Read; + } + + total_read_count += read_count; + + } while ( (unsigned long)total_read_count != stream->size ); + + stream->close = ft_close_stream_by_free; + } + + close( file ); + + stream->descriptor.pointer = stream->base; + stream->pathname.pointer = (char*)filepathname; + + stream->read = NULL; + + FT_TRACE1(( "FT_Stream_Open:" )); + FT_TRACE1(( " opened `%s' (%ld bytes) successfully\n", + filepathname, stream->size )); + + return FT_Err_Ok; + + Fail_Read: + ft_free( stream->memory, stream->base ); + + Fail_Map: + close( file ); + + stream->base = NULL; + stream->size = 0; + stream->pos = 0; + + return FT_THROW( Cannot_Open_Stream ); + } + + +#ifdef FT_DEBUG_MEMORY + + extern FT_Int + ft_mem_debug_init( FT_Memory memory ); + + extern void + ft_mem_debug_done( FT_Memory memory ); + +#endif + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( FT_Memory ) + FT_New_Memory( void ) + { + FT_Memory memory; + + + memory = (FT_Memory)malloc( sizeof ( *memory ) ); + if ( memory ) + { + memory->user = NULL; + memory->alloc = ft_alloc; + memory->realloc = ft_realloc; + memory->free = ft_free; +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_init( memory ); +#endif + } + + return memory; + } + + + /* documentation is in ftobjs.h */ + + FT_BASE_DEF( void ) + FT_Done_Memory( FT_Memory memory ) + { +#ifdef FT_DEBUG_MEMORY + ft_mem_debug_done( memory ); +#endif + memory->free( memory, memory ); + } + + +/* END */ diff --git a/local/recipes/libs/freetype2/source/builds/unix/install-sh b/local/recipes/libs/freetype2/source/builds/unix/install-sh new file mode 100755 index 0000000000..b1d7a6f67f --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/install-sh @@ -0,0 +1,541 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2024-06-19.01; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. + -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: ." + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -p) cpprog="$cpprog -p";; + + -s) stripcmd=$stripprog;; + + -S) backupsuffix="$2" + shift;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + 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. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibility with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/local/recipes/libs/freetype2/source/builds/unix/install.mk b/local/recipes/libs/freetype2/source/builds/unix/install.mk new file mode 100644 index 0000000000..1bfdd1daca --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/install.mk @@ -0,0 +1,102 @@ +# +# FreeType 2 installation instructions for Unix systems +# + + +# Copyright (C) 1996-2026 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.TXT. By continuing to use, modify, or distribute this file you +# indicate that you have read the license and understand and accept it +# fully. + +# If you say +# +# make install DESTDIR=/tmp/somewhere/ +# +# don't forget the final backslash (this command is mainly for package +# maintainers). + + +.PHONY: install uninstall check + +# Unix installation and deinstallation targets. +# +# Note that we remove any data found in `$(includedir)/freetype2' before +# installing new files to avoid interferences with files installed by +# previous FreeType versions (which use slightly different locations). +# +# We also remove `$(includedir)/ft2build.h' for the same reason. +# +# Note that some header files get handled twice for simplicity; a special, +# configured version overwrites the generic one. +# +install: $(PROJECT_LIBRARY) + -$(DELDIR) $(DESTDIR)$(includedir)/freetype2 + -$(DELETE) $(DESTDIR)$(includedir)/ft2build.h + $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \ + $(DESTDIR)$(libdir)/pkgconfig \ + $(DESTDIR)$(includedir)/freetype2/freetype/config \ + $(DESTDIR)$(datadir)/aclocal +ifeq ($(INSTALL_FT2_CONFIG),TRUE) + $(MKINSTALLDIRS) $(DESTDIR)$(bindir) \ + $(DESTDIR)$(mandir)/man1 +endif + $(LIBTOOL) --mode=install $(INSTALL) \ + $(PROJECT_LIBRARY) $(DESTDIR)$(libdir) + -for P in $(PUBLIC_H) ; do \ + $(INSTALL_DATA) \ + $$P $(DESTDIR)$(includedir)/freetype2/freetype ; \ + done + -for P in $(CONFIG_H) ; do \ + $(INSTALL_DATA) \ + $$P $(DESTDIR)$(includedir)/freetype2/freetype/config ; \ + done + $(INSTALL_DATA) $(TOP_DIR)/include/ft2build.h \ + $(DESTDIR)$(includedir)/freetype2/ft2build.h + $(INSTALL_DATA) $(OBJ_BUILD)/ftconfig.h \ + $(DESTDIR)$(includedir)/freetype2/freetype/config/ftconfig.h + $(INSTALL_DATA) $(OBJ_DIR)/ftmodule.h \ + $(DESTDIR)$(includedir)/freetype2/freetype/config/ftmodule.h + $(INSTALL_DATA) $(OBJ_BUILD)/ftoption.h \ + $(DESTDIR)$(includedir)/freetype2/freetype/config/ftoption.h + $(INSTALL_SCRIPT) -m 644 $(PLATFORM_DIR)/freetype2.m4 \ + $(DESTDIR)$(datadir)/aclocal/freetype2.m4 + $(INSTALL_SCRIPT) -m 644 $(OBJ_BUILD)/freetype2.pc \ + $(DESTDIR)$(libdir)/pkgconfig/freetype2.pc +ifeq ($(INSTALL_FT2_CONFIG),TRUE) + $(INSTALL_SCRIPT) -m 755 $(OBJ_BUILD)/freetype-config \ + $(DESTDIR)$(bindir)/freetype-config + $(INSTALL_DATA) $(TOP_DIR)/docs/freetype-config.1 \ + $(DESTDIR)$(mandir)/man1/freetype-config.1 +endif + + +uninstall: + -$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/$(LIBRARY).$A + -$(DELDIR) $(DESTDIR)$(includedir)/freetype2 + -$(DELETE) $(DESTDIR)$(bindir)/freetype-config + -$(DELETE) $(DESTDIR)$(datadir)/aclocal/freetype2.m4 + -$(DELETE) $(DESTDIR)$(libdir)/pkgconfig/freetype2.pc + -$(DELETE) $(DESTDIR)$(mandir)/man1/freetype-config.1 + + +check: + $(info There is no validation suite for this package.) + + +.PHONY: clean_project_unix distclean_project_unix + +# Unix cleaning and distclean rules. +# +clean_project_unix: + -$(LIBTOOL) --mode=clean $(RM) $(OBJECTS_LIST) + -$(DELETE) $(CLEAN) + +distclean_project_unix: clean_project_unix + -$(LIBTOOL) --mode=clean $(RM) $(PROJECT_LIBRARY) + -$(DELETE) *.orig *~ core *.core $(DISTCLEAN) + +# EOF diff --git a/local/recipes/libs/freetype2/source/builds/unix/ltmain.sh b/local/recipes/libs/freetype2/source/builds/unix/ltmain.sh new file mode 100644 index 0000000000..3e6a3db3a5 --- /dev/null +++ b/local/recipes/libs/freetype2/source/builds/unix/ltmain.sh @@ -0,0 +1,11524 @@ +#! /usr/bin/env sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2019-02-19.15 + +# libtool (GNU libtool) 2.5.4 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2019, 2021-2024 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. + +# GNU Libtool is free software; you can redistribute 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. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT 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 . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.5.4 +package_revision=2.5.4 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2019-02-19.15; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# This is free software. There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2004-2019, 2021, 2023-2024 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# , and GPL version 2 or later +# . You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it. See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. + +# Please report bugs or propose patches to: +# + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done +# These NLS vars are set unconditionally (bootstrap issue #24). Unset those +# in case the environment reset is needed later and the $save_* variant is not +# defined (see the code above). +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# func_unset VAR +# -------------- +# Portably unset VAR. +# In some shells, an 'unset VAR' statement leaves a non-zero return +# status if VAR is already unset, which might be problematic if the +# statement is used at the end of a function (thus poisoning its return +# value) or when 'set -e' is active (causing even a spurious abort of +# the script in this case). +func_unset () +{ + { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } +} + + +# Make sure CDPATH doesn't cause `cd` commands to output the target dir. +func_unset CDPATH + +# Make sure ${,E,F}GREP behave sanely. +func_unset GREP_OPTIONS + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + +# require_check_ifs_backslash +# --------------------------- +# Check if we can use backslash as IFS='\' separator, and set +# $check_ifs_backshlash_broken to ':' or 'false'. +require_check_ifs_backslash=func_require_check_ifs_backslash +func_require_check_ifs_backslash () +{ + _G_save_IFS=$IFS + IFS='\' + _G_check_ifs_backshlash='a\\b' + for _G_i in $_G_check_ifs_backshlash + do + case $_G_i in + a) + check_ifs_backshlash_broken=false + ;; + '') + break + ;; + *) + check_ifs_backshlash_broken=: + break + ;; + esac + done + IFS=$_G_save_IFS + require_check_ifs_backslash=: +} + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # usable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_arg pretty "$2" + eval "$1+=\\ \$func_quote_arg_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_arg pretty "$2" + eval "$1=\$$1\\ \$func_quote_arg_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value returned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list in case some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_portable EVAL ARG +# ---------------------------- +# Internal function to portably implement func_quote_arg. Note that we still +# keep attention to performance here so we as much as possible try to avoid +# calling sed binary (so far O(N) complexity as long as func_append is O(1)). +func_quote_portable () +{ + $debug_cmd + + $require_check_ifs_backslash + + func_quote_portable_result=$2 + + # one-time-loop (easy break) + while true + do + if $1; then + func_quote_portable_result=`$ECHO "$2" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` + break + fi + + # Quote for eval. + case $func_quote_portable_result in + *[\\\`\"\$]*) + # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string + # contains the shell wildcard characters. + case $check_ifs_backshlash_broken$func_quote_portable_result in + :*|*[\[\*\?]*) + func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ + | $SED "$sed_quote_subst"` + break + ;; + esac + + func_quote_portable_old_IFS=$IFS + for _G_char in '\' '`' '"' '$' + do + # STATE($1) PREV($2) SEPARATOR($3) + set start "" "" + func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy + IFS=$_G_char + for _G_part in $func_quote_portable_result + do + case $1 in + quote) + func_append func_quote_portable_result "$3$2" + set quote "$_G_part" "\\$_G_char" + ;; + start) + set first "" "" + func_quote_portable_result= + ;; + first) + set quote "$_G_part" "" + ;; + esac + done + done + IFS=$func_quote_portable_old_IFS + ;; + *) ;; + esac + break + done + + func_quote_portable_unquoted_result=$func_quote_portable_result + case $func_quote_portable_result in + # double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # many bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_portable_result=\"$func_quote_portable_result\" + ;; + esac +} + + +# func_quotefast_eval ARG +# ----------------------- +# Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', +# but optimized for speed. Result is stored in $func_quotefast_eval. +if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then + printf -v _GL_test_printf_tilde %q '~' + if test '\~' = "$_GL_test_printf_tilde"; then + func_quotefast_eval () + { + printf -v func_quotefast_eval_result %q "$1" + } + else + # Broken older Bash implementations. Make those faster too if possible. + func_quotefast_eval () + { + case $1 in + '~'*) + func_quote_portable false "$1" + func_quotefast_eval_result=$func_quote_portable_result + ;; + *) + printf -v func_quotefast_eval_result %q "$1" + ;; + esac + } + fi +else + func_quotefast_eval () + { + func_quote_portable false "$1" + func_quotefast_eval_result=$func_quote_portable_result + } +fi + + +# func_quote_arg MODEs ARG +# ------------------------ +# Quote one ARG to be evaled later. MODEs argument may contain zero or more +# specifiers listed below separated by ',' character. This function returns two +# values: +# i) func_quote_arg_result +# double-quoted (when needed), suitable for a subsequent eval +# ii) func_quote_arg_unquoted_result +# has all characters that are still active within double +# quotes backslashified. Available only if 'unquoted' is specified. +# +# Available modes: +# ---------------- +# 'eval' (default) +# - escape shell special characters +# 'expand' +# - the same as 'eval'; but do not quote variable references +# 'pretty' +# - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might +# be used later in func_quote to get output like: 'echo "a b"' instead +# of 'echo a\ b'. This is slower than default on some shells. +# 'unquoted' +# - produce also $func_quote_arg_unquoted_result which does not contain +# wrapping double-quotes. +# +# Examples for 'func_quote_arg pretty,unquoted string': +# +# string | *_result | *_unquoted_result +# ------------+-----------------------+------------------- +# " | \" | \" +# a b | "a b" | a b +# "a b" | "\"a b\"" | \"a b\" +# * | "*" | * +# z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" +# +# Examples for 'func_quote_arg pretty,unquoted,expand string': +# +# string | *_result | *_unquoted_result +# --------------+---------------------+-------------------- +# z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" +func_quote_arg () +{ + _G_quote_expand=false + case ,$1, in + *,expand,*) + _G_quote_expand=: + ;; + esac + + case ,$1, in + *,pretty,*|*,expand,*|*,unquoted,*) + func_quote_portable $_G_quote_expand "$2" + func_quote_arg_result=$func_quote_portable_result + func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result + ;; + *) + # Faster quote-for-eval for some shells. + func_quotefast_eval "$2" + func_quote_arg_result=$func_quotefast_eval_result + ;; + esac +} + + +# func_quote MODEs ARGs... +# ------------------------ +# Quote all ARGs to be evaled later and join them into single command. See +# func_quote_arg's description for more info. +func_quote () +{ + $debug_cmd + _G_func_quote_mode=$1 ; shift + func_quote_result= + while test 0 -lt $#; do + func_quote_arg "$_G_func_quote_mode" "$1" + if test -n "$func_quote_result"; then + func_append func_quote_result " $func_quote_arg_result" + else + func_append func_quote_result "$func_quote_arg_result" + fi + shift + done +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_arg pretty,expand "$_G_cmd" + eval "func_notquiet $func_quote_arg_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_arg expand,pretty "$_G_cmd" + eval "func_echo $func_quote_arg_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# This is free software. There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2010-2019, 2021, 2023-2024 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# , and GPL version 2 or later +# . You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it. See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. + +# Please report bugs or propose patches to: +# + +# Set a version string for this script. +scriptversion=2019-02-19.15; # UTC + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# Copyright'. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug in processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# in the main code. A hook is just a list of function names that can be +# run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of hook functions to be called by +# FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_propagate_result FUNC_NAME_A FUNC_NAME_B +# --------------------------------------------- +# If the *_result variable of FUNC_NAME_A _is set_, assign its value to +# *_result variable of FUNC_NAME_B. +func_propagate_result () +{ + $debug_cmd + + func_propagate_result_result=: + if eval "test \"\${${1}_result+set}\" = set" + then + eval "${2}_result=\$${1}_result" + else + func_propagate_result_result=false + fi +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It's assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook functions." ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + func_unset "${_G_hook}_result" + eval $_G_hook '${1+"$@"}' + func_propagate_result $_G_hook func_run_hooks + if $func_propagate_result_result; then + eval set dummy "$func_run_hooks_result"; shift + fi + done +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list from your hook function. You may remove +# or edit any options that you action, and then pass back the remaining +# unprocessed options in '_result', escaped +# suitably for 'eval'. +# +# The '_result' variable is automatically unset +# before your hook gets called; for best performance, only set the +# *_result variable when necessary (i.e. don't call the 'func_quote' +# function unnecessarily because it can be an expensive operation on some +# machines). +# +# Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# # No change in '$@' (ignored completely by this hook). Leave +# # my_options_prep_result variable intact. +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# args_changed=false +# +# # Note that, for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: +# args_changed=: +# ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# args_changed=: +# ;; +# *) # Make sure the first unrecognised option "$_G_opt" +# # is added back to "$@" in case we need it later, +# # if $args_changed was set to 'true'. +# set dummy "$_G_opt" ${1+"$@"}; shift; break ;; +# esac +# done +# +# # Only call 'func_quote' here if we processed at least one argument. +# if $args_changed; then +# func_quote eval ${1+"$@"} +# my_silent_option_result=$func_quote_result +# fi +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll also need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options_finish [ARG]... +# ---------------------------- +# Finishing the option parse loop (call 'func_options' hooks ATM). +func_options_finish () +{ + $debug_cmd + + func_run_hooks func_options ${1+"$@"} + func_propagate_result func_run_hooks func_options_finish +} + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + _G_options_quoted=false + + for my_func in options_prep parse_options validate_options options_finish + do + func_unset func_${my_func}_result + func_unset func_run_hooks_result + eval func_$my_func '${1+"$@"}' + func_propagate_result func_$my_func func_options + if $func_propagate_result_result; then + eval set dummy "$func_options_result"; shift + _G_options_quoted=: + fi + done + + $_G_options_quoted || { + # As we (func_options) are top-level options-parser function and + # nobody quoted "$@" for us yet, we need to do it explicitly for + # caller. + func_quote eval ${1+"$@"} + func_options_result=$func_quote_result + } +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propagate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + func_propagate_result func_run_hooks func_options_prep +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + _G_parse_options_requote=false + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + func_propagate_result func_run_hooks func_parse_options + if $func_propagate_result_result; then + eval set dummy "$func_parse_options_result"; shift + # Even though we may have changed "$@", we passed the "$@" array + # down into the hook and it quoted it for us (because we are in + # this if-branch). No need to quote it again. + _G_parse_options_requote=false + fi + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + # We expect that one of the options parsed in this function matches + # and thus we remove _G_opt from "$@" and need to re-quote. + _G_match_parse_options=: + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" >&2 + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + if test $# = 0 && func_missing_arg $_G_opt; then + _G_parse_options_requote=: + break + fi + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) _G_parse_options_requote=: ; break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift + _G_match_parse_options=false + break + ;; + esac + + if $_G_match_parse_options; then + _G_parse_options_requote=: + fi + done + + if $_G_parse_options_requote; then + # save modified positional parameters for caller + func_quote eval ${1+"$@"} + func_parse_options_result=$func_quote_result + fi +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + func_propagate_result func_run_hooks func_validate_options + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables +# after splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + if test "x$func_split_equals_lhs" = "x$1"; then + func_split_equals_rhs= + fi + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs=" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +# The version message is extracted from the calling file's header +# comments, with leading '# ' stripped: +# 1. First display the progname and version +# 2. Followed by the header comment line matching /^# Written by / +# 3. Then a blank line followed by the first following line matching +# /^# Copyright / +# 4. Immediately followed by any lines between the previous matches, +# except lines preceding the intervening completely blank line. +# For example, see the header comments of this file. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /^# Written by /!b + s|^# ||; p; n + + :fwd2blnk + /./ { + n + b fwd2blnk + } + p; n + + :holdwrnt + s|^# || + s|^# *$|| + /^Copyright /!{ + /./H + n + b holdwrnt + } + + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + G + s|\(\n\)\n*|\1|g + p; q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.5.4' + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + year=`date +%Y` + + cat < +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. + +Originally written by Gordon Matzigkeit, 1996 +(See AUTHORS for complete contributor listing) +EOF + + exit $? +} + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information + --finish use operation '--mode=finish' + --mode=MODE use operation mode MODE + --no-finish don't update shared library cache + --no-quiet, --no-silent print default informational messages + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --reorder-cache=DIRS reorder shared library cache for preferred DIRS + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname $scriptversion + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_reorder_cache=false + opt_preserve_dup_deps=false + opt_quiet=false + opt_finishing=true + opt_warning= + + nonopt= + preserve_args= + + _G_rc_lt_options_prep=: + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + *) + _G_rc_lt_options_prep=false + ;; + esac + + if $_G_rc_lt_options_prep; then + # Pass back the list of options. + func_quote eval ${1+"$@"} + libtool_options_prep_result=$func_quote_result + fi +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + _G_rc_lt_parse_options=false + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_match_lt_parse_options=: + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument '$1' for $_G_opt" + exit_cmd=exit + ;; + esac + shift + ;; + + --no-finish) + opt_finishing=false + func_append preserve_args " $_G_opt" + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --reorder-cache) + opt_reorder_cache=true + shared_lib_dirs=$1 + if test -n "$shared_lib_dirs"; then + case $1 in + # Must begin with /: + /*) ;; + + # Catch anything else as an error (relative paths) + *) func_error "invalid argument '$1' for $_G_opt" + func_error "absolute paths are required for $_G_opt" + exit_cmd=exit + ;; + esac + fi + shift + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"} ; shift + _G_match_lt_parse_options=false + break + ;; + esac + $_G_match_lt_parse_options && _G_rc_lt_parse_options=: + done + + if $_G_rc_lt_parse_options; then + # save modified positional parameters for caller + func_quote eval ${1+"$@"} + libtool_parse_options_result=$func_quote_result + fi +} +func_add_hook func_parse_options libtool_parse_options + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + if $opt_warning; then + $debug_cmd + $warning_func ${1+"$@"} + fi +} + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host_os in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + cygwin* | mingw* | windows* | pw32* | cegcc* | solaris2* | os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote eval ${1+"$@"} + libtool_validate_options_result=$func_quote_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, windows, cygwin, or some other w32 environment. Relies on a +# correctly configured wine environment available, with the winepath program +# in $build's $PATH. Assumes ARG has no leading or trailing path separator +# characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +# func_convert_delimited_path PATH ORIG_DELIMITER NEW_DELIMITER +# Replaces a delimiter for a given path. +func_convert_delimited_path () +{ + converted_path=`$ECHO "$1" | $SED "s#$2#$3#g"` +} +# end func_convert_delimited_path + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_reorder_shared_lib_cache DIRS +# Reorder the shared library cache by unconfiguring previous shared library cache +# and configuring preferred search directories before previous search directories. +# Previous shared library cache: /usr/lib /usr/local/lib +# Preferred search directories: /tmp/testing +# Reordered shared library cache: /tmp/testing /usr/lib /usr/local/lib +func_reorder_shared_lib_cache () +{ + $debug_cmd + + case $host_os in + openbsd*) + get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` + func_convert_delimited_path "$get_search_directories" ':' '\ ' + save_search_directories=$converted_path + func_convert_delimited_path "$1" ':' '\ ' + + # Ensure directories exist + for dir in $converted_path; do + # Ensure each directory is an absolute path + case $dir in + /*) ;; + *) func_error "Directory '$dir' is not an absolute path" + exit $EXIT_FAILURE ;; + esac + # Ensure no trailing slashes + func_stripname '' '/' "$dir" + dir=$func_stripname_result + if test -d "$dir"; then + if test -n "$preferred_search_directories"; then + preferred_search_directories="$preferred_search_directories $dir" + else + preferred_search_directories=$dir + fi + else + func_error "Directory '$dir' does not exist" + exit $EXIT_FAILURE + fi + done + + PATH="$PATH:/sbin" ldconfig -U $save_search_directories + PATH="$PATH:/sbin" ldconfig -m $preferred_search_directories $save_search_directories + get_search_directories=`PATH="$PATH:/sbin" ldconfig -r | $GREP "search directories" | $SED "s#.*search directories:\ ##g"` + func_convert_delimited_path "$get_search_directories" ':' '\ ' + reordered_search_directories=$converted_path + + $ECHO "Original: $save_search_directories" + $ECHO "Reordered: $reordered_search_directories" + exit $EXIT_SUCCESS + ;; + *) + func_error "--reorder-cache is not supported for host_os=$host_os." + exit $EXIT_FAILURE + ;; + esac +} +# end func_reorder_shared_lib_cache + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_arg pretty "$libobj" + test "X$libobj" != "X$func_quote_arg_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | windows* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_arg pretty "$srcfile" + qsrcfile=$func_quote_arg_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG + -Xcompiler FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wa,FLAG + -Xassembler FLAG pass linker-specific FLAG directly to the assembler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# If option '--reorder-cache', reorder the shared library cache and exit. +if $opt_reorder_cache; then + func_reorder_shared_lib_cache $shared_lib_dirs +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs" && $opt_finishing; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + if test "false" = "$opt_finishing"; then + echo + echo "NOTE: finish_cmds were not executed during testing, so you must" + echo "manually run ldconfig to add a given test directory, LIBDIR, to" + echo "the search path for generated executables." + fi + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_arg pretty "$nonopt" + install_prog="$func_quote_arg_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_arg pretty "$arg" + func_append install_prog "$func_quote_arg_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_arg pretty "$arg" + func_append install_prog " $func_quote_arg_result" + if test -n "$arg2"; then + func_quote_arg pretty "$arg2" + fi + func_append install_shared_prog " $func_quote_arg_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_arg pretty "$install_override_mode" + func_append install_shared_prog " -m $func_quote_arg_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Strip any trailing slash from the destination. + func_stripname '' '/' "$libdir" + destlibdir=$func_stripname_result + + func_stripname '' '/' "$destdir" + s_destdir=$func_stripname_result + + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | windows* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw* | *windows*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_arg expand,pretty "$relink_command" + eval "func_echo $func_quote_arg_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + case $host in + i[3456]86-*-mingw32*) + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + ;; + *) + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/__nm_//' >> '$nlist'" + ;; + esac + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *windows* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64|pe-aarch64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw/windows +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw/windows-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + func_quote_arg pretty "$ECHO" + qECHO=$func_quote_arg_result + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=$qECHO + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw* | *-*-windows* | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw/windows when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#if defined _WIN32 && !defined __GNUC__ +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +_CRTIMP int __cdecl _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw* | windows*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + compile_rpath_tail= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + temp_rpath_tail= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + rpath_arg= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_arg pretty,unquoted "$arg" + qarg=$func_quote_arg_unquoted_result + func_append libtool_args " $func_quote_arg_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "argument to -rpath is not absolute: $arg" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xassembler) + func_append compiler_flags " -Xassembler $qarg" + prev= + func_append compile_command " -Xassembler $qarg" + func_append finalize_command " -Xassembler $qarg" + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + # -q